カードの効果に関して未解決な問題 - aharalabMeiji/fireplaceAharaLab GitHub Wiki
SCH_279 SCH_607 SCH_259 SCH_283 SCH_162 NEW1_033
#Trueaim Crescent SCH_279 \
#自分のヒーローがミニオンを攻撃した後、味方のミニオン全てが_____同じ標的を攻撃する。
これは
class SCH_279:
events = Attack(FRIENDLY_HERO,ENEMY_MINIONS).after(#この行OK
ExtraAttack(FRIENDLY_MINIONS)
)
が一番近いが、これでは「同じ標的」を表していない。ちなみに、ExtraAttackでは標的を制約できない。Retarget
という技があるようなので、そちらかもしれない。
#Shan'do Wildclaw SCH_607\
#選択: 自分のデッキの獣#全てに+1/+1を付与する。または、味方の獣1体の#コピーに変身する。
おおむねこんな感じかと思うが、確認できず。
class SCH_607:
requirements = { PlayReq.REQ_TARGET_TO_PLAY: 0 }
choose = ("SCH_607a", "SCH_607b")#確認できず。
play =ChooseBoth(CONTROLLER) & Morph(SELF, RANDOM(FRIENDLY_MINIONS+BEAST));#確認できず。
pass
class SCH_607a:
#Transfiguration
update = Refresh(FRIENDLY_DECK+BEAST,buff="SCH_607e")#検証待ち
pass
class SCH_607b:
#Rile the Herd
play = Morph(SELF, RANDOM(FRIENDLY_MINIONS+BEAST))#検証待ち
pass
SCH_607e = buff(1,1);
class SCH_607:
の中のplay
は、理由はよくわからないが必要らしい。(選べなかったとき?両方選んだとき?の実行内容らしい。)
class SCH_259:
""" Sphere of Sapience (legendary)"""
#At the start of your turn, look at your top card. You can put it on the bottom _and lose 1 Durability.
#play = OWN_TURN_BEGIN.on(GenericChoice() )
#??????????????????????????????????????????????
pass
class SCH_259t:
""" A New Fate """
#Draw a different card.
ターンビギンでカードをめくるたびに、そのカードと「違うカードと言う名前のカード」とを選択するように言われる。ターンビギンでめくるカードを指す単語がまだわかっていない。
class SCH_283:
""" Manafeeder Panthara"""
#<b>Battlecry:</b> If you've used your Hero Power this turn, draw a card.
#play = HERO_POWER_USED & ForceDraw(FRIENDLY) ???????????????????????????????
pass
これはよく使うカード(マナ喰らいのパンサーラ)なので心が痛む。カードを出してからヒロパを実行するのは、実例もありたやすい。これはヒロパを使ったあとにカードをプレイするというスタイル。「ヒロパ使用済み」という条件付けの方法がわかっていない。
解決済みと思ったが、Missing deathrattle script for enchantment 実験用疫病
のメッセージがでることから、バグ残りと考えられる。メッセージがでるのはcard.py
のclass Enchantment
のdeathrattle
メソッドの中。
class SCH_162:#exclude
""" Vectus"""
#Battlecry: Summon two 1/1 Whelps. Each gains a Deathrattle from your minions that died this game.
#雄叫び:1/1のチビドラゴンを2体召喚する。それらはこの対戦で死亡した味方のミニオンの断末魔を1つずつ獲得する。
play = Summon(CONTROLLER, "SCH_162t").then( -Find(FRIENDLY + KILLED + DEATHRATTLE) |
Buff(Summon.CARD, "SCH_162e").then(
CopyDeathrattles(Buff.BUFF, RANDOM(FRIENDLY + KILLED + DEATHRATTLE))
)
) *2
pass
SCH_162e = buff(deathrattle=True)
# Experimental Plague
# Copied Deathrattle from {0}
class SCH_162t:
# Plagued Hatchling
# Vanilla
pass
ここで参考にしたのはaooの
class BT_212:
"""Mok'Nathal Lion"""
requirements = {
PlayReq.REQ_FRIENDLY_TARGET: 0,
PlayReq.REQ_TARGET_IF_AVAILABLE: 0,
PlayReq.REQ_TARGET_WITH_DEATHRATTLE: 0}
play = Buff(SELF, "BT_212e").then(CopyDeathrattles(Buff.BUFF, TARGET))
BT_212e = buff(deathrattle=True)
と、こちらは未使用だが
class LOE_019:
"""Unearthed Raptor"""
requirements = {
PlayReq.REQ_FRIENDLY_TARGET: 0,
PlayReq.REQ_TARGET_IF_AVAILABLE: 0,
PlayReq.REQ_TARGET_WITH_DEATHRATTLE: 0}
play = Buff(SELF, "LOE_019e").then(CopyDeathrattles(Buff.BUFF, TARGET))
LOE_019e = buff(deathrattle=True)
で、参考にした二つはfireplaceオリジナルの実装であり「動くように作られた」ものと思われる。ただし、というか、下二つは「TARGETは必ずある」という条件下でCopyDeathrattlesを読んでいる一方で、SCH_126は「この対戦で死亡した味方のミニオンの断末魔」がもしあるならば発動する、という種類のものである。このことから、条件が満たされなれないままSCH_126eを実行しようとすると「該当するdeathrattleはない」こともありうる。単純に、Missing deathrattle script for SCH_260e
をスルーして、続行すればよいようにも思われる。
「空の見張り」に関するアラートが出るようなので、一応調べてみる。
class NEW1_033:
"""Leokk"""
update = Refresh(FRIENDLY_MINIONS - SELF, buff="NEW1_033o")
NEW1_033o = buff(atk=1)
クラシックカードなので、自分の実装ではない。
<Entity CardID="NEW1_033o" ID="143" version="2">
<Tag enumID="185" name="CARDNAME" type="LocString">
<enUS>Eye In The Sky</enUS>
</Tag>
<Tag enumID="184" name="CARDTEXT" type="LocString">
<enUS>Leokk is granting this minion +1 Attack.</enUS>
</Tag>
<Tag enumID="183" name="CARD_SET" type="Int" value="1635"/>
<Tag enumID="199" name="CLASS" type="Int" value="3"/>
<Tag enumID="202" name="CARDTYPE" type="Int" value="6"/>
<Tag enumID="330" name="ENCHANTMENT_BIRTH_VISUAL" type="Int" value="1"/>
だが?CARD_SETの番号が変更されたかな?1635は、一応入れてみたのだが。