示例#1
0
    /// <summary>
    /// 战斗过程中, 给battleunit添加伤害(伤害值可正可负, 负值表示增血).
    /// </summary>
    /// <returns>单位是否依然活着.</returns>
    public bool AddDamage(DamageInfo damage, AttackerAttr attackerAttr)
    {
        if (GetPropertyValue((int)PropertyTypeEnum.PropertyTypeHP) + damage.Value <= 0)
        {
            FatalStrikeEventArg fatalStrikeArg = new FatalStrikeEventArg();

            // 致命一击随机事件.
            ApplyRandEvent(null, RandEventTriggerType.OnFatalStrike, fatalStrikeArg);

            if (fatalStrikeArg.BlockThisDamage)
            {
                return(true);
            }
        }

        ModifyPropertyValue((int)PropertyTypeEnum.PropertyTypeHP, damage.Value);

        if (GetHP() <= 0)
        {
            Die(attackerAttr, damage.DamageType);
            //return false;
        }

        onDamage(damage, attackerAttr);
        //return true;
        return(isAlive());
    }
示例#2
0
    public override bool RunScript(RandEventArg argument)
    {
        FatalStrikeEventArg fatalStrikeArg = argument as FatalStrikeEventArg;

        fatalStrikeArg.BlockThisDamage = true;

        int hpMax   = mOwner.GetPropertyValue((int)PropertyTypeEnum.PropertyTypeMaxHP);
        int manaMax = mOwner.GetPropertyValue((int)PropertyTypeEnum.PropertyTypeMaxMana);

        // 回满血量和魔量.
        mOwner.ModifyPropertyValue((int)PropertyTypeEnum.PropertyTypeHP, hpMax);
        mOwner.ModifyPropertyValue((int)PropertyTypeEnum.PropertyTypeMana, manaMax);

        // 一次重生之后, 移除buff.
        return(false);
    }