zoukankan      html  css  js  c++  java
  • 攻击伤害封装

    /// <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;
    }

  • 相关阅读:
    怎样从基本原理解释复制型共享账本的价值
    BZOJ3223:文艺平衡树——超详细题解
    BZOJ3223:文艺平衡树——超详细题解
    BZOJ3223:文艺平衡树——超详细题解
    BZOJ3223:文艺平衡树——超详细题解
    my stackoverflow
    my stackoverflow
    my stackoverflow
    my stackoverflow
    STM32 Flash 永久用户数据空间
  • 原文地址:https://www.cnblogs.com/Asuphy/p/3941214.html
Copyright © 2011-2022 走看看