示例#1
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.F))
     {
         AttackPtoE temp = new AttackPtoE(3);
         temp.AddCtrl(CtrlPtoE.Stun, 6);
         enemy.GainAttack(temp);
     }
     if (Input.GetKeyDown(KeyCode.R))
     {
         enemy.GetDamage(2);
     }
 }
示例#2
0
    public AttackPtoE CalcAttack(int skillNum, Enemy enemy)
    {
        if (info.commands.Length > skillNum)
        {
            AttackPtoE attack = new AttackPtoE(GetDamage(skillNum));

            //Apply Ctrl effect
            if (this is IAtkCtrl)
            {
                ((IAtkCtrl)this).AtkCtrl(attack, skillNum, enemy);
            }
            foreach (Addon ad in addons)
            {
                if (ad is IAtkCtrl)
                {
                    ((IAtkCtrl)this).AtkCtrl(attack, skillNum, enemy);
                }
            }

            //Apply DmgAdd effect
            if (this is IAtkDmgAdd)
            {
                attack.damage += ((IAtkDmgAdd)this).AtkDmgAdd(attack, skillNum, enemy);
            }
            foreach (Addon ad in addons)
            {
                if (ad is IAtkDmgAdd)
                {
                    attack.damage += ((IAtkDmgAdd)ad).AtkDmgAdd(attack, skillNum, enemy);
                }
            }

            //Apply DmgMult effect
            if (this is IAtkDmgMult)
            {
                ((IAtkDmgMult)this).AtkDmgMult(attack, skillNum, enemy);
            }
            foreach (Addon ad in addons)
            {
                if (ad is IAtkDmgMult)
                {
                    ((IAtkDmgMult)ad).AtkDmgMult(attack, skillNum, enemy);
                }
            }
            return(attack);
        }
        return(null);
    }
示例#3
0
    public Dictionary <CtrlPtoE, bool> ApplyCtrl(AttackPtoE attack)
    {
        Dictionary <CtrlPtoE, bool> result = new Dictionary <CtrlPtoE, bool>();

        foreach (KeyValuePair <CtrlPtoE, float> ctrl in attack.ctrls)
        {
            switch (ctrl.Key)
            {
            case CtrlPtoE.Stun:
                result.Add(ctrl.Key, ApplyStun(ctrl.Value));
                break;

            case CtrlPtoE.Freeze:
                result.Add(ctrl.Key, ApplyFreeze(ctrl.Value));
                break;

            case CtrlPtoE.Burn:
                result.Add(ctrl.Key, ApplyBurn((int)ctrl.Value));
                break;
            }
        }
        return(result);
    }
示例#4
0
 public void GainAttack(AttackPtoE attack)
 {
     GetDamage(attack.damage);
     enemyCtrl.ApplyCtrl(attack);
 }