public override void OnStart(EffectInstance instance, EntityEffector effector) { //effector.Entity.GetComponent<EventBus>().Dispatch("Hit"); var applyDamage = DPS ? damage * Time.deltaTime : damage; effector.Entity.GetComponent <LifeEntity>()?.HP_Decrease(applyDamage * instance.Strength); }
public override void OnEnd(EffectInstance instance, EntityEffector effector) { if (effector.GetEffect <PhysicalEffect>() == null) { effector.Entity.GetComponent <MovableEntity>().PhysicalControl = false; } }
public override void OnStart(EffectInstance instance, EntityEffector effector) { var dir = instance.GetTrigger <ImpactData>().Position - effector.Entity.transform.position; var velocity = dir.normalized * Speed; effector.Entity.GetComponent <MovableEntity>().ForceMove(velocity); }
public override GameObject InstantiatePrefab(EffectInstance instance, EntityEffector effector) { var obj = base.InstantiatePrefab(instance, effector); effector.Entity.Attach(obj, Offset); return(obj); }
public virtual GameObject InstantiatePrefab(EffectInstance instance, EntityEffector effector) { var obj = Utility.Instantiate(EffectPrefab, effector.Entity.gameObject.scene); obj.transform.position = effector.Entity.transform.position; return(obj); }
public override void OnStart(EffectInstance instance, EntityEffector effector) { if (instance.Strength > 0) { effector.Entity.GetComponent <MovableEntity>().PhysicalControl = true; } }
public override void OnStart(EffectInstance instance, EntityEffector effector) { base.OnStart(instance, effector); var movable = effector.Entity.GetComponent <MovableEntity>(); movable.PhysicalControl = true; movable.AddForce(Drag * -MathUtility.SignInt(movable.velocity.x) * Vector2.right, ForceMode2D.Force); }
public override void OnEnd(EffectInstance instance, EntityEffector effector) { base.OnEnd(instance, effector); if (instance.GameObjectInstance) { DestroyInstance(instance.GameObjectInstance, instance, effector); } }
public override void OnUpdate(EffectInstance instance, EntityEffector effector) { for (var i = 0; i < effector.Effects.Count; i++) { if (effector.Effects[i].GetType() == Target.GetType()) { effector.Effects[i].Strength = 0; effector.RemoveEffect(effector.Effects[i].Effect); } } }
public override void OnUpdate(EffectInstance instance, EntityEffector effector) { var effects = effector.GetEffects <Damage>(); foreach (var effect in effects) { var damage = effect.Effect as Damage; if (damage.ElementProperty == Restrain) { effect.Strength *= RestrainFactor; } else if (damage.ElementProperty == Weakness) { effect.Strength *= WeaknessFactor; } } }
public override void OnUpdate(EffectInstance instance, EntityEffector effector) { if ((DefenseType & DefenseType.Bullet) == DefenseType.Bullet) { var damage = effector.GetEffect <Damage>(); if (damage != null) { if (ShieldDefenseEffect) { var effect = Instantiate(ShieldDefenseEffect); effect.transform.localScale = new Vector3(MathUtility.SignInt((damage.GetTrigger <ImpactData>().Position - effector.Entity.transform.position).x), 1, 1); effector.Entity.Attach(effect, Offset); } damage.Strength = 0; } } }
public override void OnUpdate(EffectInstance instance, EntityEffector effector) { var speed = Distance / Duration; var endTime = Time.time + Duration; var movableEntity = effector.Entity.GetComponent <MovableEntity>(); var damageBody = effector.Entity.GetComponentsInChildren <Collider2D>().Where(collider => collider.gameObject.layer == 14).FirstOrDefault(); var center = Vector2.zero; if (damageBody is CapsuleCollider2D) { center = (damageBody as CapsuleCollider2D).offset; } var dir = effector.Entity.transform.position.ToVector2() + center - instance.Triggers.GetTrigger <ImpactData>().Position.ToVector2(); dir = dir.normalized; effector.Entity.GetComponent <EventBus>().Dispatch("KnockBack"); movableEntity.ForceMove(dir * speed); }
public virtual EffectInstance Merge(EffectInstance originalInstance, EffectInstance instance, EntityEffector effector) { originalInstance.Duration += instance.Duration; originalInstance.Strength += instance.Strength; originalInstance.Triggers.AddRange(instance.Triggers); return(originalInstance); }
IEnumerator EffectCoroutine(EffectInstance instance, EntityEffector effector) { // Setup force var movable = effector.Entity.GetComponent <MovableEntity>(); var impact = instance.GetTrigger <ImpactData>(); if (impact is null) { yield break; } var dir = Vector2.zero; switch (ForceType) { case ForceType.Constant: dir = Impulse.normalized; break; case ForceType.Divergent: dir = effector.Entity.transform.position - impact.Position; break; case ForceType.ImpactDirection: dir = impact.Direction; break; } if (ConstraintX) { dir.x = 0; } if (ConstraintY) { dir.y = 0; } dir = dir.normalized; var f = dir * Impulse.magnitude * instance.Strength; movable.PhysicalControl = true; if (ForceApplyMode == ForceApplyMode.AddImpulse) { movable.AddForce(f, ForceMode2D.Impulse); } else if (ForceApplyMode == ForceApplyMode.ModifyMomentum) { movable.SetMomentum(f); } foreach (var t in Utility.Timer(Duration)) { movable.PhysicalControl = true; yield return(null); } do { movable.PhysicalControl = true; yield return(null); }while (movable.EnableGravity && !movable.OnGround); if (effector.GetEffect <PhysicalEffect>() == null) { movable.PhysicalControl = false; } effector.RemoveEffect(instance.Effect); }
public override void OnUpdate(EffectInstance instance, EntityEffector effector) { var impact = instance.GetTrigger <ImpactData>(); }
public override EffectInstance Merge(EffectInstance originalInstance, EffectInstance instance, EntityEffector effector) { return(originalInstance); }
public override void OnStart(EffectInstance instance, EntityEffector effector) { base.OnStart(instance, effector); instance.EffectCoroutine = effector.StartCoroutine(EffectCoroutine(instance, effector)); }
public override void DestroyInstance(GameObject obj, EffectInstance instance, EntityEffector effector) { obj.GetComponent <Animator>().SetTrigger(AnimEffectExit); }
public override void OnEnd(EffectInstance instance, EntityEffector effector) { }
public virtual void DestroyInstance(GameObject obj, EffectInstance instance, EntityEffector effector) { Destroy(obj); }
public override void OnStart(EffectInstance instance, EntityEffector effector) { instance.Duration *= instance.Strength; instance.lockID = effector.Entity.GetComponent <EntityController>().Lock(effector.Entity.GetComponent <EntityController>().StunState); }
public virtual void OnEnd(EffectInstance instance, EntityEffector effector) { }
public override void OnStart(EffectInstance instance, EntityEffector effector) { //effector.Entity.GetComponent<EventBus>().Dispatch(EntityController.EventHit); base.OnStart(instance, effector); }
public virtual void OnUpdate(EffectInstance instance, EntityEffector effector) { }
public override EffectInstance Merge(EffectInstance originalInstance, EffectInstance instance, EntityEffector effector) { originalInstance.Triggers = originalInstance.Strength < instance.Strength ? instance.Triggers : originalInstance.Triggers; originalInstance.Strength = Mathf.Max(originalInstance.Strength, instance.Strength); originalInstance.Duration = Mathf.Max(originalInstance.Duration, instance.Duration); return(originalInstance); }
public override void OnEnd(EffectInstance instance, EntityEffector effector) { effector.Entity.GetComponent <EntityController>().UnLock(); }