Creating mods/CharacterList

The **CharacterList.json** file is used to change settings on existing characters or add new characters entirely. Add characters to this file in your mod following a template like at the bottom of this page.

## Character Fields

* name: The non-displaying backend name. This is used to track the character internally, and to match them with triggers, etc. When the player changes the display name of a character, this core name doesn't change.
* displayName: The default name that is shown to the player.
* artName: The name of the art files. If you make a character, you'll need to provide art too! But don't worry, you can create a character in the in-game character creator and export it.
* mapIcon: The file name of the icon that shows up for this person. Be sure to include the art file for the icon too!
* ownsAreaNamed: The home for the person. This is where they wander when they WanderInside. it's also where they reset to when they sleep. It's required if they have a WanderInside ai state.
* relationshipType: May be one of the following: Dating, Child, SingleBar, NoDating, Other. This affects how the hearts are shown in the bottom of the person's dialog bar. All of the main characters of Verdant Skies can be dated, so they are all using the "Dating" type. The "Child" type only has the first 3 heart types. The "NoDating" type has the first 6. "SingleBar" and "Other" currently hides all the icons and only gives you a single friendship bar, going from 0 to 20. Only the "Dating" status shows the MoveIn/Baby/Marriage icons.
* introText: This is the text that pops up when meeting someone the first time. This is triggered from the dialog call "ShowIntroText".
* namesForPlayer: These are pet names that are substituted for the player's name in dialog. See the variable discussion in the Dialog section for a description of how $n and $nMiles works. These are the names that are substituted for the player's name as they correspond to:
* namesForPlayerCriteria: The relationship criteria to get the above nameForPlayer. A blank criteria is the fallback option. The other options are: Friends (3 or more hearts), Dating (the relationship state), MovedIn, Married, FormerlyDated, CoolingOff, HasBabyWith.
* collectionNames - Collections aren't implemented yet particularly well for new characters, but this section is pretty self-explanatory.
* collectionItemTypes - Collections aren't implemented yet particularly well for new characters, but this section is pretty self-explanatory.
* wanderOutsidePoints - Waypoints that the character will use when randomly wandering outside. (WanderOutside AI script)
* wanderInsidePoints - Same but for inside. Must be in the area "ownsAreaNamed"
* schedule - Schedule! Based on the time of day- they choose an action and a waypoint starting at a certain time and do that action until the next time shows up.

## Scheduled AI States

* LookAroundSlowly - Stand in one spot and look around.
* RandomWalk - Randomly wander around after getting to the specified point.
* WanderOutside - Wander between specified wanderOutsidePoints in the CharacterList.json file.
* WanderInside - Wander between specified wanderInsidePoints in the CharacterList.json file.
* PaceEast - A special pacing east (then back west) state. Not really used.
* LookWest - Stand on the spot and look west. The directional states are good for when they are cooking or working at a desk, etc.
* LookNorth - Stand on the spot and look n.
* LookSouth - Stand on the spot and look s.
* LookEast - Stand on the spot and look e.
* Sleep - Sleep. Make sure they are on a point in their bed. They will give special sleep messages while in this state.

## Character Template

```
 "Miles":
 {
 "name": "Miles",
 "displayName": "Miles",
 "artName": "Miles",
 "mapIcon": "MilesMapIcon",
 "ownsAreaNamed": "InsideMilesHouse",
 "relationshipType":"Dating",
 "introText": "As a stipulation of his contract to sponsor the colony, $Miles Kelly owns the only shop on Viridis Primus. Frugal and always on the lookout for a great investment opportunity, at times he seems more concerned with profits than people. However, $Miles can make anyone feel like his most important customer once they enter his shop.",
 "namesForPlayer":
 [
 "friend",
 "$n",
 "my treasure",
 "pal",
 "$n"
 ],
 "namesForPlayerCriteria":
 [
 "",
 "Friends",
 "Dating",
 "CoolingOff",
 "FormerlyDated"
 ],
 "collectionNames":
 [
 "Amateur Artist",
 "Pottery Professional",
 "Brilliant Buddies",
 "Elegant Embellishment"
 ],
 "collectionItemTypes":
 [
 [
 "Painting\_#2",
 "Painting\_#3",
 "Painting\_#4"
 ],
 [
 "Pot\_1\_Design\_3",
 "Pot\_2\_Design\_2",
 "Pot\_3\_Design\_5",
 "Pot\_4\_Design\_1"
 ],
 [
 "Ruby",
 "Sapphire",
 "Flower\_Bouquet"
 ],
 [
 "Elegant\_Fish\_Statue"
 ]
 ],
 "wanderOutsidePoints":
 [
 "Plaza-TopLeft",
 "Bridge-Bottom",
 "NearPlayerField",
 "NearBlueprintMachineAdminBuilding",
 "NearSolarPanelsAdminBuilding",
 "NearRiverAdminBuilding",
 "NearLakeAdminBuilding",
 "NearAdminBuildingRoad",
 "NearBeachAdminBuilding",
 "NearRiverInFlowerField",
 "NearCliffInRockField"
 ],
 "wanderInsidePoints":
 [
 "MilesHouse-Kitchen-Center"
 ],
 "schedule":
 {
 "schedule":
 [
 {
 "startTime": 0,
 "waypointName": "Miles-Schedule-Bed",
 "areaName": "InsideMilesHouse",
 "aiActionName": "Sleep"
 },
 {
 "startTime": 9,
 "waypointName": "Miles-Schedule-Shore",
 "areaName": "Outside",
 "aiActionName": "LookAroundSlowly"
 },
....
 ]
 }
 },

```