Beispiel #1
0
    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);
    }
Beispiel #2
0
 public override void OnEnd(EffectInstance instance, EntityEffector effector)
 {
     if (effector.GetEffect <PhysicalEffect>() == null)
     {
         effector.Entity.GetComponent <MovableEntity>().PhysicalControl = false;
     }
 }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    public override GameObject InstantiatePrefab(EffectInstance instance, EntityEffector effector)
    {
        var obj = base.InstantiatePrefab(instance, effector);

        effector.Entity.Attach(obj, Offset);
        return(obj);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
 public override void OnStart(EffectInstance instance, EntityEffector effector)
 {
     if (instance.Strength > 0)
     {
         effector.Entity.GetComponent <MovableEntity>().PhysicalControl = true;
     }
 }
Beispiel #7
0
    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);
    }
Beispiel #8
0
 public override void OnEnd(EffectInstance instance, EntityEffector effector)
 {
     base.OnEnd(instance, effector);
     if (instance.GameObjectInstance)
     {
         DestroyInstance(instance.GameObjectInstance, instance, effector);
     }
 }
Beispiel #9
0
 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);
         }
     }
 }
Beispiel #10
0
    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;
            }
        }
    }
Beispiel #11
0
 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;
         }
     }
 }
Beispiel #12
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);
    }
Beispiel #13
0
 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);
 }
Beispiel #14
0
    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);
    }
Beispiel #15
0
 public override void OnUpdate(EffectInstance instance, EntityEffector effector)
 {
     var impact = instance.GetTrigger <ImpactData>();
 }
Beispiel #16
0
 public override EffectInstance Merge(EffectInstance originalInstance, EffectInstance instance, EntityEffector effector)
 {
     return(originalInstance);
 }
Beispiel #17
0
 public override void OnStart(EffectInstance instance, EntityEffector effector)
 {
     base.OnStart(instance, effector);
     instance.EffectCoroutine = effector.StartCoroutine(EffectCoroutine(instance, effector));
 }
Beispiel #18
0
 public override void DestroyInstance(GameObject obj, EffectInstance instance, EntityEffector effector)
 {
     obj.GetComponent <Animator>().SetTrigger(AnimEffectExit);
 }
Beispiel #19
0
 public override void OnEnd(EffectInstance instance, EntityEffector effector)
 {
 }
Beispiel #20
0
 public virtual void DestroyInstance(GameObject obj, EffectInstance instance, EntityEffector effector)
 {
     Destroy(obj);
 }
Beispiel #21
0
 public override void OnStart(EffectInstance instance, EntityEffector effector)
 {
     instance.Duration *= instance.Strength;
     instance.lockID    = effector.Entity.GetComponent <EntityController>().Lock(effector.Entity.GetComponent <EntityController>().StunState);
 }
Beispiel #22
0
 public virtual void OnEnd(EffectInstance instance, EntityEffector effector)
 {
 }
Beispiel #23
0
 public override void OnStart(EffectInstance instance, EntityEffector effector)
 {
     //effector.Entity.GetComponent<EventBus>().Dispatch(EntityController.EventHit);
     base.OnStart(instance, effector);
 }
Beispiel #24
0
 public virtual void OnUpdate(EffectInstance instance, EntityEffector effector)
 {
 }
Beispiel #25
0
 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);
 }
Beispiel #26
0
 public override void OnEnd(EffectInstance instance, EntityEffector effector)
 {
     effector.Entity.GetComponent <EntityController>().UnLock();
 }