Esempio n. 1
0
        public override ACT.ECombatResult Combat(ACT.IActUnit target, ACT.ISkillItem skillItem)
        {
            int  tmpDamage   = 0;
            int  tmpDpDamage = 0;
            Unit tmpTarget   = target as Unit;

            ACT.ECombatResult tmpResult = ACT.ECombatResult.ECR_Normal;

            if (tmpTarget.ActStatus.ActionState == ActData.EActionState.Defense)
            {
                tmpResult = ACT.ECombatResult.ECR_Block;
            }
            else
            {
                tmpResult = MathUtility.Combat(this, tmpTarget, out tmpDamage);
            }

            if (ACT.ECombatResult.ECR_Block != tmpResult)
            {
                if (null != skillItem)
                {
                    int tmpDamageCoff = (skillItem as SkillItem).SkillAttrBase.DamageCoff;
                    int tmpDamageBase = (skillItem as SkillItem).SkillAttrBase.DamageBase;
                    // 技能的影响。
                    tmpDamage = (int)(tmpDamage * tmpDamageCoff * 0.01f + tmpDamageBase);

                    int tmpDpDamageCoff = (skillItem as SkillItem).SkillAttrBase.DpDamageCoff;
                    tmpDpDamage = (int)(tmpTarget.GetAttr(EPA.DpAttack) * tmpDpDamageCoff * 0.01f);
                }

                // damage should not be 0.
                tmpDamage = Mathf.Max(tmpDamage, 1);

                tmpTarget.Hurt(this, tmpDamage, tmpDpDamage, tmpResult);
            }
            else
            {
                target.Combat(this, target.ActStatus.SkillItem);
                Game.CameraActionMgr.StartAction(101);
            }

            return(tmpResult);
        }
Esempio n. 2
0
 public void OnHurt(ACT.IActUnit target)
 {
 }
Esempio n. 3
0
 public void OnHitTarget(ACT.IActUnit target)
 {
 }