Festivals

From wiki
Jump to: navigation, search

In Staxel, *.festival files are used to specify a new festival in the game. It provides the backbone of all the different NPC's and structures that are needed for creating festivals. Festivals include ways to;

  • Override existing NPC's and structures
  • Add in new NPC's for the festival.
  • Sell new products at shops.


Creating a *.festival file

Tutorial will come later. This requires following Structures tutorials as well as Villager NPCs tutorials. Also includes Treasure Pools for selling more items and Weather which can also dictate Gatherable Component Spawning. Most of all of this is optional.

Config Options

"code"

Valid options (String): A unique string which identifies what Festival this is.

Default Value: No default value is specified. Always need to provide your own.


This option is required to uniquely identify any Festival. This string must be unique to all other codes, but does not have any other requirements.


"quest"

Valid options (Bool): True or False.

Default Value: If not specified defaults to False.


This determines whether or not the festival can only be called as part of a Villager Quest. Bypasses the start and end properties as well as the season property.


"festivalTotem"

Valid options (String): Any valid string which contains a Totem code.

Default Value: If not specified, villagers will not hang around any totem.


Only used when the script "staxel.script.ChillAtFestivalTotem" is used. This is the totem that is used for NPC's to go to and hang out during the festival.


"generalVillagerOverride"

This is a singular Blob which contains information on what things about every villager should be replaced. This contains the exact same properties as #"villagerOverrides", except the name is not considered.

"requiredTotems"

This is currently not implemented

This is a List of Blobs. This contains information on what Totems should be existing before the Festival can occur. This is normally constructed like;

"totemReplacements" : [
  {
    "totem" : "staxel.totem.workplace.TownSquare",
    "structure" : "staxel.structure.village.festival.PumpkingFeastTownSquare"
  },
  {
    "totem" : "staxel.totem.workplace.FestivalSquare",
    "structure" : "staxel.structure.village.festival.PumpkingFeastMaze"
  }
],

"totem"

Valid options (String): Any valid string which contains a Totem code.

Default Value: No default value is specified. Always need to provide your own.


This is the totem that is to be replaced by the structure.

"structure"

Valid options (String): Any valid string which contains a Structure code.

Default Value: No default value is specified. Always need to provide your own.


This is the structure that will replace the totem.


"hosts"

This is a List of Blobs. This contains information on new villagers that will appear for the festival. This is normally constructed like;

"hosts" : [
  {
    "name" : "Caren",
    "code" : "staxel.village.character.festival.Caren"
  },
  {
    "name" : "Ami",
    "code" : "staxel.village.character.festival.Ami"
  }
]

"name"

Valid options (String): Any valid string.

Default Value: No default value is specified. Always need to provide your own.


The name of the host being spawned.


"code"

Valid options (String): Any valid string which contains a Villager NPC code.

Default Value: No default value is specified. Always need to provide your own.


This is the villager definition that will get used to spawn the villager. The villager will use the name above though.


"independentSpawn"

Valid options (Bool): True or False.

Default Value: If not specified, will default to False.


This determines if the host will be spawned normally (False), or they will have to be spawned by other means. (True)


"outfit"

Valid options (String): Any valid string which contains a Villager Design code.

Default Value: If not specified, will not spawn the NPC with an additional outfit.


This will be the outfit that the NPC will wear through the Festival. Not worn when the NPC appears outside of Festival Times. (The day before or after the festival.)


"moveImmediatelyToTotem"

Valid options (String): Any valid string which contains a Totem code.

Default Value: If not specified, will not attempt to move the host to the totem.


The totem in which the host will attempt to move to at festival start. This is mostly applicable to Quest Totems, as these can start in the middle of the day. Normal hosts will spawn in the totem area already.


"refuseNightTeleport"

Valid options (Bool): True or False.

Default Value: If not specified, will default to False.


This determines if the host will refuse to teleport home as of a night. Only applicable if the host is a normal villager.


"tileToMoveTo"

Valid options (String): Any valid string which contains a Tile code.

Default Value: If left empty, the villager will try to move towards something in the Totem specified in moveImmediatelyToTotem


This is the tile that the villager will attempt to move towards, if moveImmediatelyToTotem was set to true.


"season"

Valid options (String): "Summer", "Autumn", "Winter", "Spring"

Default Value: No default value is specified. Always need to provide your own.


This is the season that the festival will be in. Festivals cannot go across seasons.


"shops"

This is currently not implemented

