1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-22 22:13:35 +02:00
vcmi/docs/modders/Map_Objects/Creature_Bank.md
2024-09-12 12:11:18 +00:00

5.3 KiB

Creature Bank

Reward types for clearing creature bank are limited to resources, creatures, artifacts and spell. Format of rewards is same as in Rewardable Objects

Deprecated in 1.6. Please use Rewardable Objects instead. See Conversion from 1.5 format section below for help with migration

Example

This example defines a rewardable object with functionality similar of H3 creature bank. See Rewardable Objects for detailed documentation of these properties.

{
	"name" : "Cyclops Stockpile",

	// Generic message to ask player whether he wants to attack a creature bank, can be replaced with custom string
	"onGuardedMessage" : 32, 
	
	// Generic message to inform player that bank was already cleared
	"onVisitedMessage" : 33, 
	
	// As an alternative to a generic message you can define 'reward' 
	// that will be granted for visiting already cleared bank, such as morale debuff
	"onVisited" : [ 
		{
			"message" : 123, // "Such a despicable act reduces your army's morale."
			"bonuses" : [ { "type" : "MORALE", "val" : -1, "duration" : "ONE_BATTLE", "description" : 99 } ]
		}
	],
	"visitMode" : "once", // Banks never reset
	// Defines layout of guards. To emulate H3 logic, 
	// use 'creatureBankNarrow' if guardian units are narrow (1-tile units)
	// or, 'creatureBankWide' if defenders are double-hex units
	"guardsLayout" : "creatureBankNarrow",
	"rewards" : [
		{
			"message" : 34,
			"appearChance" : { "min" : 0, "max" : 30 },
			"guards" : [
				{ "amount" : 4, "type" : "cyclop" },
				{ "amount" : 4, "type" : "cyclop" },
				{ "amount" : 4, "type" : "cyclop", "upgradeChance" : 50 },
				{ "amount" : 4, "type" : "cyclop" },
				{ "amount" : 4, "type" : "cyclop" }
			],
			"resources" : {
				"gold" : 4000
			}
		},
		{
			"message" : 34,
			"appearChance" : { "min" : 30, "max" : 60 },
			"guards" : [
				{ "amount" : 6, "type" : "cyclop" },
				{ "amount" : 6, "type" : "cyclop" },
				{ "amount" : 6, "type" : "cyclop", "upgradeChance" : 50 },
				{ "amount" : 6, "type" : "cyclop" },
				{ "amount" : 6, "type" : "cyclop" }
			],
			"resources" : {
				"gold" : 6000
			}
		},
		{
			"message" : 34,
			"appearChance" : { "min" : 60, "max" : 90 },
			"guards" : [
				{ "amount" : 8, "type" : "cyclop" },
				{ "amount" : 8, "type" : "cyclop" },
				{ "amount" : 8, "type" : "cyclop", "upgradeChance" : 50 },
				{ "amount" : 8, "type" : "cyclop" },
				{ "amount" : 8, "type" : "cyclop" }
			],
			"resources" : {
				"gold" : 8000
			}
		},
		{
			"message" : 34,
			"appearChance" : { "min" : 90, "max" : 100 },
			"guards" : [
				{ "amount" : 10, "type" : "cyclop" },
				{ "amount" : 10, "type" : "cyclop" },
				{ "amount" : 10, "type" : "cyclop", "upgradeChance" : 50 },
				{ "amount" : 10, "type" : "cyclop" },
				{ "amount" : 10, "type" : "cyclop" }
			],
			"resources" : {
				"gold" : 10000
			}
		}
	]
},

Conversion from 1.5 format

This is a list of changes that needs to be done to bank config to migrate it to 1.6 system. See Rewardable Objects documentation for description of new fields

  • If your object type has defined handler, change its value from bank to configurable

  • If your object has non-zero resetDuration, replace with resetParameters entry

  • For each possible level, replace chance with appearChance entry

  • If you have combat_value or field entries inside 'reward' - remove them. These fields are unused in both 1.5 and in 1.6

  • Rename levels entry to rewards

  • Add property "visitMode" : "once"

  • Add property "onGuardedMessage" : 119, optionally - replace with custom message for object visit

  • Add property "onVisitedMessage" : 33, optionally - custom message or morale debuff

  • Add property "message" : 34, to every level of your reward, optionally - replace with custom message

Old format (1.5 or earlier)

{
	/// If true, battle setup will be like normal - Attacking player on the left, enemy on the right
	"regularUnitPlacement" : true,
	/// If true, bank placed on water will be visitable from coast (Shipwreck)
	"coastVisitable" : true,
	/// List of levels of this bank. On map loading, one of them will be randomly assigned to bank.
	"levels": [
		{
			/// Chance for this level to be active
			"chance": 30,

			/// Description of guards, stacks will be ordered
			/// on battlefield according to this scheme:
			/// 4    7    1
			/// 
			/// 6         5
			/// 
			/// 3         2
			/// Possible fields:
			/// amount - size of stack
			/// type - string ID of creature for this stack
			/// upgradeChance - chance (in percent) for this stack to be upgraded
			"guards": [
				{ "amount": 4, "type": "cyclop" },
				{ "amount": 4, "type": "cyclop" },
				{ "amount": 4, "type": "cyclop", "upgradeChance": 50 },
				{ "amount": 4, "type": "cyclop" },
				{ "amount": 4, "type": "cyclop" }
			],

			/// Description of rewards granted for clearing bank
			"reward" : {

				/// Granted resources
				"resources": {
					"wood" : 4,
					"mercury" : 4,
					"ore" : 4,
					"sulfur" : 4,
					"crystal" : 4,
					"gems" : 4,
					"gold" : 0
				},

				/// Granted creatures, same format as guards
				"creatures" : [
					{ "amount": 4, "type": "wyvern" }
				],

				/// List of random artifacts
				"artifacts": [ { "class" : "TREASURE" } ]

				/// List of spells
				"spells" : [ { "level" : 5 } ]
			} 
		}
	]
}