public static void AddProperty(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser) { var effect = e as AddPropertyEffect; effectTarget.ModifyValue(effect.property, effect.addType, effect.addValue); if (effect.revertType == RevertType.ReleaserDeath) { releaser.RevertProperty(effectTarget, effect.property, effect.addType, effect.addValue); } }
public static void AddBuff(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser) { var effect = e as AddBufEffect; var per = releaser.Controllor.Perception as BattlePerception; per.CreateReleaser( effect.buffMagicKey, new ReleaseAtTarget(releaser.ReleaserTarget.Releaser, effectTarget), ReleaserType.Buff ); }
public ISerializerable CreateReleaser(MagicReleaser mReleaser) { var createNotify = new Proto.Notify_CreateReleaser { Index = mReleaser.Index, ReleaserIndex = mReleaser.ReleaserTarget.Releaser.Index, TargetIndex = mReleaser.ReleaserTarget.ReleaserTarget.Index, MagicKey = mReleaser.Magic.key }; return(createNotify); }
public void ReleaseMagic(MagicData magic) { Resources.UnloadUnusedAssets(); if (currentReleaser != null) { GObject.Destory(currentReleaser); } var per = curState.Perception as BattlePerception; this.currentReleaser = per.CreateReleaser(magic, new GameLogic.Game.LayoutLogics.ReleaseAtTarget(this.releaser, this.target), ReleaserType.Magic); }
public static void Cure(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser) { var per = releaser.Controllor.Perception as BattlePerception; var effect = e as CureEffect; int cure = -1; switch (effect.valueType) { case ValueOf.FixedValue: cure = effect.value; break; case ValueOf.NormalAttack: cure = BattleAlgorithm.CalNormalDamage( releaser.ReleaserTarget.Releaser); break; } if (cure > 0) { per.CharacterAddHP(effectTarget, cure); } }
public static void NormalDamage(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser) { var per = releaser.Controllor.Perception as BattlePerception; var effect = e as NormalDamageEffect; int damage = -1; switch (effect.valueOf) { case ValueOf.FixedValue: damage = effect.DamageValue; break; case ValueOf.NormalAttack: damage = BattleAlgorithm.CalFinalDamage( BattleAlgorithm.CalNormalDamage(releaser.ReleaserTarget.Releaser), releaser.ReleaserTarget.Releaser.TDamage, effectTarget.TDefance); break; } var result = BattleAlgorithm .GetDamageResult(damage, releaser.ReleaserTarget.Releaser.TDamage, effectTarget); if (releaser.ReleaserTarget.Releaser.TDamage != Proto.DamageType.Magic) { if (!result.IsMissed) { var cureHP = (int)(result.Damage * releaser.ReleaserTarget.Releaser[Proto.HeroPropertyType.SuckingRate].FinalValue / 10000f); if (cureHP > 0) { per.CharacterAddHP(releaser.ReleaserTarget.Releaser, cureHP); } } } per.ProcessDamage(releaser.ReleaserTarget.Releaser, effectTarget, result); }
internal IParticlePlayer CreateParticlePlayer(MagicReleaser relaser, ParticleLayout layout) { var p = View.CreateParticlePlayer(relaser.View, layout); return(p); }
/// <summary> /// Effects the active. /// </summary> /// <param name="effectTarget">成熟效果的目标</param> /// <param name="effect">效果类型</param> /// <param name="releaser">魔法释放者</param> public static void EffectActive(BattleCharacter effectTarget, EffectBase effect, MagicReleaser releaser) { MethodInfo handle; if (_handlers.TryGetValue(effect.GetType(), out handle)) { handle.Invoke(null, new object[] { effectTarget, effect, releaser }); } else { throw new Exception(string.Format("Effect [{0}] no handler!!!", effect.GetType())); } }
public static void ModifyLockEffect(BattleCharacter effectTarget, EffectBase e, MagicReleaser releaser) { var effect = e as ModifyLockEffect; effectTarget.Lock.Lock(effect.lockType); if (effect.revertType == RevertType.ReleaserDeath) { releaser.RevertLock(effectTarget, effect.lockType); } }