Ejemplo n.º 1
0
        //创建一个技能特效,此时还没有对资源进行加载
        public EffectBase CreateEffect(SkillBase owner, BattleEffectType type, string name, string lib)
        {
            EffectBase effect = null;

            switch (type)
            {
            case BattleEffectType.E_BATTLE_EFFECT_TYPE_SEQUENCE:
                effect = new EffectSequence(owner, name, lib);
                break;

            case BattleEffectType.E_BATTLE_EFFECT_TYPE_PARTICLE:
                effect = new EffectParticle(owner, name, lib);
                break;

            default:
                break;
            }

            if (effect == null)
            {
                Debug.LogError("CreateEffect failed!");
            }

            if (!effect.Init())
            {
                Debug.LogError("load effect failed!");
            }

            m_EffectList.Add(effect);

            return(effect);
        }
Ejemplo n.º 2
0
 public MoveArchetype(string name, MoveType moveType, ElementType elementType,
     int maxPp, int power, int accuracy, DurationType durationType, int turnDuration, BattleEffectStageEffect battleEffectStageEffect, 
     EffectType effectType, EffectStart effectStart, MoveTarget moveTarget, 
     BattleEffectType battleEffectType, string battleEffectText)
 {
     Name = name;
     MoveType = moveType;
     ElementType = elementType;
     MaxPP = maxPp;
     Power = power;
     Accuracy = accuracy;
     TurnDuration = turnDuration;
     BattleEffectStageEffect = battleEffectStageEffect;
     EffectType = effectType;
     EffectStart = effectStart;
     MoveTarget = moveTarget;
     DurationType = durationType;
     BattleEffectType = battleEffectType;
     BattleEffectText = battleEffectText;
 }
Ejemplo n.º 3
0
 protected virtual IEnumerable <BattleEffect> Attacking(CombatUnit target, AttackType attackType, BattleEffectType effectType)
 {
     return(Enumerable.Empty <BattleEffect>());
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 攻击计算
        /// </summary>
        /// <param name="target">攻击目标</param>
        /// <param name="attackType">攻击类型(普通、战法、策略)</param>
        /// <param name="effectType">攻击效果(闪避、格挡、重击)</param>
        /// <param name="damageRatio">伤害系数</param>
        /// <returns></returns>
        public IEnumerable <BattleEffect> DoAttack(CombatUnit target, AttackType attackType, BattleEffectType effectType, float damageRatio)
        {
            var ratio = (int)effectType;

            var damage = this._attack[attackType] - target._defence[attackType] + this.Level * 50;

            if (damage < 1)
            {
                damage = 1;
            }
            damage = (int)(damage * ratio * 0.5 * damageRatio);

            target.Health -= damage;

            var effect = new BattleEffect {
                UnitSID = target.BattleID, PlusHP = -damage, Type = effectType
            };

            return(Enumerable.Repeat(effect, 1)
                   .Concat(target.UnderAttack(effect)));
        }
Ejemplo n.º 5
0
        protected override IEnumerable <BattleEffect> Attacking(CombatUnit target, AttackType attackType, BattleEffectType effectType)
        {
            if (effectType != BattleEffectType.Dodge && attackType == AttackType.Normal)
            {
                Charge += CHARGE_PLUS;
                yield return(new BattleEffect {
                    UnitSID = this.BattleID, PlusMP = CHARGE_PLUS
                });
            }

            foreach (var e in base.Attacking(target, attackType, effectType))
            {
                yield return(e);
            }
        }