1.超殺機(jī)制的識(shí)別
1.silverfish_HB.cs
getMinions()方法下:
m.Overkill= (entitiy.GetTag(GAME_TAG.OVERKILL) == 0) ? false : true;
在if (TritonHs.DoWeHaveWeapon)下添加
ownWeapon.Overkill = (weapon.GetTag(GAME_TAG.OVERKILL) == 1) ? true : false;
同理在if (TritonHs.DoesEnemyHasWeapon)下添加
enemyWeapon.Overkill = (weapon.GetTag(GAME_TAG.OVERKILL) == 1) ? true : false;
2.Minion.cs
Minion類中添加Overkill屬性:
private bool _overkill = false;
public bool Overkill { get => _overkill; set => _overkill = value; }
public Minion(Minion m)方法下:
this.Overkill = m.Overkill;// 超殺
public void setMinionToMinion(Minion m)方法下:
this.Overkill = m.Overkill;// 超殺
public void becomeSilence(Playfield p)方法:
Overkill = false;
3.CardDB.cs
同Minion.cs
如果編譯失敗,屬性初始值應(yīng)寫為
private bool _overkill = false;
/// <summary>
/// 超殺
/// </summary>
public bool Overkill
{
get { return _overkill; }
set { _overkill = value; }
}
構(gòu)造函數(shù)中讀取carddefs的地方:
case 923: c.Overkill = value == 1; break;//overkill
2.虛函數(shù)的增加
SimTemplate.cs:
/// <summary>
/// 超殺效果(武器)
/// </summary>
/// <param name="p">場(chǎng)面</param>
/// <param name="w">武器</param>
public virtual void OnOverkill(Playfield p, Weapon w)
{
return;
}
/// <summary>
/// 超殺效果(隨從)
/// </summary>
/// <param name="p">場(chǎng)面</param>
/// <param name="m">具有超殺效果的隨從</param>
public virtual void OnOverkill(Playfield p, Minion m)
{
return;
}
3.超殺機(jī)制的實(shí)現(xiàn)
Playfiled.cs:
在minionAttacksMinion方法下:
在//defender gets dmg下添加
bool defenderHasDivineshild = defender.divineshild;//攻擊前,被攻擊隨從是否具有圣盾
在
if (defender.isHero)//target is enemy hero
{
doDmgTriggers();
return;
}
下添加
#region 隨從或武器攻擊后觸發(fā)超殺效果
if (oldHp < attackerAngr && !defenderHasDivineshild)
{
if (!attacker.isHero)
{
attacker.handcard.card.sim_card.OnOverkill(this, attacker);
}
else
{
Weapon weapon = attacker.own ? this.ownWeapon : this.enemyWeapon;
weapon.card.sim_card.OnOverkill(this, weapon);
}
}
#endregion
解釋一下定義defenderHasDivineshild的原因:超殺在攻擊傷害結(jié)算之后進(jìn)行結(jié)算,此時(shí)原有圣盾效果已經(jīng)失效,所以必須在攻擊前定義
轉(zhuǎn)載來(lái)源https://www.cnblogs.com/dch0319/p/13544577.html
僅供個(gè)人研究學(xué)習(xí)之用