1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-28 23:06:24 +02:00
vcmi/config/spells/other.json
AlexVinS 0b70baa95e Spells configuration version 2 (effect-based)
* Indirect spell effects loading
* Json serializer improvements
* spell->canBeCastAt do not allow useless cast for any spell
* Added proxy caster class for spell-created obstacles
* Handle damage from spell-created obstacles inside mechanics
* Experimental GameState integration/regression tests
* Ignore mod settings and load only "vcmi" mod when running tests
* fixed https://bugs.vcmi.eu/view.php?id=2765 (with tests)
* Huge improvements of BattleAI regarding spell casts
* AI can cast almost any combat spell except TELEPORT, SACRIFICE and obstacle placement spells.
* Possible fix for https://bugs.vcmi.eu/view.php?id=1811
* CStack factored out to several classes
* [Battle] Allowed RETURN_AFTER_STRIKE effect on server side to be optional
* [Battle] Allowed BattleAction have multiple destinations
* [Spells] Converted limit|immunity to target condition
* [Spells] Use partial configuration reload for backward compatibility handling
* [Tests] Started tests for CUnitState
* Partial fixes of fire shield effect
* [Battle] Do HP calculations in 64 bits
* [BattleAI] Use threading for spell cast evaluation
* [BattleAI] Made AI be able to evaluate modified turn order (on hypothetical battle state)
* Implemented https://bugs.vcmi.eu/view.php?id=2811
* plug rare freeze when hypnotized unit shots vertically
* Correctly apply ONLY_MELEE_FIGHT / ONLY_DISTANCE_FIGHT for unit damage, attack & defense
* [BattleAI] Try to not waste a cast if battle is actually won already
* Extended JsonSerializeFormat API
* fixed https://bugs.vcmi.eu/view.php?id=2847
* Any unit effect can be now chained (not only damage like Chain Lightning)
** only damage effect for now actually uses "chainFactor"
* Possible quick fix for https://bugs.vcmi.eu/view.php?id=2860
2018-02-08 11:37:21 +03:00

734 lines
12 KiB
JSON

