攻擊傷害封裝

來源:互聯網
上載者:User

標籤:使用   ar   log   amp   new   ad   ef   c   type   

/// <summary>
/// 單位傷害
/// </summary>
/// <param name="unit">被攻擊者</param>
/// <param name="skill">使用技能</param>
public static int unitDamage(Unit unit,Skill skill,int damage=-1,Deleg deleg=null)
{
Unit owner = skill.owner;
unit.foe = owner;
owner.enemy = unit;
dodge = unit.dodge ;
crit = owner.crit;
block = unit.block;
owner.notify(PropertyType.ATTACK_ACT);
unit.notify(PropertyType.ATTACKED_ACT);
bool bDodge = GameUtility.WanRandom()< dodge;

DefendData defendData = new DefendData();
defendData.targetId = unit.guid;
defendData.skill = skill;
if (bDodge)
{
defendData.defendType = DefendType.Dodge;
}
else
{
bool bCrit = GameUtility.WanRandom() < crit;
bool bBlock = GameUtility.WanRandom() < block;
if (damage >= 0)
{
owner.fightingProperty.setValue(PropertyType.DAMAGE, damage);
}
else
{
int a=owner.fightingProperty.getDamage(unit);
}

if (bCrit && bBlock)
{
defendData.defendType = DefendType.CritAndBlock;
owner.critDamage();
owner.blockDamage();
}
else
{
if (bCrit)
{
defendData.defendType = DefendType.Crit;
owner.critDamage();
}
else
{
defendData.defendType = DefendType.Block;
owner.blockDamage();
}

}
if (deleg!=null)
{
deleg();
}

defendData.changeHp = -owner.fightingProperty.getValue(PropertyType.DAMAGE);
unit.VaryHP(defendData.changeHp);
defendData.dead = unit.IsDead();
}
LayerMessager.LogicPush(defendData);
return defendData.changeHp;
}

攻擊傷害封裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.