//创建一个技能特效,此时还没有对资源进行加载 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); }
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; }
protected virtual IEnumerable <BattleEffect> Attacking(CombatUnit target, AttackType attackType, BattleEffectType effectType) { return(Enumerable.Empty <BattleEffect>()); }
/// <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))); }
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); } }