Skip to content

Latest commit

 

History

History
265 lines (257 loc) · 11.8 KB

manifest.md

File metadata and controls

265 lines (257 loc) · 11.8 KB

ALL Docs

Introduction / Content Pack Format / Custom Actions / Miscellaneous


Content Pack Format

Each ALL content pack must have two files:

  • a manifest.json for SMAPI (see Modding:Content packs);
  • a locations.json which describes the location changes.

This locations.json contains the basic layouts for both custom locations and shops. For a list of valid conditions that are usable in the various "Conditions" fields see the Custom Condition System documentation over in the Entoarox Framework github.

To use a Conditional in your conditions, use the name of the conditional prefixed with ALLCondition_.

Location Config (Version 1.2)

{
	/* What config loader ALL should use to load the file, for the 1.2 branch should always be `1.2` */
	"LoaderVersion":"1.2",
	/* The locations section is where new locations are registered for addition to the game */
	"Locations":[
		{
			/* The name to use for this new location in warps and such, if not unique then ALL will report a error */
			"MapName":"",
			/* The path to the xnb file, relative to this locations.json, of the tbin that contains the map for this location, without the xnb extension */
			"FileName":"",
			/* If set to `true` then this new location is a outdoor location and exhibits all behaviour outdoor locations have */
			"Outdoor":false,
			/* If set to `true` then this new location is a farmable location and crops will be able to be planted here */
			"Farmable":false,
			/* What special Type of location this is, or `Default` if a generic location, special location types have unique behaviour that no other location type exhibits */
			"Type":"Default"
			/*
				The following types are currently supported:
				Default			- Generic location
				Cellar			- Location where Cask objects are able to work
				Greenhouse		- Location that is not affected by seasons similar to the greenhouse
				Sewer			- Location that has the same green fog effect as the vanilla Sewer location
				BathHousePool	- Location that has the same white fog effect as the vanilla BathHousePool location
				Desert			- Location that exhibits the same 'always sunny' behaviour that the vanilla Desert exhibits
				Decoratable		- Location that allows for Furniture objects to be placed within

				More types may be added in the future, ALL will report if a type is unknown and fall back to the Default type in that case
			*/
		},
		...
	],
	/* The overrides section is where location maps can be overridden by name */
	"Overrides":[
		{
			/* The name that SDV uses for the location you wish to override */
			"MapName":"",
			/* The path to the xnb file, relative to this locations.json file, of the tbin that contains the map for this location, without the xnb extension */
			"FileName":""
		},
		...
	],
	/* The redirects section is where you can redirect the loading of any xnb file relative to Content to a xnb file relative to the locations.json instead */
	"Redirects":[
		{
			/* The path (Without the c:/blabla/../Content/ prefix) to the xnb file that should be redirected, without the xnb extension */
			"FromFile":"",
			/* The path (Relative to the locations.json) to the xnb file that should be loaded instead, without the xnb extension */
			"ToFile":""
		},
		...
	],
	/* The tilesheets section is where you register all custom tilesheets so that ALL can properly handle them */
	"Tilesheets":[
		{
			/* The name of the location that this tilesheet is attached to and needs to be edited on */
			"MapName":"",
			/* The path to the xnb file, relative to this locations.json, of the tbin that contains the map for this location, without the xnb extension */
			"FileName":"",
			/* The name given to the tilesheet in tIDE */
			"SheetId":"",
			/* If `true` then ALL will treat this tilesheet as seasonal, in such a case, it appends `_<season>` to the filename given above before adding the xnb extension */
			"Seasonal":false
		},
		...
	],
	/* The tiles section is where you can set or remove specific tiles on any location */
	"":[
		/* This first example is for setting a static tile */
		{
			/* The name of the location where you wish to set this tile */
			"MapName":"",
			/* The name given to the tilesheet in tIDE, if omitted, the first tilesheet assigned to the map is assumed */
			"SheetId":"",
			/* The X coordinate of the tile you wish to set */
			"TileX":0,
			/* The Y coordinate of the tile you wish to set */
			"TileY":0,
			/* The layer you wish to place this tile on, must be a valid SDV layer (Back, Buildings, Paths, Front, AlwaysFront) */
			"LayerId":"",
			/* What conditions must apply (if any) for this edit to be applied, omit or leave empty for no conditions */
			"Conditions":"",
			/* If set to `true` this edit is optional, and if the location it is meant to edit does not exist then ALL will not report an error as it usually would */
			"Optional":false,
			/* The tile index for the tile to set */
			"TileIndex":0
		},
		/* This second example is for setting a animated tile */
		{
			/* The name of the location where you wish to set this tile */
			"MapName":"",
			/* The name given to the tilesheet in tIDE, if omitted, the first tilesheet assigned to the map is assumed */
			"SheetId":"",
			/* The X coordinate of the tile you wish to set */
			"TileX":0,
			/* The Y coordinate of the tile you wish to set */
			"TileY":0,
			/* The layer you wish to place this tile on, must be a valid SDV layer (Back, Buildings, Paths, Front, AlwaysFront) */
			"LayerId":"",
			/* What conditions must apply (if any) for this edit to be applied, omit or leave empty for no conditions */
			"Conditions":"",
			/* If set to `true` this edit is optional, and if the location it is meant to edit does not exist then ALL will not report an error as it usually would */
			"Optional":false,
			/* The list of tile indexes for the tile to animate through */
			"TileIndexes":[0,1,1,2,2,0],
			/* The interval between each frame in the animation */
			"Interval":3
		},
		/* This third example is for removing a existing tile */
		{
			/* The name of the location where you wish to set this tile */
			"MapName":"",
			/* The X coordinate of the tile you wish to set */
			"TileX":0,
			/* The Y coordinate of the tile you wish to set */
			"TileY":0,
			/* The layer you wish to place this tile on, must be a valid SDV layer (Back, Buildings, Paths, Front, AlwaysFront) */
			"LayerId":"",
			/* What conditions must apply (if any) for this edit to be applied, omit or leave empty for no conditions */
			"Conditions":"",
			/* If set to `true` this edit is optional, and if the location it is meant to edit does not exist then ALL will not report an error as it usually would */
			"Optional":false,
			/* Setting the tile index to -1 tells ALL to remove any pre-existing tiles rather then setting a tile */
			"TileIndex":-1
		},
		...
	],
	/* The properties section is where you can modify tile properties for any specific tile on any location */
	"Properties":[
		{
			/* The name of the location where you wish to set this tile */
			"MapName":"",
			/* The X coordinate of the tile you wish to set */
			"TileX":0,
			/* The Y coordinate of the tile you wish to set */
			"TileY":0,
			/* The layer you wish to place this tile on, must be a valid SDV layer (Back, Buildings, Paths, Front, AlwaysFront) */
			"LayerId":"",
			/* What conditions must apply (if any) for this edit to be applied, omit or leave empty for no conditions */
			"Conditions":"",
			/* If set to `true` this edit is optional, and if the location it is meant to edit does not exist then ALL will not report an error as it usually would */
			"Optional":false,
			/* The key of the tile-property you wish to set */
			"Key":"",
			/* The value you wish to assign to the tile-property */
			"Value":""
		},
		...
	],
	/* The warps section lets you add or override warps, warps are overridden if a pre-existing warp is in the same x,y position, otherwise a new warp is added */
	"Warps":[
		{
			/* The name of the location where you wish to set this tile */
			"MapName":"",
			/* The X coordinate of the tile you wish to set */
			"TileX":0,
			/* The Y coordinate of the tile you wish to set */
			"TileY":0,
			/* The layer you wish to place this tile on, must be a valid SDV layer (Back, Buildings, Paths, Front, AlwaysFront) */
			"LayerId":"",
			/* What conditions must apply (if any) for this edit to be applied, omit or leave empty for no conditions */
			"Conditions":"",
			/* If set to `true` this edit is optional, and if the location it is meant to edit does not exist then ALL will not report an error as it usually would */
			"Optional":false,
			/* The name of the target location that this warp leads to */
			"TargetName":"",
			/* The X position on the target location this warp leads to */
			"TargetX":0,
			/* The Y position on the target location this warp leads to */
			"TargetY":0
		},
		...
	],
	/* The conditionals section lets you add custom "pay X of Y" requirements to the game using the `ALLConditional` tile action */
	"Conditionals":[
		{
			/* The unique name for this conditional */
			"Name":"",
			/* The Id of the item that is required to pay in order to complete this conditional, use `-1` for Gold */
			"Item":-1,
			/* The amount of the item is required to pay in order to complete this conditional */
			"Amount":0,
			/* The text that is displayed above the yes/no answers to complete this conditional */
			"Question":""
		},
		...
	],
	/* The teleporters section lets you add custom teleportation networks similar to the vanilla Minecart system to the game */
	"Teleporters":[
		{
			/* The name of this unique teleporter list */
			"Name":"",
			/* The list of destinations, if the previously given name has been used by another content pack, then both destination lists are merged */
			"Destinations":[
				{
					/* The name of the map that this specific destination will teleport the player to */
					"MapName":"",
					/* The X position on the map this specific destination will teleport the player to */
					"TileX":0,
					/* The Y position on the map this specific destination will teleport the player to */
					"TileY":0,
					/* The text to display as the selectable option for this destination */
					"ItemText":""
				},
				...
			]
		},
		...
	],
	/* The shops section references the names of the individual <shopname>.json files relative to the locations.json, without the json extension */
	"Shops":["","",...]
}

Shops have their own format that can be found below:

Shop Config (Version 1)

{
	/* What version of the shop config parser ALL should use to read this file */
	"ParserVersion":1,
	/* Path relative to the shop config to a png to be used as a owner portrait for the shop */
	"Portrait":"",
	/* Name of the NPC who owns this shop, if no NPC exists then a placeholder NPC is created */
	"Owner":"",
	/* A list of messages, each time the shop is opened one is selected at random to be displayed */
	"Messages":["","",...],
	/* The list of items sold by this shop */
	"Items":[
		/* Each entry in the shop has its own item definition */
		{
			/* The numeric ID of the item */
			"Id":0,
			/* Optional, defaults to `false`, if true then this is a BigCraftable rather then a normal Object */
			"BigCraftable":false,
			/* Optional, defaults to the default sale price assigned to the item */
			"Price":0,
			/* Optional, defaults to `1`, how much of the item is bought per purchase */
			"Stack":1,
			/* Optional, defaults to unlimited stock, when set this limits how much of the item the shop sells at once */
			"Stock":1,
			/* What conditions must apply (if any) for this item to be in the shop, omit or leave empty for no conditions */
			"Conditions":""
		}
	]
	
}