update names used in Ep3 disassembly
This commit is contained in:
+35
-25
@@ -1448,11 +1448,11 @@ bool CardSpecial::evaluate_effect_arg2_condition(
|
|||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
switch (atoi(arg2_text + 1)) {
|
switch (atoi(arg2_text + 1)) {
|
||||||
case 0:
|
case 0: // n00
|
||||||
return true;
|
return true;
|
||||||
case 1:
|
case 1: // n01
|
||||||
return (!card || (card->get_definition()->def.type == CardType::HUNTERS_SC));
|
return (!card || (card->get_definition()->def.type == CardType::HUNTERS_SC));
|
||||||
case 2:
|
case 2: // n02
|
||||||
for (size_t z = 0; (z < 4 * 9) && (as.target_card_refs[z] != 0xFFFF); z++) {
|
for (size_t z = 0; (z < 4 * 9) && (as.target_card_refs[z] != 0xFFFF); z++) {
|
||||||
auto target_card = this->server()->card_for_set_card_ref(as.target_card_refs[z]);
|
auto target_card = this->server()->card_for_set_card_ref(as.target_card_refs[z]);
|
||||||
if (target_card && target_card->check_card_flag(2)) {
|
if (target_card && target_card->check_card_flag(2)) {
|
||||||
@@ -1460,7 +1460,7 @@ bool CardSpecial::evaluate_effect_arg2_condition(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
case 3:
|
case 3: // n03
|
||||||
for (size_t z = 0; z < 8; z++) {
|
for (size_t z = 0; z < 8; z++) {
|
||||||
uint16_t action_card_ref = as.action_card_refs[z];
|
uint16_t action_card_ref = as.action_card_refs[z];
|
||||||
if (action_card_ref != 0xFFFF) {
|
if (action_card_ref != 0xFFFF) {
|
||||||
@@ -1471,39 +1471,39 @@ bool CardSpecial::evaluate_effect_arg2_condition(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
case 4:
|
case 4: // n04
|
||||||
return card->action_chain.check_flag(0x0001E000);
|
return card->action_chain.check_flag(0x0001E000);
|
||||||
case 5:
|
case 5: // n05
|
||||||
return card->action_chain.check_flag(0x00001E00);
|
return card->action_chain.check_flag(0x00001E00);
|
||||||
case 6:
|
case 6: // n06
|
||||||
return (card->get_definition()->def.card_class() == CardClass::NATIVE_CREATURE);
|
return (card->get_definition()->def.card_class() == CardClass::NATIVE_CREATURE);
|
||||||
case 7:
|
case 7: // n07
|
||||||
return (card->get_definition()->def.card_class() == CardClass::A_BEAST_CREATURE);
|
return (card->get_definition()->def.card_class() == CardClass::A_BEAST_CREATURE);
|
||||||
case 8:
|
case 8: // n08
|
||||||
return (card->get_definition()->def.card_class() == CardClass::MACHINE_CREATURE);
|
return (card->get_definition()->def.card_class() == CardClass::MACHINE_CREATURE);
|
||||||
case 9:
|
case 9: // n09
|
||||||
return (card->get_definition()->def.card_class() == CardClass::DARK_CREATURE);
|
return (card->get_definition()->def.card_class() == CardClass::DARK_CREATURE);
|
||||||
case 10:
|
case 10: // n10
|
||||||
return (card->get_definition()->def.card_class() == CardClass::SWORD_ITEM);
|
return (card->get_definition()->def.card_class() == CardClass::SWORD_ITEM);
|
||||||
case 11:
|
case 11: // n11
|
||||||
return (card->get_definition()->def.card_class() == CardClass::GUN_ITEM);
|
return (card->get_definition()->def.card_class() == CardClass::GUN_ITEM);
|
||||||
case 12:
|
case 12: // n12
|
||||||
return (card->get_definition()->def.card_class() == CardClass::CANE_ITEM);
|
return (card->get_definition()->def.card_class() == CardClass::CANE_ITEM);
|
||||||
case 13: {
|
case 13: { // n13
|
||||||
auto ce = card->get_definition();
|
auto ce = card->get_definition();
|
||||||
return ((ce->def.card_class() == CardClass::GUARD_ITEM) ||
|
return ((ce->def.card_class() == CardClass::GUARD_ITEM) ||
|
||||||
(ce->def.card_class() == CardClass::MAG_ITEM) ||
|
(ce->def.card_class() == CardClass::MAG_ITEM) ||
|
||||||
this->server()->ruler_server->find_condition_on_card_ref(
|
this->server()->ruler_server->find_condition_on_card_ref(
|
||||||
card->get_card_ref(), ConditionType::GUARD_CREATURE, 0, 0, 0));
|
card->get_card_ref(), ConditionType::GUARD_CREATURE, 0, 0, 0));
|
||||||
}
|
}
|
||||||
case 14:
|
case 14: // n14
|
||||||
return card->get_definition()->def.is_sc();
|
return card->get_definition()->def.is_sc();
|
||||||
case 15:
|
case 15: // n15
|
||||||
return ((card->action_chain.chain.attack_action_card_ref_count == 0) &&
|
return ((card->action_chain.chain.attack_action_card_ref_count == 0) &&
|
||||||
(card->action_metadata.defense_card_ref_count == 0));
|
(card->action_metadata.defense_card_ref_count == 0));
|
||||||
case 16:
|
case 16: // n16
|
||||||
return this->server()->ruler_server->card_ref_is_aerial(card->get_card_ref());
|
return this->server()->ruler_server->card_ref_is_aerial(card->get_card_ref());
|
||||||
case 17: {
|
case 17: { // n17
|
||||||
auto sc_card = this->server()->card_for_set_card_ref(sc_card_ref);
|
auto sc_card = this->server()->card_for_set_card_ref(sc_card_ref);
|
||||||
int16_t this_ap = card->ap;
|
int16_t this_ap = card->ap;
|
||||||
int16_t other_ap = -1;
|
int16_t other_ap = -1;
|
||||||
@@ -1517,7 +1517,7 @@ bool CardSpecial::evaluate_effect_arg2_condition(
|
|||||||
}
|
}
|
||||||
return (other_ap == this_ap);
|
return (other_ap == this_ap);
|
||||||
}
|
}
|
||||||
case 18:
|
case 18: // n18
|
||||||
for (size_t z = 0; (z < 4 * 9) && (as.target_card_refs[z] != 0xFFFF); z++) {
|
for (size_t z = 0; (z < 4 * 9) && (as.target_card_refs[z] != 0xFFFF); z++) {
|
||||||
auto target_card = this->server()->card_for_set_card_ref(as.target_card_refs[z]);
|
auto target_card = this->server()->card_for_set_card_ref(as.target_card_refs[z]);
|
||||||
if (target_card && target_card->get_definition()->def.is_sc()) {
|
if (target_card && target_card->get_definition()->def.is_sc()) {
|
||||||
@@ -1525,20 +1525,20 @@ bool CardSpecial::evaluate_effect_arg2_condition(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
case 19:
|
case 19: // n19
|
||||||
return this->server()->ruler_server->find_condition_on_card_ref(
|
return this->server()->ruler_server->find_condition_on_card_ref(
|
||||||
card->get_card_ref(), ConditionType::PARALYZE, 0, 0, 0);
|
card->get_card_ref(), ConditionType::PARALYZE, 0, 0, 0);
|
||||||
case 20:
|
case 20: // n20
|
||||||
return this->server()->ruler_server->find_condition_on_card_ref(
|
return this->server()->ruler_server->find_condition_on_card_ref(
|
||||||
card->get_card_ref(), ConditionType::FREEZE, 0, 0, 0);
|
card->get_card_ref(), ConditionType::FREEZE, 0, 0, 0);
|
||||||
case 21: {
|
case 21: { // n21
|
||||||
uint8_t client_id = client_id_for_card_ref(sc_card_ref);
|
uint8_t client_id = client_id_for_card_ref(sc_card_ref);
|
||||||
if (client_id != 0xFF) {
|
if (client_id != 0xFF) {
|
||||||
return card->action_chain.check_flag(0x00002000 << client_id);
|
return card->action_chain.check_flag(0x00002000 << client_id);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case 22: {
|
case 22: { // n22
|
||||||
uint8_t client_id = client_id_for_card_ref(sc_card_ref);
|
uint8_t client_id = client_id_for_card_ref(sc_card_ref);
|
||||||
if (client_id != 0xFF) {
|
if (client_id != 0xFF) {
|
||||||
return card->action_chain.check_flag(0x00000200 << client_id);
|
return card->action_chain.check_flag(0x00000200 << client_id);
|
||||||
@@ -1739,7 +1739,7 @@ bool CardSpecial::execute_effect(
|
|||||||
case ConditionType::PIERCE:
|
case ConditionType::PIERCE:
|
||||||
case ConditionType::UNUSED_0F:
|
case ConditionType::UNUSED_0F:
|
||||||
case ConditionType::SET_MV_COST_TO_0:
|
case ConditionType::SET_MV_COST_TO_0:
|
||||||
case ConditionType::UNKNOWN_13:
|
case ConditionType::UNUSED_13:
|
||||||
case ConditionType::ACID:
|
case ConditionType::ACID:
|
||||||
case ConditionType::ADD_1_TO_MV_COST:
|
case ConditionType::ADD_1_TO_MV_COST:
|
||||||
case ConditionType::ABILITY_TRAP:
|
case ConditionType::ABILITY_TRAP:
|
||||||
@@ -1930,7 +1930,7 @@ bool CardSpecial::execute_effect(
|
|||||||
(cond.type == ConditionType::CANNOT_DEFEND) ||
|
(cond.type == ConditionType::CANNOT_DEFEND) ||
|
||||||
(cond.type == ConditionType::GUOM) ||
|
(cond.type == ConditionType::GUOM) ||
|
||||||
(cond.type == ConditionType::PARALYZE) ||
|
(cond.type == ConditionType::PARALYZE) ||
|
||||||
(cond.type == ConditionType::UNKNOWN_13) ||
|
(cond.type == ConditionType::UNUSED_13) ||
|
||||||
(cond.type == ConditionType::ACID) ||
|
(cond.type == ConditionType::ACID) ||
|
||||||
(cond.type == ConditionType::ADD_1_TO_MV_COST) ||
|
(cond.type == ConditionType::ADD_1_TO_MV_COST) ||
|
||||||
(cond.type == ConditionType::CURSE) ||
|
(cond.type == ConditionType::CURSE) ||
|
||||||
@@ -2655,6 +2655,16 @@ vector<shared_ptr<const Card>> CardSpecial::get_targeted_cards_for_condition(
|
|||||||
add_card_refs(ps->get_card_refs_within_range_from_all_players(range, card1_loc, CardType::ITEM));
|
add_card_refs(ps->get_card_refs_within_range_from_all_players(range, card1_loc, CardType::ITEM));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (card1) {
|
||||||
|
auto ce = this->server()->definition_for_card_ref(card_ref);
|
||||||
|
auto ps = card1->player_state();
|
||||||
|
if (ce && ps) {
|
||||||
|
uint16_t range_card_id = this->get_card_id_with_effective_range(card1, ce->def.card_id, card2);
|
||||||
|
parray<uint8_t, 9 * 9> range;
|
||||||
|
compute_effective_range(range, this->server()->card_index, range_card_id, card1_loc, this->server()->map_and_rules);
|
||||||
|
add_card_refs(ps->get_all_cards_within_range(range, card1_loc, card1->get_team_id()));
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 4: // p04
|
case 4: // p04
|
||||||
size_t z;
|
size_t z;
|
||||||
|
|||||||
+31
-31
@@ -342,11 +342,11 @@ static const unordered_map<string, const char*> description_for_expr_token({
|
|||||||
{"tt", "Physical damage"},
|
{"tt", "Physical damage"},
|
||||||
{"lv", "Dice boost"},
|
{"lv", "Dice boost"},
|
||||||
{"adm", "SC attack damage"},
|
{"adm", "SC attack damage"},
|
||||||
{"ddm", "Defending damage"},
|
{"ddm", "Attack bonus"},
|
||||||
{"sat", "Number of Sword-type items on SC\'s team"},
|
{"sat", "Number of Sword-type items on SC\'s team"},
|
||||||
{"edm", "Defending damage"}, // TODO: How is this different from ddm?
|
{"edm", "Target attack bonus"},
|
||||||
{"ldm", "Unknown: ldm"}, // Unused
|
{"ldm", "Last attack damage before defense"}, // Unused
|
||||||
{"rdm", "Defending damage"}, // TODO: How is this different from ddm/edm?
|
{"rdm", "Last attack damage"},
|
||||||
{"fdm", "Final damage (after defense)"},
|
{"fdm", "Final damage (after defense)"},
|
||||||
{"ndm", "Unknown: ndm"}, // Unused
|
{"ndm", "Unknown: ndm"}, // Unused
|
||||||
{"ehp", "Attacker HP"},
|
{"ehp", "Attacker HP"},
|
||||||
@@ -385,7 +385,7 @@ static const vector<const char*> description_for_n_condition({
|
|||||||
/* n04 */ "Attack has Pierce",
|
/* n04 */ "Attack has Pierce",
|
||||||
/* n05 */ "Attack has Rampage",
|
/* n05 */ "Attack has Rampage",
|
||||||
/* n06 */ "Native attribute",
|
/* n06 */ "Native attribute",
|
||||||
/* n07 */ "A.Beast attribute",
|
/* n07 */ "Altered Beast attribute",
|
||||||
/* n08 */ "Machine attribute",
|
/* n08 */ "Machine attribute",
|
||||||
/* n09 */ "Dark attribute",
|
/* n09 */ "Dark attribute",
|
||||||
/* n10 */ "Sword-type item",
|
/* n10 */ "Sword-type item",
|
||||||
@@ -399,23 +399,23 @@ static const vector<const char*> description_for_n_condition({
|
|||||||
/* n18 */ "Any target is an SC",
|
/* n18 */ "Any target is an SC",
|
||||||
/* n19 */ "Has Paralyzed condition",
|
/* n19 */ "Has Paralyzed condition",
|
||||||
/* n20 */ "Has Frozen condition",
|
/* n20 */ "Has Frozen condition",
|
||||||
/* n21 */ "???", // TODO: This appears related to Pierce/Rampage
|
/* n21 */ "Target is affected by Pierce",
|
||||||
/* n22 */ "???", // TODO: This appears related to Pierce/Rampage
|
/* n22 */ "Target is affected by Rampage",
|
||||||
});
|
});
|
||||||
|
|
||||||
static const vector<const char*> description_for_p_target({
|
static const vector<const char*> description_for_p_target({
|
||||||
/* p00 */ "Unknown: p00", // Unused; probably invalid
|
/* p00 */ "(Invalid)",
|
||||||
/* p01 */ "SC / FC who set the card",
|
/* p01 */ "SC / FC who set the card",
|
||||||
/* p02 */ "Attacking SC / FC",
|
/* p02 */ "Attacking SC / FC",
|
||||||
/* p03 */ "Unknown: p03", // Unused
|
/* p03 */ "All item FCs from both teams within attack range", // Unused
|
||||||
/* p04 */ "Unknown: p04", // Unused
|
/* p04 */ "All action cards in the chain after this one", // Unused
|
||||||
/* p05 */ "SC / FC who set the card", // Identical to p01
|
/* p05 */ "SC / FC who set the card", // Identical to p01
|
||||||
/* p06 */ "??? (TODO)",
|
/* p06 */ "Attacking card, or SC if attacking card is an item",
|
||||||
/* p07 */ "??? (TODO; Weakness)",
|
/* p07 */ "Attacking card",
|
||||||
/* p08 */ "FC\'s owner SC",
|
/* p08 */ "FC\'s owner SC",
|
||||||
/* p09 */ "Unknown: p09", // Unused
|
/* p09 */ "All cards from both teams within attack range", // Unused
|
||||||
/* p10 */ "All ally FCs",
|
/* p10 */ "All ally SCs and FCs",
|
||||||
/* p11 */ "All ally FCs", // TODO: how is this different from p10?
|
/* p11 */ "All ally FCs",
|
||||||
/* p12 */ "All non-aerial FCs on both teams",
|
/* p12 */ "All non-aerial FCs on both teams",
|
||||||
/* p13 */ "All FCs on both teams that are Frozen",
|
/* p13 */ "All FCs on both teams that are Frozen",
|
||||||
/* p14 */ "All FCs on both teams with <= 3 HP",
|
/* p14 */ "All FCs on both teams with <= 3 HP",
|
||||||
@@ -423,29 +423,29 @@ static const vector<const char*> description_for_p_target({
|
|||||||
/* p16 */ "All FCs on both teams with >= 8 HP",
|
/* p16 */ "All FCs on both teams with >= 8 HP",
|
||||||
/* p17 */ "This card",
|
/* p17 */ "This card",
|
||||||
/* p18 */ "SC who equipped this card",
|
/* p18 */ "SC who equipped this card",
|
||||||
/* p19 */ "Unknown: p19", // Unused
|
/* p19 */ "All HU-class SCs", // Unused
|
||||||
/* p20 */ "Unknown: p20", // Unused
|
/* p20 */ "All RA-class SCs", // Unused
|
||||||
/* p21 */ "Unknown: p21", // Unused
|
/* p21 */ "All FO-class SCs", // Unused
|
||||||
/* p22 */ "All characters (SCs & FCs) including this card", // TODO: But why does Shifta apply only to allies then?
|
/* p22 */ "All characters (SCs & FCs) including this card", // TODO: But why does Shifta apply only to allies then?
|
||||||
/* p23 */ "All characters (SCs & FCs) except this card",
|
/* p23 */ "All characters (SCs & FCs) except this card",
|
||||||
/* p24 */ "All FCs on both teams that have Paralysis",
|
/* p24 */ "All FCs on both teams that have Paralysis",
|
||||||
/* p25 */ "Unknown: p25", // Unused
|
/* p25 */ "All aerial SCs and FCs", // Unused
|
||||||
/* p26 */ "Unknown: p26", // Unused
|
/* p26 */ "All cards not at maximum HP", // Unused
|
||||||
/* p27 */ "Unknown: p27", // Unused
|
/* p27 */ "All Native creatures", // Unused
|
||||||
/* p28 */ "Unknown: p28", // Unused
|
/* p28 */ "All Altered Beast creatures", // Unused
|
||||||
/* p29 */ "Unknown: p29", // Unused
|
/* p29 */ "All Machine creatures", // Unused
|
||||||
/* p30 */ "Unknown: p30", // Unused
|
/* p30 */ "All Dark creatures", // Unused
|
||||||
/* p31 */ "Unknown: p31", // Unused
|
/* p31 */ "All Sword-type items", // Unused
|
||||||
/* p32 */ "Unknown: p32", // Unused
|
/* p32 */ "All Gun-type items", // Unused
|
||||||
/* p33 */ "Unknown: p33", // Unused
|
/* p33 */ "All Cane-type items", // Unused
|
||||||
/* p34 */ "Unknown: p34", // Unused
|
/* p34 */ "All non-SC targets", // Unused
|
||||||
/* p35 */ "All characters (SCs & FCs) within range", // Used for Explosion effect
|
/* p35 */ "All characters (SCs & FCs) within range", // Used for Explosion effect
|
||||||
/* p36 */ "All ally SCs within range, but not the caster", // Resta
|
/* p36 */ "All ally SCs within range, but not the caster", // Resta
|
||||||
/* p37 */ "All FCs or all opponent FCs (TODO)", // TODO: when to use which selector? is a3 involved here somehow?
|
/* p37 */ "All opponent FCs",
|
||||||
/* p38 */ "All allies except items within range (and not this card)",
|
/* p38 */ "All allies except items within range (and not this card)",
|
||||||
/* p39 */ "All FCs that cost 4 or more points",
|
/* p39 */ "All FCs that cost 4 or more points",
|
||||||
/* p40 */ "All FCs that cost 3 or fewer points",
|
/* p40 */ "All FCs that cost 3 or fewer points",
|
||||||
/* p41 */ "Unknown: p41", // Unused
|
/* p41 */ "All FCs next to attacker, and all of attacker\'s equipped items", // Unused
|
||||||
/* p42 */ "Attacker during defense phase", // Only used by TP Defense
|
/* p42 */ "Attacker during defense phase", // Only used by TP Defense
|
||||||
/* p43 */ "Owner SC of defending FC during attack",
|
/* p43 */ "Owner SC of defending FC during attack",
|
||||||
/* p44 */ "SC\'s own creature FCs within range",
|
/* p44 */ "SC\'s own creature FCs within range",
|
||||||
@@ -482,7 +482,7 @@ static const vector<ConditionDescription> description_for_condition_type({
|
|||||||
/* 0x10 */ {true, "HEAL", "Increase HP by N"},
|
/* 0x10 */ {true, "HEAL", "Increase HP by N"},
|
||||||
/* 0x11 */ {false, "RETURN_TO_HAND", "Return card to hand"},
|
/* 0x11 */ {false, "RETURN_TO_HAND", "Return card to hand"},
|
||||||
/* 0x12 */ {false, "SET_MV_COST_TO_0", "Movement costs nothing"},
|
/* 0x12 */ {false, "SET_MV_COST_TO_0", "Movement costs nothing"},
|
||||||
/* 0x13 */ {false, "UNKNOWN_13", nullptr},
|
/* 0x13 */ {false, "UNUSED_13", nullptr},
|
||||||
/* 0x14 */ {false, "ACID", "Give Acid condition"},
|
/* 0x14 */ {false, "ACID", "Give Acid condition"},
|
||||||
/* 0x15 */ {false, "ADD_1_TO_MV_COST", "Add 1 to move costs"},
|
/* 0x15 */ {false, "ADD_1_TO_MV_COST", "Add 1 to move costs"},
|
||||||
/* 0x16 */ {true, "MIGHTY_KNUCKLE", "Temporarily increase AP by N, and set ATK dice to zero"},
|
/* 0x16 */ {true, "MIGHTY_KNUCKLE", "Temporarily increase AP by N, and set ATK dice to zero"},
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ enum class ConditionType : uint8_t {
|
|||||||
HEAL = 0x10, // Increase HP by N
|
HEAL = 0x10, // Increase HP by N
|
||||||
RETURN_TO_HAND = 0x11, // Return card to hand
|
RETURN_TO_HAND = 0x11, // Return card to hand
|
||||||
SET_MV_COST_TO_0 = 0x12,
|
SET_MV_COST_TO_0 = 0x12,
|
||||||
UNKNOWN_13 = 0x13,
|
UNUSED_13 = 0x13,
|
||||||
ACID = 0x14, // Give Acid condition
|
ACID = 0x14, // Give Acid condition
|
||||||
ADD_1_TO_MV_COST = 0x15,
|
ADD_1_TO_MV_COST = 0x15,
|
||||||
MIGHTY_KNUCKLE = 0x16, // Temporarily increase AP by N, and set ATK dice to zero
|
MIGHTY_KNUCKLE = 0x16, // Temporarily increase AP by N, and set ATK dice to zero
|
||||||
|
|||||||
Reference in New Issue
Block a user