Add containerization and make this bad boy work on Windows and MacOS

This commit is contained in:
omer
2024-02-28 19:08:07 -06:00
parent d58a0543eb
commit df7a63e047
557 changed files with 6647 additions and 5493 deletions
-4
View File
@@ -1,4 +0,0 @@
tags
*.pyc
*.swp
*.o
+1 -1
View File
@@ -1,4 +1,4 @@
CFLAGS=-Wall -DMOD_$(mod) -g -Isrc/include -Isrc/include/proto -I../hm_base/src/include -I/usr/include/json-c/ -Iscript/mechanics/include #-DTURNOFF_TIMER -DMANA_ZERO -DTEST_DECK -DSPELL_ZERO_MANA
CFLAGS=-Wall -g -Isrc/include -Isrc/include/proto -I../hm_base/src/include -I/usr/include/json-c/ -Iscript/mechanics/include -DTURNOFF_TIMER -DMANA_ZERO #-DTEST_DECK #-DSPELL_ZERO_MANA
LIBS=-lev -lhmbase -lm -ljson-c -lcouchbase
LIBPATH=-L../hm_base/lib
TARGET=hm_gameserver
-4
View File
@@ -16,7 +16,3 @@ hm_gameserver is compatible with HearthStone client 5.2.x.
## Compilation ##
cd hm_gameserver && make
# This is not a standalone project!
[hm_gameserver](https://github.com/farb3yonddriv3n/hm_gameserver) is part of [hearthmod software stack](https://github.com/hearthmod/hearthmod)
BIN
View File
Binary file not shown.
+138
View File
@@ -0,0 +1,138 @@
destroyed_EX1_354_FLAG, 1000
spell_EX1_354_FLAG, 1000
destroyed_CS2_012_FLAG, 1000
spell_CS2_012_FLAG, 1000
destroyed_EX1_371_FLAG, 1000
buff_EX1_371_FLAG, 1000
destroyed_EX1_312_FLAG, 1000
spell_aoe_EX1_312_FLAG, 1000
destroyed_CS2_011_FLAG, 1000
buff_CS2_011_FLAG, 1000
destroyed_OG_223_FLAG, 1000
buff_OG_223_FLAG, 1000
destroyed_EX1_251_FLAG, 1000
spell_aoe_EX1_251_FLAG, 1000
destroyed_EX1_259_FLAG, 1000
spell_aoe_EX1_259_FLAG, 1000
destroyed_OG_101_FLAG, 1000
buff_OG_101_FLAG, 1000
destroyed_CS2_108_FLAG, 1000
buff_CS2_108_FLAG, 1000
destroyed_EX1_303_FLAG, 1000
spell_aoe_EX1_303_FLAG, 1000
weapon_CS2_097_FLAG, 1000
idle_CS2_097_FLAG, 1000
weapon_destroyed_CS2_097_FLAG, 1000
weapon_attack_CS2_097_FLAG, 1000
onboard_CS2_097_FLAG, 1000
spell_CS1h_001_FLAG, 1000
destroyed_NEW1_036_FLAG, 1000
buff_NEW1_036_FLAG, 1000
spell_aoe_GVG_010_FLAG, 1000
spell_aoe_CS1_112_FLAG, 1000
spell_CS2_072_FLAG, 1000
buff_CS2_077_FLAG, 1000
buff_CS2_023_FLAG, 1000
attachment_attack_EX1_607e_FLAG, 1000
defender_TB_SPT_Boss_FLAG, 1000
buff_LOEA16_9_FLAG, 1000
buff_CS2_234_FLAG, 1000
buff_PRO_001c_FLAG, 1000
attack_effect_CS2_024_FLAG, 1000
spell_CS2_024_FLAG, 1000
spell_DS1_185_FLAG, 1000
buff_CS2_063_FLAG, 1000
buff_CS2_076_FLAG, 1000
buff_AT_074_FLAG, 1000
spell_BRMA11_3_FLAG, 1000
destroyed_BRM_003_FLAG, 1000
spell_BRM_003_FLAG, 1000
destroyed_AT_001_FLAG, 1000
spell_AT_001_FLAG, 1000
buff_EX1_607_FLAG, 1000
attack_EX1_097_FLAG, 1000
battlecry_EX1_097_FLAG, 1000
buff_OG_090_FLAG, 1000
attack_EX1_011_FLAG, 1000
battlecry_EX1_011_FLAG, 1000
endturn_EX1_105_FLAG, 1000
attack_EX1_105_FLAG, 1000
attack_CS2_088_FLAG, 1000
battlecry_CS2_088_FLAG, 1000
onboard_CS2_088_FLAG, 1000
attack_EX1_158t_FLAG, 1000
attack_NAX4_03H_FLAG, 1000
attack_AT_023_FLAG, 1000
attack_CS2_168_FLAG, 1000
attack_CS2_201_FLAG, 1000
attack_CS2_200_FLAG, 1000
attack_CS2_119_FLAG, 1000
attack_CS2_172_FLAG, 1000
attack_CS2_171_FLAG, 1000
attack_CS2_182_FLAG, 1000
attack_CS2_120_FLAG, 1000
attack_EX1_506a_FLAG, 1000
attack_CS2_042_FLAG, 1000
battlecry_CS2_042_FLAG, 1000
attack_CS2_boar_FLAG, 1000
attack_CS2_237_FLAG, 1000
attack_LOE_077_FLAG, 1000
battlecry_LOE_077_FLAG, 1000
destroyed_CS2_118_FLAG, 1000
defender_CS2_118_FLAG, 1000
attack_CS2_118_FLAG, 1000
onboard_CS2_118_FLAG, 1000
destroyed_AT_128_FLAG, 1000
attack_AT_128_FLAG, 1000
attack_EX1_614_FLAG, 1000
battlecry_EX1_614_FLAG, 1000
attack_EX1_593_FLAG, 1000
battlecry_EX1_593_FLAG, 1000
attack_GVG_105_FLAG, 1000
battlecry_GVG_105_FLAG, 1000
attack_NEW1_030_FLAG, 1000
battlecry_NEW1_030_FLAG, 1000
destroyed_EX1_383_FLAG, 1000
attack_EX1_383_FLAG, 1000
onboard_EX1_383_FLAG, 1000
destroyed_CS2_065_FLAG, 1000
attack_CS2_065_FLAG, 1000
onboard_CS2_065_FLAG, 1000
destroyed_AT_018_FLAG, 1000
attack_AT_018_FLAG, 1000
onboard_AT_018_FLAG, 1000
destroyed_EX1_165t2_FLAG, 1000
attack_EX1_165t2_FLAG, 1000
onboard_EX1_165t2_FLAG, 1000
destroyed_EX1_559_FLAG, 1000
attack_EX1_559_FLAG, 1000
onboard_EX1_559_FLAG, 1000
destroyed_NEW1_011_FLAG, 1000
defender_NEW1_011_FLAG, 1000
attack_NEW1_011_FLAG, 1000
onboard_NEW1_011_FLAG, 1000
attack_CS2_226_FLAG, 1000
battlecry_CS2_226_FLAG, 1000
attack_EX1_009_FLAG, 1000
buff_EX1_581_FLAG, 1000
attack_EX1_049_FLAG, 1000
battlecry_EX1_049_FLAG, 1000
spell_aoe_EX1_400_FLAG, 1000
attack_effect_attachment_LOEA06_03e_FLAG, 1000
weapon_LOE_118_FLAG, 1000
idle_LOE_118_FLAG, 1000
weapon_destroyed_LOE_118_FLAG, 1000
weapon_attack_LOE_118_FLAG, 1000
onboard_LOE_118_FLAG, 1000
buff_LOEA06_03_FLAG, 1000
spell_aoe_CS2_026_FLAG, 1000
attack_EX1_306_FLAG, 1000
battlecry_EX1_306_FLAG, 1000
destroyed_CS2_222_FLAG, 1000
attack_CS2_222_FLAG, 1000
idle_CS2_222_FLAG, 1000
onboard_CS2_222_FLAG, 1000
destroyed_CS2_231_FLAG, 1000
attack_CS2_231_FLAG, 1000
idle_CS2_231_FLAG, 1000
onboard_CS2_231_FLAG, 1000
@@ -0,0 +1,14 @@
#ifndef SECTION_ATTACHMENT_ATTACK_H_
#define SECTION_ATTACHMENT_ATTACK_H_
#define attachment_attack_EX1_607e\
{\
int count = hsl_count_attachments(HSL_fake_deck, NULL, HSL_fake_attacker, "EX1_607e");\
if(count == 1) {\
hsl_replenish_health(HSL_fake_attacker, 1); \
}}
#define __SECTION_ATTACHMENT_ATTACK\
attachment_attack_EX1_607e\
#endif
@@ -0,0 +1,234 @@
#ifndef SECTION_ATTACK_H_
#define SECTION_ATTACK_H_
#define attack_EX1_097\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_097_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_011\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_011_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_105\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_105_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_088\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_088_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_158t\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_158t_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_NAX4_03H\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_NAX4_03H_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_AT_023\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_AT_023_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_168\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_168_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_201\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_201_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_200\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_200_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_119\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_119_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_172\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_172_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_171\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_171_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_182\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_182_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_120\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_120_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_506a\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_506a_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_042\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_042_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_boar\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_boar_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_237\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_237_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_LOE_077\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_LOE_077_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_118\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_118_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_AT_128\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_AT_128_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_614\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_614_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_593\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_593_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_GVG_105\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_GVG_105_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_NEW1_030\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_NEW1_030_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_383\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_383_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_065\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_065_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_AT_018\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_AT_018_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_165t2\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_165t2_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_559\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_559_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_NEW1_011\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_NEW1_011_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_226\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_226_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_009\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_009_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_049\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_049_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_EX1_306\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_EX1_306_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_222\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_222_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define attack_CS2_231\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_CS2_231_FLAG, FLAG_ISSET)) {\
hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define __SECTION_ATTACK\
attack_EX1_097\
attack_EX1_011\
attack_EX1_105\
attack_CS2_088\
attack_EX1_158t\
attack_NAX4_03H\
attack_AT_023\
attack_CS2_168\
attack_CS2_201\
attack_CS2_200\
attack_CS2_119\
attack_CS2_172\
attack_CS2_171\
attack_CS2_182\
attack_CS2_120\
attack_EX1_506a\
attack_CS2_042\
attack_CS2_boar\
attack_CS2_237\
attack_LOE_077\
attack_CS2_118\
attack_AT_128\
attack_EX1_614\
attack_EX1_593\
attack_GVG_105\
attack_NEW1_030\
attack_EX1_383\
attack_CS2_065\
attack_AT_018\
attack_EX1_165t2\
attack_EX1_559\
attack_NEW1_011\
attack_CS2_226\
attack_EX1_009\
attack_EX1_049\
attack_EX1_306\
attack_CS2_222\
attack_CS2_231\
#endif
@@ -0,0 +1,12 @@
#ifndef SECTION_ATTACK_EFFECT_H_
#define SECTION_ATTACK_EFFECT_H_
#define attack_effect_CS2_024\
if(HSL_attacker && flag(&(HSL_attacker->state), attack_effect_CS2_024_FLAG, FLAG_ISSET)) {\
hsl_freeze(HSL_attacker, HSL_defender) \
}
#define __SECTION_ATTACK_EFFECT\
attack_effect_CS2_024\
#endif
@@ -0,0 +1,12 @@
#ifndef SECTION_ATTACK_EFFECT_ATTACHMENT_H_
#define SECTION_ATTACK_EFFECT_ATTACHMENT_H_
#define attack_effect_attachment_LOEA06_03e\
{\
if(!is_spell(HSL_attacker) && attack > 0) { int count = hsl_count_attachments(hsl_deck(HSL_defender), NULL, HSL_defender, CN_DESOLATOR_BONUS); if(count > 0) { attack += count; } } \
}
#define __SECTION_ATTACK_EFFECT_ATTACHMENT\
attack_effect_attachment_LOEA06_03e\
#endif
@@ -0,0 +1,78 @@
#ifndef SECTION_BATTLECRY_H_
#define SECTION_BATTLECRY_H_
#define battlecry_EX1_097\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_097_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_increase_health(HSL_attacker, default_health(def)); hsl_change_attack(HSL_attacker, default_attack(def)); hsl_destroy(hsl_deck(def), def); } \
}
#define battlecry_EX1_011\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_011_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_heal_bc(HSL_attacker, def, 2); } \
}
#define battlecry_CS2_088\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_CS2_088_FLAG, FLAG_ISSET)) {\
def(card_list_s, allcards) allcards = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, HSL_heroes_included); def(card_list_s, cl) foreach(cl, allcards) { cl->card->receive.heal = 99; } hsl_attack_aoe(attacker, allcards, HSL_fake_levelup); hsl_link_target(attacker, allcards); \
}
#define battlecry_CS2_042\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_CS2_042_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_attack_bc(HSL_attacker, def, 3); } \
}
#define battlecry_LOE_077\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_LOE_077_FLAG, FLAG_ISSET)) {\
hsl_summon_card(HSL_deck_player, CN_BOAR, cardholder1); hsl_summon_card(HSL_deck_player, CN_VULTURE, cardholder2); \
}
#define battlecry_EX1_614\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_614_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_swap_health(HSL_attacker, def); } \
}
#define battlecry_EX1_593\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_593_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_attack_bc(HSL_attacker, def, 2); } \
}
#define battlecry_GVG_105\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_GVG_105_FLAG, FLAG_ISSET)) {\
def(card_list_s, allcards) allcards = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, HSL_heroes_excluded); def(card_list_s, cl) foreach(cl, allcards) { hsl_unset_exhausted(card(cl)); } \
}
#define battlecry_NEW1_030\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_NEW1_030_FLAG, FLAG_ISSET)) {\
def(card_list_s, allcards); allcards = hsl_board_all_cards_no_boss(HSL_attacker, HSL_heroes_excluded); def(card_list_s, itm); foreach(itm, allcards) { if(card(itm)->controller == HSL_deck_player->controller) { hsl_destroy(HSL_deck_player, card(itm)); } else { hsl_destroy(HSL_deck_opponent, card(itm)); } } def(card_list_s, hand); hand = hsl_cards_get_hand(HSL_deck_player); hsl_discard_hand(HSL_deck_player, hand); \
}
#define battlecry_CS2_226\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_CS2_226_FLAG, FLAG_ISSET)) {\
int num_minions = hsl_board_minions_count(HSL_deck_player, HSL_attacker); if(num_minions > 0) { hsl_change_attack(HSL_attacker, num_minions); hsl_increase_health(HSL_attacker, num_minions); hsl_add_single_attachment(HSL_player, HSL_deck_player, HSL_attacker, HSL_attacker); } \
}
#define battlecry_EX1_049\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_049_FLAG, FLAG_ISSET)) {\
def(card_s, def) def = hsl_card(HSL_target); if(def) { hsl_return_to_hand(def); } \
}
#define battlecry_EX1_306\
if(HSL_attacker && flag(&(HSL_attacker->state), battlecry_EX1_306_FLAG, FLAG_ISSET)) {\
hsl_discard_random_hand(HSL_deck_player, 1, holder) \
}
#define __SECTION_BATTLECRY\
battlecry_EX1_097\
battlecry_EX1_011\
battlecry_CS2_088\
battlecry_CS2_042\
battlecry_LOE_077\
battlecry_EX1_614\
battlecry_EX1_593\
battlecry_GVG_105\
battlecry_NEW1_030\
battlecry_CS2_226\
battlecry_EX1_049\
battlecry_EX1_306\
#endif
@@ -0,0 +1,114 @@
#ifndef SECTION_BUFF_H_
#define SECTION_BUFF_H_
#define buff_EX1_371\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_EX1_371_FLAG, FLAG_ISSET)) {\
hsl_divine_shield(HSL_defender); \
}
#define buff_CS2_011\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_011_FLAG, FLAG_ISSET)) {\
hsl_add_attachment(HSL_player, HSL_attacker, HSL_defender, 2); \
}
#define buff_OG_223\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_OG_223_FLAG, FLAG_ISSET)) {\
int change = HSL_defender->attack; hsl_buff_attack_expire(1, HSL_defender, change); hsl_add_attachment(HSL_player, HSL_attacker, HSL_defender, 1); \
}
#define buff_OG_101\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_OG_101_FLAG, FLAG_ISSET)) {\
hsl_destroy(HSL_deck_player, HSL_defender); int i; for(i = 0; i < 2; i++) { hsl_summon_card(HSL_deck_player, CN_EIDOLON, cardholder); } \
}
#define buff_CS2_108\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_108_FLAG, FLAG_ISSET)) {\
if(HSL_defender->controller == HSL_deck_player->controller) { hsl_destroy(HSL_deck_player, HSL_defender); } else { hsl_destroy(HSL_deck_opponent, HSL_defender); } \
}
#define buff_NEW1_036\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_NEW1_036_FLAG, FLAG_ISSET)) {\
def(card_list_s, all); all = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, HSL_heroes_excluded); def(card_list_s, itm); foreach(itm, all) { hsl_buff_attack_expire(1, itm->card, 1); hsl_add_attachment(HSL_player, HSL_attacker, itm->card, 1); hsl_add_defender(itm->card, holder); } \
}
#define buff_CS2_077\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_077_FLAG, FLAG_ISSET)) {\
hsl_draw_cards(HSL_player, HSL_deck_player, draw_card, 4); \
}
#define buff_CS2_023\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_023_FLAG, FLAG_ISSET)) {\
hsl_draw_cards(HSL_player, HSL_deck_player, draw_card, 2) \
}
#define buff_LOEA16_9\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_LOEA16_9_FLAG, FLAG_ISSET)) {\
hsl_refresh_mana(HSL_deck_player, 3); \
}
#define buff_CS2_234\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_234_FLAG, FLAG_ISSET)) {\
hsl_destroy(hsl_deck(HSL_defender),HSL_defender); \
}
#define buff_PRO_001c\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_PRO_001c_FLAG, FLAG_ISSET)) {\
def(card_list_s, allcards); allcards = hsl_board_friendly_cards(HSL_deck_player, HSL_no_attacker, HSL_heroes_excluded); def(card_list_s, cl); foreach(cl, allcards) { hsl_set_exhausted(card(cl)); } \
}
#define buff_CS2_063\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_063_FLAG, FLAG_ISSET)) {\
hsl_buff_corrupt_expire(2, HSL_defender); hsl_add_attachment(HSL_player, HSL_attacker, HSL_defender, 2); \
}
#define buff_CS2_076\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_CS2_076_FLAG, FLAG_ISSET)) {\
hsl_destroy(HSL_deck_opponent, HSL_defender); \
}
#define buff_AT_074\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_AT_074_FLAG, FLAG_ISSET)) {\
hsl_add_attachment(HSL_player, HSL_attacker, HSL_defender, 2); hsl_set_magic_immunity(HSL_defender); \
}
#define buff_EX1_607\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_EX1_607_FLAG, FLAG_ISSET)) {\
hsl_add_single_attachment(HSL_player, HSL_deck_player, HSL_attacker, HSL_defender); \
}
#define buff_OG_090\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_OG_090_FLAG, FLAG_ISSET)) {\
hsl_refresh_mana(HSL_deck_player, 3); \
}
#define buff_EX1_581\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_EX1_581_FLAG, FLAG_ISSET)) {\
hsl_return_to_hand(HSL_defender); \
}
#define buff_LOEA06_03\
if(HSL_attacker && flag(&(HSL_attacker->state), buff_LOEA06_03_FLAG, FLAG_ISSET)) {\
int count = hsl_count_attachments(hsl_deck(HSL_defender), NULL, HSL_defender, CN_DESOLATOR_BONUS); if(count == 0) { hsl_add_single_attachment(HSL_player, hsl_deck(HSL_defender), HSL_attacker, HSL_defender); } \
}
#define __SECTION_BUFF\
buff_EX1_371\
buff_CS2_011\
buff_OG_223\
buff_OG_101\
buff_CS2_108\
buff_NEW1_036\
buff_CS2_077\
buff_CS2_023\
buff_LOEA16_9\
buff_CS2_234\
buff_PRO_001c\
buff_CS2_063\
buff_CS2_076\
buff_AT_074\
buff_EX1_607\
buff_OG_090\
buff_EX1_581\
buff_LOEA06_03\
#endif
@@ -0,0 +1,24 @@
#ifndef SECTION_DEFENDER_H_
#define SECTION_DEFENDER_H_
#define defender_TB_SPT_Boss\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), defender_TB_SPT_Boss_FLAG, FLAG_ISSET)) {\
\
}
#define defender_CS2_118\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), defender_CS2_118_FLAG, FLAG_ISSET)) {\
/* Necromastery */ if(!(is_destroyed(HSL_fake_defender)) && level(HSL_fake_defender) >= 2) { def(deck_s, mdeck); mdeck = HSL_fake_defender->controller == HSL_deck_player->controller ? HSL_deck_player : HSL_deck_opponent ; int stacks = hsl_count_attachments(mdeck, NULL, HSL_fake_defender, CN_NECROMASTERY); if(is_destroyed(HSL_fake_attacker) && stacks < 5) { hsl_change_attack(HSL_fake_defender, 1); hsl_apply_attachment(HSL_player, mdeck, HSL_fake_defender, CN_NECROMASTERY); } } \
}
#define defender_NEW1_011\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), defender_NEW1_011_FLAG, FLAG_ISSET)) {\
if(!(is_destroyed(HSL_fake_defender)) && level(HSL_fake_defender) >= 2) { if(HSL_fake_defender->controller == HSL_deck_player->controller) { hsl_add_new_card_hand(HSL_deck_player, CN_COUNTER_HELIX, holder); } else { hsl_add_new_card_hand(HSL_deck_opponent, CN_COUNTER_HELIX, holder); } } \
}
#define __SECTION_DEFENDER\
defender_TB_SPT_Boss\
defender_CS2_118\
defender_NEW1_011\
#endif
@@ -0,0 +1,150 @@
#ifndef SECTION_DESTROYED_H_
#define SECTION_DESTROYED_H_
#define destroyed_EX1_354\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_354_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, "EX1_354", holder); \
}
#define destroyed_CS2_012\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_012_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_SWIPES, holder); \
}
#define destroyed_EX1_371\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_371_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, "EX1_371", holder); \
}
#define destroyed_EX1_312\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_312_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_BLACK_HOLE, holder); \
}
#define destroyed_CS2_011\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_011_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_ENRAGE, holder); \
}
#define destroyed_OG_223\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_OG_223_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_GODS_STRENGTH, holder); \
}
#define destroyed_EX1_251\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_251_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_FORKED_LIGHTNING, holder); \
}
#define destroyed_EX1_259\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_259_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_GODS_WRATH, holder); \
}
#define destroyed_OG_101\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_OG_101_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_DEMONIC_CONVERSION, holder); \
}
#define destroyed_CS2_108\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_108_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_CULLING_BLADE, holder); \
}
#define destroyed_EX1_303\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_303_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_REQUIEM_OF_SOULS, holder); \
}
#define destroyed_NEW1_036\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_NEW1_036_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_WARCRY, holder); \
}
#define destroyed_BRM_003\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_BRM_003_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_DRAGONS_BREATH, holder); \
}
#define destroyed_AT_001\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_AT_001_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, CN_LAGUNA_BLADE, holder); \
}
#define destroyed_CS2_118\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_118_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_REQUIEM_OF_SOULS); \
}
#define destroyed_AT_128\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_AT_128_FLAG, FLAG_ISSET)) {\
hsl_summon_card(hsl_deck(HSL_fake_defender), CN_SKELETON, cardholder); \
}
#define destroyed_EX1_383\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_383_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_WARCRY); hsl_destroy_inhand(CN_GODS_STRENGTH); \
}
#define destroyed_CS2_065\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_065_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_DEMONIC_CONVERSION); hsl_destroy_inhand(CN_BLACK_HOLE); \
}
#define destroyed_AT_018\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_AT_018_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_DRAGONS_BREATH); hsl_destroy_inhand(CN_LAGUNA_BLADE); \
}
#define destroyed_EX1_165t2\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_165t2_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_ENRAGE); hsl_destroy_inhand(CN_SWIPES); \
}
#define destroyed_EX1_559\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_EX1_559_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_FORKED_LIGHTNING); hsl_destroy_inhand(CN_GODS_WRATH); \
}
#define destroyed_NEW1_011\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_NEW1_011_FLAG, FLAG_ISSET)) {\
hsl_destroy_inhand(CN_CULLING_BLADE); hsl_destroy_inhand(CN_COUNTER_HELIX); \
}
#define destroyed_CS2_222\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_222_FLAG, FLAG_ISSET)) {\
def(card_list_s, all); all = hsl_board_friendly_cards(hsl_deck(HSL_fake_defender), -1, 0); def(card_list_s, itm) foreach(itm, all) { hsl_remove_attachment(hsl_deck(HSL_fake_defender), NULL, card(itm), CN_STORMWIND_CHAMP_BONUS); hsl_change_attack(card(itm), -1); hsl_decrease_health(card(itm), 1); } \
}
#define destroyed_CS2_231\
if(HSL_fake_defender && flag(&(HSL_fake_defender->state), destroyed_CS2_231_FLAG, FLAG_ISSET)) {\
def(card_list_s, tiny); tiny = hsl_cards_by_name(hsl_deck(HSL_fake_defender), CN_TINY); def(card_list_s, itm); foreach(itm, tiny) { hsl_remove_attachment(hsl_deck(card(itm)), NULL, card(itm), CN_WISP_BONUS); hsl_change_attack(card(itm), -4); hsl_decrease_health(card(itm), 4); } \
}
#define __SECTION_DESTROYED\
destroyed_EX1_354\
destroyed_CS2_012\
destroyed_EX1_371\
destroyed_EX1_312\
destroyed_CS2_011\
destroyed_OG_223\
destroyed_EX1_251\
destroyed_EX1_259\
destroyed_OG_101\
destroyed_CS2_108\
destroyed_EX1_303\
destroyed_NEW1_036\
destroyed_BRM_003\
destroyed_AT_001\
destroyed_CS2_118\
destroyed_AT_128\
destroyed_EX1_383\
destroyed_CS2_065\
destroyed_AT_018\
destroyed_EX1_165t2\
destroyed_EX1_559\
destroyed_NEW1_011\
destroyed_CS2_222\
destroyed_CS2_231\
#endif
@@ -0,0 +1,12 @@
#ifndef SECTION_ENDTURN_H_
#define SECTION_ENDTURN_H_
#define endturn_EX1_105\
{\
def(card_list_s, tiny); tiny = hsl_cards_by_name(HSL_fake_deck, CN_TINY); def(card_list_s, tc); foreach(tc, tiny) { hsl_change_attack(card(tc), 2); hsl_increase_health(card(tc), 2); hsl_add_single_attachment(HSL_player, HSL_fake_deck, card(tc), card(tc)); } \
}
#define __SECTION_ENDTURN\
endturn_EX1_105\
#endif
@@ -0,0 +1,26 @@
#ifndef SECTION_IDLE_H_
#define SECTION_IDLE_H_
#define idle_CS2_097\
{ if(is_boss(HSL_attacker) && is_weapon(HSL_deck_player, CN_DIVINE_RAPIER)) { hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, CN_DIVINE_RAPIER_BONUS); hsl_change_attack(HSL_attacker, 8); } }\
#define idle_LOE_118\
{ if(is_boss(HSL_attacker) && is_weapon(HSL_deck_player, CN_ECHO_SABRE)) { hsl_set_windfury(HSL_attacker); } }\
#define idle_CS2_222\
{ int count = hsl_board_count_by_name(hsl_deck(HSL_fake_attacker), CN_STORMWIND_CHAMP); if(cmp_cardname(HSL_fake_attacker, CN_STORMWIND_CHAMP)) { count--; } if(count > 0) { int i; for(i = 0; i < count; i++) { hsl_apply_attachment(HSL_player, hsl_deck(HSL_fake_attacker), HSL_fake_attacker, CN_STORMWIND_CHAMP_BONUS); } hsl_change_attack(HSL_fake_attacker, count); hsl_increase_health(HSL_fake_attacker, count); } }\
#define idle_CS2_231\
{ if(cmp_cardname(HSL_attacker, CN_TINY)) { int wisps = hsl_board_count_by_name(HSL_deck_player, CN_WISP); if(wisps >= 1) { hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, CN_WISP_BONUS); hsl_change_attack(HSL_attacker, 4); hsl_increase_health(HSL_attacker, 4); } } }\
#define __SECTION_IDLE\
idle_CS2_097\
idle_LOE_118\
idle_CS2_222\
idle_CS2_231\
#endif
@@ -0,0 +1,78 @@
#ifndef SECTION_ONBOARD_H_
#define SECTION_ONBOARD_H_
#define onboard_CS2_097\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_097_FLAG, FLAG_ISSET)) {\
def(card_list_s, all) all = hsl_board_boss_cards(HSL_deck_player); def(card_list_s, itm) foreach(itm, all) { hsl_apply_attachment(HSL_player, HSL_deck_player, itm->card, CN_DIVINE_RAPIER_BONUS); hsl_change_attack(itm->card, 8); } \
}
#define onboard_CS2_088\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_088_FLAG, FLAG_ISSET)) {\
hsl_add_new_card_hand(HSL_deck_player, "EX1_371", holder); hsl_add_new_card_hand(HSL_deck_player, "EX1_354", holder1); \
}
#define onboard_CS2_118\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_118_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_EX1_383\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_EX1_383_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_CS2_065\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_065_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_AT_018\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_AT_018_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_EX1_165t2\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_EX1_165t2_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_EX1_559\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_EX1_559_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_NEW1_011\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_NEW1_011_FLAG, FLAG_ISSET)) {\
hsl_apply_attachment(HSL_player, HSL_deck_player, HSL_attacker, LEVEL_1); \
}
#define onboard_LOE_118\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_LOE_118_FLAG, FLAG_ISSET)) {\
def(card_list_s, all) all = hsl_board_boss_cards(HSL_deck_player); def(card_list_s, itm) foreach(itm, all) { hsl_set_windfury(itm->card); /* card can attack again */ if(turn_plays(itm->card) == 1) { hsl_unset_exhausted(itm->card); } } \
}
#define onboard_CS2_222\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_222_FLAG, FLAG_ISSET)) {\
def(card_list_s, all); all = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, 0); def(card_list_s, itm); foreach(itm, all) { hsl_apply_attachment(HSL_player, HSL_deck_player, card(itm), CN_STORMWIND_CHAMP_BONUS); hsl_change_attack(card(itm), 1); hsl_increase_health(card(itm), 1); } \
}
#define onboard_CS2_231\
if(HSL_attacker && flag(&(HSL_attacker->state), onboard_CS2_231_FLAG, FLAG_ISSET)) {\
def(card_list_s, tiny); tiny = hsl_cards_by_name(HSL_deck_player, CN_TINY); def(card_list_s, itm); foreach(itm, tiny) { hsl_apply_attachment(HSL_player, HSL_deck_player, card(itm), CN_WISP_BONUS); hsl_change_attack(card(itm), 4); hsl_increase_health(card(itm), 4); } \
}
#define __SECTION_ONBOARD\
onboard_CS2_097\
onboard_CS2_088\
onboard_CS2_118\
onboard_EX1_383\
onboard_CS2_065\
onboard_AT_018\
onboard_EX1_165t2\
onboard_EX1_559\
onboard_NEW1_011\
onboard_LOE_118\
onboard_CS2_222\
onboard_CS2_231\
#endif
@@ -0,0 +1,60 @@
#ifndef SECTION_SPELL_H_
#define SECTION_SPELL_H_
#define spell_EX1_354\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_EX1_354_FLAG, FLAG_ISSET)) {\
hsl_receive_heal(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_CS2_012\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_CS2_012_FLAG, FLAG_ISSET)) {\
/* Wounded multiplies damage */ int count = hsl_count_attachments(HSL_deck_player, HSL_deck_opponent, HSL_defender, CN_WOUNDED); hsl_receive_damage(HSL_defender, 2 + count * 2); /* Wounded lasts 6 rounds */ hsl_add_attachment(HSL_opponent, HSL_attacker, HSL_defender, 6); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_CS1h_001\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_CS1h_001_FLAG, FLAG_ISSET)) {\
hsl_receive_heal(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_CS2_072\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_CS2_072_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_CS2_024\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_CS2_024_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 3); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_DS1_185\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_DS1_185_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_BRMA11_3\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_BRMA11_3_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_BRM_003\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_BRM_003_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 2); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define spell_AT_001\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_AT_001_FLAG, FLAG_ISSET)) {\
hsl_receive_damage(HSL_defender, 10); hsl_attack(HSL_attacker, HSL_defenders, HSL_fake_levelup); \
}
#define __SECTION_SPELL\
spell_EX1_354\
spell_CS2_012\
spell_CS1h_001\
spell_CS2_072\
spell_CS2_024\
spell_DS1_185\
spell_BRMA11_3\
spell_BRM_003\
spell_AT_001\
#endif
@@ -0,0 +1,54 @@
#ifndef SECTION_SPELL_AOE_H_
#define SECTION_SPELL_AOE_H_
#define spell_aoe_EX1_312\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_EX1_312_FLAG, FLAG_ISSET)) {\
def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_excluded); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), 1); } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); \
}
#define spell_aoe_EX1_251\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_EX1_251_FLAG, FLAG_ISSET)) {\
def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_excluded); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), 1); } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); \
}
#define spell_aoe_EX1_259\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_EX1_259_FLAG, FLAG_ISSET)) {\
def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_excluded); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), 3); } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); \
}
#define spell_aoe_EX1_303\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_EX1_303_FLAG, FLAG_ISSET)) {\
def(card_s, shadow_fiend); shadow_fiend = hsl_card_board_by_name(HSL_player, HSL_deck_player, CN_SHADOW_FIEND); if(shadow_fiend) { int count = hsl_count_attachments(HSL_deck_player, NULL, shadow_fiend, CN_NECROMASTERY); def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_excluded); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), count); } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); } \
}
#define spell_aoe_GVG_010\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_GVG_010_FLAG, FLAG_ISSET)) {\
hsl_refresh_mana(HSL_deck_player, 2); def(card_list_s, allcards) allcards = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, HSL_heroes_excluded); def(card_list_s, cl) foreach(cl, allcards) { hsl_receive_heal(card(cl), 2); } hsl_attack_aoe(HSL_attacker, allcards, HSL_fake_levelup); hsl_link_target(HSL_attacker, allcards); \
}
#define spell_aoe_CS1_112\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_CS1_112_FLAG, FLAG_ISSET)) {\
def(card_list_s, allcards) allcards = hsl_board_friendly_cards(HSL_deck_player, HSL_attacker->id, HSL_heroes_excluded); def(card_list_s, cl) foreach(cl, allcards) { cl->card->receive.heal = 2; } hsl_attack_aoe(HSL_attacker, allcards, HSL_fake_levelup); hsl_link_target(HSL_attacker, allcards); \
}
#define spell_aoe_EX1_400\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_EX1_400_FLAG, FLAG_ISSET)) {\
def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_included); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), 1); } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); \
}
#define spell_aoe_CS2_026\
if(HSL_attacker && flag(&(HSL_attacker->state), spell_aoe_CS2_026_FLAG, FLAG_ISSET)) {\
def(card_list_s, e) e = hsl_board_enemy_cards(HSL_attacker, HSL_heroes_excluded, HSL_magic_immunity_excluded); int count = hsl_count_cards(e); if(count > 0) { def(card_s, card) card = hsl_random_card(e); def(card_list_s, cl) foreach(cl, e) { hsl_receive_damage(card(cl), 1); } if(card) { hsl_freeze(HSL_attacker, card); } } hsl_attack_aoe(HSL_attacker, e, HSL_fake_levelup); hsl_link_target(HSL_attacker, e); \
}
#define __SECTION_SPELL_AOE\
spell_aoe_EX1_312\
spell_aoe_EX1_251\
spell_aoe_EX1_259\
spell_aoe_EX1_303\
spell_aoe_GVG_010\
spell_aoe_CS1_112\
spell_aoe_EX1_400\
spell_aoe_CS2_026\
#endif
@@ -0,0 +1,18 @@
#ifndef SECTION_WEAPON_H_
#define SECTION_WEAPON_H_
#define weapon_CS2_097\
if(HSL_attacker && flag(&(HSL_attacker->state), weapon_CS2_097_FLAG, FLAG_ISSET)) {\
hsl_give_weapon(HSL_deck_player); \
}
#define weapon_LOE_118\
if(HSL_attacker && flag(&(HSL_attacker->state), weapon_LOE_118_FLAG, FLAG_ISSET)) {\
hsl_give_weapon(HSL_deck_player); \
}
#define __SECTION_WEAPON\
weapon_CS2_097\
weapon_LOE_118\
#endif
@@ -0,0 +1,18 @@
#ifndef SECTION_WEAPON_ATTACK_H_
#define SECTION_WEAPON_ATTACK_H_
#define weapon_attack_CS2_097\
if(HSL_fake_weapon && flag(&(HSL_fake_weapon->state), weapon_attack_CS2_097_FLAG, FLAG_ISSET)) {\
if(HSL_fake_weapon) { hsl_set_weapon_durability(HSL_fake_weapon, -1); if(hsl_weapon_durability(HSL_fake_weapon) == 0) { hsl_destroy_weapon(HSL_fake_weapon, HSL_fake_deck); } hsl_add_defender(HSL_fake_weapon, holder); } \
}
#define weapon_attack_LOE_118\
if(HSL_fake_weapon && flag(&(HSL_fake_weapon->state), weapon_attack_LOE_118_FLAG, FLAG_ISSET)) {\
if(HSL_fake_weapon) { hsl_set_weapon_durability(HSL_fake_weapon, -1); if(hsl_weapon_durability(HSL_fake_weapon) == 0) { hsl_destroy_weapon(HSL_fake_weapon, HSL_fake_deck); } hsl_add_defender(HSL_fake_weapon, holder); } \
}
#define __SECTION_WEAPON_ATTACK\
weapon_attack_CS2_097\
weapon_attack_LOE_118\
#endif
@@ -0,0 +1,18 @@
#ifndef SECTION_WEAPON_DESTROYED_H_
#define SECTION_WEAPON_DESTROYED_H_
#define weapon_destroyed_CS2_097\
if(HSL_fake_weapon && flag(&(HSL_fake_weapon->state), weapon_destroyed_CS2_097_FLAG, FLAG_ISSET)) {\
def(card_list_s, all) all = hsl_board_boss_cards(HSL_deck_player); def(card_list_s, itm) foreach(itm, all) { hsl_remove_attachment(HSL_deck_player, NULL, itm->card, CN_DIVINE_RAPIER_BONUS); hsl_change_attack(itm->card, -8); hsl_add_defender(itm->card, holder); } \
}
#define weapon_destroyed_LOE_118\
if(HSL_fake_weapon && flag(&(HSL_fake_weapon->state), weapon_destroyed_LOE_118_FLAG, FLAG_ISSET)) {\
def(card_list_s, all) all = hsl_board_boss_cards(HSL_deck_player); def(card_list_s, itm) foreach(itm, all) { hsl_unset_windfury(itm->card); if(turn_plays(itm->card) > 0) { hsl_set_exhausted(itm->card); } hsl_add_defender(itm->card, holder); } \
}
#define __SECTION_WEAPON_DESTROYED\
weapon_destroyed_CS2_097\
weapon_destroyed_LOE_118\
#endif
+2 -2
View File
@@ -70,7 +70,7 @@ if __name__ == "__main__":
p = parser.parser()
cb = Bucket('couchbase://localhost/hbs', password='aci')
loaded = cb.get('u:mod_dota').value
loaded = cb.get('u:mod_woa').value
for c in loaded['cards']:
@@ -78,7 +78,7 @@ if __name__ == "__main__":
for k in c:
if k[0] == '__name':
name = k[1]
if k[0] == '__code': # code comes later than name
if k[0] == '__code': # code comes laters than name
p.parse_card(k[1], name)
'''
+330
View File
@@ -0,0 +1,330 @@
#include <flag_def.h>
int flag_defs[MAX_FLAGS_DEF] = {
1000, // index 0
1000, // index 1
1000, // index 2
1000, // index 3
1000, // index 4
1000, // index 5
1000, // index 6
1000, // index 7
1000, // index 8
1000, // index 9
1000, // index 10
1000, // index 11
1000, // index 12
1000, // index 13
1000, // index 14
1000, // index 15
1001, // index 16
1000, // index 17
1000, // index 18
1000, // index 19
1000, // index 20
1000, // index 21
1000, // index 22
1000, // index 23
1000, // index 24
1000, // index 25
1000, // index 26
1000, // index 27
1000, // index 28
1000, // index 29
1000, // index 30
1000, // index 31
1000, // index 32
1000, // index 33
1000, // index 34
1000, // index 35
1000, // index 36
1000, // index 37
1000, // index 38
1000, // index 39
1000, // index 40
1000, // index 41
1000, // index 42
1000, // index 43
1000, // index 44
1000, // index 45
1000, // index 46
1000, // index 47
1000, // index 48
1000, // index 49
1000, // index 50
1000, // index 51
1000, // index 52
1000, // index 53
1000, // index 54
1000, // index 55
1000, // index 56
1000, // index 57
1000, // index 58
1000, // index 59
1000, // index 60
1000, // index 61
1000, // index 62
1000, // index 63
1000, // index 64
1000, // index 65
1000, // index 66
1000, // index 67
1000, // index 68
1000, // index 69
1000, // index 70
1000, // index 71
1000, // index 72
1000, // index 73
1000, // index 74
1000, // index 75
1000, // index 76
1000, // index 77
1000, // index 78
1000, // index 79
1000, // index 80
1000, // index 81
1000, // index 82
1000, // index 83
1000, // index 84
1000, // index 85
1000, // index 86
1000, // index 87
1000, // index 88
1000, // index 89
1000, // index 90
1000, // index 91
1000, // index 92
1000, // index 93
1000, // index 94
1000, // index 95
1000, // index 96
1000, // index 97
1000, // index 98
1000, // index 99
1000, // index 100
1000, // index 101
1000, // index 102
1000, // index 103
1000, // index 104
1000, // index 105
1000, // index 106
1000, // index 107
1000, // index 108
1000, // index 109
1000, // index 110
1000, // index 111
1000, // index 112
1000, // index 113
1000, // index 114
1000, // index 115
1000, // index 116
1000, // index 117
1000, // index 118
1000, // index 119
1000, // index 120
1000, // index 121
1000, // index 122
1000, // index 123
1000, // index 124
1000, // index 125
1000, // index 126
1000, // index 127
1000, // index 128
1000, // index 129
1000, // index 130
1000, // index 131
1000, // index 132
1000, // index 133
1000, // index 134
1000, // index 135
1000, // index 136
1000, // index 137
1000, // index 138
1000, // index 139
1000, // index 140
1000, // index 141
1000, // index 142
1000, // index 143
1000, // index 144
1000, // index 145
1000, // index 146
1000, // index 147
1000, // index 148
1000, // index 149
1000, // index 150
1000, // index 151
1000, // index 152
1000, // index 153
1000, // index 154
1000, // index 155
1000, // index 156
1000, // index 157
1000, // index 158
1000, // index 159
1000, // index 160
1000, // index 161
1000, // index 162
1000, // index 163
1000, // index 164
1000, // index 165
1000, // index 166
1000, // index 167
1000, // index 168
1000, // index 169
1000, // index 170
1000, // index 171
1000, // index 172
1000, // index 173
1000, // index 174
1000, // index 175
1000, // index 176
1000, // index 177
1000, // index 178
1000, // index 179
1000, // index 180
1000, // index 181
1000, // index 182
1000, // index 183
1000, // index 184
1000, // index 185
1000, // index 186
1000, // index 187
1000, // index 188
1000, // index 189
1000, // index 190
1000, // index 191
1000, // index 192
1000, // index 193
1000, // index 194
1000, // index 195
1000, // index 196
1000, // index 197
1000, // index 198
1000, // index 199
1000, // index 200
1000, // index 201
1000, // index 202
1000, // index 203
1000, // index 204
1000, // index 205
1000, // index 206
1000, // index 207
1000, // index 208
1000, // index 209
1000, // index 210
1000, // index 211
1000, // index 212
1000, // index 213
1000, // index 214
1000, // index 215
1000, // index 216
1000, // index 217
1000, // index 218
1000, // index 219
1000, // index 220
1000, // index 221
1000, // index 222
1000, // index 223
1000, // index 224
1000, // index 225
1000, // index 226
1000, // index 227
1000, // index 228
1000, // index 229
1000, // index 230
1000, // index 231
1000, // index 232
1000, // index 233
1000, // index 234
1000, // index 235
1000, // index 236
1000, // index 237
1000, // index 238
1000, // index 239
1000, // index 240
1000, // index 241
1000, // index 242
1000, // index 243
1000, // index 244
1000, // index 245
1000, // index 246
1000, // index 247
1000, // index 248
1000, // index 249
1000, // index 250
1000, // index 251
1000, // index 252
1000, // index 253
1000, // index 254
1000, // index 255
1000, // index 256
1000, // index 257
1000, // index 258
1000, // index 259
1000, // index 260
1000, // index 261
1000, // index 262
1000, // index 263
1000, // index 264
1000, // index 265
1000, // index 266
1000, // index 267
1000, // index 268
1000, // index 269
1000, // index 270
1000, // index 271
1000, // index 272
1000, // index 273
1000, // index 274
1000, // index 275
1000, // index 276
1000, // index 277
1000, // index 278
1000, // index 279
1000, // index 280
1000, // index 281
1000, // index 282
1000, // index 283
1000, // index 284
1000, // index 285
1000, // index 286
1000, // index 287
1000, // index 288
1000, // index 289
1000, // index 290
1000, // index 291
1000, // index 292
1000, // index 293
1000, // index 294
1000, // index 295
1000, // index 296
1000, // index 297
1000, // index 298
1000, // index 299
1000, // index 300
1000, // index 301
1000, // index 302
1000, // index 303
1000, // index 304
1000, // index 305
1000, // index 306
1000, // index 307
1000, // index 308
1000, // index 309
1000, // index 310
1000, // index 311
1000, // index 312
1000, // index 313
1000, // index 314
1000, // index 315
1000, // index 316
1000, // index 317
1000, // index 318
1000, // index 319
1000, // index 320
1000, // index 321
1000, // index 322
1000, // index 323
1000, // index 324
1000, // index 325
};
+3 -4
View File
@@ -15,7 +15,6 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <mods.h>
#include <game.h>
enum board_e {
@@ -136,8 +135,8 @@ static void retrieve_deck_cb(struct cbop_s *cbop)
char key1[128], key2[128];
snprintf(key1, sizeof(key1), "u:deck_%s_%s", MOD_URL, w->p1->hbs_id);
snprintf(key2, sizeof(key2), "u:deck_%s_%s", MOD_URL, w->p2->hbs_id);
snprintf(key1, sizeof(key1), "u:deck_%s", w->p1->hbs_id);
snprintf(key2, sizeof(key2), "u:deck_%s", w->p2->hbs_id);
assert(hp);
@@ -202,7 +201,7 @@ void retrieve_deck(struct watcher_s *w, int player)
k = w->p2->hbs_id;
}
snprintf(key, sizeof(key), "u:deck_%s_%s", MOD_URL, k);
snprintf(key, sizeof(key), "u:deck_%s", k);
hm_log(LOG_DEBUG, lg, "Retrieving deck for player: %d", player);
+335
View File
@@ -0,0 +1,335 @@
#ifndef FLAG_DEF_H_
#define FLAG_DEF_H_
#define MAX_FLAGS_DEF 326
int flag_defs[MAX_FLAGS_DEF];
enum flags_e {
MECHANICS_DAMAGE = 0,
MECHANICS_HEALTH = 1,
MECHANICS_ATTACK = 2,
MECHANICS_ATTACK_DAMAGE = 3,
MECHANICS_ATTACK_HEAL = 4,
MECHANICS_HEROPOWER = 5,
MECHANICS_BATTLECRY_TRIGGER = 6,
MECHANICS_CHANGESIDES = 7,
MECHANICS_ARMOR = 8,
MECHANICS_DURABILITY = 9,
MECHANICS_DETACH = 10,
MECHANICS_SELECTED = 11,
MECHANICS_DESTROY_WEAPON = 12,
MECHANICS_TURN_TRIGGER = 13,
MECHANICS_COST = 14,
CARD_HAND = 15,
CARD_DESTROYED = 16,
CARD_BOARD = 17,
CARD_EXHAUSTED = 18,
CARD_HERO = 19,
CARD_HEROPOWER = 20,
CARD_HEROWEAPON = 21,
CARD_BOSS = 22,
CARD_TARGETING = 23,
CARD_NONTARGET = 24,
CARD_NONTARGET_BC = 25,
CARD_SPELL = 26,
CARD_SPELL_HEAL = 27,
CARD_SPELL_DAMAGE = 28,
CARD_HP_REINFORCE = 29,
CARD_HP_DAGGERMASTERY = 30,
CARD_HP_ARMORUP = 31,
CARD_HP_LIFETAP = 32,
CARD_HP_SHAPESHIFT = 33,
CARD_WINDFURY = 34,
CARD_DECK = 35,
CARD_TARGET_HERO = 36,
CARD_TARGET_MINIONS = 37,
CARD_TARGET_ENEMY_HERO = 38,
CARD_TARGET_ENEMY_MINIONS = 39,
CARD_TARGET_ALLY_HERO = 40,
CARD_TARGET_ALLY_MINIONS = 41,
CARD_TARGET_ALLY = 42,
CARD_TARGET_ENEMY = 43,
CARD_TARGET_ALL = 44,
CARD_HP_SPELL_DAMAGE = 45,
CARD_INNERFIRE = 46,
CARD_AOE_ENEMY_MINIONS = 47,
CARD_AOE_ALLENEMY = 48,
CARD_CHARGE = 49,
CARD_DIVINE_SHIELD = 50,
CARD_FREEZE = 51,
CARD_FROZEN = 52,
CARD_TARGET_FROZEN_4_DMG = 53,
CARD_BATTLECRY = 54,
CARD_BATTLECRY_DAMAGE3_ENEMY_HERO = 55,
CARD_BATTLECRY_TARGET = 56,
CARD_BATTLECRY_HEAL2_TARGET = 57,
CARD_BATTLECRY_DRAW1_CARD = 58,
CARD_DRAW2_CARD = 59,
CARD_DRAW4_CARD = 60,
CARD_DRAW_CARD = 61,
CARD_MINION = 62,
CARD_BUFF = 63,
CARD_DIVINESPIRIT = 64,
CARD_AOE = 65,
CARD_AOE_TARGET_ALL = 66,
CARD_HEAL_ALLIES = 67,
CARD_BATTLECRY_DAMAGE1_ALL = 68,
CARD_AOE_MINIONS = 69,
CARD_SUMMON = 70,
CARD_WEAPON_ROCKBITER = 71,
CARD_WEAPON = 72,
CARD_BOARD_WEAPON = 73,
CARD_SUMMON_CS2_MIRROR = 74,
CARD_BLESSING_OF_KINGS = 75,
CARD_BLOODLUST = 76,
CARD_BUFF_AOE = 77,
CARD_CORRUPTION = 78,
CARD_CORRUPTED = 79,
CARD_ATTACHMENT = 80,
CARD_RAID_LEADER = 81,
CARD_AURA = 82,
CARD_STORMWIND_CHAMPION = 83,
CARD_RACE_BEAST = 84,
CARD_RACE_MURLOC = 85,
CARD_TAUNT = 86,
CARD_SPELLPOWER = 87,
CARD_SAP = 88,
CARD_VANISH = 89,
CARD_SUMMON_ANIMAL_COMPANION = 90,
CARD_UNCOLLECTIBLE = 91,
CARD_BATTLECRY_SUMMON_DRAGONLING_MECHANIC = 92,
CARD_RACE_MECH = 93,
CARD_LEOKK = 94,
CARD_BATTLECRY_SUMMON_MURLOC_SCOUT = 95,
CARD_BATTLECRY_SUMMON_BOAR = 96,
CARD_BATTLECRY_SUMMON = 97,
CARD_RACE_TOTEM = 98,
CARD_RACE_DEMON = 99,
CARD_TURN_HEAL1_MINIONS = 100,
CARD_TOTEMIC_CALL_CHILD = 101,
CARD_HP_TOTEMIC_CALL = 102,
CARD_BATTLECRY_HEAL2_ALIES = 103,
CARD_BATTLECRY_HEAL6_ALLY_HERO = 104,
CARD_BATTLECRY_DAMAGE1_TARGET = 105,
CARD_BATTLECRY_DAMAGE2_TARGET = 106,
CARD_BATTLECRY_DAMAGE3_TARGET = 107,
CARD_BATTLECRY_FROSTWOLF_WARLORD = 108,
CARD_BATTLECRY_DISCARD1_CARD = 109,
CARD_DISCARD = 110,
CARD_MIND_CONTROL = 111,
CARD_AOE_CLEAVE = 112,
CARD_FAN_OF_KNIVES = 113,
CARD_KILL_COMMAND = 114,
CARD_MIND_VISION = 115,
CARD_DAMAGE_DRAW_CARD = 116,
CARD_SOULFIRE = 117,
CARD_MORTAL_COIL = 118,
CARD_DRAW1_CARD = 119,
CARD_ARMOR5 = 120,
CARD_TRUESILVER_CHAMPION = 121,
CARD_STARVING_BUZZARD = 122,
CARD_SAVAGE_ROAR = 123,
CARD_WARSONG_COMMANDER = 124,
CARD_TIMBER_WOLF = 125,
CARD_FLAMETONGUE_TOTEM = 126,
CARD_GURU_BERSERKER = 127,
CARD_CLAW = 128,
CARD_MARK_OF_THE_WILD = 129,
CARD_HUNTERS_MARK = 130,
CARD_AOE_MULTISHOT = 131,
CARD_ANCESTRAL_HEALING = 132,
CARD_ROCKBITER_WEAPON = 133,
CARD_DRAIN_LIFE = 134,
CARD_SINISTER_STRIKE = 135,
CARD_ASSASINATE = 136,
CARD_MIND_BLAST = 137,
CARD_HAND_OF_PROTECTION = 138,
CARD_CHARGE_BUFF = 139,
CARD_HEROIC_STRIKE = 140,
CARD_EXECUTE = 141,
CARD_SHADOW_WORD_DEATH = 142,
CARD_SHADOW_WORD_PAIN = 143,
CARD_SACRIFITIAL_PACT = 144,
CARD_BATTLECRY_DESTROY_ENEMY_WEAPON = 145,
CARD_POWER_WORD_SHIELD = 146,
CARD_SWIPE = 147,
CARD_ARCANE_MISSILES = 148,
CARD_TRACKING = 149,
CARD_TRANSFORM = 150,
CARD_POLYMORPH = 151,
CARD_HIDE = 152,
CARD_LINKED = 153,
CARD_HEX = 154,
CARD_TARGET_UNDAMAGED_MINION = 155,
CARD_TARGET_DAMAGED_MINION = 156,
CARD_TARGET_3ATTACK_LESS = 157,
CARD_TARGET_5ATTACK_MORE = 158,
CARD_TARGET_30PERCENT_LESS = 159,
CARD_TARGET_DEMON = 160,
CARD_BLESSING_OF_MIGHT = 161,
CARD_TARGET_UNDAMAGED = 162,
CARD_ARCHMAGE_ANTONIDAS = 163,
CARD_TARGET_BC_AUTO = 164,
CARD_TARGET_BC_MANUAL = 165,
CARD_TARGET_BC_ALL = 166,
CARD_TARGETING_BC = 167,
CARD_TARGET_BC_ALLY = 168,
CARD_TARGET_BC_ENEMY = 169,
CARD_TARGET_BC_ENEMY_MINIONS = 170,
CARD_TARGET_BC_HERO = 171,
CARD_TARGET_BC_ENEMY_HERO = 172,
CARD_TARGET_BC_MINIONS = 173,
CARD_TARGET_BC_ALLY_MINIONS = 174,
CARD_TARGET_BC_ALLY_HERO = 175,
CARD_STEALTH = 176,
CARD_ATTACK = 177,
CARD_TARGET_URSA = 178,
CARD_TARGET_SVEN = 179,
CARD_LEVELUP = 180,
CARD_PIERCE_MAGIC_IMMUNITY = 181,
CARD_TARGET_ALLY_BOARD = 182,
CARD_TARGET_BOARD = 183,
CARD_TARGET_ENEMY_BOARD = 184,
CARD_TARGET_ALLY_BOSSES = 185,
CARD_TARGET_ENEMY_BOSSES = 186,
CARD_TARGET_BOSSES = 187,
destroyed_EX1_354_FLAG = 188,
spell_EX1_354_FLAG = 189,
destroyed_CS2_012_FLAG = 190,
spell_CS2_012_FLAG = 191,
destroyed_EX1_371_FLAG = 192,
buff_EX1_371_FLAG = 193,
destroyed_EX1_312_FLAG = 194,
spell_aoe_EX1_312_FLAG = 195,
destroyed_CS2_011_FLAG = 196,
buff_CS2_011_FLAG = 197,
destroyed_OG_223_FLAG = 198,
buff_OG_223_FLAG = 199,
destroyed_EX1_251_FLAG = 200,
spell_aoe_EX1_251_FLAG = 201,
destroyed_EX1_259_FLAG = 202,
spell_aoe_EX1_259_FLAG = 203,
destroyed_OG_101_FLAG = 204,
buff_OG_101_FLAG = 205,
destroyed_CS2_108_FLAG = 206,
buff_CS2_108_FLAG = 207,
destroyed_EX1_303_FLAG = 208,
spell_aoe_EX1_303_FLAG = 209,
weapon_CS2_097_FLAG = 210,
idle_CS2_097_FLAG = 211,
weapon_destroyed_CS2_097_FLAG = 212,
weapon_attack_CS2_097_FLAG = 213,
onboard_CS2_097_FLAG = 214,
spell_CS1h_001_FLAG = 215,
destroyed_NEW1_036_FLAG = 216,
buff_NEW1_036_FLAG = 217,
spell_aoe_GVG_010_FLAG = 218,
spell_aoe_CS1_112_FLAG = 219,
spell_CS2_072_FLAG = 220,
buff_CS2_077_FLAG = 221,
buff_CS2_023_FLAG = 222,
attachment_attack_EX1_607e_FLAG = 223,
defender_TB_SPT_Boss_FLAG = 224,
buff_LOEA16_9_FLAG = 225,
buff_CS2_234_FLAG = 226,
buff_PRO_001c_FLAG = 227,
attack_effect_CS2_024_FLAG = 228,
spell_CS2_024_FLAG = 229,
spell_DS1_185_FLAG = 230,
buff_CS2_063_FLAG = 231,
buff_CS2_076_FLAG = 232,
buff_AT_074_FLAG = 233,
spell_BRMA11_3_FLAG = 234,
destroyed_BRM_003_FLAG = 235,
spell_BRM_003_FLAG = 236,
destroyed_AT_001_FLAG = 237,
spell_AT_001_FLAG = 238,
buff_EX1_607_FLAG = 239,
attack_EX1_097_FLAG = 240,
battlecry_EX1_097_FLAG = 241,
buff_OG_090_FLAG = 242,
attack_EX1_011_FLAG = 243,
battlecry_EX1_011_FLAG = 244,
endturn_EX1_105_FLAG = 245,
attack_EX1_105_FLAG = 246,
attack_CS2_088_FLAG = 247,
battlecry_CS2_088_FLAG = 248,
onboard_CS2_088_FLAG = 249,
attack_EX1_158t_FLAG = 250,
attack_NAX4_03H_FLAG = 251,
attack_AT_023_FLAG = 252,
attack_CS2_168_FLAG = 253,
attack_CS2_201_FLAG = 254,
attack_CS2_200_FLAG = 255,
attack_CS2_119_FLAG = 256,
attack_CS2_172_FLAG = 257,
attack_CS2_171_FLAG = 258,
attack_CS2_182_FLAG = 259,
attack_CS2_120_FLAG = 260,
attack_EX1_506a_FLAG = 261,
attack_CS2_042_FLAG = 262,
battlecry_CS2_042_FLAG = 263,
attack_CS2_boar_FLAG = 264,
attack_CS2_237_FLAG = 265,
attack_LOE_077_FLAG = 266,
battlecry_LOE_077_FLAG = 267,
destroyed_CS2_118_FLAG = 268,
defender_CS2_118_FLAG = 269,
attack_CS2_118_FLAG = 270,
onboard_CS2_118_FLAG = 271,
destroyed_AT_128_FLAG = 272,
attack_AT_128_FLAG = 273,
attack_EX1_614_FLAG = 274,
battlecry_EX1_614_FLAG = 275,
attack_EX1_593_FLAG = 276,
battlecry_EX1_593_FLAG = 277,
attack_GVG_105_FLAG = 278,
battlecry_GVG_105_FLAG = 279,
attack_NEW1_030_FLAG = 280,
battlecry_NEW1_030_FLAG = 281,
destroyed_EX1_383_FLAG = 282,
attack_EX1_383_FLAG = 283,
onboard_EX1_383_FLAG = 284,
destroyed_CS2_065_FLAG = 285,
attack_CS2_065_FLAG = 286,
onboard_CS2_065_FLAG = 287,
destroyed_AT_018_FLAG = 288,
attack_AT_018_FLAG = 289,
onboard_AT_018_FLAG = 290,
destroyed_EX1_165t2_FLAG = 291,
attack_EX1_165t2_FLAG = 292,
onboard_EX1_165t2_FLAG = 293,
destroyed_EX1_559_FLAG = 294,
attack_EX1_559_FLAG = 295,
onboard_EX1_559_FLAG = 296,
destroyed_NEW1_011_FLAG = 297,
defender_NEW1_011_FLAG = 298,
attack_NEW1_011_FLAG = 299,
onboard_NEW1_011_FLAG = 300,
attack_CS2_226_FLAG = 301,
battlecry_CS2_226_FLAG = 302,
attack_EX1_009_FLAG = 303,
buff_EX1_581_FLAG = 304,
attack_EX1_049_FLAG = 305,
battlecry_EX1_049_FLAG = 306,
spell_aoe_EX1_400_FLAG = 307,
attack_effect_attachment_LOEA06_03e_FLAG = 308,
weapon_LOE_118_FLAG = 309,
idle_LOE_118_FLAG = 310,
weapon_destroyed_LOE_118_FLAG = 311,
weapon_attack_LOE_118_FLAG = 312,
onboard_LOE_118_FLAG = 313,
buff_LOEA06_03_FLAG = 314,
spell_aoe_CS2_026_FLAG = 315,
attack_EX1_306_FLAG = 316,
battlecry_EX1_306_FLAG = 317,
destroyed_CS2_222_FLAG = 318,
attack_CS2_222_FLAG = 319,
idle_CS2_222_FLAG = 320,
onboard_CS2_222_FLAG = 321,
destroyed_CS2_231_FLAG = 322,
attack_CS2_231_FLAG = 323,
idle_CS2_231_FLAG = 324,
onboard_CS2_231_FLAG = 325,
};
#endif
+9
View File
@@ -0,0 +1,9 @@
#ifndef LEVELUP_H_
#define LEVELUP_H_
#define MAX_LEVELUP 8
struct levelup_s {
const char *dst;
const char *src;
};
extern struct levelup_s levelup[MAX_LEVELUP];
#endif
+13
View File
@@ -0,0 +1,13 @@
#ifndef ENTGEN_H_
#define ENTGEN_H_
#define MAX_ENTITIES 133
#define MAX_BEASTS 0
#define MAX_TOTEMS 0
#define MAX_TOTEMIC_CALL 0
#define MAX_HEROPOWER 3
const char *totemic_call[MAX_TOTEMIC_CALL];
const char *race_beast[MAX_BEASTS];
const char *race_totems[MAX_TOTEMS];
#endif
+13
View File
@@ -0,0 +1,13 @@
#include <hsl_cardname.h>
#include <levelup.h>
struct levelup_s levelup[MAX_LEVELUP] = {
{CN_URSA, "CS2_012"},
{CN_ENIGMA, "EX1_312"},
{CN_ZEUS, "EX1_251"},
{CN_ZEUS, "EX1_259"},
{CN_SHADOW_FIEND, "EX1_303"},
{CN_LINA, "BRM_003"},
{CN_LINA, "AT_001"},
{CN_AXE, "EX1_400"},
};
+215
View File
@@ -0,0 +1,215 @@
#include <ent_gen.h>
#include <ent.h>
struct ent_s entities[MAX_ENTITIES] = {{ "GAME_ENTITY", 11, 6, (void *)0, (void *)0, "Game Entity", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 10, 85 }, { 202, 1 }, { 20, 1 }, { 204, 2 }, { 49, 1 }, { 198, 4 }, }} // 0
, { "GAME_005", 8, 3, (void *)0, (void *)0, "Coin", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 313, 1 }, { 202, 5 }, { 49, 3 }, }} // 1
, { "PLAYER1", 7, 12, (void *)0, (void *)0, "Player1", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 27, 64 }, { 17, 1 }, { 49, 1 }, { 31, 1 }, { 30, 1 }, { 28, 10 }, { 29, 4 }, { 272, 1 }, { 202, 2 }, { 7, 75 }, { 176, 10 }, { 399, 4 }, }} // 2
, { "PLAYER2", 7, 14, (void *)0, (void *)0, "Player2", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 24, 1 }, { 27, 66 }, { 17, 1 }, { 23, 1 }, { 31, 2 }, { 30, 2 }, { 28, 10 }, { 29, 4 }, { 272, 1 }, { 202, 2 }, { 49, 1 }, { 7, 75 }, { 176, 10 }, { 399, 3 }, }} // 3
, { "PRO_001c", 8, 5, (void *)0, (void *)0, "Kill Roshan", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 11 }, { 202, 5 }, { 331, 0 }, { 330, 0 }, { 48, 30 }, }} // 4
, { "TB_SPT_Boss", 11, 5, (void *)0, (void *)0, "The Sentinel", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 380, 39537 }, { 183, 18 }, { 202, 3 }, { 45, 30 }, { 47, 0 }, }} // 5
, { "LOEA04_01", 9, 6, (void *)0, (void *)0, "The Scourge ", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 202, 3 }, { 45, 30 }, { 331, 0 }, { 330, 0 }, { 380, 16231 }, { 183, 20 }, }} // 6
, { "NAX12_04e", 9, 5, (void *)0, (void *)0, "Tether", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 12 }, { 202, 6 }, { 331, 0 }, { 330, 0 }, { 338, 1 }, }} // 7
, { "LOEA16_3e", 9, 4, (void *)0, (void *)0, "Grow", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 20 }, { 202, 6 }, { 331, 0 }, { 330, 0 }, }} // 8
, { "LOEA16_9", 8, 5, (void *)0, (void *)0, "Arcane Boots", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 20 }, { 202, 5 }, { 331, 0 }, { 330, 0 }, { 48, 0 }, }} // 9
, { "EX1_105", 7, 9, (void *)0, (void *)0, "Tiny", {{0, 0, 0, 0, 0, 0, 0, 0}}, "LOEA16_3e", {{ 201, 3 }, { 203, 5 }, { 202, 4 }, { 48, 1 }, { 47, 0 }, { 45, 1 }, { 183, 3 }, { 321, 1 }, { 251, 6 }, }} // 10
, { "EX1_049", 7, 12, (void *)0, (void *)0, "Youthful Brewmaster", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 2 }, { 203, 1 }, { 202, 4 }, { 48, 2 }, { 47, 3 }, { 45, 2 }, { 331, 0 }, { 330, 0 }, { 218, 1 }, { 183, 3 }, { 321, 1 }, { 251, 6 }, }} // 11
, { "LOE_077", 7, 11, (void *)0, (void *)0, "Karroch, the Beastmaster", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 5 }, { 202, 4 }, { 48, 5 }, { 114, 1 }, { 47, 2 }, { 45, 3 }, { 331, 0 }, { 330, 0 }, { 183, 20 }, { 321, 1 }, { 362, 0 }, }} // 12
, { "EX1_097", 7, 13, (void *)0, (void *)0, "Pudge, the Butcher", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 217, 0 }, { 203, 3 }, { 202, 4 }, { 48, 5 }, { 47, 0 }, { 45, 4 }, { 331, 0 }, { 330, 0 }, { 190, 0 }, { 183, 3 }, { 321, 1 }, { 251, 6 }, }} // 13
, { "GVG_105", 7, 11, (void *)0, (void *)0, "Boush, the Tinker", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 17 }, { 203, 4 }, { 202, 4 }, { 48, 3 }, { 217, 1 }, { 47, 1 }, { 45, 2 }, { 331, 0 }, { 330, 0 }, { 183, 13 }, { 321, 1 }, }} // 14
, { "NAX4_03H", 8, 5, (void *)0, (void *)0, "Skeleton", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 12 }, { 202, 4 }, { 45, 5 }, { 48, 7 }, { 47, 6 }, }} // 15
, { "AT_128", 6, 11, (void *)0, (void *)0, "The Skeleton King", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 217, 1 }, { 203, 5 }, { 202, 4 }, { 48, 7 }, { 114, 1 }, { 47, 6 }, { 45, 5 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, { 321, 1 }, }} // 16
, { "NEW1_030", 8, 12, (void *)0, (void *)0, "Deathwing", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 24 }, { 203, 5 }, { 202, 4 }, { 48, 10 }, { 114, 1 }, { 47, 12 }, { 45, 12 }, { 331, 0 }, { 330, 0 }, { 218, 1 }, { 183, 3 }, { 321, 1 }, }} // 17
, { "EX1_158t", 8, 10, (void *)0, (void *)0, "Treant", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 202, 4 }, { 199, 2 }, { 48, 1 }, { 47, 1 }, { 45, 2 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 251, 1 }, }} // 18
, { "GVG_010", 7, 8, (void *)0, (void *)0, "Guardian Greaves", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 1 }, { 202, 5 }, { 199, 6 }, { 48, 0 }, { 331, 0 }, { 330, 0 }, { 183, 13 }, { 321, 1 }, }} // 19
, { "OG_090", 6, 8, (void *)0, (void *)0, "Arcane Books", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 4 }, { 202, 5 }, { 199, 4 }, { 48, 0 }, { 331, 0 }, { 330, 0 }, { 183, 21 }, { 321, 1 }, }} // 20
, { "AT_074", 6, 8, (void *)0, (void *)0, "Black King Bar", {{0, 0, 0, 0, 0, 0, 0, 0}}, "AT_074e2", {{ 203, 1 }, { 202, 5 }, { 199, 5 }, { 48, 2 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, { 321, 1 }, }} // 21
, { "AT_074e2", 8, 5, (void *)0, (void *)0, "Magic Immunity", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 15 }, { 202, 6 }, { 199, 5 }, { 330, 0 }, { 331, 0 }, }} // 22
, { "BRMA11_3", 8, 6, (void *)0, (void *)0, "Dagon", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 202, 5 }, { 48, 1 }, { 47, 1 }, { 331, 0 }, { 330, 0 }, { 183, 14 }, }} // 23
, { "FP1_020e", 8, 5, (void *)0, (void *)0, "Divine Rapier", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 12 }, { 202, 6 }, { 199, 5 }, { 330, 1 }, { 331, 1 }, }} // 24
, { "LOEA06_03", 9, 5, (void *)0, (void *)0, "Desolator", {{0, 0, 0, 0, 0, 0, 0, 0}}, "LOEA06_03e", {{ 183, 20 }, { 202, 5 }, { 331, 0 }, { 330, 0 }, { 48, 2 }, }} // 25
, { "LOEA06_03e", 10, 4, (void *)0, (void *)0, "Desolate", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 20 }, { 202, 6 }, { 331, 0 }, { 330, 0 }, }} // 26
, { "EX1_178ae", 9, 5, (void *)0, (void *)0, "Level 2", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 3 }, { 202, 6 }, { 199, 2 }, { 330, 1 }, { 331, 1 }, }} // 27
, { "EX1_607", 7, 7, (void *)0, (void *)0, "Satanic", {{0, 0, 0, 0, 0, 0, 0, 0}}, "EX1_607e", {{ 201, 3 }, { 203, 5 }, { 202, 5 }, { 199, 10 }, { 48, 3 }, { 183, 3 }, { 321, 1 }, }} // 28
, { "EX1_009", 7, 11, (void *)0, (void *)0, "Courier", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 3 }, { 202, 4 }, { 212, 1 }, { 48, 1 }, { 47, 2 }, { 45, 1 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, }} // 29
, { "LOE_118", 7, 10, (void *)0, (void *)0, "Echo Sabre ", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 3 }, { 202, 7 }, { 199, 10 }, { 48, 2 }, { 47, 0 }, { 331, 0 }, { 330, 0 }, { 183, 20 }, { 321, 1 }, { 187, 3 }, }} // 30
, { "EX1_303", 7, 12, (void *)0, (void *)0, "Requiem of Souls", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 3 }, { 202, 5 }, { 199, 9 }, { 48, 4 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, { 370, 1 }, { 268, 2 }, { 251, 1 }, }} // 31
, { "EX1_596e", 8, 8, (void *)0, (void *)0, "Necromastery", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 6 }, { 199, 9 }, { 48, 0 }, { 331, 1 }, { 330, 1 }, { 183, 3 }, }} // 32
, { "AT_023", 6, 12, (void *)0, (void *)0, "Eidolon", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 15 }, { 203, 3 }, { 202, 4 }, { 199, 9 }, { 48, 2 }, { 47, 2 }, { 45, 2 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, { 321, 1 }, { 403, 0 }, }} // 33
, { "OG_101", 6, 8, (void *)0, (void *)0, "Demonic Conversion", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 4 }, { 202, 5 }, { 199, 6 }, { 48, 3 }, { 331, 0 }, { 330, 0 }, { 183, 21 }, { 321, 1 }, }} // 34
, { "CS2_103e2", 9, 5, (void *)0, (void *)0, "Level 1", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 2 }, { 202, 6 }, { 199, 10 }, { 330, 0 }, { 331, 0 }, }} // 35
, { "EX1_607e", 8, 5, (void *)0, (void *)0, "Satanic", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 3 }, { 202, 6 }, { 199, 10 }, { 330, 1 }, { 331, 1 }, }} // 36
, { "CS1_129e", 8, 5, (void *)0, (void *)0, "Level 3", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 3 }, { 202, 6 }, { 199, 6 }, { 330, 1 }, { 331, 1 }, }} // 37
, { "EX1_312", 7, 11, (void *)0, (void *)0, "The Black Hole", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 4 }, { 202, 5 }, { 199, 9 }, { 48, 8 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 38
, { "EX1_354", 7, 10, (void *)0, (void *)0, "Purification", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 4 }, { 202, 5 }, { 199, 5 }, { 48, 8 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, { 251, 1 }, }} // 39
, { "AT_001", 6, 9, (void *)0, (void *)0, "Laguna Blade", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 1 }, { 202, 5 }, { 199, 4 }, { 48, 8 }, { 47, 10 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, { 321, 1 }, }} // 40
, { "BRM_003", 7, 9, (void *)0, (void *)0, "Dragon's Breath", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 1 }, { 202, 5 }, { 199, 4 }, { 48, 3 }, { 47, 2 }, { 331, 0 }, { 330, 0 }, { 183, 14 }, { 321, 1 }, }} // 41
, { "AT_018", 6, 12, "BRM_003", "AT_001", "Lina", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 16 }, { 203, 5 }, { 202, 4 }, { 199, 6 }, { 48, 2 }, { 114, 1 }, { 47, 1 }, { 45, 14 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, { 321, 1 }, }} // 42
, { "EX1_259", 7, 12, (void *)0, (void *)0, "God's Wrath", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 3 }, { 202, 5 }, { 199, 8 }, { 48, 6 }, { 47, 3 }, { 331, 0 }, { 330, 0 }, { 215, 1 }, { 183, 3 }, { 321, 1 }, { 251, 1 }, }} // 43
, { "EX1_251", 7, 12, (void *)0, (void *)0, "Forked Lightning", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 8 }, { 48, 2 }, { 47, 1 }, { 331, 0 }, { 330, 0 }, { 215, 1 }, { 183, 3 }, { 321, 1 }, { 251, 1 }, }} // 44
, { "EX1_559", 7, 14, "EX1_251", "EX1_259", "Zeus", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 5 }, { 202, 4 }, { 199, 4 }, { 48, 3 }, { 114, 1 }, { 47, 1 }, { 45, 15 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, { 32, 1 }, { 251, 3 }, }} // 45
, { "NEW1_036", 8, 8, (void *)0, (void *)0, "Warcry", {{0, 0, 0, 0, 0, 0, 0, 0}}, "NEW1_036e", {{ 203, 3 }, { 202, 5 }, { 199, 10 }, { 48, 1 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, }} // 46
, { "NEW1_036e", 9, 6, (void *)0, (void *)0, "Sven: Warcry", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 202, 6 }, { 199, 10 }, { 338, 1 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, }} // 47
, { "EX1_165t2", 9, 11, "CS2_012", "CS2_011", "Ursa", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 5 }, { 202, 4 }, { 199, 2 }, { 48, 4 }, { 47, 3 }, { 45, 21 }, { 331, 0 }, { 330, 0 }, { 190, 0 }, { 183, 3 }, }} // 48
, { "AT_039e", 7, 6, (void *)0, (void *)0, "Wounded", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 202, 6 }, { 199, 2 }, { 338, 1 }, { 331, 0 }, { 330, 0 }, { 183, 15 }, }} // 49
, { "OG_223", 6, 6, (void *)0, (void *)0, "God's Strength", {{0, 0, 0, 0, 0, 0, 0, 0}}, "OG_223e", {{ 203, 1 }, { 202, 5 }, { 199, 5 }, { 48, 3 }, { 183, 21 }, { 321, 1 }, }} // 50
, { "OG_223e", 7, 2, (void *)0, (void *)0, "Sven: God's Strength", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 21 }, { 202, 6 }, }} // 51
, { "EX1_383", 7, 16, "NEW1_036", "OG_223", "Sven", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 217, 0 }, { 203, 5 }, { 202, 4 }, { 199, 5 }, { 48, 3 }, { 114, 1 }, { 47, 3 }, { 45, 16 }, { 331, 0 }, { 330, 0 }, { 190, 0 }, { 183, 3 }, { 321, 1 }, { 194, 0 }, { 251, 1 }, }} // 52
, { "CS2_063", 7, 10, (void *)0, (void *)0, "Corruption", {{0, 0, 0, 0, 0, 0, 0, 0}}, "CS2_063e", {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 9 }, { 48, 1 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 53
, { "CS2_063e", 8, 5, (void *)0, (void *)0, "Corruption", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 2 }, { 202, 6 }, { 199, 9 }, { 330, 2 }, { 331, 2 }, }} // 54
, { "CS2_084e", 8, 3, (void *)0, (void *)0, "Hunter's Mark E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 55
, { "CS2_076", 7, 11, (void *)0, (void *)0, "Assassinate", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 7 }, { 48, 5 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 6 }, }} // 56
, { "CS2_234", 7, 8, (void *)0, (void *)0, "Shadow Word: Pain", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 2 }, { 202, 5 }, { 199, 6 }, { 48, 2 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, }} // 57
, { "CS2_108", 7, 11, (void *)0, (void *)0, "Culling Blade", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 10 }, { 48, 3 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 58
, { "EX1_614", 7, 14, (void *)0, (void *)0, "Terrorblade", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 15 }, { 203, 5 }, { 202, 4 }, { 48, 6 }, { 114, 1 }, { 47, 5 }, { 45, 1 }, { 331, 0 }, { 330, 0 }, { 183, 3 }, { 321, 1 }, { 32, 1 }, { 251, 6 }, }} // 59
, { "EX1_371", 7, 10, (void *)0, (void *)0, "Guardian Angel", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 5 }, { 48, 2 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 60
, { "CS2_022e", 8, 3, (void *)0, (void *)0, "Polymorph E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 61
, { "EX1_246e", 8, 3, (void *)0, (void *)0, "Hex E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 62
, { "CS2_092e", 8, 3, (void *)0, (void *)0, "Blessing of Kings E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 63
, { "CS2_087e", 8, 3, (void *)0, (void *)0, "Blessing of Might E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 64
, { "CS2_004e", 8, 3, (void *)0, (void *)0, "Power Word: Shield E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 65
, { "CS2_009e", 8, 3, (void *)0, (void *)0, "Mark of the Wild E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 66
, { "CS2_041e", 8, 3, (void *)0, (void *)0, "Ancestral Infusion", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 67
, { "CS2_045e", 8, 3, (void *)0, (void *)0, "Rockbiter Weapon E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 68
, { "CS2_046e", 8, 3, (void *)0, (void *)0, "Bloodlust E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 69
, { "CS2_005o", 8, 3, (void *)0, (void *)0, "Claw E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 70
, { "CS2_105e", 8, 3, (void *)0, (void *)0, "Heroic Strike E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 71
, { "CS2_011", 7, 10, (void *)0, (void *)0, "Enrage", {{0, 0, 0, 0, 0, 0, 0, 0}}, "CS2_011o", {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 2 }, { 48, 3 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 72
, { "CS2_011o", 8, 6, (void *)0, (void *)0, "Enraged", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 202, 6 }, { 199, 2 }, { 338, 1 }, { 331, 1 }, { 330, 1 }, { 183, 2 }, }} // 73
, { "HERO_01", 7, 6, (void *)0, (void *)0, "Warrior", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 74
, { "HERO_02", 7, 6, (void *)0, (void *)0, "Shamman", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 75
, { "HERO_04", 7, 6, (void *)0, (void *)0, "Paladin", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 76
, { "HERO_05", 7, 6, (void *)0, (void *)0, "Hunter", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 77
, { "HERO_06", 7, 6, (void *)0, (void *)0, "Druid", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 78
, { "HERO_07", 7, 6, (void *)0, (void *)0, "Warlock", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 79
, { "HERO_08", 7, 6, (void *)0, (void *)0, "Mage", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 80
, { "HERO_01a", 8, 6, (void *)0, (void *)0, "King of Khaz Modan", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 81
, { "HERO_04a", 8, 6, (void *)0, (void *)0, "Blood Knight Matriarch", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 82
, { "HERO_05a", 8, 6, (void *)0, (void *)0, "Alleria Windranger", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 83
, { "HERO_08a", 8, 6, (void *)0, (void *)0, "Guardian Medivh", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 84
, { "HERO_08b", 8, 6, (void *)0, (void *)0, "Khadgar", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 49, 1 }, { 45, 30 }, { 202, 3 }, }} // 85
, { "CS2_012", 7, 11, (void *)0, (void *)0, "Swipes", {{0, 0, 0, 0, 0, 0, 0, 0}}, "AT_039e", {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 2 }, { 48, 2 }, { 47, 2 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 86
, { "CS2_072", 7, 12, (void *)0, (void *)0, "Backstab", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 7 }, { 48, 0 }, { 47, 2 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 6 }, }} // 87
, { "DS1_185", 7, 9, (void *)0, (void *)0, "Arcane Shot", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 3 }, { 48, 1 }, { 47, 2 }, { 183, 2 }, { 321, 1 }, { 251, 8 }, }} // 88
, { "CS2_024", 7, 11, (void *)0, (void *)0, "Frostbolt", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 4 }, { 48, 2 }, { 47, 3 }, { 183, 2 }, { 321, 1 }, { 208, 1 }, { 268, 2 }, { 251, 1 }, }} // 89
, { "CS2_023", 7, 11, (void *)0, (void *)0, "Arcane Intellect", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 4 }, { 48, 3 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 90
, { "CS2_077", 7, 11, (void *)0, (void *)0, "Sprint", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 7 }, { 48, 7 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 91
, { "CS2_026", 7, 13, (void *)0, (void *)0, "Shiva's Guard", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 4 }, { 48, 3 }, { 47, 1 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 208, 1 }, { 268, 2 }, { 251, 1 }, }} // 92
, { "EX1_400", 7, 11, (void *)0, (void *)0, "Counter Helix", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 10 }, { 48, 0 }, { 47, 1 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 93
, { "CS1_112", 7, 10, (void *)0, (void *)0, "Mekansm", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 5 }, { 199, 6 }, { 48, 4 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 5 }, }} // 94
, { "CS2_122e", 8, 3, (void *)0, (void *)0, "Enhanced", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 95
, { "CS2_222", 7, 12, (void *)0, (void *)0, "Stormwind Champion", {{0, 0, 0, 0, 0, 0, 0, 0}}, "CS2_222o", {{ 201, 2 }, { 203, 1 }, { 202, 4 }, { 48, 7 }, { 47, 6 }, { 45, 6 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, { 362, 1 }, }} // 96
, { "CS2_222o", 8, 4, (void *)0, (void *)0, "Might of Stormwind", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 2 }, { 202, 6 }, { 331, 0 }, { 330, 1 }, }} // 97
, { "EX1_084e", 8, 3, (void *)0, (void *)0, "Charge", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 98
, { "DS1_175o", 8, 3, (void *)0, (void *)0, "Furious Howl", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 99
, { "EX1_399e", 8, 3, (void *)0, (void *)0, "Berserking", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 100
, { "CS2_088", 7, 11, (void *)0, (void *)0, "Omniknight", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 4 }, { 199, 5 }, { 48, 2 }, { 47, 1 }, { 45, 17 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 251, 5 }, }} // 101
, { "EX1_593", 7, 9, (void *)0, (void *)0, "Phantom Assassin", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 4 }, { 48, 4 }, { 47, 4 }, { 45, 2 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, }} // 102
, { "EX1_011", 7, 10, (void *)0, (void *)0, "Witch Doctor", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 1 }, { 203, 2 }, { 202, 4 }, { 48, 1 }, { 47, 2 }, { 45, 1 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 251, 6 }, }} // 103
, { "CS2_042", 7, 11, (void *)0, (void *)0, "Fire Elemental", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 4 }, { 199, 8 }, { 48, 6 }, { 47, 6 }, { 45, 5 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 251, 3 }, }} // 104
, { "CS2_226", 7, 12, (void *)0, (void *)0, "Legion Commander", {{0, 0, 0, 0, 0, 0, 0, 0}}, "CS2_226e", {{ 201, 1 }, { 203, 4 }, { 202, 4 }, { 48, 5 }, { 47, 4 }, { 45, 4 }, { 331, 0 }, { 330, 0 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 105
, { "CS2_226e", 8, 4, (void *)0, (void *)0, "Frostwolf Banner", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 183, 2 }, { 202, 6 }, { 331, 1 }, { 330, 1 }, }} // 106
, { "EX1_306", 7, 13, (void *)0, (void *)0, "Queen of Pain", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 15 }, { 203, 2 }, { 202, 4 }, { 199, 9 }, { 48, 3 }, { 47, 4 }, { 45, 3 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 107
, { "EX1_581", 7, 10, (void *)0, (void *)0, "Sap", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 5 }, { 199, 7 }, { 48, 2 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, }} // 108
, { "CS1_113e", 8, 3, (void *)0, (void *)0, "Mind Control E", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 109
, { "NEW1_011", 8, 11, (void *)0, "CS2_108", "Mogul Khan, Axe", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 5 }, { 202, 4 }, { 199, 10 }, { 48, 3 }, { 47, 2 }, { 197, 0 }, { 45, 20 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, }} // 110
, { "CS2_171", 7, 12, (void *)0, (void *)0, "Stonetusk Boar", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 20 }, { 203, 2 }, { 202, 4 }, { 48, 1 }, { 47, 1 }, { 197, 0 }, { 45, 1 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 6 }, }} // 111
, { "CS2_065", 7, 13, "OG_101", "EX1_312", "Enigma", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 15 }, { 203, 5 }, { 202, 4 }, { 199, 9 }, { 48, 2 }, { 47, 1 }, { 45, 15 }, { 190, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 9 }, }} // 112
, { "EX1_565o", 8, 3, (void *)0, (void *)0, "Flametongue", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 12, 1 }, { 202, 6 }, { 49, 6 }, }} // 113
, { "EX1_506a", 8, 9, (void *)0, (void *)0, "Murloc Scout", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 14 }, { 203, 1 }, { 202, 4 }, { 48, 0 }, { 47, 1 }, { 45, 1 }, { 183, 2 }, { 251, 1 }, }} // 114
, { "CS2_237", 7, 12, (void *)0, (void *)0, "Vulture", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 1 }, { 202, 4 }, { 199, 3 }, { 48, 1 }, { 47, 1 }, { 45, 1 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 32, 1 }, }} // 115
, { "CS2_boar", 8, 11, (void *)0, (void *)0, "Boar", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 200, 20 }, { 203, 1 }, { 202, 4 }, { 48, 1 }, { 47, 1 }, { 45, 1 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 251, 1 }, }} // 116
, { "CS2_119", 7, 8, (void *)0, (void *)0, "Oasis Snapjaw", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 2 }, { 202, 4 }, { 48, 4 }, { 47, 2 }, { 45, 7 }, { 183, 2 }, { 321, 1 }, }} // 117
, { "CS2_172", 7, 11, (void *)0, (void *)0, "Bloodfen Raptor", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 1 }, { 200, 20 }, { 203, 2 }, { 202, 4 }, { 48, 2 }, { 47, 3 }, { 45, 2 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 118
, { "CS2_118", 7, 9, (void *)0, "EX1_303", "Shadow Fiend", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 5 }, { 202, 4 }, { 48, 2 }, { 47, 1 }, { 45, 14 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, }} // 119
, { "CS2_231", 7, 8, (void *)0, (void *)0, "Wisp", {{0, 0, 0, 0, 0, 0, 0, 0}}, "NAX12_04e", {{ 201, 3 }, { 203, 1 }, { 202, 4 }, { 48, 2 }, { 47, 0 }, { 45, 2 }, { 183, 3 }, { 251, 7 }, }} // 120
, { "CS2_201", 7, 8, (void *)0, (void *)0, "Core Hound", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 1 }, { 202, 4 }, { 48, 7 }, { 47, 9 }, { 45, 5 }, { 183, 2 }, { 321, 1 }, }} // 121
, { "CS2_168", 7, 10, (void *)0, (void *)0, "Murloc Raider", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 2 }, { 200, 14 }, { 203, 2 }, { 202, 4 }, { 48, 1 }, { 47, 2 }, { 45, 1 }, { 183, 2 }, { 321, 1 }, { 251, 1 }, }} // 122
, { "CS2_120", 7, 8, (void *)0, (void *)0, "River Crocolisk", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 200, 20 }, { 203, 2 }, { 202, 4 }, { 48, 2 }, { 47, 2 }, { 45, 3 }, { 183, 2 }, { 321, 1 }, }} // 123
, { "CS2_200", 7, 7, (void *)0, (void *)0, "Boulderfist Ogre", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 203, 2 }, { 202, 4 }, { 48, 6 }, { 47, 6 }, { 45, 7 }, { 183, 2 }, { 321, 1 }, }} // 124
, { "CS2_182", 7, 12, (void *)0, (void *)0, "Chillwind Yeti", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 4 }, { 48, 4 }, { 47, 4 }, { 45, 5 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 6 }, }} // 125
, { "CS2_034", 7, 7, (void *)0, (void *)0, "Fireblast", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 12, 1 }, { 48, 2 }, { 49, 1 }, { 47, 1 }, { 202, 10 }, }} // 126
, { "CS1h_001", 8, 7, (void *)0, (void *)0, "Lesser Heal", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 10 }, { 199, 6 }, { 48, 2 }, { 183, 2 }, { 251, 1 }, }} // 127
, { "CS2_101", 7, 6, (void *)0, (void *)0, "Reinforce", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 10 }, { 48, 2 }, { 49, 1 }, { 12, 1 }, }} // 128
, { "CS2_083b", 8, 6, (void *)0, (void *)0, "Dagger Mastery", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 2 }, { 202, 10 }, { 48, 2 }, { 49, 1 }, { 12, 1 }, }} // 129
, { "CS2_097", 7, 13, (void *)0, (void *)0, "Divine Rapier", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 201, 3 }, { 203, 1 }, { 202, 7 }, { 199, 5 }, { 48, 5 }, { 47, 8 }, { 331, 0 }, { 330, 0 }, { 183, 2 }, { 321, 1 }, { 187, 1 }, { 32, 1 }, { 251, 6 }, }} // 130
, { "MANA_CARD", 9, 3, (void *)0, (void *)0, "Empty card", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 263, 5 }, { 12, 1 }, { 49, 3 }, }} // 131
, { "NO_CARD", 7, 1, (void *)0, (void *)0, "No Card", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 49, 2 }, }} // 132
, };
void entities_init() {
flag(&entities[7].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[8].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[22].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[24].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[26].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[27].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[32].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[35].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[36].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[37].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[47].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[49].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[51].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[54].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[55].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[61].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[62].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[63].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[64].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[65].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[66].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[67].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[68].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[69].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[70].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[71].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[73].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[74].flags, CARD_HERO, FLAG_SET);
flag(&entities[75].flags, CARD_HERO, FLAG_SET);
flag(&entities[76].flags, CARD_HERO, FLAG_SET);
flag(&entities[77].flags, CARD_HERO, FLAG_SET);
flag(&entities[78].flags, CARD_HERO, FLAG_SET);
flag(&entities[79].flags, CARD_HERO, FLAG_SET);
flag(&entities[80].flags, CARD_HERO, FLAG_SET);
flag(&entities[81].flags, CARD_HERO, FLAG_SET);
flag(&entities[82].flags, CARD_HERO, FLAG_SET);
flag(&entities[83].flags, CARD_HERO, FLAG_SET);
flag(&entities[84].flags, CARD_HERO, FLAG_SET);
flag(&entities[85].flags, CARD_HERO, FLAG_SET);
flag(&entities[95].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[97].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[98].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[99].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[100].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[106].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[109].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[113].flags, CARD_ATTACHMENT, FLAG_SET);
flag(&entities[114].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
flag(&entities[116].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
flag(&entities[126].flags, CARD_HEROPOWER, FLAG_SET);
flag(&entities[126].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[126].flags, CARD_SPELL, FLAG_SET);
flag(&entities[126].flags, CARD_HP_SPELL_DAMAGE, FLAG_SET);
flag(&entities[128].flags, CARD_HEROPOWER, FLAG_SET);
flag(&entities[128].flags, CARD_SPELL, FLAG_SET);
flag(&entities[128].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[128].flags, CARD_HP_REINFORCE, FLAG_SET);
flag(&entities[128].flags, CARD_SUMMON, FLAG_SET);
flag(&entities[129].flags, CARD_HEROPOWER, FLAG_SET);
flag(&entities[129].flags, CARD_SPELL, FLAG_SET);
flag(&entities[129].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[129].flags, CARD_HP_DAGGERMASTERY, FLAG_SET);
flag(&entities[129].flags, CARD_SUMMON, FLAG_SET);
flag(&entities[131].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
flag(&entities[132].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
}
const char *race_beast[MAX_BEASTS] = {
};
const char *race_totems[MAX_TOTEMS] = {
};
const char *totemic_call[MAX_TOTEMIC_CALL] = {
};
const char *hp_list[MAX_HEROPOWER] = {
"CS2_034",
"CS2_101",
"CS2_083b",
};
+399
View File
@@ -0,0 +1,399 @@
#include <ent_gen.h>
#include <ent.h>
void entities_init2() {
flag(&entities[39].flags, destroyed_EX1_354_FLAG, FLAG_SET);
flag(&entities[39].flags, CARD_SPELL, FLAG_SET);
flag(&entities[39].flags, spell_EX1_354_FLAG, FLAG_SET);
flag(&entities[39].flags, CARD_TARGET_ALLY_MINIONS, FLAG_SET);
flag(&entities[39].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[86].flags, destroyed_CS2_012_FLAG, FLAG_SET);
flag(&entities[86].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[86].flags, CARD_PIERCE_MAGIC_IMMUNITY, FLAG_SET);
flag(&entities[86].flags, CARD_SPELL, FLAG_SET);
flag(&entities[86].flags, spell_CS2_012_FLAG, FLAG_SET);
flag(&entities[86].flags, CARD_TARGET_ENEMY_MINIONS, FLAG_SET);
flag(&entities[86].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[60].flags, destroyed_EX1_371_FLAG, FLAG_SET);
flag(&entities[60].flags, CARD_BUFF, FLAG_SET);
flag(&entities[60].flags, CARD_SPELL, FLAG_SET);
flag(&entities[60].flags, buff_EX1_371_FLAG, FLAG_SET);
flag(&entities[60].flags, CARD_TARGET_ALLY_MINIONS, FLAG_SET);
flag(&entities[60].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[38].flags, destroyed_EX1_312_FLAG, FLAG_SET);
flag(&entities[38].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[38].flags, CARD_SPELL, FLAG_SET);
flag(&entities[38].flags, CARD_AOE, FLAG_SET);
flag(&entities[38].flags, spell_aoe_EX1_312_FLAG, FLAG_SET);
flag(&entities[38].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[72].flags, destroyed_CS2_011_FLAG, FLAG_SET);
flag(&entities[72].flags, CARD_BUFF, FLAG_SET);
flag(&entities[72].flags, CARD_SPELL, FLAG_SET);
flag(&entities[72].flags, buff_CS2_011_FLAG, FLAG_SET);
flag(&entities[72].flags, CARD_TARGET_URSA, FLAG_SET);
flag(&entities[72].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[50].flags, destroyed_OG_223_FLAG, FLAG_SET);
flag(&entities[50].flags, CARD_BUFF, FLAG_SET);
flag(&entities[50].flags, CARD_SPELL, FLAG_SET);
flag(&entities[50].flags, buff_OG_223_FLAG, FLAG_SET);
flag(&entities[50].flags, CARD_TARGET_SVEN, FLAG_SET);
flag(&entities[50].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[44].flags, destroyed_EX1_251_FLAG, FLAG_SET);
flag(&entities[44].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[44].flags, CARD_SPELL, FLAG_SET);
flag(&entities[44].flags, CARD_AOE, FLAG_SET);
flag(&entities[44].flags, spell_aoe_EX1_251_FLAG, FLAG_SET);
flag(&entities[44].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[43].flags, destroyed_EX1_259_FLAG, FLAG_SET);
flag(&entities[43].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[43].flags, CARD_SPELL, FLAG_SET);
flag(&entities[43].flags, CARD_AOE, FLAG_SET);
flag(&entities[43].flags, spell_aoe_EX1_259_FLAG, FLAG_SET);
flag(&entities[43].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[34].flags, destroyed_OG_101_FLAG, FLAG_SET);
flag(&entities[34].flags, CARD_BUFF, FLAG_SET);
flag(&entities[34].flags, CARD_SPELL, FLAG_SET);
flag(&entities[34].flags, buff_OG_101_FLAG, FLAG_SET);
flag(&entities[34].flags, CARD_TARGET_ALLY_MINIONS, FLAG_SET);
flag(&entities[34].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[58].flags, destroyed_CS2_108_FLAG, FLAG_SET);
flag(&entities[58].flags, CARD_BUFF, FLAG_SET);
flag(&entities[58].flags, CARD_SPELL, FLAG_SET);
flag(&entities[58].flags, buff_CS2_108_FLAG, FLAG_SET);
flag(&entities[58].flags, CARD_TARGET_30PERCENT_LESS, FLAG_SET);
flag(&entities[58].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[31].flags, destroyed_EX1_303_FLAG, FLAG_SET);
flag(&entities[31].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[31].flags, CARD_SPELL, FLAG_SET);
flag(&entities[31].flags, CARD_AOE, FLAG_SET);
flag(&entities[31].flags, spell_aoe_EX1_303_FLAG, FLAG_SET);
flag(&entities[31].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[130].flags, CARD_SPELL, FLAG_SET);
flag(&entities[130].flags, CARD_AOE, FLAG_SET);
flag(&entities[130].flags, CARD_WEAPON, FLAG_SET);
flag(&entities[130].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[130].flags, weapon_CS2_097_FLAG, FLAG_SET);
flag(&entities[130].flags, idle_CS2_097_FLAG, FLAG_SET);
flag(&entities[130].flags, weapon_destroyed_CS2_097_FLAG, FLAG_SET);
flag(&entities[130].flags, weapon_attack_CS2_097_FLAG, FLAG_SET);
flag(&entities[130].flags, onboard_CS2_097_FLAG, FLAG_SET);
flag(&entities[127].flags, CARD_HEROPOWER, FLAG_SET);
flag(&entities[127].flags, CARD_SPELL, FLAG_SET);
flag(&entities[127].flags, spell_CS1h_001_FLAG, FLAG_SET);
flag(&entities[127].flags, CARD_TARGET_ALL, FLAG_SET);
flag(&entities[127].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[46].flags, destroyed_NEW1_036_FLAG, FLAG_SET);
flag(&entities[46].flags, CARD_BUFF, FLAG_SET);
flag(&entities[46].flags, CARD_SPELL, FLAG_SET);
flag(&entities[46].flags, buff_NEW1_036_FLAG, FLAG_SET);
flag(&entities[46].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[19].flags, CARD_SPELL, FLAG_SET);
flag(&entities[19].flags, CARD_AOE, FLAG_SET);
flag(&entities[19].flags, spell_aoe_GVG_010_FLAG, FLAG_SET);
flag(&entities[19].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[94].flags, CARD_SPELL, FLAG_SET);
flag(&entities[94].flags, CARD_AOE, FLAG_SET);
flag(&entities[94].flags, spell_aoe_CS1_112_FLAG, FLAG_SET);
flag(&entities[94].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[87].flags, CARD_SPELL, FLAG_SET);
flag(&entities[87].flags, spell_CS2_072_FLAG, FLAG_SET);
flag(&entities[87].flags, CARD_TARGET_UNDAMAGED_MINION, FLAG_SET);
flag(&entities[87].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[91].flags, CARD_BUFF, FLAG_SET);
flag(&entities[91].flags, CARD_SPELL, FLAG_SET);
flag(&entities[91].flags, buff_CS2_077_FLAG, FLAG_SET);
flag(&entities[91].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[90].flags, CARD_BUFF, FLAG_SET);
flag(&entities[90].flags, CARD_SPELL, FLAG_SET);
flag(&entities[90].flags, buff_CS2_023_FLAG, FLAG_SET);
flag(&entities[90].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[36].flags, attachment_attack_EX1_607e_FLAG, FLAG_SET);
flag(&entities[6].flags, CARD_HERO, FLAG_SET);
flag(&entities[5].flags, defender_TB_SPT_Boss_FLAG, FLAG_SET);
flag(&entities[5].flags, CARD_HERO, FLAG_SET);
flag(&entities[9].flags, CARD_BUFF, FLAG_SET);
flag(&entities[9].flags, CARD_SPELL, FLAG_SET);
flag(&entities[9].flags, buff_LOEA16_9_FLAG, FLAG_SET);
flag(&entities[9].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[57].flags, CARD_BUFF, FLAG_SET);
flag(&entities[57].flags, CARD_SPELL, FLAG_SET);
flag(&entities[57].flags, buff_CS2_234_FLAG, FLAG_SET);
flag(&entities[57].flags, CARD_TARGET_3ATTACK_LESS, FLAG_SET);
flag(&entities[57].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[4].flags, CARD_BUFF, FLAG_SET);
flag(&entities[4].flags, CARD_SPELL, FLAG_SET);
flag(&entities[4].flags, buff_PRO_001c_FLAG, FLAG_SET);
flag(&entities[4].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[89].flags, CARD_FREEZE, FLAG_SET);
flag(&entities[89].flags, CARD_MINION, FLAG_SET);
flag(&entities[89].flags, attack_effect_CS2_024_FLAG, FLAG_SET);
flag(&entities[89].flags, CARD_SPELL, FLAG_SET);
flag(&entities[89].flags, spell_CS2_024_FLAG, FLAG_SET);
flag(&entities[89].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[89].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[88].flags, CARD_SPELL, FLAG_SET);
flag(&entities[88].flags, spell_DS1_185_FLAG, FLAG_SET);
flag(&entities[88].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[88].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[53].flags, CARD_BUFF, FLAG_SET);
flag(&entities[53].flags, CARD_SPELL, FLAG_SET);
flag(&entities[53].flags, buff_CS2_063_FLAG, FLAG_SET);
flag(&entities[53].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[53].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[56].flags, CARD_BUFF, FLAG_SET);
flag(&entities[56].flags, CARD_SPELL, FLAG_SET);
flag(&entities[56].flags, buff_CS2_076_FLAG, FLAG_SET);
flag(&entities[56].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[56].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[21].flags, CARD_BUFF, FLAG_SET);
flag(&entities[21].flags, CARD_SPELL, FLAG_SET);
flag(&entities[21].flags, buff_AT_074_FLAG, FLAG_SET);
flag(&entities[21].flags, CARD_TARGET_ALLY_BOSSES, FLAG_SET);
flag(&entities[21].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[23].flags, CARD_SPELL, FLAG_SET);
flag(&entities[23].flags, spell_BRMA11_3_FLAG, FLAG_SET);
flag(&entities[23].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[23].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[41].flags, destroyed_BRM_003_FLAG, FLAG_SET);
flag(&entities[41].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[41].flags, CARD_SPELL, FLAG_SET);
flag(&entities[41].flags, spell_BRM_003_FLAG, FLAG_SET);
flag(&entities[41].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[41].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[40].flags, destroyed_AT_001_FLAG, FLAG_SET);
flag(&entities[40].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[40].flags, CARD_SPELL, FLAG_SET);
flag(&entities[40].flags, spell_AT_001_FLAG, FLAG_SET);
flag(&entities[40].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[40].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[28].flags, CARD_BUFF, FLAG_SET);
flag(&entities[28].flags, CARD_SPELL, FLAG_SET);
flag(&entities[28].flags, buff_EX1_607_FLAG, FLAG_SET);
flag(&entities[28].flags, CARD_TARGET_ALLY_BOSSES, FLAG_SET);
flag(&entities[28].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[13].flags, CARD_MINION, FLAG_SET);
flag(&entities[13].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[13].flags, attack_EX1_097_FLAG, FLAG_SET);
flag(&entities[13].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[13].flags, battlecry_EX1_097_FLAG, FLAG_SET);
flag(&entities[13].flags, CARD_TARGET_ENEMY_MINIONS, FLAG_SET);
flag(&entities[13].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[20].flags, CARD_BUFF, FLAG_SET);
flag(&entities[20].flags, CARD_SPELL, FLAG_SET);
flag(&entities[20].flags, buff_OG_090_FLAG, FLAG_SET);
flag(&entities[20].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[103].flags, CARD_MINION, FLAG_SET);
flag(&entities[103].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[103].flags, attack_EX1_011_FLAG, FLAG_SET);
flag(&entities[103].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[103].flags, battlecry_EX1_011_FLAG, FLAG_SET);
flag(&entities[103].flags, CARD_TARGET_ALLY_BOARD, FLAG_SET);
flag(&entities[103].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[10].flags, endturn_EX1_105_FLAG, FLAG_SET);
flag(&entities[10].flags, CARD_MINION, FLAG_SET);
flag(&entities[10].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[10].flags, attack_EX1_105_FLAG, FLAG_SET);
flag(&entities[101].flags, CARD_MINION, FLAG_SET);
flag(&entities[101].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[101].flags, attack_CS2_088_FLAG, FLAG_SET);
flag(&entities[101].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[101].flags, battlecry_CS2_088_FLAG, FLAG_SET);
flag(&entities[101].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[101].flags, onboard_CS2_088_FLAG, FLAG_SET);
flag(&entities[18].flags, CARD_MINION, FLAG_SET);
flag(&entities[18].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[18].flags, attack_EX1_158t_FLAG, FLAG_SET);
flag(&entities[15].flags, CARD_MINION, FLAG_SET);
flag(&entities[15].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[15].flags, attack_NAX4_03H_FLAG, FLAG_SET);
flag(&entities[33].flags, CARD_MINION, FLAG_SET);
flag(&entities[33].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[33].flags, attack_AT_023_FLAG, FLAG_SET);
flag(&entities[122].flags, CARD_MINION, FLAG_SET);
flag(&entities[122].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[122].flags, attack_CS2_168_FLAG, FLAG_SET);
flag(&entities[121].flags, CARD_MINION, FLAG_SET);
flag(&entities[121].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[121].flags, attack_CS2_201_FLAG, FLAG_SET);
flag(&entities[124].flags, CARD_MINION, FLAG_SET);
flag(&entities[124].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[124].flags, attack_CS2_200_FLAG, FLAG_SET);
flag(&entities[117].flags, CARD_MINION, FLAG_SET);
flag(&entities[117].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[117].flags, attack_CS2_119_FLAG, FLAG_SET);
flag(&entities[118].flags, CARD_MINION, FLAG_SET);
flag(&entities[118].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[118].flags, attack_CS2_172_FLAG, FLAG_SET);
flag(&entities[111].flags, CARD_MINION, FLAG_SET);
flag(&entities[111].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[111].flags, attack_CS2_171_FLAG, FLAG_SET);
flag(&entities[125].flags, CARD_MINION, FLAG_SET);
flag(&entities[125].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[125].flags, attack_CS2_182_FLAG, FLAG_SET);
flag(&entities[123].flags, CARD_MINION, FLAG_SET);
flag(&entities[123].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[123].flags, attack_CS2_120_FLAG, FLAG_SET);
flag(&entities[114].flags, CARD_MINION, FLAG_SET);
flag(&entities[114].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[114].flags, attack_EX1_506a_FLAG, FLAG_SET);
flag(&entities[104].flags, CARD_MINION, FLAG_SET);
flag(&entities[104].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[104].flags, attack_CS2_042_FLAG, FLAG_SET);
flag(&entities[104].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[104].flags, battlecry_CS2_042_FLAG, FLAG_SET);
flag(&entities[104].flags, CARD_TARGET_BOARD, FLAG_SET);
flag(&entities[104].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[116].flags, CARD_TAUNT, FLAG_SET);
flag(&entities[116].flags, CARD_MINION, FLAG_SET);
flag(&entities[116].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[116].flags, attack_CS2_boar_FLAG, FLAG_SET);
flag(&entities[115].flags, CARD_MINION, FLAG_SET);
flag(&entities[115].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[115].flags, attack_CS2_237_FLAG, FLAG_SET);
flag(&entities[12].flags, CARD_MINION, FLAG_SET);
flag(&entities[12].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[12].flags, attack_LOE_077_FLAG, FLAG_SET);
flag(&entities[12].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[12].flags, battlecry_LOE_077_FLAG, FLAG_SET);
flag(&entities[12].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[119].flags, destroyed_CS2_118_FLAG, FLAG_SET);
flag(&entities[119].flags, defender_CS2_118_FLAG, FLAG_SET);
flag(&entities[119].flags, CARD_MINION, FLAG_SET);
flag(&entities[119].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[119].flags, attack_CS2_118_FLAG, FLAG_SET);
flag(&entities[119].flags, onboard_CS2_118_FLAG, FLAG_SET);
flag(&entities[119].flags, CARD_BOSS, FLAG_SET);
flag(&entities[16].flags, destroyed_AT_128_FLAG, FLAG_SET);
flag(&entities[16].flags, CARD_MINION, FLAG_SET);
flag(&entities[16].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[16].flags, attack_AT_128_FLAG, FLAG_SET);
flag(&entities[59].flags, CARD_MINION, FLAG_SET);
flag(&entities[59].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[59].flags, attack_EX1_614_FLAG, FLAG_SET);
flag(&entities[59].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[59].flags, battlecry_EX1_614_FLAG, FLAG_SET);
flag(&entities[59].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[59].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[102].flags, CARD_MINION, FLAG_SET);
flag(&entities[102].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[102].flags, attack_EX1_593_FLAG, FLAG_SET);
flag(&entities[102].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[102].flags, battlecry_EX1_593_FLAG, FLAG_SET);
flag(&entities[102].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[102].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[14].flags, CARD_MINION, FLAG_SET);
flag(&entities[14].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[14].flags, attack_GVG_105_FLAG, FLAG_SET);
flag(&entities[14].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[14].flags, battlecry_GVG_105_FLAG, FLAG_SET);
flag(&entities[14].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[17].flags, CARD_MINION, FLAG_SET);
flag(&entities[17].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[17].flags, attack_NEW1_030_FLAG, FLAG_SET);
flag(&entities[17].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[17].flags, battlecry_NEW1_030_FLAG, FLAG_SET);
flag(&entities[17].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[52].flags, destroyed_EX1_383_FLAG, FLAG_SET);
flag(&entities[52].flags, CARD_BOSS, FLAG_SET);
flag(&entities[52].flags, CARD_MINION, FLAG_SET);
flag(&entities[52].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[52].flags, attack_EX1_383_FLAG, FLAG_SET);
flag(&entities[52].flags, onboard_EX1_383_FLAG, FLAG_SET);
flag(&entities[112].flags, destroyed_CS2_065_FLAG, FLAG_SET);
flag(&entities[112].flags, CARD_BOSS, FLAG_SET);
flag(&entities[112].flags, CARD_MINION, FLAG_SET);
flag(&entities[112].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[112].flags, attack_CS2_065_FLAG, FLAG_SET);
flag(&entities[112].flags, onboard_CS2_065_FLAG, FLAG_SET);
flag(&entities[42].flags, destroyed_AT_018_FLAG, FLAG_SET);
flag(&entities[42].flags, CARD_SPELLPOWER, FLAG_SET);
flag(&entities[42].flags, CARD_BOSS, FLAG_SET);
flag(&entities[42].flags, CARD_MINION, FLAG_SET);
flag(&entities[42].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[42].flags, attack_AT_018_FLAG, FLAG_SET);
flag(&entities[42].flags, onboard_AT_018_FLAG, FLAG_SET);
flag(&entities[48].flags, destroyed_EX1_165t2_FLAG, FLAG_SET);
flag(&entities[48].flags, CARD_BOSS, FLAG_SET);
flag(&entities[48].flags, CARD_MINION, FLAG_SET);
flag(&entities[48].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[48].flags, attack_EX1_165t2_FLAG, FLAG_SET);
flag(&entities[48].flags, onboard_EX1_165t2_FLAG, FLAG_SET);
flag(&entities[45].flags, destroyed_EX1_559_FLAG, FLAG_SET);
flag(&entities[45].flags, CARD_SPELLPOWER, FLAG_SET);
flag(&entities[45].flags, CARD_BOSS, FLAG_SET);
flag(&entities[45].flags, CARD_MINION, FLAG_SET);
flag(&entities[45].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[45].flags, attack_EX1_559_FLAG, FLAG_SET);
flag(&entities[45].flags, onboard_EX1_559_FLAG, FLAG_SET);
flag(&entities[110].flags, destroyed_NEW1_011_FLAG, FLAG_SET);
flag(&entities[110].flags, defender_NEW1_011_FLAG, FLAG_SET);
flag(&entities[110].flags, CARD_MINION, FLAG_SET);
flag(&entities[110].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[110].flags, attack_NEW1_011_FLAG, FLAG_SET);
flag(&entities[110].flags, onboard_NEW1_011_FLAG, FLAG_SET);
flag(&entities[110].flags, CARD_BOSS, FLAG_SET);
flag(&entities[105].flags, CARD_MINION, FLAG_SET);
flag(&entities[105].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[105].flags, attack_CS2_226_FLAG, FLAG_SET);
flag(&entities[105].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[105].flags, battlecry_CS2_226_FLAG, FLAG_SET);
flag(&entities[105].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[29].flags, CARD_MINION, FLAG_SET);
flag(&entities[29].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[29].flags, attack_EX1_009_FLAG, FLAG_SET);
flag(&entities[108].flags, CARD_BUFF, FLAG_SET);
flag(&entities[108].flags, CARD_SPELL, FLAG_SET);
flag(&entities[108].flags, buff_EX1_581_FLAG, FLAG_SET);
flag(&entities[108].flags, CARD_TARGET_MINIONS, FLAG_SET);
flag(&entities[108].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[11].flags, CARD_MINION, FLAG_SET);
flag(&entities[11].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[11].flags, attack_EX1_049_FLAG, FLAG_SET);
flag(&entities[11].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[11].flags, battlecry_EX1_049_FLAG, FLAG_SET);
flag(&entities[11].flags, CARD_TARGET_ALLY_MINIONS, FLAG_SET);
flag(&entities[11].flags, CARD_TARGETING_BC, FLAG_SET);
flag(&entities[93].flags, CARD_LEVELUP, FLAG_SET);
flag(&entities[93].flags, CARD_PIERCE_MAGIC_IMMUNITY, FLAG_SET);
flag(&entities[93].flags, CARD_SPELL, FLAG_SET);
flag(&entities[93].flags, CARD_AOE, FLAG_SET);
flag(&entities[93].flags, spell_aoe_EX1_400_FLAG, FLAG_SET);
flag(&entities[93].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[26].flags, attack_effect_attachment_LOEA06_03e_FLAG, FLAG_SET);
flag(&entities[30].flags, CARD_SPELL, FLAG_SET);
flag(&entities[30].flags, CARD_AOE, FLAG_SET);
flag(&entities[30].flags, CARD_WEAPON, FLAG_SET);
flag(&entities[30].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[30].flags, weapon_LOE_118_FLAG, FLAG_SET);
flag(&entities[30].flags, idle_LOE_118_FLAG, FLAG_SET);
flag(&entities[30].flags, weapon_destroyed_LOE_118_FLAG, FLAG_SET);
flag(&entities[30].flags, weapon_attack_LOE_118_FLAG, FLAG_SET);
flag(&entities[30].flags, onboard_LOE_118_FLAG, FLAG_SET);
flag(&entities[25].flags, CARD_BUFF, FLAG_SET);
flag(&entities[25].flags, CARD_SPELL, FLAG_SET);
flag(&entities[25].flags, buff_LOEA06_03_FLAG, FLAG_SET);
flag(&entities[25].flags, CARD_TARGET_ENEMY_BOARD, FLAG_SET);
flag(&entities[25].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[92].flags, CARD_SPELL, FLAG_SET);
flag(&entities[92].flags, CARD_AOE, FLAG_SET);
flag(&entities[92].flags, spell_aoe_CS2_026_FLAG, FLAG_SET);
flag(&entities[92].flags, CARD_NONTARGET, FLAG_SET);
flag(&entities[107].flags, CARD_MINION, FLAG_SET);
flag(&entities[107].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[107].flags, attack_EX1_306_FLAG, FLAG_SET);
flag(&entities[107].flags, CARD_BATTLECRY, FLAG_SET);
flag(&entities[107].flags, battlecry_EX1_306_FLAG, FLAG_SET);
flag(&entities[107].flags, CARD_NONTARGET_BC, FLAG_SET);
flag(&entities[96].flags, destroyed_CS2_222_FLAG, FLAG_SET);
flag(&entities[96].flags, CARD_MINION, FLAG_SET);
flag(&entities[96].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[96].flags, attack_CS2_222_FLAG, FLAG_SET);
flag(&entities[96].flags, idle_CS2_222_FLAG, FLAG_SET);
flag(&entities[96].flags, onboard_CS2_222_FLAG, FLAG_SET);
flag(&entities[120].flags, destroyed_CS2_231_FLAG, FLAG_SET);
flag(&entities[120].flags, CARD_MINION, FLAG_SET);
flag(&entities[120].flags, CARD_TARGETING, FLAG_SET);
flag(&entities[120].flags, attack_CS2_231_FLAG, FLAG_SET);
flag(&entities[120].flags, idle_CS2_231_FLAG, FLAG_SET);
flag(&entities[120].flags, onboard_CS2_231_FLAG, FLAG_SET);
}