休眠:双方玩家都无法触及。
流放:在手牌中的最左或最右侧使用时触发的额外效果。
1. silverfish_HB.cs
getMinions
在 silverfish_HB.cs 的 getMinions 函数加入对 dormant 数据的读取
m.dormant = entitiy.GetTag(GAME_TAG.DORMANT);
if (m.dormant > 0)
{
m.untouchable = true;
bool flag = false;
foreach (var en in entitiy.AttachedCards)
{
if (en.Id == "BT_737e")
{
m.dormant = en.GetTag(GAME_TAG.SCORE_VALUE_1) - en.GetTag(GAME_TAG.SCORE_VALUE_2);
flag = true;
break;
}
}
if (!flag) Helpfunctions.Instance.ErrorLog("未能读取到休眠信息");
}
2.SimTemplate.cs
public virtual void onOutcast(Playfield p, bool own)
{
return;
}
public virtual void onOutcast(Playfield p, Minion m)
{
return;
}
public virtual void onDormantEndsTrigger(Playfield p, Minion m)
{
return;
}
这里解释一下,第一个 onOutcast 代表法术牌的流放事件
第二个 onOutcast 代表随从牌的流放事件,类似于战吼
onDormantEndsTrigger 指代随从唤醒事件。
3. Playfield.cs
搜索代码
public void playACard(Handmanager.Handcard hc, Minion target, int position, int choice, int penality)
函数下搜索
c.sim_card.onCardPlay(this, true, target, choice);
在这一行下添加
//position从1开始,可以自行测试
if (hc.position == 1 || hc.position == this.owncards.Count)
{
c.sim_card.onOutcast(this, true);
}
搜索代码
public void placeAmobSomewhere(Handmanager.Handcard hc, int choice, int zonepos)
函数下搜索
public void placeAmobSomewhere(Handmanager.Handcard hc, int choice, int zonepos)
在这一行下添加
if (hc.position == 1 || hc.position == this.owncards.Count)
{
m.handcard.card.sim_card.onOutcast(this, m);
}
函数下搜索
public void triggerStartTurn(bool ownturn)
函数下搜索
m.updateReadyness();
在这一行下添加
if (m.dormant > 0 && ownturn == m.own)
{
m.dormant--;
if (m.dormant == 0)
{
m.handcard.card.sim_card.onDormantEndsTrigger(this, m);
}
}
到此修改结束,如果有卡要休眠则使用public override void onDormantEndsTrigger函数
例:
Sim_BT_004.cs
namespace HREngine.Bots
{
class Sim_BT_004 : SimTemplate //* 被禁锢的眼魔 Imprisoned Observer
{
//<b>Dormant</b> for 2 turns.When this awakens,deal 2 damage to allenemy minions.
//<b>休眠</b>两回合。唤醒时,对所有敌方随从造成2点伤害。
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
p.allMinionOfASideGetDamage(!m.own, 2);
}
}
}
Sim_BT_009.cs
namespace HREngine.Bots
{
class Sim_BT_009 : SimTemplate //* 被禁锢的阳鳃鱼人 Imprisoned Sungill
{
//<b>Dormant</b> for 2 turns.When this awakens, summon two 1/1Murlocs.
//<b>休眠</b>两回合。唤醒时,召唤两个1/1的鱼人。
CardDB.Card kid = CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.BT_009t);
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
p.callKid(kid, m.zonepos, m.own);
p.callKid(kid, m.zonepos + 1, m.own);
}
}
}
Sim_BT_121.cs
namespace HREngine.Bots
{
class Sim_BT_121 : SimTemplate //* 被禁锢的甘尔葛 Imprisoned Gan'arg
{
//<b>Dormant</b> for 2 turns.When this awakens,equip a 3/2 Axe.
//<b>休眠</b>两回合。唤醒时,装备一把3/2的斧子。
CardDB.Card weapon = CardDB.Instance.getCardDataFromID(CardDB.cardIDEnum.CS2_106);
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
p.equipWeapon(weapon, m.own);
}
}
}
Sim_BT_127.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace HREngine.Bots
{
class Sim_BT_127 : SimTemplate //* 被禁锢的萨特 Imprisoned Satyr
{
//[x]<b>Dormant</b> for 2 turns.When this awakens, reducethe Cost of a random minionin your hand by (5).
//<b>休眠</b>两回合。唤醒时,使你手牌中的随机一张随从牌的法力值消耗减少(5)点。
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
if (m.own)
{
foreach (Handmanager.Handcard hc in p.owncards)
{
hc.manacost = Math.Max(0, hc.manacost - 5);
}
}
}
}
}
Sim_BT_211.cs
namespace HREngine.Bots
{
class Sim_BT_211 : SimTemplate //* 被禁锢的魔喉 Imprisoned Felmaw
{
//[x]<b>Dormant</b> for 2 turns.When this awakens, attack a random enemy.
//<b>休眠</b>两回合。唤醒时,随机攻击一个敌人。
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
Minion sm = p.searchRandomMinion(m.own ? p.enemyMinions : p.ownMinions, searchmode.searchHighestAttack);
if (sm == null) sm = (m.own) ? p.enemyHero : p.ownHero;
p.minionAttacksMinion(m, sm);
}
}
}
Sim_BT_305.cs
namespace HREngine.Bots
{
class Sim_BT_305 : SimTemplate //* 被禁锢的拾荒小鬼 Imprisoned Scrap Imp
{
//<b>Dormant</b> for 2 turns.When this awakens,give all minions in your hand +2/+2.
//<b>休眠</b>两回合。唤醒时,使你手牌中的所有随从牌获得+2/+2。
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
if (m.own)
{
foreach (Handmanager.Handcard hc in p.owncards)
{
hc.addattack += 2;
hc.addHp += 2;
}
}
}
}
}
Sim_BT_934.cs
namespace HREngine.Bots
{
class Sim_BT_934 : SimTemplate //* 被禁锢的安塔恩 Imprisoned Antaen
{
//[x]<b>Dormant</b> for 2 turns.When this awakens, deal10 damage randomly splitamong all enemies.
//<b>休眠</b>两回合。唤醒时,造成10点伤害,随机分配到所有敌人身上。
public override void onDormantEndsTrigger(Playfield p, Minion m)
{
p.allCharsOfASideGetRandomDamage(!m.own, 10);
}
}
}
转载来源http://wjh-blog.test.upcdn.net/blog/index.php/archives/18/
仅供个人研究学习之用