新开通了博客园,目前空空如也,想要填充些什么,所以决定把之前完全由自己原创的内容移植一下。
可能这张卡没什么强度,不过我单纯写来炫技玩玩的。或许可能对以后有什么借鉴意义的(或许吧)。
卡牌信息
传染孢子 BT_731
Infectious Sporeling
在对随从造成伤害后,将其变为传染孢子。
探索历程
看到这张牌我首先想到三国杀的伤害来源。
仔细考虑了一下,效果应该是类似剧毒的一种东西。所以搜索了一下剧毒相关的地方。
在 Playfield
中 minionAttacksMinion
方法里找到和剧毒相关的语句。
其中上面有条注释:
触发攻击者+防御者的中毒效果(即使他们死于攻击/防御)
但传染孢子与之不同的是,如果受到传染孢子的伤害导致死亡后不会变成传染孢子。所以在这里还要额外判断一下被传染孢子攻击/攻击传染孢子后剩余血量是否大于0。看起来需要测试下炉石里如何判定传染孢子。
为了严谨一些,我找旅店老板做了测试。
测试结果如下:
A攻击B
孢子A | 孢子B | A结果 | B结果 |
---|---|---|---|
1-1 | 1-1 | 死亡 | 死亡 |
1-2 | 1-1 | 新孢子 | 死亡 |
1-1 | 1-2 | 死亡 | 新孢子 |
1-2 | 1-2 | 1-1 | 新孢子 |
普通A | 孢子B | A结果 | B结果 |
---|---|---|---|
1-1 | 1-1 | 死亡 | 死亡 |
1-2 | 1-1 | 新孢子 | 死亡 |
1-1 | 1-2 | 死亡 | 1-1 |
1-2 | 1-2 | 新孢子 | 1-1 |
孢子A | 普通B | A结果 | B结果 |
---|---|---|---|
1-1 | 1-1 | 死亡 | 死亡 |
1-2 | 1-1 | 1-1 | 死亡 |
1-1 | 1-2 | 死亡 | 新孢子 |
1-2 | 1-2 | 1-1 | 新孢子 |
于是推测出判定顺序如下:
孢子进行攻击:(其中在B是否为孢子的“是”分支后的流程是和下面的孢子受到攻击一样的流程)
孢子受到攻击:
准备就绪后,根据流程图就容易写代码了。代码如下:
位置:两条剧毒语句之后
if (defenderGotDmg && attacker.name == CardDB.cardName.infectioussporeling && !defender.isHero)
{
if (defender.Hp > 0)
{
this.minionTransform(defender, CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.BT_731));
}
else
{
if (attackerGotDmg && defender.name == CardDB.cardName.infectioussporeling)
{
if (attacker.Hp > 0)
{
this.minionTransform(attacker, CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.BT_731));
}
}
}
}
else
{
if (attackerGotDmg && defender.name == CardDB.cardName.infectioussporeling && !attacker.isHero)
{
if (attacker.Hp > 0)
{
this.minionTransform(attacker, CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.BT_731));
}
}
}
写完之后谁又还记得我借鉴了剧毒呢。