diff --git a/config/cr_abils.txt b/config/cr_abils.txt index 875b6241c..cc4f16b9c 100644 --- a/config/cr_abils.txt +++ b/config/cr_abils.txt @@ -4,10 +4,118 @@ // or: - [CREATURE_ID] [ABILITY] /*removing ability*/ // or: 0 /*end of ability descriptions*/ 1 -+ 115 DOUBLE_WIDE 0 0 0 //water elemental should be treated as double-wide -+ 123 DOUBLE_WIDE 0 0 0 //ice elemental should be treated as double-wide -+ 140 DOUBLE_WIDE 0 0 0 //boar should be treated as double-wide -+ 142 DOUBLE_WIDE 0 0 0 //nomads should be treated as double-wide -- 46 FLYING //hell hound doesn't fly -- 47 FLYING //cerberus doesn't fly ++ 0 CHARGE_IMMUNITY 0 0 0 //pikeman immunity to Champion charge bonus ++ 1 CHARGE_IMMUNITY 0 0 0 //halberdier immunity to Champion charge bonus ++ 4 ADDITIONAL_RETALIATION 1 0 0 //griffins retaliate twice ++ 5 UNLIMITED_RETALIATIONS 0 0 0 //royal griffins retaliate always ++ 12 HATE 0 54 0 //angels hate devils ++ 12 HATE 0 55 0 //angels hate archdevils ++ 13 HATE 0 54 0 //archangels hate devils ++ 13 HATE 0 55 0 //archangels hate arch ++ 13 SPELLCASTER 0 38 0 //archangels cast resurrection ++ 16 MAGIC_RESISTANCE 20 0 0 //dwarf's magic resistance 20% ++ 17 MAGIC_RESISTANCE 40 0 0 //battle dwarf's magic resistance 40% ++ 20 CHANGES_SPELL_COST_FOR_ENEMY 2 0 0 //pegasus makes spell cost higher for enemy mage ++ 21 CHANGES_SPELL_COST_FOR_ENEMY 2 0 0 //silver pegasus makes spell cost higher for enemy mage ++ 22 SPELL_AFTER_ATTACK 0 72 100 //dendroids cast bind ++ 23 SPELL_AFTER_ATTACK 0 72 100 //dendroid guards cast bind ++ 24 SPELL_AFTER_ATTACK 0 62 100 //unicorns cast blind with 20% probability ++ 24 SPELL_RESISTANCE_AURA 0 55 0 //unicorn ++ 25 SPELL_AFTER_ATTACK 0 62 100 //war unicorns cast blind with 20% probability ++ 25 SPELL_RESISTANCE_AURA 0 55 0 //war unicorn ++ 26 LEVEL_SPELL_IMMUNITY 3 0 0 //green dragon's spell immunity ++ 26 TWO_HEX_ATTACK_BREATH 0 0 0 //green dragon's breath ++ 27 LEVEL_SPELL_IMMUNITY 4 0 0 //gold dragon's spell immunity ++ 27 TWO_HEX_ATTACK_BREATH 0 0 0 //gold dragon's breath ++ 30 NON_LIVING 0 0 0 //stone gargoyles are non-living ++ 31 NON_LIVING 0 0 0 //obsidian gargoyles are non-living ++ 32 NON_LIVING 0 0 0 //stone golems are non-living ++ 32 SPELL_DAMAGE_REDUCTION 50 -1 0 //stone golems reduce dmg from spells ++ 33 NON_LIVING 0 0 0 //iron golems are non-living ++ 33 SPELL_DAMAGE_REDUCTION 75 -1 0 //iron golems reduce dmg from spells ++ 34 CHANGES_SPELL_COST_FOR_ALLY -2 0 0 //mages reduce spell cost ++ 35 CHANGES_SPELL_COST_FOR_ALLY -2 0 0 //archmages reduce spell cost ++ 36 HATE 0 52 0 //genies hate efreets ++ 36 HATE 0 53 0 //genies hate efreet sultans ++ 37 HATE 0 52 0 //master genies hate efreets ++ 37 HATE 0 53 0 //master genies hate efreet sultans ++ 37 RANDOM_GENIE_SPELLCASTER 0 0 0 //master genies cast spells ++ 38 BLOCKS_RETALIATION 0 0 0 //nagas block retaliation ++ 39 BLOCKS_RETALIATION 0 0 0 //naga queens block retaliation ++ 41 HATE 0 83 0 //titans hate black dragons ++ 43 MANA_CHANNELING 20 0 0 //familiars ++ 45 SPELL_LIKE_ATTACK 21 0 0 //magogs fire with fireballs ++ 47 BLOCKS_RETALIATION 0 0 0 //cerberus ++ 47 THREE_HEADED_ATTACK 0 0 0 //cerberus ++ 47 THREE_HEADED_ATTACK 0 0 0 //creberus ++ 51 DAEMON_SUMMONING 0 52 0 //pit lord ++ 52 FIRE_IMMUNITY 0 0 0 //efreeti ++ 52 FLYING 0 0 0 //Efreeti ++ 52 HATE 0 36 0 //efreeti hate genies ++ 52 HATE 0 37 0 //efreeti hate master genies ++ 53 FIRE_IMMUNITY 0 0 0 //efreet sultan ++ 53 FIRE_SHIELD 0 36 0 //efreet sultans ++ 53 FLYING 0 0 0 //Efreet Sultan ++ 53 HATE 0 36 0 //efreet sultans hate genies ++ 53 HATE 0 37 0 //efreet sultans hate master genies ++ 54 BLOCKS_RETALIATION 0 0 0 //devils ++ 54 ENEMY_LUCK_DECREASING -1 0 0 //devils ++ 54 HATE 0 12 0 //devils hate angels ++ 54 HATE 0 13 0 //devils hate archangles ++ 55 BLOCKS_RETALIATION 0 0 0 //archdevils ++ 55 ENEMY_LUCK_DECREASING -1 0 0 //archdevils ++ 55 HATE 0 12 0 //archdevils hate angels ++ 55 HATE 0 13 0 //archdevils hate archangles ++ 60 REGENERATION 0 0 0 //wight ++ 61 MANA_DRAIN 2 0 0 //wraith ++ 61 REGENERATION 0 0 0 //wraith ++ 62 BLOCKS_RETALIATION 0 0 0 //vampires ++ 63 BLOCKS_RETALIATION 0 0 0 //vampire lords ++ 63 LIFE_DRAIN 0 0 0 //vampire lords ++ 64 SPELL_LIKE_ATTACK 76 0 0 //liches ++ 65 SPELL_LIKE_ATTACK 76 0 0 //power liches ++ 66 SPELL_AFTER_ATTACK 0 42 20 //black knights ++ 67 DOUBLE_DAMAGE_CHANCE 20 0 0 //vampire lords ++ 67 SPELL_AFTER_ATTACK 0 42 20 //dread knights ++ 68 ENEMY_MORALE_DECREASING -1 0 0 //bone dragon ++ 69 ENEMY_MORALE_DECREASING -1 0 0 //ghost dragon ++ 69 SPELL_AFTER_ATTACK 0 75 20 //ghost dragon ++ 70 SPELL_IMMUNITY 0 62 0 //troglodytes are immune to blind ++ 71 SPELL_IMMUNITY 0 62 0 //infernal troglodytes are immune to blind ++ 72 RETURN_AFTER_STRIKE 0 0 0 //Harpies return after attack ++ 73 BLOCKS_RETALIATION 0 0 0 //Harpy Hags ++ 73 RETURN_AFTER_STRIKE 0 0 0 //Harpy Hags return after attack ++ 76 SPELL_AFTER_ATTACK 0 70 220 //medusas ++ 77 SPELL_AFTER_ATTACK 0 70 220 //medusa queens ++ 78 SELF_MORALE 0 0 0 //minotaurs ++ 79 SELF_MORALE 0 0 0 //minotaur kings ++ 81 SPELL_AFTER_ATTACK 0 74 20 //scorpicore ++ 82 LEVEL_SPELL_IMMUNITY 3 0 0 //red dragon's spell immunity ++ 83 LEVEL_SPELL_IMMUNITY 5 0 0 //black dragon's spell immunity ++ 87 ADDITIONAL_ATTACK 1 0 0 //wolf raider ++ 91 SPELLCASTER 2 43 6 //ogre magi cast bloodlust ++ 93 SPELL_AFTER_ATTACK 0 77 20 //thunderbirds ++ 96 ENEMY_DEFENCE_REDUCTION 40 0 0 //behemots ++ 97 ENEMY_DEFENCE_REDUCTION 80 0 0 //ancient behemots ++ 103 SPELL_AFTER_ATTACK 0 79 10 //mighty gorgons ++ 104 SPELL_AFTER_ATTACK 0 78 100 //serpent fly ++ 105 SPELL_AFTER_ATTACK 0 45 100 //mighty gorgons ++ 105 SPELL_AFTER_ATTACK 0 78 100 //dragon fly ++ 106 SPELL_AFTER_ATTACK 0 70 20 //basilisks ++ 107 SPELL_AFTER_ATTACK 0 70 20 //greater basilisks ++ 109 SPELL_AFTER_ATTACK 0 71 20 //Wyvern Monarch ++ 110 ATTACKS_ALL_ADJACENT 0 0 0 //hydras ++ 110 BLOCKS_RETALIATION 0 0 0 //hydras ++ 111 ATTACKS_ALL_ADJACENT 0 0 0 //chaos hydras ++ 111 BLOCKS_RETALIATION 0 0 0 //chaos hydras ++ 115 DOUBLE_WIDE 0 0 0 //water elemental should be treated as double-wide ++ 123 DOUBLE_WIDE 0 0 0 //ice elemental should be treated as double-wide ++ 140 DOUBLE_WIDE 0 0 0 //boar should be treated as double-wide ++ 142 DOUBLE_WIDE 0 0 0 //nomads should be treated as double-wide ++ 147 NOT_ACTIVE 0 0 0 //First Aid Tent //TODO: remove when support is added ++ 148 NOT_ACTIVE 0 0 0 //Ammo Cart +- 46 FLYING //hell hound doesn't fly +- 47 FLYING //cerberus doesn't fly +- 120 DOUBLE_WIDE 0 0 0 //psychic elemental +- 121 DOUBLE_WIDE 0 0 0 //magic elemental 0 diff --git a/hch/CCreatureHandler.cpp b/hch/CCreatureHandler.cpp index f4da2c73d..92273f12c 100644 --- a/hch/CCreatureHandler.cpp +++ b/hch/CCreatureHandler.cpp @@ -482,57 +482,7 @@ void CCreatureHandler::loadCreatures() creatures[46].abilities -= StackFeature::FLYING; //hell hound creatures[47].abilities -= StackFeature::FLYING; //cerberus */ - creatures[52].abilities += makeCreatureAbility(StackFeature::FLYING, 0); //Efreeti - creatures[53].abilities += makeCreatureAbility(StackFeature::FLYING, 0); //Efreet Sultan - creatures[47].abilities += makeCreatureAbility(StackFeature::THREE_HEADED_ATTACK, 0); //cerberus - - creatures[87].abilities += makeCreatureAbility(StackFeature::ADDITIONAL_ATTACK, 1); //wolf raider - - creatures[147].abilities += makeCreatureAbility(StackFeature::NOT_ACTIVE, 0); //First Aid Tent //TODO: remove when support is added - creatures[148].abilities += makeCreatureAbility(StackFeature::NOT_ACTIVE, 0); //Ammo Cart - - creatures[120].abilities -= StackFeature::DOUBLE_WIDE; //psychic elemental - creatures[121].abilities -= StackFeature::DOUBLE_WIDE; //magic elemental - - creatures[0].abilities += makeCreatureAbility(StackFeature::CHARGE_IMMUNITY, 0); //pikeman immunity to Champion charge bonus - creatures[1].abilities += makeCreatureAbility(StackFeature::CHARGE_IMMUNITY, 0); //halberdier immunity to Champion charge bonus - creatures[4].abilities += makeCreatureAbility(StackFeature::ADDITIONAL_RETALIATION, 1); //griffins retaliate twice - creatures[5].abilities += makeCreatureAbility(StackFeature::UNLIMITED_RETALIATIONS, 0); //royal griffins retaliate always - creatures[12].abilities += makeCreatureAbility(StackFeature::HATE, 0, 54); //angels hate devils - creatures[12].abilities += makeCreatureAbility(StackFeature::HATE, 0, 55); //angels hate archdevils - creatures[13].abilities += makeCreatureAbility(StackFeature::HATE, 0, 54); //archangels hate devils - creatures[13].abilities += makeCreatureAbility(StackFeature::HATE, 0, 55); //archangels hate arch - creatures[13].abilities += makeCreatureAbility(StackFeature::SPELLCASTER, 0, 38); //archangels cast resurrection - creatures[16].abilities += makeCreatureAbility(StackFeature::MAGIC_RESISTANCE, 20); //dwarf's magic resistance 20% - creatures[17].abilities += makeCreatureAbility(StackFeature::MAGIC_RESISTANCE, 40); //battle dwarf's magic resistance 40% - creatures[20].abilities += makeCreatureAbility(StackFeature::CHANGES_SPELL_COST_FOR_ENEMY, 2); //pegasus makes spell cost higher for enemy mage - creatures[21].abilities += makeCreatureAbility(StackFeature::CHANGES_SPELL_COST_FOR_ENEMY, 2); //silver pegasus makes spell cost higher for enemy mage - creatures[22].abilities += makeCreatureAbility(StackFeature::SPELL_AFTER_ATTACK, 0, 72, 100); //dendroids cast bind - creatures[23].abilities += makeCreatureAbility(StackFeature::SPELL_AFTER_ATTACK, 0, 72, 100); //dendroid guards cast bind - creatures[24].abilities += makeCreatureAbility(StackFeature::SPELL_RESISTANCE_AURA, 0, 55); //unicorn - creatures[25].abilities += makeCreatureAbility(StackFeature::SPELL_RESISTANCE_AURA, 0, 55); //war unicorn - creatures[24].abilities += makeCreatureAbility(StackFeature::SPELL_AFTER_ATTACK, 0, 62, 100); //unicorns cast blind with 20% probability - creatures[25].abilities += makeCreatureAbility(StackFeature::SPELL_AFTER_ATTACK, 0, 62, 100); //war unicorns cast blind with 20% probability - creatures[26].abilities += makeCreatureAbility(StackFeature::LEVEL_SPELL_IMMUNITY, 3); //green dragon's spell immunity - creatures[27].abilities += makeCreatureAbility(StackFeature::LEVEL_SPELL_IMMUNITY, 4); //gold dragon's spell immunity - creatures[26].abilities += makeCreatureAbility(StackFeature::TWO_HEX_ATTACK_BREATH, 0); //green dragon's breath - creatures[27].abilities += makeCreatureAbility(StackFeature::TWO_HEX_ATTACK_BREATH, 0); //gold dragon's breath - creatures[30].abilities += makeCreatureAbility(StackFeature::NON_LIVING, 0); //stone gargoyles are non-living - creatures[31].abilities += makeCreatureAbility(StackFeature::NON_LIVING, 0); //obsidian gargoyles are non-living - creatures[32].abilities += makeCreatureAbility(StackFeature::NON_LIVING, 0); //stone golems are non-living - creatures[33].abilities += makeCreatureAbility(StackFeature::NON_LIVING, 0); //iron golems are non-living - creatures[32].abilities += makeCreatureAbility(StackFeature::SPELL_DAMAGE_REDUCTION, 50, -1); //stone golems reduce dmg from spells - creatures[33].abilities += makeCreatureAbility(StackFeature::SPELL_DAMAGE_REDUCTION, 75, -1); //iron golems reduce dmg from spells - creatures[34].abilities += makeCreatureAbility(StackFeature::CHANGES_SPELL_COST_FOR_ALLY, -2); //mages reduce spell cost - creatures[35].abilities += makeCreatureAbility(StackFeature::CHANGES_SPELL_COST_FOR_ALLY, -2); //archmages reduce spell cost - creatures[36].abilities += makeCreatureAbility(StackFeature::HATE, 0, 52); //genies hate efreets - creatures[36].abilities += makeCreatureAbility(StackFeature::HATE, 0, 53); //genies hate efreet sultans - creatures[37].abilities += makeCreatureAbility(StackFeature::HATE, 0, 52); //master genies hate efreets - creatures[37].abilities += makeCreatureAbility(StackFeature::HATE, 0, 53); //master genies hate efreet sultans - creatures[37].abilities += makeCreatureAbility(StackFeature::RANDOM_GENIE_SPELLCASTER, 0); //master genies cast spells - creatures[38].abilities += makeCreatureAbility(StackFeature::BLOCKS_RETALIATION, 0); //nagas block retaliation - creatures[39].abilities += makeCreatureAbility(StackFeature::BLOCKS_RETALIATION, 0); //naga queens block retaliation std::vector mindSpells = getMindSpells(); for(int g=0; g