Compare commits
10 Commits
df7a63e047
...
30acd05ce7
| Author | SHA1 | Date | |
|---|---|---|---|
| 30acd05ce7 | |||
| 35a5e88cf0 | |||
| 9678b1222e | |||
| 33a2253e3d | |||
| 8f7ddedd0d | |||
| b449a54fda | |||
| a55d3c4b9b | |||
| 79ca60d136 | |||
| 87a4da5882 | |||
| 7544f159d9 |
+13
@@ -15,3 +15,16 @@ cache
|
||||
|
||||
*_log
|
||||
*.log
|
||||
|
||||
player1
|
||||
player2
|
||||
|
||||
# Session files
|
||||
hm_web/sessions/*
|
||||
|
||||
# Binary files
|
||||
hm_gameserver/hm_gameserver
|
||||
hm_lobbyserver/hm_lobbyserver
|
||||
|
||||
# Build artifacts
|
||||
hm_nginx/objs/*
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# HearthMod Build Commands and Code Guidelines
|
||||
|
||||
## Build Commands
|
||||
- `docker-compose up --build` - Build and start the project container
|
||||
- `bash docker_ctl.sh compile` - Compile and install server stack
|
||||
- `bash docker_ctl.sh start` - Start server stack
|
||||
- `bash docker_ctl.sh stop` - Stop server stack
|
||||
- Component-specific: `cd hm_gameserver && make`
|
||||
- Base library: `make -C ../hm_base target=game`
|
||||
|
||||
## Code Style Guidelines
|
||||
- **Indentation**: 4 spaces for C/C++/Python
|
||||
- **Naming**:
|
||||
- C: snake_case for functions/variables, UPPER_SNAKE_CASE for constants
|
||||
- C++: camelCase for methods/variables, UPPER_SNAKE_CASE for constants
|
||||
- Structs use _s suffix, enums use _e suffix
|
||||
- **Headers**: System includes first, then project includes
|
||||
- **Error handling**: Functions return int (0=success, negative=failure)
|
||||
- **Logging**: Use `hm_log(LOG_LEVEL, log_instance, "message")`
|
||||
- **Memory**: Always free allocated resources, use pooled allocation when possible
|
||||
- **Initialization**: Follow component-specific init/cleanup patterns
|
||||
@@ -11,13 +11,6 @@ RUN git clone https://github.com/couchbase/libcouchbase.git
|
||||
RUN cd libcouchbase && git checkout 2.9.0 && cmake . && make && make install && ldconfig
|
||||
# RUN wget http://packages.couchbase.com/clients/c/libcouchbase-2.5.8_ubuntu1404_amd64.tar && tar xvf *.tar && cd libcouchbase-2.5.8_ubuntu1404_amd64/ && dpkg -i *.deb
|
||||
RUN pip install couchbase==2.2.4
|
||||
# hearthmod
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_database.git
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_base.git
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_gameserver.git
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_lobbyserver.git
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_ctl.git
|
||||
#RUN git clone https://github.com/farb3yonddriv3n/hm_stud.git
|
||||
# cleanup
|
||||
RUN rm -rf /app/couchbase-server-enterprise_4.5.0-ubuntu14.04_amd64.deb
|
||||
|
||||
|
||||
@@ -48,28 +48,24 @@ bash docker_ctl.sh bucket_create
|
||||
creates a bucket in couchbase.
|
||||
|
||||
```sh
|
||||
cd hearthmod/
|
||||
bash docker_ctl.sh bucket_restore
|
||||
```
|
||||
|
||||
restores the latest database snapshot/populates it.
|
||||
|
||||
```sh
|
||||
cd hearthmod/
|
||||
bash docker_ctl.sh compile
|
||||
```
|
||||
|
||||
compiles and installs the entire hearthmod server stack.
|
||||
|
||||
```sh
|
||||
cd hearthmod/
|
||||
bash docker_ctl.sh start
|
||||
```
|
||||
|
||||
starts the hearthmod server stack.
|
||||
|
||||
```sh
|
||||
cd hearthmod/
|
||||
bash docker_ctl.sh stop
|
||||
```
|
||||
|
||||
|
||||
@@ -21,4 +21,6 @@ services:
|
||||
- 1119:1119
|
||||
- 3724:3724
|
||||
- 80:80
|
||||
- 443:443
|
||||
- 9002:9002
|
||||
- 8081:8081
|
||||
|
||||
Regular → Executable
+18
-9
@@ -13,7 +13,7 @@ case $1 in
|
||||
$CMD /bin/bash -c 'cd /app/hm_stud && make && rm -rf cert/test* && cd cert && sh gen_cert.sh'
|
||||
$CMD make -C /app/hm_gameserver
|
||||
$CMD make -C /app/hm_lobbyserver
|
||||
$CMD /bin/bash -c 'cd /app/hm_nginx && sed "s@\/usr\/local\/web@$(pwd)\/..\/hm_web\/@" conf/hm_nginx.conf > conf/nginx.conf && ./configure && make && make install'
|
||||
$CMD /bin/bash -c 'cd /app/hm_nginx && sed "s@\/usr\/local\/web@$(pwd)\/..\/hm_web\/@" conf/hm_nginx.conf > conf/nginx.conf && ./configure --with-http_ssl_module && make && make install'
|
||||
$CMD /bin/bash -c 'cd /app/hm_sunwell/examples && npm install'
|
||||
;;
|
||||
build_client)
|
||||
@@ -21,19 +21,28 @@ case $1 in
|
||||
;;
|
||||
start)
|
||||
$CMD mkdir -p /app/hm_log
|
||||
# Start the servers
|
||||
$CMD /app/hm_gameserver/hm_gameserver --log=/app/hm_log/hm_gameserver_$(date +%s)
|
||||
$CMD /app/hm_lobbyserver/hm_lobbyserver --gameserver=127.0.0.1 --log=/app/hm_log/hm_lobbyserver_$(date +%s)
|
||||
# Start couchbase server first
|
||||
$CMD service couchbase-server start
|
||||
# Wait for couchbase to initialize
|
||||
sleep 5
|
||||
# Create bucket if it doesn't exist
|
||||
$CMD /opt/couchbase/bin/couchbase-cli bucket-create -c "localhost:8091" -u Administrator -p password --bucket=hbs --bucket-password=aci --bucket-type=couchbase --bucket-ramsize=200 --bucket-replica=1 --wait || true
|
||||
# Start the servers in background with -d flag
|
||||
docker exec -d hearthmod /app/hm_gameserver/hm_gameserver --log=/app/hm_log/hm_gameserver_$(date +%s).log
|
||||
docker exec -d hearthmod /app/hm_lobbyserver/hm_lobbyserver --gameserver=127.0.0.1 --log=/app/hm_log/hm_lobbyserver_$(date +%s).log
|
||||
# Start stud
|
||||
$CMD /app/hm_stud/stud /app/hm_stud/cert/test.com.pem
|
||||
docker exec -d hearthmod /app/hm_stud/stud /app/hm_stud/cert/test.com.pem
|
||||
# Start fcgi
|
||||
$CMD spawn-fcgi -d /app/hm_web/ -f /app/hm_web/app.py -a 127.0.0.1 -p 9002
|
||||
docker exec -d hearthmod spawn-fcgi -d /app/hm_web/ -f /app/hm_web/app.py -a 127.0.0.1 -p 9002
|
||||
# Start nginx
|
||||
$CMD /app/hm_nginx/objs/nginx
|
||||
docker exec -d hearthmod /app/hm_nginx/objs/nginx
|
||||
docker exec -d hearthmod /bin/bash -c 'cd /app/hm_sunwell && nodejs examples/server hm_sunwell > /app/hm_log/nodejs_server_$(date +%s).log 2>&1'
|
||||
;;
|
||||
stop)
|
||||
$CMD ps -ef | grep hm_ | grep -v grep | awk '{print $2}' | xargs kill -9
|
||||
$CMD ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs sudo kill -9
|
||||
$CMD /bin/bash -c "ps -ef | grep hm_ | grep -v grep | awk '{print \$2}' | xargs kill -9"
|
||||
$CMD /bin/bash -c "ps -ef | grep nginx | grep -v grep | awk '{print \$2}' | xargs kill -9"
|
||||
# Stop couchbase server last
|
||||
$CMD service couchbase-server stop
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ctl.sh {bucket_create|bucket_restore|compile|start|stop}" >&2
|
||||
|
||||
+29
-10
@@ -1,15 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Sleep for a few seconds (if needed)
|
||||
# sleep 5
|
||||
# compiling
|
||||
|
||||
# Start Couchbase Server
|
||||
if [ "$(whoami)" = "couchbase" ]; then
|
||||
exec /opt/couchbase/bin/couchbase-server -- -kernel global_enable_tracing false -noinput
|
||||
else
|
||||
exec chpst -ucouchbase /opt/couchbase/bin/couchbase-server -- -kernel global_enable_tracing false -noinput
|
||||
fi
|
||||
cd /app/hm_stud && make && rm -rf cert/test* && cd cert && sh gen_cert.sh
|
||||
make -C /app/hm_gameserver
|
||||
make -C /app/hm_lobbyserver
|
||||
cd /app/hm_nginx && sed "s@\/usr\/local\/web@$(pwd)\/..\/hm_web\/@" conf/hm_nginx.conf > conf/nginx.conf && ./configure --with-http_ssl_module && make && make install
|
||||
cd /app/hm_sunwell/examples && npm install
|
||||
|
||||
# Keep the script running to prevent the container from exiting
|
||||
# tail -f /dev/null
|
||||
# start
|
||||
|
||||
mkdir -p /app/hm_log
|
||||
# Start the servers
|
||||
/app/hm_gameserver/hm_gameserver --log=/app/hm_log/hm_gameserver_$(date +%s).log
|
||||
/app/hm_lobbyserver/hm_lobbyserver --gameserver=104.131.186.231 --log=/app/hm_log/hm_lobbyserver_$(date +%s).log
|
||||
# Start stud
|
||||
/app/hm_stud/stud /app/hm_stud/cert/test.com.pem
|
||||
# Start fcgi
|
||||
spawn-fcgi -d /app/hm_web/ -f /app/hm_web/app.py -a 127.0.0.1 -p 9002
|
||||
# Start nginx
|
||||
/app/hm_nginx/objs/nginx
|
||||
/bin/bash -c 'cd /app/hm_sunwell && nodejs examples/server hm_sunwell > /app/hm_log/nodejs_server_$(date +%s).log 2>&1' &
|
||||
|
||||
# bucket create
|
||||
|
||||
/opt/couchbase/bin/couchbase-cli bucket-create -c "localhost:8091" --bucket=hbs --bucket-password=aci --bucket-type=couchbase --bucket-ramsize=200 --bucket-replica=1 --wait
|
||||
|
||||
# bucket restore
|
||||
|
||||
/opt/couchbase/bin/cbrestore /app/hm_database/hbs http://localhost:8091/ --bucket-source=hbs
|
||||
|
||||
tail -f /dev/null
|
||||
|
||||
|
||||
Binary file not shown.
@@ -434,7 +434,7 @@ void async_handle_socket_errno(struct conn_client_s *c)
|
||||
} else if(errno == EPIPE) {
|
||||
hm_log(LOG_ERR, c->log, "{Connector} Broken pipe to backend (EPIPE)");
|
||||
} else {
|
||||
hm_log(LOG_ERR, c->log, "{Connector} errno: %d", errno);
|
||||
hm_log(LOG_ERR, c->log, "{Connector} errno: %d (%s)", errno, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 12.0.2, 2024-02-28T13:09:40. -->
|
||||
<!-- Written by QtCreator 12.0.2, 2024-03-13T13:45:55. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
@@ -83,6 +83,9 @@
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="CppEditor.QuickFix">
|
||||
<value type="bool" key="UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
|
||||
Binary file not shown.
@@ -379,7 +379,7 @@ name="Sprint" card=CS2_077 tags={183:2,202:5,201:3,199:7,203:1,48:7,251:1,268:2,
|
||||
[DS1_233]
|
||||
|
||||
# Frost Nova
|
||||
name="Shiva's Guard" card=CS2_026 tags={183:2,202:5,201:3,199:4,203:1,48:3,251:1,47:1,268:2,321:1,330:0,331:0,208:1,} custom=1
|
||||
name="Shiva's Guard" card=CS2_026 tags={183:2,202:5,201:3,199:4,203:1,48:2,251:1,47:1,268:2,321:1,330:0,331:0,208:1,} custom=1
|
||||
|
||||
# Fan of Knives
|
||||
[EX1_129]
|
||||
@@ -473,7 +473,7 @@ name="Witch Doctor" card=EX1_011 tags={183:2,202:4,201:1,203:2,48:1,47:2,45:1,25
|
||||
[CS2_189]
|
||||
|
||||
# Fire Elemental
|
||||
name="Fire Elemental" card=CS2_042 tags={183:2,202:4,201:3,199:8,203:1,48:6,47:6,45:5,251:3,321:1,218:1,} custom=1
|
||||
[CS2_042]
|
||||
|
||||
# Ironforge Rifleman
|
||||
[CS2_141]
|
||||
@@ -487,7 +487,7 @@ name="Legion Commander" card=CS2_226 tags={183:2,202:4,201:1,203:4,48:5,47:4,45:
|
||||
name="Frostwolf Banner" card=CS2_226e tags={183:2,202:6,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Succubus
|
||||
name="Queen of Pain" card=EX1_306 tags={183:2,202:4,201:3,199:9,200:15,203:2,48:3,47:4,45:3,251:1,268:2,321:1,218:1,} custom=1
|
||||
name="Queen of Pain" card=EX1_306 tags={183:2,202:4,201:3,199:9,200:15,203:2,48:3,47:3,45:5,251:1,268:2,321:1,218:1,} custom=1
|
||||
|
||||
# Sap
|
||||
name="Sap" card=EX1_581 tags={183:2,203:2,202:5,48:2,201:3,199:7,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
@@ -72,8 +72,6 @@ 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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
".section buff" : {
|
||||
"code": "
|
||||
hsl_transform($attacker, $defender, \"CS2_tk1\");
|
||||
hsl_transform($deck_player, $attacker, $defender, \"CS2_tk1\");
|
||||
",
|
||||
|
||||
"target": "$enemy_minions"
|
||||
|
||||
@@ -81,11 +81,6 @@
|
||||
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); \
|
||||
@@ -208,7 +203,6 @@
|
||||
attack_CS2_182\
|
||||
attack_CS2_120\
|
||||
attack_EX1_506a\
|
||||
attack_CS2_042\
|
||||
attack_CS2_boar\
|
||||
attack_CS2_237\
|
||||
attack_LOE_077\
|
||||
|
||||
@@ -16,11 +16,6 @@
|
||||
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); \
|
||||
@@ -65,7 +60,6 @@
|
||||
battlecry_EX1_097\
|
||||
battlecry_EX1_011\
|
||||
battlecry_CS2_088\
|
||||
battlecry_CS2_042\
|
||||
battlecry_LOE_077\
|
||||
battlecry_EX1_614\
|
||||
battlecry_EX1_593\
|
||||
|
||||
@@ -325,6 +325,4 @@ int flag_defs[MAX_FLAGS_DEF] = {
|
||||
1000, // index 321
|
||||
1000, // index 322
|
||||
1000, // index 323
|
||||
1000, // index 324
|
||||
1000, // index 325
|
||||
};
|
||||
|
||||
@@ -38,8 +38,6 @@ void mechanics_next_turn(struct conn_client_s *c, struct hs_holder_s *p)
|
||||
|
||||
reset_turn_plays(opponent);
|
||||
|
||||
summon_npc(c, p, opponent);
|
||||
|
||||
mechanics_expired(p, deck);
|
||||
mechanics_expired(p, opponent);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef FLAG_DEF_H_
|
||||
#define FLAG_DEF_H_
|
||||
|
||||
#define MAX_FLAGS_DEF 326
|
||||
#define MAX_FLAGS_DEF 324
|
||||
|
||||
int flag_defs[MAX_FLAGS_DEF];
|
||||
enum flags_e {
|
||||
@@ -267,69 +267,67 @@ enum flags_e {
|
||||
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,
|
||||
attack_CS2_boar_FLAG = 262,
|
||||
attack_CS2_237_FLAG = 263,
|
||||
attack_LOE_077_FLAG = 264,
|
||||
battlecry_LOE_077_FLAG = 265,
|
||||
destroyed_CS2_118_FLAG = 266,
|
||||
defender_CS2_118_FLAG = 267,
|
||||
attack_CS2_118_FLAG = 268,
|
||||
onboard_CS2_118_FLAG = 269,
|
||||
destroyed_AT_128_FLAG = 270,
|
||||
attack_AT_128_FLAG = 271,
|
||||
attack_EX1_614_FLAG = 272,
|
||||
battlecry_EX1_614_FLAG = 273,
|
||||
attack_EX1_593_FLAG = 274,
|
||||
battlecry_EX1_593_FLAG = 275,
|
||||
attack_GVG_105_FLAG = 276,
|
||||
battlecry_GVG_105_FLAG = 277,
|
||||
attack_NEW1_030_FLAG = 278,
|
||||
battlecry_NEW1_030_FLAG = 279,
|
||||
destroyed_EX1_383_FLAG = 280,
|
||||
attack_EX1_383_FLAG = 281,
|
||||
onboard_EX1_383_FLAG = 282,
|
||||
destroyed_CS2_065_FLAG = 283,
|
||||
attack_CS2_065_FLAG = 284,
|
||||
onboard_CS2_065_FLAG = 285,
|
||||
destroyed_AT_018_FLAG = 286,
|
||||
attack_AT_018_FLAG = 287,
|
||||
onboard_AT_018_FLAG = 288,
|
||||
destroyed_EX1_165t2_FLAG = 289,
|
||||
attack_EX1_165t2_FLAG = 290,
|
||||
onboard_EX1_165t2_FLAG = 291,
|
||||
destroyed_EX1_559_FLAG = 292,
|
||||
attack_EX1_559_FLAG = 293,
|
||||
onboard_EX1_559_FLAG = 294,
|
||||
destroyed_NEW1_011_FLAG = 295,
|
||||
defender_NEW1_011_FLAG = 296,
|
||||
attack_NEW1_011_FLAG = 297,
|
||||
onboard_NEW1_011_FLAG = 298,
|
||||
attack_CS2_226_FLAG = 299,
|
||||
battlecry_CS2_226_FLAG = 300,
|
||||
attack_EX1_009_FLAG = 301,
|
||||
buff_EX1_581_FLAG = 302,
|
||||
attack_EX1_049_FLAG = 303,
|
||||
battlecry_EX1_049_FLAG = 304,
|
||||
spell_aoe_EX1_400_FLAG = 305,
|
||||
attack_effect_attachment_LOEA06_03e_FLAG = 306,
|
||||
weapon_LOE_118_FLAG = 307,
|
||||
idle_LOE_118_FLAG = 308,
|
||||
weapon_destroyed_LOE_118_FLAG = 309,
|
||||
weapon_attack_LOE_118_FLAG = 310,
|
||||
onboard_LOE_118_FLAG = 311,
|
||||
buff_LOEA06_03_FLAG = 312,
|
||||
spell_aoe_CS2_026_FLAG = 313,
|
||||
attack_EX1_306_FLAG = 314,
|
||||
battlecry_EX1_306_FLAG = 315,
|
||||
destroyed_CS2_222_FLAG = 316,
|
||||
attack_CS2_222_FLAG = 317,
|
||||
idle_CS2_222_FLAG = 318,
|
||||
onboard_CS2_222_FLAG = 319,
|
||||
destroyed_CS2_231_FLAG = 320,
|
||||
attack_CS2_231_FLAG = 321,
|
||||
idle_CS2_231_FLAG = 322,
|
||||
onboard_CS2_231_FLAG = 323,
|
||||
};
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef ENTGEN_H_
|
||||
#define ENTGEN_H_
|
||||
|
||||
#define MAX_ENTITIES 133
|
||||
#define MAX_ENTITIES 132
|
||||
#define MAX_BEASTS 0
|
||||
#define MAX_TOTEMS 0
|
||||
#define MAX_TOTEMIC_CALL 0
|
||||
|
||||
@@ -18,22 +18,22 @@
|
||||
#ifndef SECTIONS_H_
|
||||
#define SECTIONS_H_
|
||||
|
||||
#include <section_buff.h>
|
||||
#include <section_battlecry.h>
|
||||
#include <section_defender.h>
|
||||
#include <section_spell.h>
|
||||
#include <section_spell_aoe.h>
|
||||
#include <section_attachment_attack.h>
|
||||
#include <section_attack.h>
|
||||
#include <section_attack_effect.h>
|
||||
#include <section_weapon.h>
|
||||
#include <section_endturn.h>
|
||||
#include <section_onboard.h>
|
||||
#include <section_destroyed.h>
|
||||
#include <section_weapon_destroyed.h>
|
||||
#include <section_idle.h>
|
||||
#include <section_weapon_attack.h>
|
||||
#include <section_attachment_attack.h>
|
||||
#include <section_attack_effect_attachment.h>
|
||||
#include <section_battlecry.h>
|
||||
#include <section_buff.h>
|
||||
#include <section_defender.h>
|
||||
#include <section_destroyed.h>
|
||||
#include <section_endturn.h>
|
||||
#include <section_idle.h>
|
||||
#include <section_onboard.h>
|
||||
#include <section_spell.h>
|
||||
#include <section_spell_aoe.h>
|
||||
#include <section_weapon.h>
|
||||
#include <section_weapon_attack.h>
|
||||
#include <section_weapon_destroyed.h>
|
||||
|
||||
// built-in variables
|
||||
#define HSL_attacker (attacker)
|
||||
@@ -67,14 +67,13 @@
|
||||
|
||||
#define cmp_cardname(m_card, m_src) (strcmp(m_card->entity->name, m_src) == 0)
|
||||
|
||||
#define hsl_set_windfury(m_dst)\
|
||||
flag(&m_dst->state, CARD_WINDFURY, FLAG_SET)
|
||||
#define hsl_set_windfury(m_dst) flag(&m_dst->state, CARD_WINDFURY, FLAG_SET)
|
||||
|
||||
#define hsl_set_taunt(m_dst)\
|
||||
flag(&m_dst->state, CARD_TAUNT, FLAG_SET);
|
||||
#define hsl_set_taunt(m_dst) flag(&m_dst->state, CARD_TAUNT, FLAG_SET);
|
||||
|
||||
#define hsl_refresh_mana(m_deck, m_amount) \
|
||||
deck->mana_used = (m_amount > deck->mana_used) ? 0 : deck->mana_used - m_amount ;
|
||||
deck->mana_used = \
|
||||
(m_amount > deck->mana_used) ? 0 : deck->mana_used - m_amount;
|
||||
|
||||
#define turn_plays(m_card) (m_card->turn_plays)
|
||||
|
||||
@@ -138,7 +137,6 @@ flag(&m_dst->state, MECHANICS_HEALTH, FLAG_SET);
|
||||
flag(&m_dst->state, MECHANICS_HEALTH, FLAG_SET); \
|
||||
}
|
||||
|
||||
|
||||
#define hsl_change_armor(m_dst, m_change) \
|
||||
m_dst->armor += m_change; \
|
||||
flag(&m_dst->state, MECHANICS_ARMOR, FLAG_SET);
|
||||
@@ -147,16 +145,20 @@ flag(&m_dst->state, MECHANICS_ARMOR, FLAG_SET);
|
||||
m_dst->attack += m_change; \
|
||||
flag(&m_dst->state, MECHANICS_ATTACK, FLAG_SET);
|
||||
|
||||
#define hsl_cards_by_name(m_deck, m_name) \
|
||||
(cards_by_name(HSL_player, m_deck, m_name, CARD_BOARD))
|
||||
|
||||
#define hsl_cards_by_name(m_deck, m_name) (cards_by_name(HSL_player, m_deck, m_name, CARD_BOARD))
|
||||
#define hsl_board_count_by_name(m_deck, m_name) \
|
||||
(board_count_by_name(m_deck, m_name))
|
||||
|
||||
#define hsl_board_count_by_name(m_deck, m_name) (board_count_by_name(m_deck, m_name))
|
||||
#define hsl_board_minions_count(m_deck, m_attacker) \
|
||||
cards_get_board_count(m_deck, NULL, 0, m_attacker->id)
|
||||
|
||||
#define hsl_board_minions_count(m_deck, m_attacker) cards_get_board_count(m_deck, NULL, 0, m_attacker->id)
|
||||
#define hsl_add_single_attachment(m_player, m_deck, m_dst, m_src) \
|
||||
add_single_attachment(m_player, m_deck, m_dst, m_src)
|
||||
|
||||
#define hsl_add_single_attachment(m_player, m_deck, m_dst, m_src) add_single_attachment(m_player, m_deck, m_dst, m_src)
|
||||
|
||||
#define hsl_remove_attachment(m_deck, m_opponent, m_card, m_name) (card_remove_attachment(m_deck, m_opponent, m_card, m_name))
|
||||
#define hsl_remove_attachment(m_deck, m_opponent, m_card, m_name) \
|
||||
(card_remove_attachment(m_deck, m_opponent, m_card, m_name))
|
||||
|
||||
#define level(m_dst) (m_dst->boss.level)
|
||||
|
||||
@@ -164,20 +166,26 @@ flag(&m_dst->state, MECHANICS_ATTACK, FLAG_SET);
|
||||
|
||||
#define is_boss(m_dst) (flag(&m_dst->state, CARD_BOSS, FLAG_ISSET))
|
||||
|
||||
#define hsl_apply_attachment(m_player, m_deck, m_dst, m_src) (card_apply_attachment(m_player, m_deck, m_dst, m_src))
|
||||
#define hsl_apply_attachment(m_player, m_deck, m_dst, m_src) \
|
||||
(card_apply_attachment(m_player, m_deck, m_dst, m_src))
|
||||
|
||||
#define hsl_cards_get_hand_random(m_deck) (cards_get_hand_random(m_deck))
|
||||
|
||||
#define hsl_cards_get_hand(m_deck) (cards_get_hand(m_deck))
|
||||
|
||||
#define hsl_receive_damage(m_dst, m_dmg) \
|
||||
if(m_dst) { m_dst->receive.damage = m_dmg; }
|
||||
if (m_dst) { \
|
||||
m_dst->receive.damage = m_dmg; \
|
||||
}
|
||||
|
||||
#define hsl_receive_heal(m_dst, m_heal) \
|
||||
if(m_dst) { m_dst->receive.heal = m_heal; }
|
||||
if (m_dst) { \
|
||||
m_dst->receive.heal = m_heal; \
|
||||
}
|
||||
|
||||
#define hsl_freeze(m_src, m_dst) \
|
||||
hm_log(LOG_DEBUG, lg, "Attacker [%s](%d) froze [%s](%d)", m_src->entity->desc, m_src->id, m_dst->entity->desc, m_dst->id);\
|
||||
hm_log(LOG_DEBUG, lg, "Attacker [%s](%d) froze [%s](%d)", \
|
||||
m_src->entity->desc, m_src->id, m_dst->entity->desc, m_dst->id); \
|
||||
mechanics_expire(p->game->turn + 3, m_dst, EXPIRE_FROZEN, 1, NULL); \
|
||||
flag(&m_dst->state, CARD_FROZEN, FLAG_SET);
|
||||
|
||||
@@ -195,17 +203,19 @@ m_card->attack = m_card->default_attack;\
|
||||
flag(&m_card->state, MECHANICS_ATTACK, FLAG_SET); \
|
||||
card_remove_attachment(hsl_deck(m_card), NULL, m_card, NULL); \
|
||||
card_destroy(m_card, hsl_deck(m_card), 1); \
|
||||
/* order is importatnt here, new zone position must come after card is destroyed */\
|
||||
/* order is importatnt here, new zone position must come after card is \
|
||||
* destroyed */ \
|
||||
if (m_card->controller == HSL_deck_player->controller) { \
|
||||
m_card->zone_position = ++(HSL_deck_player->handposition); \
|
||||
} else { \
|
||||
m_card->zone_position = ++(HSL_deck_opponent->handposition); \
|
||||
}\
|
||||
}
|
||||
|
||||
#define hsl_cards_get_hand(m_deck) (cards_get_hand(m_deck))
|
||||
|
||||
#define hsl_add_new_card_hand(m_deck, m_card, m_holder) \
|
||||
struct card_s *m_holder = add_new_card(m_deck->parent->game, m_deck, -1, m_card, -1);\
|
||||
struct card_s *m_holder = \
|
||||
add_new_card(m_deck->parent->game, m_deck, -1, m_card, -1); \
|
||||
flag(&m_holder->state, CARD_HAND, FLAG_SET); \
|
||||
m_holder->zone_position = ++(m_deck->handposition);
|
||||
|
||||
@@ -217,7 +227,8 @@ m_holder->zone_position = ++(m_deck->handposition);
|
||||
flag(&m_dst->state, CARD_DESTROYED, FLAG_SET); \
|
||||
cards_board_destroyed_reorder(m_deck, m_dst->zone_position);
|
||||
|
||||
#define hsl_destroy_inhand(m_dst) card_discard_by_name(HSL_player, HSL_fake_defender, m_dst)
|
||||
#define hsl_destroy_inhand(m_dst) \
|
||||
card_discard_by_name(HSL_player, HSL_fake_defender, m_dst)
|
||||
|
||||
#define hsl_set_weapon_durability(m_dst, m_value) \
|
||||
m_dst->durability += m_value; \
|
||||
@@ -234,23 +245,32 @@ flag(&m_dst->state, MECHANICS_DURABILITY, FLAG_SET);
|
||||
flag(&m_deck->heroweapon->state, CARD_HEROWEAPON, FLAG_UNSET); \
|
||||
flag(&m_deck->heroweapon->state, CARD_EXHAUSTED, FLAG_UNSET); \
|
||||
\
|
||||
/*LIST_ADD(m_attacker->target.card, itm, m_holder->deck_copy->heroweapon);*/\
|
||||
/*LIST_ADD(m_attacker->target.card, itm, \
|
||||
* m_holder->deck_copy->heroweapon);*/ \
|
||||
\
|
||||
flag(&m_deck->heroweapon->state, MECHANICS_DESTROY_WEAPON, FLAG_SET); \
|
||||
m_deck->heroweapon = NULL; \
|
||||
}
|
||||
|
||||
#define is_weapon(m_deck, m_src) (m_deck && m_deck->heroweapon && strcmp(m_deck->heroweapon->entity->name, m_src) == 0)
|
||||
#define is_weapon(m_deck, m_src) \
|
||||
(m_deck && m_deck->heroweapon && \
|
||||
strcmp(m_deck->heroweapon->entity->name, m_src) == 0)
|
||||
|
||||
#define hsl_change_cost(m_card, m_change) \
|
||||
(m_card->cost = (m_card->default_cost - m_change >= 0) ? (m_card->default_cost - m_change) : 0);\
|
||||
(m_card->cost = (m_card->default_cost - m_change >= 0) \
|
||||
? (m_card->default_cost - m_change) \
|
||||
: 0); \
|
||||
flag(&(m_card->state), MECHANICS_COST, FLAG_SET);
|
||||
|
||||
#define hsl_card_spell_by_name(m_player, m_deck, m_name) (card_by_name(m_player, m_deck, m_name, CARD_SPELL))
|
||||
#define hsl_card_board_by_name(m_player, m_deck, m_name) (card_by_name(m_player, m_deck, m_name, CARD_BOARD))
|
||||
#define hsl_card_hand_by_name(m_player, m_deck, m_name) (card_by_name(m_player, m_deck, m_name, CARD_HAND))
|
||||
#define hsl_card_spell_by_name(m_player, m_deck, m_name) \
|
||||
(card_by_name(m_player, m_deck, m_name, CARD_SPELL))
|
||||
#define hsl_card_board_by_name(m_player, m_deck, m_name) \
|
||||
(card_by_name(m_player, m_deck, m_name, CARD_BOARD))
|
||||
#define hsl_card_hand_by_name(m_player, m_deck, m_name) \
|
||||
(card_by_name(m_player, m_deck, m_name, CARD_HAND))
|
||||
|
||||
#define hsl_count_attachments(m_deck, m_opponent, m_card, m_name) (card_count_attachment(m_deck, m_opponent, m_card, m_name))
|
||||
#define hsl_count_attachments(m_deck, m_opponent, m_card, m_name) \
|
||||
(card_count_attachment(m_deck, m_opponent, m_card, m_name))
|
||||
|
||||
#define hsl_discard_random_hand(m_deck, m_amount, m_holder) \
|
||||
int m_holder; \
|
||||
@@ -275,28 +295,42 @@ for(m_holder = m_all; m_holder != NULL; m_holder = m_holder->next) {\
|
||||
#define hsl_card(m_target) \
|
||||
card_get(HSL_deck_player, HSL_deck_opponent, m_target)
|
||||
|
||||
#define hsl_deck(m_card) ((m_card->controller == HSL_deck_player->controller) ? HSL_deck_player : HSL_deck_opponent)
|
||||
#define hsl_deck(m_card) \
|
||||
((m_card->controller == HSL_deck_player->controller) ? HSL_deck_player \
|
||||
: HSL_deck_opponent)
|
||||
|
||||
#define default_health(m_card) (m_card->default_health)
|
||||
|
||||
#define default_attack(m_card) (m_card->default_attack)
|
||||
|
||||
#define hsl_board_all_cards(m_attacker, m_hero) cards_get_board(p->deck_copy, p->opponent.deck_copy, m_hero, m_attacker->id, HSL_magic_immunity_included, 1)
|
||||
#define hsl_board_all_cards(m_attacker, m_hero) \
|
||||
cards_get_board(p->deck_copy, p->opponent.deck_copy, m_hero, m_attacker->id, \
|
||||
HSL_magic_immunity_included, 1)
|
||||
|
||||
#define hsl_board_all_cards_no_boss(m_attacker, m_hero) (cards_get_board(p->deck_copy, p->opponent.deck_copy, m_hero, m_attacker->id, HSL_magic_immunity_included, 0))
|
||||
#define hsl_board_all_cards_no_boss(m_attacker, m_hero) \
|
||||
(cards_get_board(p->deck_copy, p->opponent.deck_copy, m_hero, \
|
||||
m_attacker->id, HSL_magic_immunity_included, 0))
|
||||
|
||||
#define hsl_board_friendly_cards(m_deck, m_attacker, m_hero) (cards_get_board(m_deck, NULL, m_hero, m_attacker, HSL_magic_immunity_included, 1))
|
||||
#define hsl_board_friendly_cards(m_deck, m_attacker, m_hero) \
|
||||
(cards_get_board(m_deck, NULL, m_hero, m_attacker, \
|
||||
HSL_magic_immunity_included, 1))
|
||||
|
||||
#define hsl_board_friendly_cards_wattacker(m_hero) cards_get_board(p->deck_copy, NULL, m_hero, -1, HSL_magic_immunity_included, 1);
|
||||
#define hsl_board_friendly_cards_wattacker(m_hero) \
|
||||
cards_get_board(p->deck_copy, NULL, m_hero, -1, HSL_magic_immunity_included, \
|
||||
1);
|
||||
|
||||
#define hsl_board_enemy_cards(m_attacker, m_hero, m_mi) cards_get_board(NULL, p->opponent.deck_copy, m_hero, m_attacker->id, m_mi, 1);
|
||||
#define hsl_board_enemy_cards(m_attacker, m_hero, m_mi) \
|
||||
cards_get_board(NULL, p->opponent.deck_copy, m_hero, m_attacker->id, m_mi, 1);
|
||||
|
||||
#define hsl_board_friendly_no_boss(m_attacker, m_hero, m_mi) cards_get_board(NULL, p->opponent.deck_copy, m_hero, m_attacker->id, m_mi, 0);
|
||||
#define hsl_board_friendly_no_boss(m_attacker, m_hero, m_mi) \
|
||||
cards_get_board(NULL, p->opponent.deck_copy, m_hero, m_attacker->id, m_mi, 0);
|
||||
|
||||
#define hsl_board_boss_cards(m_deck) (cards_get_board_boss(m_deck))
|
||||
|
||||
#define hsl_attack_aoe(m_dst, m_src, m_fake_levelup) mechanics_attack_aoe(c, opt->position, m_dst, &m_src, m_fake_levelup)
|
||||
#define hsl_attack(m_dst, m_src, m_fake_levelup) hsl_attack_aoe(m_dst, m_src, m_fake_levelup)
|
||||
#define hsl_attack_aoe(m_dst, m_src, m_fake_levelup) \
|
||||
mechanics_attack_aoe(c, opt->position, m_dst, &m_src, m_fake_levelup)
|
||||
#define hsl_attack(m_dst, m_src, m_fake_levelup) \
|
||||
hsl_attack_aoe(m_dst, m_src, m_fake_levelup)
|
||||
|
||||
/**
|
||||
* @brief Summon card for deck
|
||||
@@ -352,8 +386,7 @@ for(m_card##idx = 0; m_card##idx < m_amount; m_card##idx++) {\
|
||||
* @param m_dst destination card
|
||||
* @param m_src source card
|
||||
**/
|
||||
#define hsl_link_target(m_dst, m_src)\
|
||||
LIST_ADD_LINK(m_dst->target.card, m_src)
|
||||
#define hsl_link_target(m_dst, m_src) LIST_ADD_LINK(m_dst->target.card, m_src)
|
||||
|
||||
/**
|
||||
* @brief Add target to defenders
|
||||
@@ -363,7 +396,7 @@ for(m_card##idx = 0; m_card##idx < m_amount; m_card##idx++) {\
|
||||
**/
|
||||
#define hsl_add_target(m_src, m_holder) \
|
||||
struct card_list_s *m_holder##item; \
|
||||
LIST_ADD(defenders, m_holder##item, m_src);\
|
||||
LIST_ADD(defenders, m_holder##item, m_src);
|
||||
|
||||
/**
|
||||
* @brief Attack as battlecry
|
||||
@@ -423,7 +456,8 @@ mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_DESTROY, 1, NULL)
|
||||
#define hsl_buff_attack_expire(m_turn, m_defender, m_attack) \
|
||||
m_defender->attack += m_attack; \
|
||||
flag(&(m_defender->state), MECHANICS_ATTACK, FLAG_SET); \
|
||||
mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_ATTACK, -(m_attack), NULL);
|
||||
mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_ATTACK, \
|
||||
-(m_attack), NULL);
|
||||
|
||||
/**
|
||||
* @brief Change health of card
|
||||
@@ -432,8 +466,10 @@ mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_ATTACK, -(m_attack),
|
||||
* @param m_health health value
|
||||
*/
|
||||
#define hsl_add_attachment(m_player, m_attacker, m_defender, m_turn) \
|
||||
add_single_attachment(m_player, hsl_deck(m_defender), m_attacker, m_defender);\
|
||||
mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_ATTACHMENT, 0, m_attacker->attachment);
|
||||
add_single_attachment(m_player, hsl_deck(m_defender), m_attacker, \
|
||||
m_defender); \
|
||||
mechanics_expire(p->game->turn + m_turn, m_defender, EXPIRE_ATTACHMENT, 0, \
|
||||
m_attacker->attachment);
|
||||
|
||||
/**
|
||||
* @brief Change health of card
|
||||
@@ -459,8 +495,7 @@ flag(&(m_card->state), MECHANICS_HEALTH, FLAG_SET);
|
||||
* @param m_card destination card
|
||||
* @param m_flag flag to set
|
||||
*/
|
||||
#define setflag(m_card, m_flag)\
|
||||
flag(&(m_card->state), m_flag, FLAG_SET);
|
||||
#define setflag(m_card, m_flag) flag(&(m_card->state), m_flag, FLAG_SET);
|
||||
|
||||
/**
|
||||
* @brief Unset flag from card
|
||||
@@ -468,29 +503,31 @@ flag(&(m_card->state), MECHANICS_HEALTH, FLAG_SET);
|
||||
* @param m_card destination card
|
||||
* @param m_flag flag to unset
|
||||
*/
|
||||
#define unsetflag(m_card, m_flag)\
|
||||
flag(&(m_card->state), m_flag, FLAG_UNSET);
|
||||
#define unsetflag(m_card, m_flag) flag(&(m_card->state), m_flag, FLAG_UNSET);
|
||||
|
||||
/**
|
||||
* @brief Unset windfury flag from card
|
||||
*
|
||||
* @param m_card destination card
|
||||
*/
|
||||
#define hsl_unset_windfury(m_card) (flag(&(m_card->state), CARD_WINDFURY, FLAG_UNSET))
|
||||
#define hsl_unset_windfury(m_card) \
|
||||
(flag(&(m_card->state), CARD_WINDFURY, FLAG_UNSET))
|
||||
|
||||
/**
|
||||
* @brief Set exhausted flag to card
|
||||
*
|
||||
* @param m_card destination card
|
||||
*/
|
||||
#define hsl_set_exhausted(m_card) (flag(&(m_card->state), CARD_EXHAUSTED, FLAG_SET))
|
||||
#define hsl_set_exhausted(m_card) \
|
||||
(flag(&(m_card->state), CARD_EXHAUSTED, FLAG_SET))
|
||||
|
||||
/**
|
||||
* @brief Unset exhausted flag from card
|
||||
*
|
||||
* @param m_card destination card
|
||||
*/
|
||||
#define hsl_unset_exhausted(m_card) (flag(&(m_card->state), CARD_EXHAUSTED, FLAG_UNSET))
|
||||
#define hsl_unset_exhausted(m_card) \
|
||||
(flag(&(m_card->state), CARD_EXHAUSTED, FLAG_UNSET))
|
||||
|
||||
/**
|
||||
* @brief Transform defender to m_name
|
||||
@@ -501,11 +538,12 @@ flag(&(m_card->state), MECHANICS_HEALTH, FLAG_SET);
|
||||
* @param m_defender card being attacked
|
||||
* @param m_name card code name
|
||||
*/
|
||||
#define hsl_transform(m_attacker, m_defender,m_name)\
|
||||
#define hsl_transform(m_deck, m_attacker, m_defender, m_name) \
|
||||
struct card_s *card; \
|
||||
card = add_new_card(p->game, p->opponent.deck_copy, -1, m_name, -1); \
|
||||
card->zone_position = m_defender->zone_position; \
|
||||
mechanics_put_card_onboard(c, card->zone_position, card, 1, NULL, NULL);\
|
||||
mechanics_put_card_onboard(c, card->zone_position, card, 1, NULL, NULL, \
|
||||
m_deck); \
|
||||
m_defender->linked = card->id; \
|
||||
flag(&m_defender->state, CARD_LINKED, FLAG_SET); \
|
||||
flag(&m_defender->state, CARD_HIDE, FLAG_SET); \
|
||||
@@ -514,7 +552,8 @@ flag(&m_defender->state, CARD_BOARD, FLAG_UNSET);
|
||||
/**
|
||||
* @brief Give weapon to player
|
||||
*
|
||||
* Called only in '.section onboard'. There is no need to linked destroyed weapon to defenders
|
||||
* Called only in '.section onboard'. There is no need to linked destroyed
|
||||
* weapon to defenders
|
||||
*
|
||||
* @param m_dst hero card
|
||||
*/
|
||||
|
||||
@@ -92,7 +92,7 @@ struct ent_s entities[MAX_ENTITIES] = {{ "GAME_ENTITY", 11, 6, (void *)0, (void
|
||||
, { "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
|
||||
, { "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, 2 }, { 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
|
||||
@@ -104,35 +104,34 @@ struct ent_s entities[MAX_ENTITIES] = {{ "GAME_ENTITY", 11, 6, (void *)0, (void
|
||||
, { "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
|
||||
, { "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 }, }} // 104
|
||||
, { "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 }, }} // 105
|
||||
, { "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, 3 }, { 45, 5 }, { 218, 1 }, { 183, 2 }, { 321, 1 }, { 268, 2 }, { 251, 1 }, }} // 106
|
||||
, { "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 }, }} // 107
|
||||
, { "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 }, }} // 108
|
||||
, { "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 }, }} // 109
|
||||
, { "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 }, }} // 110
|
||||
, { "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 }, }} // 111
|
||||
, { "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 }, }} // 112
|
||||
, { "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 }, }} // 113
|
||||
, { "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 }, }} // 114
|
||||
, { "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 }, }} // 115
|
||||
, { "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 }, }} // 116
|
||||
, { "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 }, }} // 117
|
||||
, { "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 }, }} // 118
|
||||
, { "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 }, }} // 119
|
||||
, { "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 }, }} // 120
|
||||
, { "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 }, }} // 121
|
||||
, { "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 }, }} // 122
|
||||
, { "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 }, }} // 123
|
||||
, { "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 }, }} // 124
|
||||
, { "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 }, }} // 125
|
||||
, { "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 }, }} // 126
|
||||
, { "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 }, }} // 127
|
||||
, { "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 }, }} // 128
|
||||
, { "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 }, }} // 129
|
||||
, { "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 }, }} // 130
|
||||
, { "NO_CARD", 7, 1, (void *)0, (void *)0, "No Card", {{0, 0, 0, 0, 0, 0, 0, 0}}, (void *)0, {{ 49, 2 }, }} // 131
|
||||
, };
|
||||
|
||||
void entities_init() {
|
||||
@@ -180,27 +179,27 @@ void entities_init() {
|
||||
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[105].flags, CARD_ATTACHMENT, FLAG_SET);
|
||||
flag(&entities[108].flags, CARD_ATTACHMENT, FLAG_SET);
|
||||
flag(&entities[112].flags, CARD_ATTACHMENT, FLAG_SET);
|
||||
flag(&entities[113].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
|
||||
flag(&entities[115].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
|
||||
flag(&entities[125].flags, CARD_HEROPOWER, FLAG_SET);
|
||||
flag(&entities[125].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[125].flags, CARD_SPELL, FLAG_SET);
|
||||
flag(&entities[125].flags, CARD_HP_SPELL_DAMAGE, FLAG_SET);
|
||||
flag(&entities[127].flags, CARD_HEROPOWER, FLAG_SET);
|
||||
flag(&entities[127].flags, CARD_SPELL, FLAG_SET);
|
||||
flag(&entities[127].flags, CARD_NONTARGET, FLAG_SET);
|
||||
flag(&entities[127].flags, CARD_HP_REINFORCE, FLAG_SET);
|
||||
flag(&entities[127].flags, CARD_SUMMON, 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_HP_DAGGERMASTERY, 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[130].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
|
||||
flag(&entities[131].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
|
||||
flag(&entities[132].flags, CARD_UNCOLLECTIBLE, FLAG_SET);
|
||||
}
|
||||
const char *race_beast[MAX_BEASTS] = {
|
||||
};
|
||||
|
||||
@@ -68,20 +68,20 @@ void entities_init2() {
|
||||
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[129].flags, CARD_SPELL, FLAG_SET);
|
||||
flag(&entities[129].flags, CARD_AOE, FLAG_SET);
|
||||
flag(&entities[129].flags, CARD_WEAPON, FLAG_SET);
|
||||
flag(&entities[129].flags, CARD_NONTARGET, FLAG_SET);
|
||||
flag(&entities[129].flags, weapon_CS2_097_FLAG, FLAG_SET);
|
||||
flag(&entities[129].flags, idle_CS2_097_FLAG, FLAG_SET);
|
||||
flag(&entities[129].flags, weapon_destroyed_CS2_097_FLAG, FLAG_SET);
|
||||
flag(&entities[129].flags, weapon_attack_CS2_097_FLAG, FLAG_SET);
|
||||
flag(&entities[129].flags, onboard_CS2_097_FLAG, FLAG_SET);
|
||||
flag(&entities[126].flags, CARD_HEROPOWER, FLAG_SET);
|
||||
flag(&entities[126].flags, CARD_SPELL, FLAG_SET);
|
||||
flag(&entities[126].flags, spell_CS1h_001_FLAG, FLAG_SET);
|
||||
flag(&entities[126].flags, CARD_TARGET_ALL, FLAG_SET);
|
||||
flag(&entities[126].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);
|
||||
@@ -209,60 +209,53 @@ void entities_init2() {
|
||||
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[121].flags, attack_CS2_168_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_201_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[123].flags, attack_CS2_200_FLAG, 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[116].flags, attack_CS2_119_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_172_FLAG, FLAG_SET);
|
||||
flag(&entities[110].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[110].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[110].flags, attack_CS2_171_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_182_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_120_FLAG, FLAG_SET);
|
||||
flag(&entities[113].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[113].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[113].flags, attack_EX1_506a_FLAG, FLAG_SET);
|
||||
flag(&entities[115].flags, CARD_TAUNT, 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[115].flags, attack_CS2_boar_FLAG, FLAG_SET);
|
||||
flag(&entities[114].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[114].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[114].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[118].flags, destroyed_CS2_118_FLAG, FLAG_SET);
|
||||
flag(&entities[118].flags, defender_CS2_118_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_118_FLAG, FLAG_SET);
|
||||
flag(&entities[118].flags, onboard_CS2_118_FLAG, FLAG_SET);
|
||||
flag(&entities[118].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);
|
||||
@@ -299,12 +292,12 @@ void entities_init2() {
|
||||
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[111].flags, destroyed_CS2_065_FLAG, FLAG_SET);
|
||||
flag(&entities[111].flags, CARD_BOSS, FLAG_SET);
|
||||
flag(&entities[111].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[111].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[111].flags, attack_CS2_065_FLAG, FLAG_SET);
|
||||
flag(&entities[111].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);
|
||||
@@ -325,27 +318,27 @@ void entities_init2() {
|
||||
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[109].flags, destroyed_NEW1_011_FLAG, FLAG_SET);
|
||||
flag(&entities[109].flags, defender_NEW1_011_FLAG, FLAG_SET);
|
||||
flag(&entities[109].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[109].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[109].flags, attack_NEW1_011_FLAG, FLAG_SET);
|
||||
flag(&entities[109].flags, onboard_NEW1_011_FLAG, FLAG_SET);
|
||||
flag(&entities[109].flags, CARD_BOSS, FLAG_SET);
|
||||
flag(&entities[104].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[104].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[104].flags, attack_CS2_226_FLAG, FLAG_SET);
|
||||
flag(&entities[104].flags, CARD_BATTLECRY, FLAG_SET);
|
||||
flag(&entities[104].flags, battlecry_CS2_226_FLAG, FLAG_SET);
|
||||
flag(&entities[104].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[107].flags, CARD_BUFF, FLAG_SET);
|
||||
flag(&entities[107].flags, CARD_SPELL, FLAG_SET);
|
||||
flag(&entities[107].flags, buff_EX1_581_FLAG, FLAG_SET);
|
||||
flag(&entities[107].flags, CARD_TARGET_MINIONS, FLAG_SET);
|
||||
flag(&entities[107].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);
|
||||
@@ -378,22 +371,22 @@ void entities_init2() {
|
||||
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[106].flags, CARD_MINION, FLAG_SET);
|
||||
flag(&entities[106].flags, CARD_TARGETING, FLAG_SET);
|
||||
flag(&entities[106].flags, attack_EX1_306_FLAG, FLAG_SET);
|
||||
flag(&entities[106].flags, CARD_BATTLECRY, FLAG_SET);
|
||||
flag(&entities[106].flags, battlecry_EX1_306_FLAG, FLAG_SET);
|
||||
flag(&entities[106].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);
|
||||
flag(&entities[119].flags, destroyed_CS2_231_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_231_FLAG, FLAG_SET);
|
||||
flag(&entities[119].flags, idle_CS2_231_FLAG, FLAG_SET);
|
||||
flag(&entities[119].flags, onboard_CS2_231_FLAG, FLAG_SET);
|
||||
}
|
||||
|
||||
Binary file not shown.
+39
-32
@@ -15,11 +15,11 @@
|
||||
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 <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <memory.h>
|
||||
#include <malloc.h>
|
||||
#include <ev.h>
|
||||
#include <malloc.h>
|
||||
#include <memory.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <hmbase.h>
|
||||
|
||||
@@ -30,51 +30,58 @@ struct playerlist_s {
|
||||
struct playerlist_s *next;
|
||||
};
|
||||
|
||||
static struct playerlist_s *queue = NULL;
|
||||
static int gamehandle = 0;
|
||||
struct playerlist_s *queue = NULL;
|
||||
struct playerlist_s *tail = NULL; // Pointer to the last element
|
||||
|
||||
void mm_push(struct conn_client_s *c)
|
||||
{
|
||||
struct playerlist_s *p;
|
||||
|
||||
p = malloc(sizeof(*p));
|
||||
|
||||
// Add a player to the matchmaking queue
|
||||
void mm_push(struct conn_client_s *c) {
|
||||
struct playerlist_s *p = malloc(sizeof(*p));
|
||||
p->player = c;
|
||||
p->next = queue;
|
||||
p->next = NULL;
|
||||
|
||||
if (queue == NULL) {
|
||||
queue = p;
|
||||
} else {
|
||||
tail->next = p;
|
||||
}
|
||||
|
||||
struct conn_client_s *mm_pop()
|
||||
{
|
||||
struct conn_client_s *c;
|
||||
struct playerlist_s *p;
|
||||
tail = p; // Update the tail pointer
|
||||
}
|
||||
|
||||
p = queue;
|
||||
c = queue->player;
|
||||
// Remove a player from the matchmaking queue
|
||||
struct conn_client_s *mm_pop() {
|
||||
if (queue == NULL)
|
||||
return NULL;
|
||||
|
||||
struct playerlist_s *temp = queue;
|
||||
struct conn_client_s *c = temp->player;
|
||||
|
||||
queue = queue->next;
|
||||
free(p);
|
||||
if (queue == NULL) {
|
||||
tail = NULL; // If the queue is empty after pop, reset the tail pointer
|
||||
}
|
||||
free(temp);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
int matchmaking(struct conn_client_s *player1)
|
||||
{
|
||||
struct conn_client_s *player2;
|
||||
// Matchmaking
|
||||
int matchmaking(struct conn_client_s *player) {
|
||||
// Add the player to the queue
|
||||
mm_push(player);
|
||||
|
||||
// first player
|
||||
if(queue == NULL) {
|
||||
mm_push(player1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
player2 = mm_pop();
|
||||
while (queue != NULL && queue->next != NULL) {
|
||||
struct conn_client_s *player1 = mm_pop();
|
||||
struct conn_client_s *player2 = mm_pop();
|
||||
|
||||
if (player1 && player2) {
|
||||
start_game(player1, player2, gamehandle++);
|
||||
return 0;
|
||||
}
|
||||
|
||||
} else {
|
||||
// This block should never be reached in this setup
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ NGX_PREFIX=
|
||||
NGX_SBIN_PATH=
|
||||
NGX_CONF_PREFIX=
|
||||
NGX_CONF_PATH=
|
||||
NGX_ERROR_LOG_PATH=
|
||||
NGX_ERROR_LOG_PATH=/app/hm_log/hm_web_nginx_$(date +"%Y%m%d_%H%M%S").log
|
||||
NGX_PID_PATH=
|
||||
NGX_LOCK_PATH=
|
||||
NGX_USER=
|
||||
|
||||
+39
-75
@@ -34,12 +34,44 @@ http {
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
server_name hsmod.xyz www.hsmod.xyz; # Change to your actual domain
|
||||
|
||||
#charset koi8-r;
|
||||
location / {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
#access_log logs/host.access.log main;
|
||||
# another virtual host using mix of IP-, name-, and port-based configuration
|
||||
#
|
||||
#server {
|
||||
# listen 8000;
|
||||
# listen somename:8080;
|
||||
# server_name somename alias another.alias;
|
||||
|
||||
# location / {
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
# }
|
||||
#}
|
||||
|
||||
|
||||
# HTTPS server
|
||||
#
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name hsmod.xyx www.hsmod.xyz; # Change to your actual domain
|
||||
|
||||
ssl_certificate /app/letsencrypt/fullchain.pem; # Path to fullchain.pem
|
||||
ssl_certificate_key /app/letsencrypt/privkey.pem; # Path to privkey.pem
|
||||
|
||||
ssl_session_cache shared:SSL:1m;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_dhparam /app/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
# FastCGI settings retained from your original config
|
||||
location / {
|
||||
fastcgi_param REQUEST_METHOD $request_method;
|
||||
fastcgi_param QUERY_STRING $query_string;
|
||||
@@ -58,84 +90,16 @@ http {
|
||||
fastcgi_pass 127.0.0.1:9002;
|
||||
}
|
||||
|
||||
# Setup for serving static files
|
||||
location /static/ {
|
||||
root /usr/local/web;
|
||||
if (-f $request_filename) {
|
||||
rewrite ^/static/(.*)$ /static/$1 break;
|
||||
root /app/hm_nginx/../hm_web/;
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
}
|
||||
#location / {
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
#}
|
||||
|
||||
#error_page 404 /404.html;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
# Error pages configuration
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root html;
|
||||
}
|
||||
|
||||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
||||
#
|
||||
#location ~ \.php$ {
|
||||
# proxy_pass http://127.0.0.1;
|
||||
#}
|
||||
|
||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||
#
|
||||
#location ~ \.php$ {
|
||||
# root html;
|
||||
# fastcgi_pass 127.0.0.1:9000;
|
||||
# fastcgi_index index.php;
|
||||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
||||
# include fastcgi_params;
|
||||
#}
|
||||
|
||||
# deny access to .htaccess files, if Apache's document root
|
||||
# concurs with nginx's one
|
||||
#
|
||||
#location ~ /\.ht {
|
||||
# deny all;
|
||||
#}
|
||||
}
|
||||
|
||||
|
||||
# another virtual host using mix of IP-, name-, and port-based configuration
|
||||
#
|
||||
#server {
|
||||
# listen 8000;
|
||||
# listen somename:8080;
|
||||
# server_name somename alias another.alias;
|
||||
|
||||
# location / {
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
# }
|
||||
#}
|
||||
|
||||
|
||||
# HTTPS server
|
||||
#
|
||||
#server {
|
||||
# listen 443 ssl;
|
||||
# server_name localhost;
|
||||
|
||||
# ssl_certificate cert.pem;
|
||||
# ssl_certificate_key cert.key;
|
||||
|
||||
# ssl_session_cache shared:SSL:1m;
|
||||
# ssl_session_timeout 5m;
|
||||
|
||||
# ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
# ssl_prefer_server_ciphers on;
|
||||
|
||||
# location / {
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
# }
|
||||
#}
|
||||
|
||||
}
|
||||
@@ -1090,7 +1090,7 @@ objs/nginx.8: man/nginx.8 objs/ngx_auto_config.h
|
||||
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
|
||||
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
|
||||
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
|
||||
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
|
||||
-e "s|%%ERROR_LOG_PATH%%|/app/hm_log/hm_web_nginx_20240430_165947.log|" \
|
||||
< man/nginx.8 > $@
|
||||
|
||||
install: objs/nginx
|
||||
@@ -1130,4 +1130,4 @@ install: objs/nginx
|
||||
|
||||
test -d '$(DESTDIR)/usr/local/nginx/html' || cp -R html '$(DESTDIR)/usr/local/nginx'
|
||||
|
||||
test -d '$(DESTDIR)/usr/local/nginx/logs' || mkdir -p '$(DESTDIR)/usr/local/nginx/logs'
|
||||
test -d '$(DESTDIR)/app/hm_log' || mkdir -p '$(DESTDIR)/app/hm_log'
|
||||
|
||||
@@ -159,7 +159,7 @@ cc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c
|
||||
----------------------------------------
|
||||
checking for crypt()
|
||||
|
||||
/tmp/ccBjPW1g.o: In function `main':
|
||||
/tmp/ccI0ONuh.o: In function `main':
|
||||
autotest.c:(.text+0xf): undefined reference to `crypt'
|
||||
collect2: error: ld returned 1 exit status
|
||||
----------
|
||||
@@ -273,7 +273,7 @@ checking for statvfs()
|
||||
----------------------------------------
|
||||
checking for dlopen()
|
||||
|
||||
/tmp/ccRfQzDW.o: In function `main':
|
||||
/tmp/ccqZfqrJ.o: In function `main':
|
||||
autotest.c:(.text+0xf): undefined reference to `dlopen'
|
||||
collect2: error: ld returned 1 exit status
|
||||
----------
|
||||
@@ -436,7 +436,7 @@ objs/autotest.c: In function 'main':
|
||||
objs/autotest.c:7:5: warning: implicit declaration of function 'setproctitle' [-Wimplicit-function-declaration]
|
||||
setproctitle("test");;
|
||||
^
|
||||
/tmp/ccjBplGI.o: In function `main':
|
||||
/tmp/ccmOYxie.o: In function `main':
|
||||
autotest.c:(.text+0xf): undefined reference to `setproctitle'
|
||||
collect2: error: ld returned 1 exit status
|
||||
----------
|
||||
@@ -465,7 +465,7 @@ checking for pwrite()
|
||||
----------------------------------------
|
||||
checking for sys_nerr
|
||||
|
||||
/tmp/ccWsrzXf.o: In function `main':
|
||||
/tmp/cccCRQau.o: In function `main':
|
||||
autotest.c:(.text+0x6): warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
|
||||
135
|
||||
----------------------------------------
|
||||
@@ -495,7 +495,7 @@ checking for System V shared memory
|
||||
----------------------------------------
|
||||
checking for POSIX semaphores
|
||||
|
||||
/tmp/cc19ydxX.o: In function `main':
|
||||
/tmp/cc19cGD0.o: In function `main':
|
||||
autotest.c:(.text+0x29): undefined reference to `sem_init'
|
||||
autotest.c:(.text+0x41): undefined reference to `sem_destroy'
|
||||
collect2: error: ld returned 1 exit status
|
||||
|
||||
Binary file not shown.
@@ -166,7 +166,7 @@ Contains the process ID of
|
||||
The contents of this file are not sensitive, so it can be world-readable.
|
||||
.It Pa /usr/local/nginx/conf/nginx.conf
|
||||
The main configuration file.
|
||||
.It Pa /usr/local/nginx/logs/error.log
|
||||
.It Pa /app/hm_log/hm_web_nginx_20240430_165947.log
|
||||
Error log file.
|
||||
.El
|
||||
.Sh EXIT STATUS
|
||||
|
||||
@@ -384,7 +384,7 @@
|
||||
|
||||
|
||||
#ifndef NGX_ERROR_LOG_PATH
|
||||
#define NGX_ERROR_LOG_PATH "logs/error.log"
|
||||
#define NGX_ERROR_LOG_PATH "/app/hm_log/hm_web_nginx_20240430_165947.log"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"cost":7,"type":"SPELL","texture":"CS2_032","id":"CS2_032","text":"Deal $4 damage to all enemy minions.","name":"Flamestrike","rarity":"FREE", "artist":"Zoltan Boros", "set":"CORE", "flavor":"asdf", "playRequirements":{"REQ_TARGET_TO_PLAY":0,"REQ_MINION_TARGET":0}, "collectible":true, "playerClass":"NEUTRAL", "howToEarnGolden":"Unlocked at Level 45.", "howToEarn":"Unlocked at Level 1." }
|
||||
@@ -1,18 +1,21 @@
|
||||
var express = require('express');
|
||||
var express = require("express");
|
||||
|
||||
var app = express();
|
||||
var Sunwell = require('../sunwell');
|
||||
var Sunwell = require("../sunwell");
|
||||
var sunwell = new Sunwell({ bodyFontSize: 35 });
|
||||
|
||||
app.get('/', function(req, res) {
|
||||
app.get("/", function(req, res) {
|
||||
var width = 400;
|
||||
|
||||
var card_name = "";
|
||||
var card_data = "";
|
||||
var fs = require('fs');
|
||||
var fs = require("fs");
|
||||
|
||||
var obj;
|
||||
fs.readFile(process.cwd() + '/examples/carddata', 'utf8', function (err, data) {
|
||||
fs.readFile(
|
||||
process.cwd() + "/examples/carddata",
|
||||
"utf8",
|
||||
function(err, data) {
|
||||
if (err) throw err;
|
||||
obj = JSON.parse(data);
|
||||
|
||||
@@ -21,22 +24,26 @@ app.get('/', function(req, res) {
|
||||
|
||||
res.writeHead(200, {
|
||||
//'Cache-Control': 'max-age=86400',
|
||||
'Content-Type': 'image/png'
|
||||
"Content-Type": "image/png",
|
||||
});
|
||||
|
||||
res.write(buffer);
|
||||
res.end();
|
||||
|
||||
fs.writeFile(process.cwd() + '/../hm_web/static/custom/' + obj['id'] + '.jpg', buffer, function(err) {
|
||||
fs.writeFile(
|
||||
process.cwd() + "/../hm_web/static/custom/" + obj["id"] + ".jpg",
|
||||
buffer,
|
||||
function(err) {
|
||||
if (err) {
|
||||
return console.log(err);
|
||||
}
|
||||
|
||||
console.log("The file " + obj['id'] + " was saved!");
|
||||
|
||||
});
|
||||
});
|
||||
console.log("The file " + obj["id"] + " was saved!");
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
app.use(function(err, req, res, next) {
|
||||
@@ -44,5 +51,5 @@ app.use(function(err, req, res, next) {
|
||||
});
|
||||
|
||||
var listener = app.listen(process.env.PORT || 8081, function() {
|
||||
console.log('Server listening on port', listener.address().port);
|
||||
console.log("Server listening on port", listener.address().port);
|
||||
});
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"description": "Canvas based renderer for Hearthstone cards.",
|
||||
"main": "sunwell.js",
|
||||
"scripts": {
|
||||
"start": "node examples/server",
|
||||
"start": "nodejs examples/server",
|
||||
"test": "istanbul cover ./node_modules/mocha/bin/_mocha",
|
||||
"coveralls": "cat ./coverage/lcov.info | coveralls && rm -rf ./coverage",
|
||||
"postpublish": "git push && git push --tags"
|
||||
|
||||
+4
-5
@@ -457,12 +457,11 @@ class deck:
|
||||
elif(i[0] == '__name'):
|
||||
names.append(i[1])
|
||||
elif(i[0] == '__code'):
|
||||
if(i[1].find("\"enabled") > -1):
|
||||
enabled_pattern = r'enabled:(\d+)'
|
||||
enabled_match = re.search(enabled_pattern, i[1])
|
||||
if(enabled_match):
|
||||
enabled = 1
|
||||
if(i[1].find("\"enabled:2\"") > -1):
|
||||
names.append(2)
|
||||
else:
|
||||
names.append(1)
|
||||
names.append(int(enabled_match.group(1)))
|
||||
if(i[1].find("\"boss\"") > -1):
|
||||
names.append('boss')
|
||||
else:
|
||||
|
||||
@@ -0,0 +1,731 @@
|
||||
#!/bin/sh
|
||||
# Game entity
|
||||
name="Game Entity" card=GAME_ENTITY tags={10:85,20:1,49:1,198:4,202:1,204:2}
|
||||
|
||||
# Mana Card
|
||||
name="Coin" card=GAME_005 tags={49:3,202:5,313:1}
|
||||
|
||||
# Player1
|
||||
name="Player1" card=PLAYER1 tags={7:75,17:1,27:64,28:10,29:4,30:1,31:1,49:1,176:10,202:2,272:1,399:4}
|
||||
|
||||
# Player2
|
||||
name="Player2" card=PLAYER2 tags={7:75,17:1,23:1,24:1,27:66,28:10,29:4,30:2,31:2,49:1,176:10,202:2,272:1,399:3}
|
||||
|
||||
# Power of the Horde
|
||||
name="Kill Roshan" card=PRO_001c tags={183:11,202:5,48:30,330:0,331:0,} custom=1
|
||||
|
||||
# The Sentinel
|
||||
name="The Sentinel" card=TB_SPT_Boss tags={183:18,202:3,47:0,45:30,380:39537,} custom=1
|
||||
|
||||
# The Scourge
|
||||
name="The Scourge " card=LOEA04_01 tags={183:20,45:30,330:0,331:0,380:16231,202:3,} custom=1
|
||||
|
||||
# Enrage
|
||||
name="Tether" card=NAX12_04e tags={183:12,202:6,330:0,331:0,338:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Lantern of Power
|
||||
name="Grow" card=LOEA16_3e tags={183:20,202:6,330:0,331:0,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Lothar's Left Greave
|
||||
name="Arcane Boots" card=LOEA16_9 tags={183:20,202:5,48:0,330:0,331:0,} custom=1
|
||||
|
||||
# Mountain Giant
|
||||
name="Tiny" card=EX1_105 tags={183:3,202:4,201:3,203:5,48:1,47:0,45:1,251:6,321:1,} custom=1 attachment=LOEA16_3e
|
||||
|
||||
# Youthful Brewmaster
|
||||
name="Youthful Brewmaster" card=EX1_049 tags={183:3,202:4,201:2,203:1,48:2,47:3,45:2,251:6,321:1,330:0,331:0,218:1,} custom=1
|
||||
|
||||
# Brann Bronzebeard
|
||||
name="Karroch, the Beastmaster" card=LOE_077 tags={183:20,202:4,203:5,114:1,321:1,48:5,47:2,45:3,330:0,331:0,362:0,} custom=1
|
||||
|
||||
# Abomination
|
||||
name="Pudge, the Butcher" card=EX1_097 tags={183:3,202:4,201:3,203:3,48:5,47:0,45:4,251:6,321:1,330:0,331:0,190:0,217:0,} custom=1
|
||||
|
||||
# Piloted Sky Golem
|
||||
name="Boush, the Tinker" card=GVG_105 tags={183:13,321:1,48:3,202:4,203:4,47:1,45:2,200:17,330:0,331:0,217:1,} custom=1
|
||||
|
||||
# Icehowl
|
||||
[AT_125]
|
||||
|
||||
# Skeleton
|
||||
name="Skeleton" card=NAX4_03H tags={183:12,202:4,48:7,47:6,45:5,} custom=1
|
||||
|
||||
# Skeleton Knight
|
||||
name="The Skeleton King" card=AT_128 tags={183:15,321:1,203:5,202:4,48:7,47:6,45:5,114:1,330:0,331:0,217:1,} custom=1
|
||||
|
||||
# Deathwing
|
||||
name="Deathwing" card=NEW1_030 tags={183:3,203:5,202:4,48:10,47:12,45:12,200:24,114:1,321:1,330:0,331:0,218:1,} custom=1
|
||||
|
||||
# Treant
|
||||
name="Treant" card=EX1_158t tags={183:3,202:4,201:3,199:2,251:1,47:1,45:2,48:1,330:0,331:0,} custom=1
|
||||
|
||||
# Velen's Chosen
|
||||
name="Guardian Greaves" card=GVG_010 tags={183:13,203:1,202:5,48:0,199:6,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Cabalist's Tome
|
||||
name="Arcane Books" card=OG_090 tags={183:21,321:1,203:4,202:5,48:0,199:4,330:0,331:0,} custom=1
|
||||
|
||||
# Seal of Champions
|
||||
name="Black King Bar" card=AT_074 tags={183:15,321:1,203:1,202:5,48:2,199:5,330:0,331:0,} custom=1 attachment=AT_074e2
|
||||
|
||||
# Seal of Champions E
|
||||
name="Magic Immunity" card=AT_074e2 tags={183:15,202:6,199:5,330:0,331:0,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Dagon
|
||||
name="Dagon" card=BRMA11_3 tags={183:14,202:5,48:1,47:1,330:0,331:0,} custom=1
|
||||
|
||||
# Sparring Partner
|
||||
[AT_069]
|
||||
|
||||
# Divine Rapier E
|
||||
name="Divine Rapier" card=FP1_020e tags={183:12,202:6,199:5,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Desolator
|
||||
name="Desolator" card=LOEA06_03 tags={183:20,202:5,48:2,330:0,331:0,} custom=1 attachment=LOEA06_03e
|
||||
|
||||
# Desolator E
|
||||
name="Desolate" card=LOEA06_03e tags={183:20,202:6,330:0,331:0,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Rooted
|
||||
name="Level 2" card=EX1_178ae tags={183:3,202:6,199:2,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Inner Rage
|
||||
name="Satanic" card=EX1_607 tags={183:3,203:5,202:5,48:3,201:3,199:10,321:1,} custom=1 attachment=EX1_607e
|
||||
|
||||
# Angry Chicken
|
||||
name="Courier" card=EX1_009 tags={321:1,183:3,203:3,202:4,48:1,47:2,45:1,330:0,331:0,200:20,212:1,} custom=1
|
||||
|
||||
# Repel
|
||||
[LOEA16_20]
|
||||
|
||||
# Cursed Blade
|
||||
name="Echo Sabre " card=LOE_118 tags={183:20,321:1,203:3,202:7,48:2,47:0,187:3,199:10,330:0,331:0,} custom=1
|
||||
|
||||
# Shadowflame
|
||||
name="Requiem of Souls" card=EX1_303 tags={183:3,202:5,201:3,199:9,203:3,48:4,251:1,268:2,321:1,330:0,331:0,370:1,} custom=1
|
||||
|
||||
# Demonfire E
|
||||
name="Necromastery" card=EX1_596e tags={183:3,203:1,202:6,48:0,201:3,199:9,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Void Crusher
|
||||
name="Eidolon" card=AT_023 tags={183:15,321:1,203:3,202:4,48:2,47:2,45:2,199:9,200:15,330:0,331:0,403:0,} custom=1
|
||||
|
||||
# Forbidden Shaping
|
||||
name="Demonic Conversion" card=OG_101 tags={183:21,321:1,203:4,202:5,48:3,199:6,330:0,331:0,} custom=1
|
||||
|
||||
# Charge E
|
||||
name="Level 1" card=CS2_103e2 tags={183:2,202:6,199:10,330:0,331:0,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Inner Rage E
|
||||
name="Satanic" card=EX1_607e tags={183:3,202:6,199:10,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Inner Fire E
|
||||
name="Level 3" card=CS1_129e tags={183:3,202:6,199:6,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Twisting Nether
|
||||
name="The Black Hole" card=EX1_312 tags={183:3,202:5,201:3,199:9,203:4,48:8,251:1,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Mal Ganis
|
||||
[GVG_021]
|
||||
|
||||
# Lay on Hands
|
||||
name="Purification" card=EX1_354 tags={183:3,202:5,201:3,199:5,203:4,48:8,251:1,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Flame Lance
|
||||
name="Laguna Blade" card=AT_001 tags={183:15,321:1,203:1,202:5,48:8,199:4,47:10,330:0,331:0,} custom=1
|
||||
|
||||
# Dragon's Breath
|
||||
name="Dragon's Breath" card=BRM_003 tags={183:14,321:1,203:1,202:5,48:3,199:4,47:2,330:0,331:0,} custom=1
|
||||
|
||||
# Confessor Paletress
|
||||
name="Lina" card=AT_018 tags={183:15,321:1,203:5,202:4,48:2,47:1,45:14,199:6,114:1,330:0,331:0,200:16,} custom=1 level2=BRM_003 level3=AT_001
|
||||
|
||||
# Lightning Storm
|
||||
name="God's Wrath" card=EX1_259 tags={183:3,202:5,201:3,199:8,203:3,48:6,251:1,47:3,321:1,330:0,331:0,215:1,} custom=1
|
||||
|
||||
# Forked Lightning
|
||||
name="Forked Lightning" card=EX1_251 tags={183:3,202:5,201:3,199:8,203:1,48:2,251:1,47:1,321:1,330:0,331:0,215:1,} custom=1
|
||||
|
||||
# Archmage Antonidas
|
||||
name="Zeus" card=EX1_559 tags={183:3,203:5,202:4,48:3,47:1,45:15,201:3,251:3,199:4,114:1,321:1,330:0,331:0,32:1,} custom=1 level2=EX1_251 level3=EX1_259
|
||||
|
||||
# Commanding Shout
|
||||
name="Warcry" card=NEW1_036 tags={183:3,203:3,202:5,48:1,199:10,321:1,330:0,331:0,} custom=1 attachment=NEW1_036e
|
||||
|
||||
# Commanding Shout
|
||||
name="Sven: Warcry" card=NEW1_036e tags={183:3,202:6,199:10,330:0,331:0,338:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Druid of the Claw
|
||||
name="Ursa" card=EX1_165t2 tags={183:3,203:5,202:4,48:4,47:3,45:21,199:2,330:0,331:0,200:20,190:0,} custom=1 level2=CS2_012 level3=CS2_011
|
||||
|
||||
# Open Wounds
|
||||
name="Wounded" card=AT_039e tags={183:15,202:6,199:2,330:0,331:0,338:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Divine Strength
|
||||
name="God's Strength" card=OG_223 tags={183:21,321:1,203:1,202:5,48:3,199:5,} custom=1 attachment=OG_223e
|
||||
|
||||
# Optimism
|
||||
name="Sven: God's Strength" card=OG_223e tags={183:21,202:6,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Tirion Fordring
|
||||
name="Sven" card=EX1_383 tags={183:3,203:5,202:4,48:3,47:3,45:16,201:3,199:5,251:1,114:1,321:1,330:0,331:0,194:0,190:0,217:0,} custom=1 level2=NEW1_036 level3=OG_223
|
||||
|
||||
# Windfury
|
||||
[CS2_039]
|
||||
|
||||
# Corruption
|
||||
name="Corruption" card=CS2_063 tags={183:2,202:5,201:3,199:9,203:1,48:1,251:1,321:1,330:0,331:0,} custom=1 attachment=CS2_063e
|
||||
# Corruption E
|
||||
name="Corruption" card=CS2_063e tags={183:2,202:6,199:9,330:2,331:2,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Hunter's Mark
|
||||
[CS2_084] attachment=CS2_084e
|
||||
# Hunter's Mark E
|
||||
name="Hunter's Mark E" card=CS2_084e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Assasinate
|
||||
name="Assassinate" card=CS2_076 tags={183:2,202:5,201:3,199:7,203:2,48:5,251:6,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Shadow Word: Death
|
||||
[EX1_622]
|
||||
|
||||
# Shadow Word: Pain
|
||||
name="Shadow Word: Pain" card=CS2_234 tags={321:1,183:2,203:2,202:5,48:2,199:6,330:0,331:0,} custom=1
|
||||
|
||||
# Execute
|
||||
name="Culling Blade" card=CS2_108 tags={183:2,202:5,201:3,199:10,203:2,48:3,251:1,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Illidan
|
||||
name="Terrorblade" card=EX1_614 tags={183:3,203:5,202:4,48:6,45:1,47:5,201:3,251:6,114:1,321:1,330:0,331:0,200:15,32:1,} custom=1
|
||||
|
||||
# Hand of Protection
|
||||
name="Guardian Angel" card=EX1_371 tags={183:2,203:2,202:5,48:2,199:5,201:3,251:1,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Polymorph
|
||||
[CS2_022] attachment=CS2_022e
|
||||
name="Polymorph E" card=CS2_022e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Hex
|
||||
[EX1_246] attachment=EX1_246e
|
||||
# Hex E
|
||||
name="Hex E" card="EX1_246e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Blessing of Kings
|
||||
[CS2_092] attachment=CS2_092e
|
||||
# Blessing of Kings E
|
||||
name="Blessing of Kings E" card="CS2_092e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Blessing of Might
|
||||
[CS2_087] attachment=CS2_087e
|
||||
# Blessing of Might E
|
||||
name="Blessing of Might E" card="CS2_087e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Power Word: Shield
|
||||
[CS2_004] attachment=CS2_004e
|
||||
# Power Word: Shield E
|
||||
name="Power Word: Shield E" card="CS2_004e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Charge
|
||||
[CS2_103] attachment=CS2_103e2
|
||||
# Charge E
|
||||
#name="Charge E" card="CS2_103e2" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Mark of the Wild
|
||||
[CS2_009] attachment=CS2_009e
|
||||
# Mark of the Wild E
|
||||
name="Mark of the Wild E" card="CS2_009e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Ancestral Healing
|
||||
[CS2_041] attachment=CS2_041e
|
||||
# Ancestral Infusion
|
||||
name="Ancestral Infusion" card="CS2_041e" tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Rockbiter Weapon
|
||||
[CS2_045] attachment=CS2_045e
|
||||
# Rockbiter Weapon E
|
||||
name="Rockbiter Weapon E" card=CS2_045e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Divine spirit
|
||||
[CS2_236]
|
||||
|
||||
# Bloodlust
|
||||
[CS2_046] attachment=CS2_046e
|
||||
# Bloodlust E
|
||||
name="Bloodlust E" card=CS2_046e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Claw
|
||||
[CS2_005] attachment=CS2_005o
|
||||
# Claw E
|
||||
name="Claw E" card=CS2_005o tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Heroic Strike
|
||||
[CS2_105] attachment=CS2_105e
|
||||
# Heroic Strike E
|
||||
name="Heroic Strike E" card=CS2_105e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Savage Roar
|
||||
name="Enrage" card=CS2_011 tags={183:2,202:5,201:3,199:2,203:1,48:3,251:1,321:1,330:0,331:0,} custom=1 attachment=CS2_011o
|
||||
# Savage Roar E
|
||||
name="Enraged" card=CS2_011o tags={183:2,202:6,199:2,330:1,331:1,338:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Warrior
|
||||
name="Warrior" card=HERO_01 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Shamman
|
||||
name="Shamman" card=HERO_02 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Rogue
|
||||
#name="Rogue" card=TB_SPT_Boss tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Paladin
|
||||
name="Paladin" card=HERO_04 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Hunter
|
||||
name="Hunter" card=HERO_05 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Druid
|
||||
name="Druid" card=HERO_06 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Warlock
|
||||
name="Warlock" card=HERO_07 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Mage
|
||||
name="Mage" card=HERO_08 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Priest
|
||||
#name="Priest" card=LOEA04_01 tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# King of Khaz Modan
|
||||
name="King of Khaz Modan" card=HERO_01a tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Blood Knight Matriarch
|
||||
name="Blood Knight Matriarch" card=HERO_04a tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Alleria Windranger
|
||||
name="Alleria Windranger" card=HERO_05a tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Guardian Medivh
|
||||
name="Guardian Medivh" card=HERO_08a tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
# Khadgar
|
||||
name="Khadgar" card=HERO_08b tags={12:1,45:30,49:1,201:3,202:3,203:2} flags=(CARD_HERO)
|
||||
|
||||
# Ice lance
|
||||
#CS2_031 tags={12:1,47:0,48:1,49:3,201:3,202:5,203:2,264:1} flags=(CARD_SPELL|CARD_SPELL_DAMAGE|CARD_TARGETING|CARD_FREEZE|CARD_TARGET_FROZEN_4_DMG)
|
||||
|
||||
# Holy Smite
|
||||
[CS1_130]
|
||||
|
||||
# Fireball
|
||||
[CS2_029]
|
||||
|
||||
# Swipe
|
||||
name="Swipes" card=CS2_012 tags={183:2,202:5,201:3,199:2,203:1,48:2,251:1,47:2,321:1,330:0,331:0,} custom=1 attachment=AT_039e
|
||||
|
||||
# Hammer of Wrath
|
||||
[CS2_094]
|
||||
|
||||
# Backstab
|
||||
name="Backstab" card=CS2_072 tags={183:2,202:5,201:3,199:7,203:2,251:6,48:0,47:2,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Drain Life
|
||||
[CS2_061]
|
||||
|
||||
# Sacrificial Pact
|
||||
[NEW1_003]
|
||||
|
||||
# Arcane Shot
|
||||
name="Arcane Shot" card=DS1_185 tags={183:2,202:5,201:3,199:3,203:2,48:1,251:8,47:2,321:1,} custom=1
|
||||
|
||||
# Soulfire
|
||||
[EX1_308]
|
||||
|
||||
# Mortal Coil
|
||||
[EX1_302]
|
||||
|
||||
# Shield Block
|
||||
[EX1_606]
|
||||
|
||||
# Shiv
|
||||
[EX1_278]
|
||||
|
||||
# Starfire
|
||||
[EX1_173]
|
||||
|
||||
# Moonfire
|
||||
[CS2_008]
|
||||
|
||||
# Kill Command
|
||||
[EX1_539]
|
||||
|
||||
# Frostbolt
|
||||
name="Frostbolt" card=CS2_024 tags={183:2,202:5,201:3,199:4,203:1,48:2,251:1,47:3,268:2,321:1,208:1,} custom=1
|
||||
|
||||
# Frost Shock
|
||||
[CS2_037]
|
||||
|
||||
# Shadow Bolt
|
||||
[CS2_057]
|
||||
|
||||
# Feral Rage - choose one
|
||||
#OG_047 tags={12:1,48:2,49:3,201:3,202:5,203:2,264:1} flags=(CARD_SPELL|CARD_SPELL_DAMAGE|CARD_NONTARGET)
|
||||
|
||||
# Arcane intellect
|
||||
name="Arcane Intellect" card=CS2_023 tags={183:2,202:5,201:3,199:4,203:2,48:3,251:1,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Sprint
|
||||
name="Sprint" card=CS2_077 tags={183:2,202:5,201:3,199:7,203:1,48:7,251:1,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Arcane Explosion
|
||||
[CS2_025]
|
||||
|
||||
# Arcane Missiles
|
||||
[EX1_277]
|
||||
|
||||
# Tracking
|
||||
[DS1_184]
|
||||
|
||||
# Sinister Strike
|
||||
[CS2_075]
|
||||
|
||||
# Mind Blast
|
||||
[DS1_233]
|
||||
|
||||
# Frost Nova
|
||||
name="Shiva's Guard" card=CS2_026 tags={183:2,202:5,201:3,199:4,203:1,48:2,251:1,47:1,268:2,321:1,330:0,331:0,208:1,} custom=1
|
||||
|
||||
# Fan of Knives
|
||||
[EX1_129]
|
||||
|
||||
# Cleave
|
||||
[CS2_114]
|
||||
|
||||
# Multishot
|
||||
[DS1_183]
|
||||
|
||||
# Mind Vision
|
||||
[CS2_003]
|
||||
|
||||
# Flamestrike
|
||||
[CS2_032]
|
||||
|
||||
# Whirlwind
|
||||
name="Counter Helix" card=EX1_400 tags={183:2,202:5,201:3,199:10,203:1,48:0,251:1,47:1,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Consecration
|
||||
[CS2_093]
|
||||
|
||||
# Holy Nova
|
||||
name="Mekansm" card=CS1_112 tags={183:2,202:5,201:3,199:6,203:1,48:4,251:5,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Hellfire
|
||||
[CS2_062]
|
||||
|
||||
# Water Elemental
|
||||
[CS2_033]
|
||||
|
||||
################
|
||||
# Aura
|
||||
###############
|
||||
|
||||
# Raid leader
|
||||
[CS2_122] attachment=CS2_122e
|
||||
# Enhanced
|
||||
name="Enhanced" card=CS2_122e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Stormwind champion
|
||||
name="Stormwind Champion" card=CS2_222 tags={183:2,202:4,201:2,203:1,48:7,47:6,45:6,251:1,321:1,330:0,331:0,362:1,} custom=1 attachment=CS2_222o
|
||||
# Might of Stormwind
|
||||
name="Might of Stormwind" card=CS2_222o tags={183:2,202:6,330:1,331:0,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Warsong Commander
|
||||
[EX1_084] attachment=EX1_084e
|
||||
# Charge
|
||||
name="Charge" card=EX1_084e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Timber Wolf
|
||||
[DS1_175] attachment=DS1_175o
|
||||
# Furious Howl
|
||||
name="Furious Howl" card=DS1_175o tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Gurubashi Berserker
|
||||
[EX1_399] attachment=EX1_399e
|
||||
# Berserking
|
||||
name="Berserking" card=EX1_399e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
|
||||
################
|
||||
# Battlecry
|
||||
###############
|
||||
|
||||
# Dread Infernal
|
||||
[CS2_064]
|
||||
|
||||
# Novice engineer
|
||||
[EX1_015]
|
||||
|
||||
# Gnomish Inventor
|
||||
[CS2_147]
|
||||
|
||||
# Darkscale Healer
|
||||
[DS1_055]
|
||||
|
||||
# Guardian of Kings
|
||||
name="Omniknight" card=CS2_088 tags={183:2,202:4,201:3,199:5,203:1,48:2,251:5,45:17,47:1,321:1,218:1,} custom=1
|
||||
|
||||
# Nightblade
|
||||
name="Phantom Assassin" card=EX1_593 tags={183:2,203:2,202:4,48:4,45:2,47:4,201:3,321:1,218:1,} custom=1
|
||||
|
||||
# Acidic Swamp Ooze
|
||||
[EX1_066]
|
||||
|
||||
# Voodoo doctor
|
||||
name="Witch Doctor" card=EX1_011 tags={183:2,202:4,201:1,203:2,48:1,47:2,45:1,251:6,321:1,218:1,} custom=1
|
||||
|
||||
# Elven Archer
|
||||
[CS2_189]
|
||||
|
||||
# Fire Elemental
|
||||
[CS2_042]
|
||||
|
||||
# Ironforge Rifleman
|
||||
[CS2_141]
|
||||
|
||||
# Stormpike Commando
|
||||
[CS2_150]
|
||||
|
||||
# Frostwolf Warlord
|
||||
name="Legion Commander" card=CS2_226 tags={183:2,202:4,201:1,203:4,48:5,47:4,45:4,251:1,321:1,330:0,331:0,218:1,} custom=1 attachment=CS2_226e
|
||||
# Frostwolf Banner
|
||||
name="Frostwolf Banner" card=CS2_226e tags={183:2,202:6,330:1,331:1,} custom=1 flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Succubus
|
||||
name="Queen of Pain" card=EX1_306 tags={183:2,202:4,201:3,199:9,200:15,203:2,48:3,47:3,45:5,251:1,268:2,321:1,218:1,} custom=1
|
||||
|
||||
# Sap
|
||||
name="Sap" card=EX1_581 tags={183:2,203:2,202:5,48:2,201:3,199:7,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Mind Control
|
||||
[CS1_113] attachment=CS1_113e
|
||||
# Mind Control E
|
||||
name="Mind Control E" card=CS1_113e tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
# Vanish
|
||||
[NEW1_004]
|
||||
|
||||
################
|
||||
# Spell damage
|
||||
###############
|
||||
|
||||
# Archmage
|
||||
[CS2_155]
|
||||
|
||||
# Dalaran mage
|
||||
[EX1_582]
|
||||
|
||||
# Kobold geomancer
|
||||
[CS2_142]
|
||||
|
||||
# Ogre magi
|
||||
[CS2_197]
|
||||
|
||||
################
|
||||
# Charge
|
||||
###############
|
||||
|
||||
# Wolfirder
|
||||
[CS2_124]
|
||||
|
||||
# Bluegill warrior
|
||||
[CS2_173]
|
||||
|
||||
# Kor'kron elite
|
||||
name="Mogul Khan, Axe" card=NEW1_011 tags={183:2,203:5,202:4,321:1,330:0,331:0,48:3,47:2,45:20,199:10,197:0,} custom=1 level3=CS2_108
|
||||
|
||||
# Stormwind knight
|
||||
[CS2_131]
|
||||
|
||||
# Reckless rocketeer
|
||||
[CS2_213]
|
||||
|
||||
# Stonetusk boar
|
||||
name="Stonetusk Boar" card=CS2_171 tags={183:2,202:4,201:3,200:20,203:2,48:1,47:1,45:1,251:6,268:2,321:1,197:0,} custom=1
|
||||
|
||||
# Huffer
|
||||
[NEW1_034] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
################
|
||||
# Divine shield
|
||||
###############
|
||||
|
||||
# Scarlet Crusader
|
||||
[EX1_020]
|
||||
|
||||
################
|
||||
# Taunt
|
||||
###############
|
||||
|
||||
# Lord of the Arena
|
||||
[CS2_162]
|
||||
|
||||
# Booty bay bodyguard
|
||||
[CS2_187]
|
||||
|
||||
# Frostwolf Grunt
|
||||
[CS2_121]
|
||||
|
||||
# Goldshire footman
|
||||
[CS1_042]
|
||||
|
||||
# Ironbark protector
|
||||
[CS2_232]
|
||||
|
||||
# Sen'jin Shieldmasta
|
||||
[CS2_179]
|
||||
|
||||
# Voidwalker
|
||||
name="Enigma" card=CS2_065 tags={183:2,202:4,201:3,199:9,200:15,203:5,48:2,45:15,251:9,47:1,268:2,321:1,190:0,} custom=1 level2=OG_101 level3=EX1_312
|
||||
|
||||
# Misha
|
||||
[NEW1_032] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Frog
|
||||
[hexfrog] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
################
|
||||
# Totem
|
||||
###############
|
||||
|
||||
# Wrath of Air Totem
|
||||
[CS2_052] flags=(CARD_UNCOLLECTIBLE|CARD_TOTEMIC_CALL_CHILD)
|
||||
# Stoneclaw Totem
|
||||
[CS2_051] flags=(CARD_UNCOLLECTIBLE|CARD_TOTEMIC_CALL_CHILD)
|
||||
# Searing Totem
|
||||
[CS2_050] flags=(CARD_UNCOLLECTIBLE|CARD_TOTEMIC_CALL_CHILD)
|
||||
# Healing Totem
|
||||
[NEW1_009] flags=(CARD_UNCOLLECTIBLE|CARD_TOTEMIC_CALL_CHILD)
|
||||
# Flametongue Totem
|
||||
[EX1_565] attachment=EX1_565o
|
||||
# Flametongue
|
||||
name="Flametongue" card=EX1_565o tags={12:1,49:6,202:6} flags=(CARD_ATTACHMENT)
|
||||
|
||||
################
|
||||
# Summon
|
||||
###############
|
||||
|
||||
# Mirror Image
|
||||
[CS2_027]
|
||||
# Mirror Image
|
||||
[CS2_mirror]
|
||||
|
||||
# Animal Companion
|
||||
[NEW1_031]
|
||||
|
||||
# Dragonling Mechanic
|
||||
[EX1_025]
|
||||
# Mechanical Dragonling
|
||||
[EX1_025t] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Murloc Tidehunter
|
||||
[EX1_506]
|
||||
# Murloc Scout
|
||||
name="Murloc Scout" card=EX1_506a tags={183:2,202:4,201:3,200:14,203:1,47:1,45:1,251:1,48:0,} custom=1 flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Razorfen Hunter
|
||||
[CS2_196]
|
||||
|
||||
# Leokk
|
||||
[NEW1_033] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Starving Buzzard
|
||||
name="Vulture" card=CS2_237 tags={321:1,183:2,203:1,202:4,48:1,47:1,45:1,199:3,200:20,330:0,331:0,32:1,} custom=1
|
||||
|
||||
# Sheep
|
||||
[CS2_tk1] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Avator of the Coin
|
||||
[GAME_002] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Boar
|
||||
name="Boar" card=CS2_boar tags={183:2,202:4,201:3,203:1,47:1,45:1,251:1,48:1,200:20,330:0,331:0,} custom=1 flags=(CARD_UNCOLLECTIBLE)
|
||||
# Oasis Snapjaw
|
||||
name="Oasis Snapjaw" card=CS2_119 tags={321:1,183:2,203:2,202:4,48:4,47:2,45:7,200:20,} custom=1
|
||||
# Bloodfen Raptor
|
||||
name="Bloodfen Raptor" card=CS2_172 tags={183:2,203:2,202:4,48:2,45:2,47:3,201:1,251:1,268:2,321:1,200:20,} custom=1
|
||||
# Magma Rager
|
||||
name="Shadow Fiend" card=CS2_118 tags={321:1,183:2,203:5,202:4,48:2,47:1,45:14,330:0,331:0,} custom=1 level3=EX1_303
|
||||
|
||||
# Puddlestomper
|
||||
#GVG_064 tags={12:1,45:2,47:3,48:2,49:3,202:4,203:2} flags=(CARD_MINION)
|
||||
# Wisp
|
||||
name="Wisp" card=CS2_231 tags={183:3,203:1,202:4,48:2,45:2,47:0,201:3,251:7,} custom=1 attachment=NAX12_04e
|
||||
|
||||
# Core Hound
|
||||
name="Core Hound" card=CS2_201 tags={321:1,183:2,203:1,202:4,48:7,47:9,45:5,200:20,} custom=1
|
||||
|
||||
# Murloc Raider
|
||||
name="Murloc Raider" card=CS2_168 tags={183:2,202:4,201:2,203:2,48:1,47:2,45:1,251:1,321:1,200:14,} custom=1
|
||||
|
||||
# River Crocolisk
|
||||
name="River Crocolisk" card=CS2_120 tags={321:1,183:2,203:2,202:4,48:2,47:2,45:3,200:20,} custom=1
|
||||
|
||||
# Boulderfist Ogre
|
||||
name="Boulderfist Ogre" card=CS2_200 tags={321:1,183:2,203:2,202:4,48:6,47:6,45:7,} custom=1
|
||||
|
||||
# Chillwind Yeti
|
||||
name="Chillwind Yeti" card=CS2_182 tags={183:2,202:4,201:3,203:1,48:4,47:4,45:5,251:6,268:2,321:1,330:0,331:0,} custom=1
|
||||
|
||||
# Fireblast
|
||||
name="Fireblast" card=CS2_034 tags={12:1,47:1,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_TARGETING|CARD_SPELL|CARD_HP_SPELL_DAMAGE)
|
||||
|
||||
# Lesser Heal
|
||||
# name="Lesser Heal" card=CS1h_001 tags={12:1,47:2,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_TARGETING|CARD_SPELL|CARD_SPELL_HEAL)
|
||||
|
||||
# Lesser Heal
|
||||
name="Lesser Heal" card=CS1h_001 tags={183:2,202:10,201:3,199:6,203:2,48:2,251:1,} custom=1
|
||||
|
||||
# Healing Touch
|
||||
[CS2_007]
|
||||
|
||||
# Holy Light
|
||||
[CS2_089]
|
||||
|
||||
# Reinforce
|
||||
name="Reinforce" card=CS2_101 tags={12:1,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_HP_REINFORCE|CARD_SUMMON)
|
||||
# Silverhand Recruit
|
||||
[CS2_101t] flags=(CARD_MINION|CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Dagger Mastery
|
||||
name="Dagger Mastery" card=CS2_083b tags={12:1,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_HP_DAGGERMASTERY|CARD_SUMMON)
|
||||
|
||||
################
|
||||
# Weapon
|
||||
###############
|
||||
|
||||
# Wicked Knife
|
||||
[CS2_082] flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# Assassin's Blade
|
||||
[CS2_080]
|
||||
|
||||
# Truesilver Champion
|
||||
name="Divine Rapier" card=CS2_097 tags={183:2,202:7,201:3,199:5,203:1,48:5,47:8,187:1,251:6,321:1,330:0,331:0,32:1,} custom=1
|
||||
|
||||
# Fiery War Axe
|
||||
[CS2_106]
|
||||
|
||||
# Light's Justice
|
||||
[CS2_091]
|
||||
|
||||
# Arcanite reaper
|
||||
[CS2_112]
|
||||
|
||||
##############
|
||||
|
||||
# Totemic Call
|
||||
[CS2_049] tags={12:1,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_SUMMON|CARD_HP_TOTEMIC_CALL)
|
||||
|
||||
# Shapeshift
|
||||
[CS2_017] tags={12:1,47:1,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_HP_SHAPESHIFT|CARD_SUMMON)
|
||||
|
||||
# Armor Up
|
||||
[CS2_102] tags={12:1,47:2,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_HP_ARMORUP|CARD_SUMMON)
|
||||
|
||||
# Life Tap
|
||||
[CS2_056] tags={12:1,47:2,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_SPELL|CARD_NONTARGET|CARD_HP_LIFETAP|CARD_SUMMON)
|
||||
|
||||
# Steady Shot
|
||||
[DS1h_292] tags={12:1,47:2,48:2,49:1,201:3,202:10,203:2} flags=(CARD_HEROPOWER|CARD_TARGETING|CARD_SPELL|CARD_HP_SPELL_DAMAGE|CARD_TARGET_HERO)
|
||||
|
||||
# Empty mana card
|
||||
name="Empty card" card=MANA_CARD tags={12:1,49:3,263:5} flags=(CARD_UNCOLLECTIBLE)
|
||||
|
||||
# No card
|
||||
name="No Card" card=NO_CARD tags={49:2} flags=(CARD_UNCOLLECTIBLE)
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjE0NS45NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwMDFiMTIzZDQyYmVmYmMzMWQ5M2VlNDQ1ZmQ2ZmYzZWU4MzRlNTdiJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE5MS4xMjYuMjEzCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzAxMDBlZDY4NDhjZjg1ZmEyNmQ5MzE4YmQ5MWY5NjdjZjdhMGU1NjUnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODMuMTQ3LjUyLjM3CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzAxMTcwZjU5MmU5NjY3NTQ2NmFjNGI3YzgxMjQwZGVlZTI2MTEzMWQnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTk3LjIzMS4xOTYuNDAKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMDNmZWJiYjI3NjlhYTFjYmRlN2UyYjMyYjNkOTI3NWZiMzc3ODRiOCcKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjEzOC42MwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwNDY5ZGExNmM3NzRjMzA0NzhhNWZiZDE3ZDJlZDA5NGYyMTgzNTU2JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjEzOC42MwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwNDk5ZTA5NDM0MWVhMTdmZDdhYTg1OWU3ZGU5NWE3M2RkZTZiYTNjJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODMuMTQ3LjUyLjQyCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzA1YzA1YTQxMTIxMGYzMmJhMmIyYmMxODZlZmE2ZjkzM2JmMWUzNTInCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY4Ljc2LjIwLjIyOQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwNjc2YTFkYTc4NGRhMjZlZTQyNGQ2MGQxMzAyOWY2YzNiNzRlMjIzJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE5MS4xMjYuMjEzCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzA2YTkzZWMyNmExNDMyMGIyYzQ2NmVjNzAxZTFhMmYwOTM5ZDg1NzUnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE5MS4xMjYuMjEzCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzA3NTFlNzdjNjIxMjhjOGE3MjIyYjAzMjU1M2RhMzY3YjI5MGRjYjUnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMzYuMTE1LjIyMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwNzY1M2Y3ZGVhODBkMmQxYzFhNTliY2FiMWMyMjVkN2MzM2MyNGY1JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTI4LjIzMi4yMjkKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMDdlMDU4NmYxM2RkMDE4NzQ2MGRjM2NhODZhZThjMjM3ZDdiMzJlOCcKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODEuMTY5LjIzNC4xMTYKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMDlkZDdiZjMyOTVhYTJmYjk4NDdjZjczMzA0YjNhZjJmMjBjZDZkMicKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMzYuMTE1LjIyMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwYmU3MjQ2NTZhZTM2ZGZiMDAwNzJkMmY0NDVlNDRjNGMzODFjODFlJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjE0NS45NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwYmVkOWZkMzhjZThhNjc2OTY0OTEwNzAyOTM5OGRkMmQzNDRlNjUxJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNzguMTUzLjE0MC4zNwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycwYzVhMWU1ZDUzYzU2YmYyYTZmMDA2YThkZTEwYzQ4YWU4MWNkYjM0JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTU2LjEyOS43CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzBkNjhkNWM0OGEyMzNkMGIwYjY4Y2RiYTA5ZDU0ZDc0MThhN2ExYzMnCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTU2LjEyOS43CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzBlYzc0NjA0YTAwYmYyNDE1ZDg1NWQ4YmU2NzRjNTljOGRkZWM0NjgnCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTguMTcwLjk3Ljg5CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzBmNTBlYTVjN2M4ZGQxODQ2ZGM5MjM0OGI0ZmEzNTQ5NDhkNTA2YmQnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjEzOC42MwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycxMWVhNGEwYjY1YmNhNjJlOGFiY2Y3ODBiYzUwODViOTFiY2IzNWIzJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODMuMTQ3LjUyLjM3CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzEyMGE4MGU3ZGFmZGVkYzBkM2U4ODU0MzMwNDhmZjhiNTY4Y2U3NmMnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjE0NS45NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycxNGIzMzEyNzYxN2JhNTA5ZDdkM2FhMGYxNWRlMTBkNjI0NzFmNjYxJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTQzLjExMC4yMjIuMTY2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzE0ZDZhZTg1NjY3ODFiOTI0YzBkMmIyMTg1NjUwMzUzYjM3ZTdkZTYnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTU2LjEyOS43CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzE0ZTE2YzU3NGIyOWYwNjQ4MTYxMTJlNWI3ZGJkYzI0M2YyMzNkNzAnCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODQuNTQuNTEuMzcKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Npb25f
|
||||
aWQnCnA1ClMnMTUzZjYyY2Y4NWExZDhkZTIwNjAzYTA1MWVhNWQxODg0ZmUxOGY4MicKcDYKcy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNzguMTUzLjE0MC4zMApwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycxNjRlYmQ1ZTM0ZTY4NjY3ZWY3Zjk2NjFlMmI1OWI2NmFmODc2Y2FjJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE5MS4xMjYuMjEzCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzE2NmNjM2M0MzdhYTBlNmNmZDU2NDFlNzNiNWQ0M2JlYzVhNzg1MmQnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMjQ0LjU3Ljk2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzE2ZGI2NWMzZTdmMGE4NGM2MzFjNjljZTQ4Y2UyZTI4ZDVmNDI5NWInCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODQuNTQuNTEuMzcKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Npb25f
|
||||
aWQnCnA1ClMnMThkZGU1M2I3YmIyYWFiMGI2NTFiYzRkZTgzNmM0ZWUxNDVlOTJjYycKcDYKcy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTgzLjgxLjE2OS4xMzkKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMThmYmQ0NDQyMDE3ZTU3N2VkZDU5ZTE2NTVjYWQyZmY3YWIxZGJjZScKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMzYuMTE1LjIyMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycxOWI1YTgxM2EzMzE5MGMyMjJjMWU0YzUwNjExOWQ1Y2FhMjMxZTExJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMzUuODguNDguMTQxCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzFkMDE1NTllZDJiN2Q4MzJiZmU1MWM1NmRhNGY3MTEyNjJkNDQzYzYnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTcuMTI5LjIzLjE2NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycxZGI3MTEzMjNkMmMzMjM2Njc1NmU4YTVmZjY2ZjRjOTI3ZTQyNWUzJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTQzLjExMC4yMjIuMTY2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzFlZjhhNjRiZWZkNDllOTFjOWIwZGY0ODZiNDc5YmI3ZWJmNjlhNzgnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjE0NS45NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyMWQ0NThjNTVmMTAwNDFiYjliYjZjODlhZmMzZjBiN2VmZDg0N2U2JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTQzLjExMC4yMjIuMTY2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzIyNDU2N2FkZDRlOGE0YTQ2OGUzMmYyODEzYmM2N2FhYmNjMTljYzMnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY4Ljc2LjIwLjIyOQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyMjhmNmQ0M2FjMWY5MmNiNmJhNTgwN2NmNjU3MWMyZTA3YjhlZWNiJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTQzLjExMC4yMjIuMTY2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzIzMzA1YjY1OWZiZjQ5MTk4NTYwMDc5ZTE4MjAyMjE5MWQ3OGVkMzInCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTguMTcwLjk3Ljg5CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzI0NDdmYzk1MjcxNjlhNDJjOWJlYThmN2Y0NjYxMTA0NmMyNjg4MjEnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTc5LjQzLjE4OC4xMDYKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMjY0YTExODlmODA1MmNmYjZhOGY3MmUzYTA0YmRhOTE5ZWZmODk3YicKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjE0NS45NgpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyN2Y3N2M2ZTExZTUxNzhhOGQ4ODFiYzU0ZjllMmE5Zjg3ZWM4Mzg0JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDMuMTYzLjguMTQ4CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzI4NjRmYmEwZmQwN2EwZDQyMGIzMTM2OGQwOGIxMWYxM2M4MDIwYTUnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE5MS4xMjYuMjEzCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzI4NzMzY2Q0ZGM5MWQ3NWVkYzRkM2E4NWE1NDZmYThkNzI5YTgwNGMnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTU2LjEyOS43CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzJhNTk5ZTYyNjc1ZWRmNWE0Zjc0MTY0YWY4NmY3N2Q3ZmY4MjkzMjUnCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDUuMTU2LjEyOS43CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzJiNzA3NjdiOGZhNTEyMDY4MTY0NmRiNmEwZTc5YjllYmEzNjhhNmMnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTg1LjE4MC4xNDMuOApwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyYmMxZDI5NjlhOTUyOGY3YmYzMDAyNmE1ODAyNDBmODUzYmE3YTA3JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjEzOC42MwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyZTRlN2U4OGI5NTQ0MjlmZDNhNTE5N2YyZTlhYWVlMWM5NDMwZGMxJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNzguMTUzLjE0MC4zNwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUycyZTg1NTFiZGEyNDE5NTA0MWQ3YTk2NTZhNjk3OTlhMGUzM2I4ZmFmJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMzYuMTE1LjIyMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUyczMDJkMmIxMGI2OTNkZmFiODdmODRkYmE1YTQxYmU4MDQ2MzJiYjYzJwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTgzLjgxLjE2OS4xMzkKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnMzE5M2ZiOGRlNjFjOTY0ZDFhNWZlMzU3NTkzZmZhZjI0NTExNDc3OCcKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDMuMTYzLjguMTQ4CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzM0YzE2YjFkOWI1NDg4NTY3MDA4N2VlN2JjYzdhYjk2NzI3NDg4YmEnCnA2CnMu
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTguMTcwLjk3Ljg5CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzM1OGM2NmM0MWRjM2Y5NWY4MjdkNTIzMDllNmJiMzcwNmNkNTA5ZWYnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNzguMTUzLjE0MC4zMApwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUyczNjdhMWVmZmRhNmQ1YzEzMmIxYzM0Y2JmOWJiZjYxZGRlODk4MzE4JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNjUuNDkuMS41MApwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lvbl9p
|
||||
ZCcKcDUKUyczN2MxZjU4MzE0ZjE5NzFlNmEwYTRjNDc4M2U1M2U2MDRlODZmZmFjJwpwNgpzLg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNjUuNDkuMS4zOApwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lvbl9p
|
||||
ZCcKcDUKUyczOGYyNDU4ZDdhZGJjZDZlYzZmMTFmNGNmNDQ2NTlhYmZlYTlkODg3JwpwNgpzLg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTguMTcwLjk3Ljg5CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzM5OWE2MTQyZDU3NGNlN2Y5NWE0ODhkMjM2NjA1NTc0ZmQ3NmI4MjEnCnA2CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTQzLjExMC4yMjIuMTY2CnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzM5YzQxNWM5ZjU2MjgwNDY0ODdhMDVlZWJjN2JhN2Q1NWY1MzUyYTInCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTY3Ljk0LjEzOC42MwpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUyczYTllNmE3N2QzYzk1YjljMzlkYWRlNDczOGI1MTA0NmIyYjFjYzM5JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDMuMTMxLjI0OS4xNTMKcDMKc1MnbG9naW4nCnA0CkkwCnNTJ3Nlc3Np
|
||||
b25faWQnCnA1ClMnM2FkOTNlODI0OTY3ZTExMGZlZGVkYmE0YThjNmUxNTU0MjdlZDAxZCcKcDYK
|
||||
cy4=
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWMTgwLjIxNC4yMzkuMTIxCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNz
|
||||
aW9uX2lkJwpwNQpTJzNkYmIzOWU3MmFmOTZmY2MyZWQ3MTFiNzYxZTg3ODkwZmM1ZjFlNWMnCnA2
|
||||
CnMu
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNTQuMzYuMTE1LjIyMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUyc0MGMzMTA4NTUyNTU4NGY0OTVmNWI4NTkxNWFjM2IwZTAwMDg3NjE3JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,3 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWNDMuMTM0Ljg5LjExMQpwMwpzUydsb2dpbicKcDQKSTAKc1Mnc2Vzc2lv
|
||||
bl9pZCcKcDUKUyc0MzI4MTE0ZDU3NGE1NmI0Njk2ZmI4MDBiYTIyMDdmMWJhNDc4ODY0JwpwNgpz
|
||||
Lg==
|
||||
@@ -0,0 +1,2 @@
|
||||
KGRwMQpTJ2lwJwpwMgpWODMuMTQ3LjUyLjQyCnAzCnNTJ2xvZ2luJwpwNApJMApzUydzZXNzaW9u
|
||||
X2lkJwpwNQpTJzQzYTVhODc4YmM2M2Y4ODJiMDNhZjllNTg5NjNjYmI0NDA4MGU5ZDQnCnA2CnMu
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user