{
"quicksand" : {
"index" : 10,
"targetType" : "NO_TARGET",
"sounds": {
"cast": "QUIKSAND"
},
"levels" : {
"base":{
"range" : "X",
"battleEffects" : {
"obstacle" : {
"type":"core:obstacle",
"hidden" : true,
"passable" : true,
"trap" : true,
"trigger" : false,
"patchCount" : 4,
"turnsRemaining" : -1,
"attacker" :{
"animation" : "C17SPE1",
"appearAnimation" : "C17SPE0",
"offsetY" : -42
},
"defender" :{
"animation" : "C17SPE1",
"appearAnimation" : "C17SPE0",
"offsetY" : -42
}
}
}
},
"advanced":{
"battleEffects":{
"obstacle":{
"patchCount" : 6
}
}
},
"expert":{
"battleEffects":{
"obstacle":{
"patchCount" : 8
}
}
}
},
"flags" : {
"indifferent": true
}
},
"landMine" : {
"index" : 11,
"targetType" : "NO_TARGET",
"sounds": {
"cast": ""
},
"levels" : {
"base":{
"range" : "X",
"battleEffects" : {
"obstacle" : {
"type":"core:obstacle",
"hidden" : true,
"passable" : true,
"trap" : false,
"trigger" : true,
"removeOnTrigger" : true,
"patchCount" : 4,
"turnsRemaining" : -1,
"attacker" :{
"animation" : "C09SPF1",
"appearAnimation" : "C09SPF0"
},
"defender" :{
"animation" : "C09SPF1",
"appearAnimation" : "C09SPF0"
}
},
"damage":{
"type":"core:damage",
"optional":false,
"indirect":true,
"customEffectId" : 82
}
}
},
"advanced":{
"battleEffects":{
"obstacle":{
"patchCount" : 6
}
}
},
"expert":{
"battleEffects":{
"obstacle":{
"patchCount" : 8
}
}
}
},
"flags" : {
"damage": true,
"indifferent": true
},
"targetCondition" : {
"noneOf" : {
"bonus.DIRECT_DAMAGE_IMMUNITY" : "normal"
}
}
},
"forceField" : {
"index" : 12,
"targetType" : "LOCATION",
"sounds": {
"cast": "FORCEFLD"
},
"levels" : {
"base":{
"range" : "0",
"targetModifier":{
"clearAffected": true
},
"battleEffects":{
"obstacle":{
"type":"core:obstacle",
"hidden" : false,
"passable" : false,
"trap" : false,
"trigger" : false,
"patchCount" : 1,
"turnsRemaining" : 2,
"attacker" :{
"range" : [[""]],
"shape" : [[""], ["TR"]],
"animation" : "C15SPE1",
"appearAnimation" : "C15SPE0"
},
"defender" :{
"range" : [[""]],
"shape" : [[""], ["TL"]],
"animation" : "C15SPE4",
"appearAnimation" : "C15SPE0"
}
}
}
},
"advanced":{
"battleEffects":{
"obstacle":{
"attacker" :{
"shape" : [[""], ["TR"], ["TR", "TL"]],
"animation" : "C15SPE10",
"appearAnimation" : "C15SPE9"
},
"defender" :{
"shape" : [[""], ["TL"], ["TL", "TR"]],
"animation" : "C15SPE7",
"appearAnimation" : "C15SPE6"
}
}
}
},
"expert":{
"battleEffects":{
"obstacle":{
"attacker" :{
"shape" : [[""], ["TR"], ["TR", "TL"]],
"animation" : "C15SPE10",
"appearAnimation" : "C15SPE9"
},
"defender" :{
"shape" : [[""], ["TL"], ["TL", "TR"]],
"animation" : "C15SPE7",
"appearAnimation" : "C15SPE6"
}
}
}
}
},
"flags" : {
"indifferent": true
}
},
"fireWall" : {
"index" : 13,
"targetType" : "LOCATION",
"sounds": {
"cast": "FIREWALL"
},
"levels" : {
"base":{
"range" : "0",
"targetModifier":{
"clearAffected": true
},
"battleEffects":{
"obstacle":{
"type":"core:obstacle",
"hidden" : false,
"passable" : true,
"trap" : false,
"trigger" : true,
"patchCount" : 1,
"turnsRemaining" : 2,
"attacker" :{
"shape" : [[""]],
"range" : [[""], ["TR"]],
"animation" : "C07SPF61",
"appearAnimation" : "C07SPF60"
},
"defender" :{
"shape" : [[""]],
"range" : [[""], ["TL"]],
"animation" : "C07SPF61",
"appearAnimation" : "C07SPF60"
}
},
"damage":{
"type":"core:damage",
"optional":false,
"indirect":true
}
}
},
"advanced":{
"battleEffects":{
"obstacle":{
"attacker" :{
"range" : [[""], ["TR"], ["TR", "TL"]]
},
"defender" :{
"range" : [[""], ["TL"], ["TL", "TR"]]
}
}
}
},
"expert":{
"battleEffects":{
"obstacle":{
"attacker" :{
"range" : [[""], ["TR"], ["TR", "TL"]]
},
"defender" :{
"range" : [[""], ["TL"], ["TL", "TR"]]
}
}
}
}
},
"flags" : {
"damage": true,
"indifferent": true
},
"targetCondition" : {
"noneOf" : {
"bonus.DIRECT_DAMAGE_IMMUNITY" : "normal"
}
}
},
"earthquake" : {
"index" : 14,
"targetType" : "NO_TARGET",
"sounds": {
"cast": "ERTHQUAK"
},
"levels" : {
"base":{
"targetModifier":{"smart":true},
"battleEffects":{
"catapult":{
"type":"core:catapult",
"targetsToAttack": 2
}
},
"range" : "X"
},
"advanced":{
"battleEffects":{
"catapult":{
"targetsToAttack": 3
}
}
},
"expert":{
"battleEffects":{
"catapult":{
"targetsToAttack": 4
}
}
}
},
"flags" : {
"indifferent": true
}
},
"dispel" : {
"index" : 35,
"targetType" : "CREATURE",
"animation":{
"affect":["C05SPW"] //C05SPW0
},
"sounds": {
"cast": "DISPELL"
},
"levels" : {
"base":{
"targetModifier":{
"smart":true
},
"battleEffects":{
"dispel":{
"type":"core:dispel",
"optional":false,
"ignoreImmunity" : true,
"dispelNegative":true,
"dispelNeutral":true,
"dispelPositive":true
}
},
"range" : "0"
},
"advanced":{
"targetModifier":{"smart":false}
},
"expert":{
"targetModifier":{"smart":false},
"battleEffects":{
"dispel":{
"optional":true
},
"removeObstacle":{
"optional":true,
"type":"core:removeObstacle",
"removeAllSpells" : true
}
},
"range" : "X"
}
},
"flags" : {
"positive": true
}
},
"cure" : {
"index" : 37,
"targetType" : "CREATURE",
"animation":{
"affect":["C03SPW"]//C03SPW0
},
"sounds": {
"cast": "CURE"
},
"levels" : {
"base":{
"targetModifier":{"smart":true},
"battleEffects":{
"heal":{
"type":"core:heal",
"healLevel":"heal",
"healPower":"permanent",
"optional":true
},
"cure":{
"type":"core:dispel",
"optional":true,
"dispelNegative":true,
"dispelNeutral":false,
"dispelPositive":false
}
},
"range" : "0"
},
"expert":{
"range" : "X"
}
},
"flags" : {
"positive": true
}
},
"resurrection" : {
"index" : 38,
"targetType" : "CREATURE",
"animation":{
"affect":["C01SPE0"]
},
"sounds": {
"cast": "RESURECT"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects":{
"heal":{
"type":"core:heal",
"healLevel":"resurrect",
"healPower":"oneBattle",
"minFullUnits" : 1
},
"cure":{
"type":"core:dispel",
"indirect": true,
"optional":true,
"dispelNegative":true,
"dispelNeutral":false,
"dispelPositive":false
}
},
"targetModifier":{"smart":true}
},
"advanced":{
"battleEffects":{
"heal":{
"healPower":"permanent"
}
}
},
"expert":{
"battleEffects":{
"heal":{
"healPower":"permanent"
}
}
}
},
"flags" : {
"rising": true,
"positive": true
},
"targetCondition" : {
"noneOf" : {
"bonus.NON_LIVING" : "absolute",
"bonus.SIEGE_WEAPON" : "absolute",
"bonus.UNDEAD" : "absolute"
}
}
},
"animateDead" : {
"index" : 39,
"targetType" : "CREATURE",
"animation":{
"affect":["C01SPE0"]
},
"sounds": {
"cast": "ANIMDEAD"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects":{
"heal":{
"type":"core:heal",
"healLevel":"resurrect",
"healPower":"permanent",
"minFullUnits" : 1
}
},
"targetModifier":{"smart":true}
}
},
"flags" : {
"rising": true,
"positive": true
},
"targetCondition" : {
"allOf" : {
"bonus.UNDEAD" : "absolute"
}
}
},
"sacrifice" : {
"index" : 40,
"targetType" : "CREATURE",
"animation":{
"affect":["C01SPE0"]
},
"sounds": {
"cast": "SACRIF1"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects":{
"sacrifice":{
"type":"core:sacrifice",
"healLevel":"resurrect",
"healPower":"permanent",
"minFullUnits" : 0
}
},
"targetModifier":{"smart":true}
}
},
"flags" : {
"rising": true,
"positive": true
},
"targetCondition" : {
"noneOf" : {
"bonus.NON_LIVING" : "absolute",
"bonus.SIEGE_WEAPON" : "absolute",
"bonus.UNDEAD" : "absolute"
}
}
},
"teleport" : {
"index" : 63,
"targetType" : "CREATURE",
"sounds": {
"cast": "TELPTOUT"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects":{
"teleport":{
"type":"core:teleport"
}
},
"targetModifier":{"smart":true}
}
},
"flags" : {
"positive": true
},
"targetCondition" : {
"noneOf" : {
"bonus.SIEGE_WEAPON" : "absolute"
}
}
},
"removeObstacle" : {
"index" : 64,
"targetType" : "OBSTACLE",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "REMOVEOB"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects": {
"removeObstacle" : {
"optional":false,
"type":"core:removeObstacle",
"removeUsual" : true
}
}
},
"advanced" : {
"battleEffects": {
"removeObstacle" : {
"removeSpells" : ["fireWall"]
}
}
},
"expert" : {
"battleEffects": {
"removeObstacle" : {
"removeAllSpells" : true
}
}
}
},
"flags" : {
"indifferent": true
}
},
"clone" : {
"index" : 65,
"targetType" : "CREATURE",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "CLONE"
},
"levels" : {
"base":{
"range" : "0",
"battleEffects":{
"clone":{
"maxTier":5,
"type":"core:clone"
}
},
"targetModifier":{"smart":true}
},
"advanced":{
"battleEffects":{
"clone":{
"maxTier":6
}
}
},
"expert":{
"battleEffects":{
"clone":{
"maxTier":1000
}
}
}
},
"flags" : {
"positive": true
},
"targetCondition" : {
"noneOf" : {
"bonus.SIEGE_WEAPON" : "absolute"
}
}
},
"fireElemental" : {
"index" : 66,
"targetType" : "NO_TARGET",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "SUMNELM"
},
"levels" : {
"base":{
"range" : "X",
"battleEffects":{
"summon":{
"exclusive":true,
"id":"fireElemental",
"permanent":false,
"type":"core:summon"
}
}
}
},
"flags" : {
"indifferent": true
}
},
"earthElemental" : {
"index" : 67,
"targetType" : "NO_TARGET",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "SUMNELM"
},
"levels" : {
"base":{
"range" : "X",
"battleEffects":{
"summon":{
"exclusive":true,
"id":"earthElemental",
"permanent":false,
"type":"core:summon"
}
}
}
},
"flags" : {
"indifferent": true
}
},
"waterElemental" : {
"index" : 68,
"targetType" : "NO_TARGET",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "SUMNELM"
},
"levels" : {
"base":{
"range" : "X",
"battleEffects":{
"summon":{
"exclusive":true,
"id":"waterElemental",
"permanent":false,
"type":"core:summon"
}
}
}
},
"flags" : {
"indifferent": true
}
},
"airElemental" : {
"index" : 69,
"targetType" : "NO_TARGET",
"animation":{
"cast":[2]
},
"sounds": {
"cast": "SUMNELM"
},
"levels" : {
"base":{
"range" : "X",
"battleEffects":{
"summon":{
"exclusive":true,
"id":"airElemental",
"permanent":false,
"type":"core:summon"
}
}
}
},
"flags" : {
"indifferent": true
}
}
}