Shandalar - Program Bugs
Triskelion can only activate with its own counters (fix completed)
Original report.
There's a lot of similar cards; there are different +1/+1 counters for Dwarven Weaponsmith (card_instance_t::counters; shared by all cards programmed in C), Ashnod's Transmogrant (card_instance_t::counters5), Fungusaur, Rock Hydra, Sengir Vampire, Khabal Ghoul, Citanul Druid, Tetravus, and Triskelion (all card_instance_t::special_counters). Whirling Dervish used special_counters also until it was moved into C.
Generally, I've made new cards that care about whether +1/+1 counters are present check all these special cases; the problem is that none of the cards themselves check +1/+1 counters from other sources. I don't think that's a particular problem for any of the others except Tetravus and Rock Hydra.
Manalink made them all use the same sort of +1/+1 counters (all in card_instance_t::counters) up until I rewrote the entire counter engine last year; I hadn't been planning on the intermediate step, but it looks like it's going to be necessary at least for these three cards.
There's a lot of similar cards; there are different +1/+1 counters for Dwarven Weaponsmith (card_instance_t::counters; shared by all cards programmed in C), Ashnod's Transmogrant (card_instance_t::counters5), Fungusaur, Rock Hydra, Sengir Vampire, Khabal Ghoul, Citanul Druid, Tetravus, and Triskelion (all card_instance_t::special_counters). Whirling Dervish used special_counters also until it was moved into C.
Generally, I've made new cards that care about whether +1/+1 counters are present check all these special cases; the problem is that none of the cards themselves check +1/+1 counters from other sources. I don't think that's a particular problem for any of the others except Tetravus and Rock Hydra.
Manalink made them all use the same sort of +1/+1 counters (all in card_instance_t::counters) up until I rewrote the entire counter engine last year; I hadn't been planning on the intermediate step, but it looks like it's going to be necessary at least for these three cards.
Comments
Posted by Korath » 28 May 2015, 01:13
commit 2c517b7a235fbb4772bc76333b3c4d06591f63cb
Author: Korath <dgk@Dirge.none>
Date: Wed May 27 21:12:22 2015 -0400
[Shandalar] #540: rewrite Triskelion using standard +1+1 counters
Rewritten:
Triskelion
Support:
ENTERS_THE_BATTLEFIELD_WITH_P1P1_COUNTERS()
ActivateRemoveP1P1Counter{}
remove_m1_m1_counter()
remove_p1_p1_counter()
raw parameter to add_m1_m1_counter() and add_p1_p1_counter() for eventual use
to override Doubling Season etc.
Author: Korath <dgk@Dirge.none>
Date: Wed May 27 21:12:22 2015 -0400
[Shandalar] #540: rewrite Triskelion using standard +1+1 counters
Rewritten:
Triskelion
Support:
ENTERS_THE_BATTLEFIELD_WITH_P1P1_COUNTERS()
ActivateRemoveP1P1Counter{}
remove_m1_m1_counter()
remove_p1_p1_counter()
raw parameter to add_m1_m1_counter() and add_p1_p1_counter() for eventual use
to override Doubling Season etc.
Posted by Korath » 28 May 2015, 17:11
commit 2fa21b33c254b67fec9f14bdcc200a2e74dedf2f
Author: Korath <dgk@Dirge.none>
Date: Thu May 28 13:08:31 2015 -0400
[Shandalar] #540: Rewrite Tetravus with standard +1/+1 counters, modern wording
With some hackery so it gets its two separate upkeep triggers.
The AI doesn't ever undock tetravites, despite an attempt to use the same
mechanism in the original to make it undock if it needs something to sacrifice
to Lord of the Pit; but that doesn't seem to work in the original either.
Won't be able to fix properly until the AI speculates during upkeep.
Support:
Target::select_multiple(), based on Manalink select_up_to() but expanded to
optionally allow reselection of a target (e.g. for Pyrotechnics)
Author: Korath <dgk@Dirge.none>
Date: Thu May 28 13:08:31 2015 -0400
[Shandalar] #540: Rewrite Tetravus with standard +1/+1 counters, modern wording
With some hackery so it gets its two separate upkeep triggers.
The AI doesn't ever undock tetravites, despite an attempt to use the same
mechanism in the original to make it undock if it needs something to sacrifice
to Lord of the Pit; but that doesn't seem to work in the original either.
Won't be able to fix properly until the AI speculates during upkeep.
Support:
Target::select_multiple(), based on Manalink select_up_to() but expanded to
optionally allow reselection of a target (e.g. for Pyrotechnics)
Posted by Korath » 06 Jun 2015, 04:13
Rock Hydra rewrite depends on features from the next full version, so won't be in Ruined Tower 3.
Posted by Korath » 06 Jun 2015, 04:48
commit f2b7e7eac49aa8a3c8ce3ad97936679d8ae9ddd0
Author: Korath <dgk@Dirge.none>
Date: Fri Jun 5 03:02:20 2015 -0400
[Shandalar] Rewrite current */* creatures and set base p/t effects; FIX #540
Obsolesces asterisk_legacy(); add globals raw_base_power and raw_base_toughness
and interface functions for them that track base values throughout EVENT_POWER
and EVENT_TOUGHNESS, so multiple instances of fx_sorceress_queen() (or, rather,
its generalized variant fx_set_base_pt()) don't have to jump through hoops to
determine if one's already in effect, whether a card is modifying power/
toughness normally or implementing a characteristic-defining effect, etc.
Also supports examining a card's characteristic power/toughness while it's not
in play (as these abilities work in all zones), so etc. an Imperial Recruiter
(search library for a creature with power 2 or less) may or may not legally be
able to find a Keldon Warlord (power and toughness are equal to the number of
non-wall creatures you control) depending on how many creatures you currently
have on the battlefield.
Will need revision once there's continuous global set-base-power/toughness
effects like Humility that can have an earlier timestamp than a card trying to
implement a characteristic-defining ability, the latter of which is always
supposed to happen first.
Comprehensively fix mismatches between * power/toughness in Manalink.csv and
ct_all.csv (sadly, only at runtime). In almost all cases it was Manalink.csv
that was correct.
Rewritten (MicroProse cards):
Angry Mob
Gaea's Avenger
Gaea's Liege
Island of Wak-Wak
Keldon Warlord
Nightmare/Squelching Leeches
People of the Woods
Plague Rats
Rock Hydra (fixing #540 by moving to generic +1/+1 counters)
Sorceress Queen/Serendib Sorcerer
Singing Tree
Wall of Tombstones
Patched:
Faerie Dragon (Sorceress Queen effect)
Rewritten (from earlier rewrites):
Dakmor Sorceress/Sima Yi, Wei Field Marshal
Dungrove Elder
Kalonian Twingrove
Support:
ActivateDuringDamagePrevention{}
any_others_on_battlefield(..., card_instance_t* name_of_inst) and variants
change_to_iid_legacy()
change_to_basiclandtype_legacy()
set_base_power()
set_base_toughness()
set_base_power_legacy()
set_base_toughness_legacy()
set_base_pt_legacy()
sorceress_queen_legacy_for_exe()
TARGET_ANOTHER_CREATURE
TARGET_DAMAGE
TARGET_DAMAGE_ATTACHED_TO
Removed:
asterisk_legacy()
STATUS_LEGACY_TYPECHANGE bit no longer in use.
Incidental:
Play land sound effect when something changes a land into a basic land type.
Author: Korath <dgk@Dirge.none>
Date: Fri Jun 5 03:02:20 2015 -0400
[Shandalar] Rewrite current */* creatures and set base p/t effects; FIX #540
Obsolesces asterisk_legacy(); add globals raw_base_power and raw_base_toughness
and interface functions for them that track base values throughout EVENT_POWER
and EVENT_TOUGHNESS, so multiple instances of fx_sorceress_queen() (or, rather,
its generalized variant fx_set_base_pt()) don't have to jump through hoops to
determine if one's already in effect, whether a card is modifying power/
toughness normally or implementing a characteristic-defining effect, etc.
Also supports examining a card's characteristic power/toughness while it's not
in play (as these abilities work in all zones), so etc. an Imperial Recruiter
(search library for a creature with power 2 or less) may or may not legally be
able to find a Keldon Warlord (power and toughness are equal to the number of
non-wall creatures you control) depending on how many creatures you currently
have on the battlefield.
Will need revision once there's continuous global set-base-power/toughness
effects like Humility that can have an earlier timestamp than a card trying to
implement a characteristic-defining ability, the latter of which is always
supposed to happen first.
Comprehensively fix mismatches between * power/toughness in Manalink.csv and
ct_all.csv (sadly, only at runtime). In almost all cases it was Manalink.csv
that was correct.
Rewritten (MicroProse cards):
Angry Mob
Gaea's Avenger
Gaea's Liege
Island of Wak-Wak
Keldon Warlord
Nightmare/Squelching Leeches
People of the Woods
Plague Rats
Rock Hydra (fixing #540 by moving to generic +1/+1 counters)
Sorceress Queen/Serendib Sorcerer
Singing Tree
Wall of Tombstones
Patched:
Faerie Dragon (Sorceress Queen effect)
Rewritten (from earlier rewrites):
Dakmor Sorceress/Sima Yi, Wei Field Marshal
Dungrove Elder
Kalonian Twingrove
Support:
ActivateDuringDamagePrevention{}
any_others_on_battlefield(..., card_instance_t* name_of_inst) and variants
change_to_iid_legacy()
change_to_basiclandtype_legacy()
set_base_power()
set_base_toughness()
set_base_power_legacy()
set_base_toughness_legacy()
set_base_pt_legacy()
sorceress_queen_legacy_for_exe()
TARGET_ANOTHER_CREATURE
TARGET_DAMAGE
TARGET_DAMAGE_ATTACHED_TO
Removed:
asterisk_legacy()
STATUS_LEGACY_TYPECHANGE bit no longer in use.
Incidental:
Play land sound effect when something changes a land into a basic land type.
Last edited by Korath on 06 Jun 2015, 04:49, edited 1 time in total.
Reason: mispaste
Reason: mispaste
Posted by Aswan jaguar » 06 Jun 2015, 09:20
Korath wrote:
Comprehensively fix mismatches between * power/toughness in Manalink.csv and
ct_all.csv (sadly, only at runtime). In almost all cases it was Manalink.csv
that was correct.
Which mismatches/cards are you referring to?
are the rewritten Microprose ones or newer */* ones? I guess the latter.
Comprehensively fix mismatches between * power/toughness in Manalink.csv and
ct_all.csv (sadly, only at runtime). In almost all cases it was Manalink.csv
that was correct.
Which mismatches/cards are you referring to?
are the rewritten Microprose ones or newer */* ones? I guess the latter.
Posted by Korath » 06 Jun 2015, 18:41
There's 62 cards that have a power or toughness value of 100 or 100+some value in Manalink.csv (which makes the card's power/toughness value to display as "*/*" or "*+2/*+2" or whatever) but not a corresponding value of 16384 or 16384+some value in ct_all.csv (which makes it get treated as a characteristic-defining ability), or vice-versa. A significant number of them are the result of WOTC changing their minds between printings.
There's a judgement call involved on most of the tokens, obviously.
- Correct in Manalink.csv, wrong in ct_all.csv | Open
- Angry Mob
Anthroplasm
Arcbound Hybrid
Arcbound Overseer
Arcbound Reclaimer
Arcbound Slith
Arcbound Stinger
Arcbound Wanderer
Bear (token)
Body Double
Clever Impersonator
Clockwork Beetle
Clockwork Dragon
Clone
Crovax the Cursed
Dack's Duplicate
Dracoplasm
Dragon (token)
Etched Oracle
Evil Twin
Genesis Hydra
Ghastly Remains
Hooded Hydra
Jwari Shapeshifter
Kalonian Hydra
Karstoderm
Krakilin
Maga, Traitor to Mortals
Mercurial Pretender
Mikaeus, the Lunarch
Mindless Automaton
Nighthowler
Pentavus
Phantasmal Image
Phyrexian Metamorph
Primordial Hydra
Progenitor Mimic
Rock Hydra
Sakashima's Student
Shimatsu the Bloodcloaked
Skeleton Scavengers
Skyreach Manta
Solarion
Spike Cannibal
Spike Colony
Spike Drone
Spike Feeder
Spike Soldier
Spike Weaver
Spike Worker
Squid (token)
Suntouched Myr
The Mimeoplasm
Thromok the Insatiable
Treefolk Shaman (token)
Unbreathing Horde
Vesuvan Doppelganger
Vesuvan Shapeshifter
- Correct in ct_all.csv, wrong in Manalink.csv | Open
- Demon (token)
Ooze (token)
There's a judgement call involved on most of the tokens, obviously.
Posted by Aswan jaguar » 07 Jun 2015, 19:57
- Angry Mob was correct before,16386/16386 that is,and changed recently to 16384/16384 most probably by Gargaroz when he rewritten the card.
- Rock Hydra has wrong entry since the beginning/microprose and as errata hadn't change since then drove me crazy as I couldn't figure out how it differed from all other creatures entering with counters which had correct entries.
- I had also seen these mistakes about creatures entering with counters that had wrong values in ct_all.
- Copy creature cards are the other group that needs change because as you say WOTC changed errata.
There are also inconsistencies that may lead to the conclusion that p/t values could have some more meaning (to AI maybe):
special cases like Primal Clay 100/100 in Manalink.csv but 16387/16387 = (x+3/x+3) in ct_all (it has always has been like that-at least after Mok era with Manalink.csv present)
The most complex to p/t cards in csv's is Shapeshifter 100/207 in Manalink.csv with 207 being the most interesting value.Does it mean x-7 (as errata has been always like that
P/T: * / 7-* )? or 2-7 or something else.The original microprose value was 16388/16387 = (x+4/x+3) (lately changed to 16384/16384 probably by Gargaroz recoding the card).And still is set to be considered in play by AI (AI p/t) values as 3/4.
- Rock Hydra has wrong entry since the beginning/microprose and as errata hadn't change since then drove me crazy as I couldn't figure out how it differed from all other creatures entering with counters which had correct entries.
- I had also seen these mistakes about creatures entering with counters that had wrong values in ct_all.
- Copy creature cards are the other group that needs change because as you say WOTC changed errata.
There are also inconsistencies that may lead to the conclusion that p/t values could have some more meaning (to AI maybe):
special cases like Primal Clay 100/100 in Manalink.csv but 16387/16387 = (x+3/x+3) in ct_all (it has always has been like that-at least after Mok era with Manalink.csv present)
The most complex to p/t cards in csv's is Shapeshifter 100/207 in Manalink.csv with 207 being the most interesting value.Does it mean x-7 (as errata has been always like that
P/T: * / 7-* )? or 2-7 or something else.The original microprose value was 16388/16387 = (x+4/x+3) (lately changed to 16384/16384 probably by Gargaroz recoding the card).And still is set to be considered in play by AI (AI p/t) values as 3/4.
7 Posts
• Page 1 of 1
Ticket details
- Ticket ID: 540
- Project: Shandalar
- Status: Fix completed
- Component: Individual Card
- Project version: Ruined Tower 1
- Priority: Normal
- Severity: Normal
- Assigned to: Korath
- Reported by: Korath
- Reporter's tickets: List all tickets
- Reported on: 25 May 2015, 23:43
- Last visited by Korath » 29 Mar 2016, 13:52.