update some Ep3 format notes
This commit is contained in:
@@ -788,7 +788,7 @@ string CardDefinition::str() const {
|
|||||||
return string_printf(
|
return string_printf(
|
||||||
"[Card: %04" PRIX32 " name=%s type=%s usable_condition=%02hhX rare=%s "
|
"[Card: %04" PRIX32 " name=%s type=%s usable_condition=%02hhX rare=%s "
|
||||||
"cost=%hhX+%hhX target=%s range=%s assist_turns=%s cannot_move=%s "
|
"cost=%hhX+%hhX target=%s range=%s assist_turns=%s cannot_move=%s "
|
||||||
"cannot_attack=%s hidden=%s hp=%s ap=%s tp=%s mv=%s left=%s right=%s "
|
"cannot_attack=%s cannot_drop=%s hp=%s ap=%s tp=%s mv=%s left=%s right=%s "
|
||||||
"top=%s a2=%04hX class=%04hX assist_effect=[%hu, %hu] "
|
"top=%s a2=%04hX class=%04hX assist_effect=[%hu, %hu] "
|
||||||
"drop_rates=[%hu, %hu] effects=[%s]]",
|
"drop_rates=[%hu, %hu] effects=[%s]]",
|
||||||
this->card_id.load(),
|
this->card_id.load(),
|
||||||
@@ -803,7 +803,7 @@ string CardDefinition::str() const {
|
|||||||
assist_turns_str.c_str(),
|
assist_turns_str.c_str(),
|
||||||
this->cannot_move ? "true" : "false",
|
this->cannot_move ? "true" : "false",
|
||||||
this->cannot_attack ? "true" : "false",
|
this->cannot_attack ? "true" : "false",
|
||||||
this->hide_in_deck_edit ? "true" : "false",
|
this->cannot_drop ? "true" : "false",
|
||||||
hp_str.c_str(),
|
hp_str.c_str(),
|
||||||
ap_str.c_str(),
|
ap_str.c_str(),
|
||||||
tp_str.c_str(),
|
tp_str.c_str(),
|
||||||
|
|||||||
+18
-11
@@ -495,19 +495,26 @@ struct CardDefinition {
|
|||||||
uint8_t cannot_move; // 0 for SC and creature cards; 1 for everything else
|
uint8_t cannot_move; // 0 for SC and creature cards; 1 for everything else
|
||||||
uint8_t cannot_attack; // 1 for shields, mags, defense actions, and assist cards
|
uint8_t cannot_attack; // 1 for shields, mags, defense actions, and assist cards
|
||||||
uint8_t unused3;
|
uint8_t unused3;
|
||||||
uint8_t hide_in_deck_edit; // 0 = player can use this card (appears in deck edit)
|
// If cannot_drop is 0, this card can't appear in post-battle rewards. A
|
||||||
|
// value of 0 here also prevents the card from being used as a God Whim
|
||||||
|
// random assist.
|
||||||
|
uint8_t cannot_drop;
|
||||||
CriterionCode usable_criterion;
|
CriterionCode usable_criterion;
|
||||||
CardRarity rarity;
|
CardRarity rarity;
|
||||||
be_uint16_t unknown_a2;
|
be_uint16_t unknown_a2;
|
||||||
be_uint16_t be_card_class; // Used for checking attributes (e.g. item types)
|
// The card class is used for checking attributes (e.g. item types). It's
|
||||||
// These two fields seem to always contain the same value, and are always 0
|
// stored big-endian here, so there's a helper function (card_class()) that
|
||||||
// for non-assist cards and nonzero for assists. Each assist card has a unique
|
// returns a usable CardClass enum value.
|
||||||
// value here and no effects, which makes it look like this is how assist
|
be_uint16_t be_card_class;
|
||||||
// effects are implemented. There seems to be some 1k-modulation going on here
|
// The two fields of this array seem to always contain the same value, and
|
||||||
// too; most cards are in the range 101-174 but a few have e.g. 1150, 2141. A
|
// are always 0 for non-assist cards and nonzero for assists. Each assist
|
||||||
// few pairs of cards have the same effect, which makes it look like some
|
// card has a unique value here and no effects, though the server ignores
|
||||||
// other fields are also involved in determining their effects (see e.g. Skip
|
// these values - assist effects are hardcoded based on the card ID instead.
|
||||||
// Draw / Skip Move, Dice Fever / Dice Fever +, Reverse Card / Rich +).
|
// There seems to be some 1k-modulation going on here; most cards have values
|
||||||
|
// here in the range 101-174 but a few have e.g. 1150, 2141. A few pairs of
|
||||||
|
// cards have the same effect, so this cannot be used by the server anyway to
|
||||||
|
// determine assist cards' effects (see e.g. Skip Draw / Skip Move, Dice
|
||||||
|
// Fever / Dice Fever +, Reverse Card / Rich +).
|
||||||
parray<be_uint16_t, 2> assist_effect;
|
parray<be_uint16_t, 2> assist_effect;
|
||||||
// Drop rates are decimal-encoded with the following fields:
|
// Drop rates are decimal-encoded with the following fields:
|
||||||
// - rate % 10 (that is, the lowest decimal place) specifies the required game
|
// - rate % 10 (that is, the lowest decimal place) specifies the required game
|
||||||
@@ -524,7 +531,7 @@ struct CardDefinition {
|
|||||||
// - type is SC_HUNTERS or SC_ARKZ
|
// - type is SC_HUNTERS or SC_ARKZ
|
||||||
// - unknown_a3 is 0x23 or 0x24
|
// - unknown_a3 is 0x23 or 0x24
|
||||||
// - rarity is E, D1, D2, or INVIS
|
// - rarity is E, D1, D2, or INVIS
|
||||||
// - hide_in_deck_edit is 1 (specifically 1; other nonzero values here don't
|
// - cannot_drop is 1 (specifically 1; other nonzero values here don't
|
||||||
// prevent the card from appearing in post-battle draws)
|
// prevent the card from appearing in post-battle draws)
|
||||||
parray<be_uint16_t, 2> drop_rates;
|
parray<be_uint16_t, 2> drop_rates;
|
||||||
ptext<char, 0x14> en_name;
|
ptext<char, 0x14> en_name;
|
||||||
|
|||||||
@@ -990,7 +990,7 @@ void PlayerState::replace_all_set_assists_with_random_assists() {
|
|||||||
card_id = ALL_ASSIST_CARD_IDS[index];
|
card_id = ALL_ASSIST_CARD_IDS[index];
|
||||||
if (!this->god_whim_can_use_hidden_cards) {
|
if (!this->god_whim_can_use_hidden_cards) {
|
||||||
auto ce = this->server()->definition_for_card_id(card_id);
|
auto ce = this->server()->definition_for_card_id(card_id);
|
||||||
if (!ce || ce->def.hide_in_deck_edit) {
|
if (!ce || ce->def.cannot_drop) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user