This is a List of Blobs. This contains information on what Totems should get new items. This is normally constructed like;

"totemReplacements" : [
  {
    "totem" : "staxel.totem.workplace.TownSquare",
    "treasure" : "staxel.treasure.SeasonalFunStuff"
  },
  {
    "totem" : "staxel.totem.workplace.FestivalSquare",
    "treasure" : "",
    "seasonalItems" : [
      {
        "code": "staxel.item.snowball"
      }
    ]
  }
],

"totem"

Valid options (String): Any valid string which contains a Totem code.

Default Value: No default value is specified. Always need to provide your own.


This is the totem that is to be replaced by the structure.


"seasonalItems"

Valid options (List of Blobs): A list of blobs containing Items. See Items#How to Spawn an Item for more details.

Default Value: If not specified, will not hold any items during the job.


List of additional items that will be added to the totem.


"treasure"

Valid options (String): Any valid string which contains a Treasure Pool code.

Default Value: No default value is specified. Always need to provide your own.


This is the structure that will replace the totem.


"start"/"end"

Valid options (Integer): A positive integer number.

Default Value: No default value is specified. Always need to provide your own.


This is the value for when the first and last day of the festival happens.


"totemReplacements"

This is a List of Blobs. This contains information on what Totems should be replaced with structures upon the festival starting. THis is normally constructed like;

"totemReplacements" : [
  {
    "totem" : "staxel.totem.workplace.TownSquare",
    "structure" : "staxel.structure.village.festival.PumpkingFeastTownSquare"
  },
  {
    "totem" : "staxel.totem.workplace.FestivalSquare",
    "structure" : "staxel.structure.village.festival.PumpkingFeastMaze"
  }
],

"totem"

Valid options (String): Any valid string which contains a Totem code.

Default Value: No default value is specified. Always need to provide your own.


This is the totem that is to be replaced by the structure.


"structure"

Valid options (String): Any valid string which contains a Structure code.

Default Value: No default value is specified. Always need to provide your own.


This is the structure that will replace the totem.


"villagerOverrides"

This is a List of Blobs. This contains information on what things about specific villagers will be replaced.

"villagerOverrides" : [
  {
    "villager" : "Riah",
    "primaryDialogue" : "staxel.village.character.dialogue.festival.RiahPumpkingFeast",
    "suppressPersonality" : true,
    "suppressJob" : true,
    "festivalBehaviour" : [
      {
        "script" : "staxel.script.ChillAtTavernScript",
        "weight" : 10.0
      }
    ]
  }
]

"villager"

Valid options (String): Any valid string which contains the name of a Villager NPC.

Default Value: No default value is specified. Always need to provide your own.


This is the villager that will have aspects of them replaced.


"festivalDialoguePools"

Valid options (List of Strings): A list of strings which point to a Dialogue Pool code each.

Default Value: If not specified, will not have any dialogue.


This is a list of strings that point towards the dialogue pools which will be used for general talking. These do not include dialogues for jobs or theft. This replaces the original Villager NPCs#"dialoguePools"


"primaryDialogue"

Valid options (String): A string that points to a Dialogue.

Default Value: If not specified, will not force a certain dialogue to appear first.


This specifies a dialogue which must be played first before all other dialogues. Useful for when something should be done first before all else. This replaces the original Villager NPCs#"primaryDialogue"


"suppressPersonality"

Valid options (Bool): True or False.

Default Value: If not specified, will default to False.


This makes it so features such as general dialogue do not play for this villager.


"suppressJob"

Valid options (Bool): True or False.

Default Value: If not specified, will default to False.


This makes it so the job does not interfere with the

"festivalBehaviour"

This is a List of Blobs that contain properties for weighting scripts. These scripts involve how the villager should act, and the weight specifies how likely the particular script will be gotten compared to the others. These are used to replace the usual scripts surrounding villagers. These blobs look like;

{
  "script": "staxel.script.StandAroundIdle",
  "weight": 25.0
}

"script"

Valid options (String): A string that points to a Script.

Default Value: No default value is specified. Always need to provide your own.


This specifies which script to use.


"weight"

Valid options (Double): A positive decimal number.

Default Value: No default value is specified. Always need to provide your own.


The weight this script will have compared to other scripts.


"weatherOverride"

Valid options (String): Any valid string which contains a Weather code.

Default Value: If not specified, will continue with normal weather.


This is the weather that will get played during the entirety of the festival.