Exemplo n.º 1
0
    private void CreateStatMod()
    {
        Debug.Log("Creating a stat mod : " + targetStat + " " + statAdjValue);

        StatCollection.StatModifer mod = new StatCollection.StatModifer(statAdjValue, modType);
        mods.Add(mod);
        StatAdjustmentManager.ApplyTrackedStatMod(source, targetEntity, targetStat, mod);
    }
 void Awake()
 {
     if (statAdjustmentManager == null)
     {
         statAdjustmentManager = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
Exemplo n.º 3
0
    protected override void CleanUp()
    {
        int count = mods.Count;

        for (int i = 0; i < count; i++)
        {
            Debug.Log("Cleaning durational stuff");
            StatAdjustmentManager.RemoveTrackedStatMod(targetEntity, targetStat, mods[i]);
        }

        base.CleanUp();
    }
Exemplo n.º 4
0
    protected override void CleanUp()
    {
        base.CleanUp();

        if (permanent == false)
        {
            int count = mods.Count;
            for (int i = 0; i < count; i++)
            {
                StatAdjustmentManager.RemoveTrackedStatMod(SourceEffect.ParentAbility.Source.GetStats(), Target.GetStats(), targetStat, mods[i], options);
            }
        }
    }
Exemplo n.º 5
0
    private void CreateAndApplyStatMod()
    {
        if (permanent == false)
        {
            StatModifier mod = new StatModifier(adjValue, modType);
            mods.Add(mod);

            StatAdjustmentManager.ApplyTrackedStatMod(SourceEffect.ParentAbility.Source.GetStats(), Target.GetStats(), targetStat, mod, options);
        }
        else
        {
            StatAdjustmentManager.ApplyUntrackedStatMod(SourceEffect.ParentAbility.Source.GetStats(), Target.GetStats(), targetStat, adjValue, modType, options);
        }
    }
Exemplo n.º 6
0
    protected override void Tick()
    {
        base.Tick();

        if (targetEntity != null)
        {
            StatAdjustmentManager.ApplyUntrackedStatMod(source, target.GetComponent <Entity>(), Constants.BaseStatType.Health, effectDamage);
            //Debug.Log(effectDamage);
        }
        else
        {
            //Debug.Log("Target null");
        }
    }
Exemplo n.º 7
0
    public void InitializeAffectMovement(AffectMovementType type, float value, Vector2 knockback)
    {
        affectType = type;
        amount     = value;
        //targetMovement = target.GetComponent<BaseMovement>();

        switch (affectType)
        {
        case AffectMovementType.Halt:

            //if (targetMovement == null)
            //    return;

            //if (targetMovement is EntityMovement) {
            //    if (((EntityMovement)targetMovement).Grounded || ((EntityMovement)targetMovement).Platformed)
            //        target.GetComponent<Rigidbody2D>().velocity = Vector2.zero;
            //}

            //targetMovement.CanMove = false;
            //targetMovement.CanPivot = false;
            break;

        case AffectMovementType.Knockback:
            //target.GetComponent<Rigidbody2D>().velocity = Vector2.zero;
            //targetMovement.CanMove = false;

            //target.GetComponent<Rigidbody2D>().AddForce(knockback * value);

            ((MovingEntity)targetEntity).ModifyVelociy(knockback * value);

            break;

        case AffectMovementType.AlterSpeed:
            mod = new StatCollection.StatModifer(amount, StatCollection.StatModificationType.Multiplicative);

            //Debug.Log("Applyin a mod of " + mod.value);

            StatAdjustmentManager.ApplyTrackedStatMod(source, targetEntity, StatCollection.BaseStat.BaseStatType.MoveSpeed, mod);

            //CombatManager.ApplyUntrackedStatMod(source, target.GetComponent<Entity>(), Constants.BaseStatType.MoveSpeed, amount, StatCollection.StatModificationType.Multiplicative);
            break;

        case AffectMovementType.SuspendInAir:
            ((MovingEntity)targetEntity).ResetY();
            break;
        }
    }
Exemplo n.º 8
0
    public bool CheckResourceValue(GameObject source)
    {
        bool result = false;

        float resourceValue = source.Entity().EntityStats.GetStatModifiedValue(targetResource);

        if (resourceValue >= resourceValueAmount)
        {
            result = true;
        }

        if (result == true && spendResource)
        {
            StatAdjustmentManager.ApplyUntrackedStatMod(source.Entity().EntityStats, source.Entity().EntityStats, targetResource, resourceValueAmount);
        }

        return(result);
    }
Exemplo n.º 9
0
    private void HandlePenetration()
    {
        float penetrationCount = ProjectileStats.GetStatModifiedValue(BaseStat.StatType.ProjectilePenetration);

        if (penetrationCount <= -1f)
        {
            return;
        }

        if (penetrationCount <= 0)
        {
            CleanUp();
        }
        else
        {
            StatAdjustmentManager.ApplyUntrackedStatMod(ProjectileStats, ProjectileStats, BaseStat.StatType.ProjectilePenetration, -1f);
        }
    }
Exemplo n.º 10
0
    protected override void CleanUp()
    {
        //if (targetMovement == null) {
        //    //Debug.Log("Nove moves");
        //    StatusManager.RemoveStatus(targetEntity, this);
        //    //Destroy(this);
        //    return;
        //}

        switch (affectType)
        {
        case AffectMovementType.Halt:
            //targetMovement.CanMove = true;
            //targetMovement.CanPivot = true;
            break;

        case AffectMovementType.AlterSpeed:
            if (mod != null)
            {
                StatAdjustmentManager.RemoveTrackedStatMod(targetEntity, StatCollection.BaseStat.BaseStatType.MoveSpeed, mod);
            }
            else
            {
                Debug.Log("Mod NUll");
            }
            break;

        case AffectMovementType.Knockback:
        case AffectMovementType.SuspendInAir:
            //targetMovement.CanMove = true;
            ((MovingEntity)targetEntity).ClearKnockbackVelocity();
            break;
        }


        base.CleanUp();
    }
Exemplo n.º 11
0
    protected override void CleanUp()
    {
        if (targetMovement == null)
        {
            //Debug.Log("Nove moves");
            StatusManager.RemoveStatus(targetEntity, this);
            //Destroy(this);
            return;
        }

        switch (affectType)
        {
        case AffectMovementType.Halt:
            targetMovement.CanMove  = true;
            targetMovement.CanPivot = true;
            break;

        case AffectMovementType.AlterSpeed:
            if (mod != null)
            {
                StatAdjustmentManager.RemoveTrackedStatMod(targetEntity, Constants.BaseStatType.MoveSpeed, mod);
            }
            else
            {
                Debug.Log("Mod NUll");
            }
            break;

        case AffectMovementType.Knockback:
            targetMovement.CanMove = true;
            break;
        }


        base.CleanUp();
    }
Exemplo n.º 12
0
    public override void Apply(GameObject target)
    {
        float damage;

        if (scaleFromBaseDamage)
        {
            damage = effectDamage + (parentAbility.source.stats.GetStatModifiedValue(Constants.BaseStatType.BaseDamage) * percentOfBaseDamage);
        }
        else
        {
            damage = effectDamage;
        }

        //Debug.Log(damage + " is being dealt to " + target.gameObject.name);

        Entity targetEntity = target.GetComponent <Entity>();

        if (targetEntity != null)
        {
            StatAdjustmentManager.ApplyUntrackedStatMod(Source, targetEntity, Constants.BaseStatType.Health, damage);
        }

        base.Apply(target);
    }
Exemplo n.º 13
0
 public void RemoveMaxCharge(StatCollection source, StatModifier mod)
 {
     StatAdjustmentManager.RemoveTrackedStatMod(source, RecoveryStats, BaseStat.StatType.AbilityCharge, mod, StatCollection.StatModifierOption.Cap);
 }
Exemplo n.º 14
0
 public void SpendCharge()
 {
     StatAdjustmentManager.ApplyUntrackedStatMod(RecoveryStats, RecoveryStats, BaseStat.StatType.AbilityCharge, -1f, StatModifier.StatModificationType.Additive);
 }
Exemplo n.º 15
0
    public override void Apply(GameObject target)
    {
        base.Apply(target);

        //if (!CheckForSpecificTarget(target))
        //    return;

        switch (statusType)
        {
        case Constants.StatusEffectType.None:
            //Status newStatus = target.AddComponent<Status>();
            Status newStatus = new Status();


            newStatus.Initialize(target, duration, interval, statusType, parentAbility);

            StatusManager.AddStatus(target.GetComponent <Entity>(), newStatus, this, parentAbility);
            break;

        case Constants.StatusEffectType.AffectMovement:
            //AffectMovement newAffectMovement = target.AddComponent<AffectMovement>();
            AffectMovement newAffectMovement = new AffectMovement();

            //knockbackVector = TargetingUtilities.DegreeToVector2(knocbackAngle);
            knockbackVector = TargetingUtilities.DirectionFromAngle(knocbackAngle, false);

            if (Source.Facing == Constants.EntityFacing.Left)
            {
                knockbackVector = new Vector2(-knockbackVector.x, knockbackVector.y);
            }

            //Debug.Log(knockbackVector + " is the knockback vector");

            newAffectMovement.Initialize(target, duration, interval, statusType, parentAbility, maxStack, onCompleteEffect);
            newAffectMovement.InitializeAffectMovement(affectMoveType, affectMoveValue, knockbackVector);

            StatusManager.AddStatus(target.GetComponent <Entity>(), newAffectMovement, this, parentAbility);
            break;

        case Constants.StatusEffectType.Stun:
            Stun newStun = new Stun();

            newStun.Initialize(target, duration, interval, statusType, parentAbility);
            newStun.InitializeStun();

            StatusManager.AddStatus(target.GetComponent <Entity>(), newStun, this, parentAbility);
            break;

        case Constants.StatusEffectType.DamageOverTime:


            float damage;
            if (scaleFromBaseDamage)
            {
                damage = damagePerInterval + (parentAbility.source.stats.GetStatModifiedValue(StatCollection.BaseStat.BaseStatType.BaseDamage) * percentOfBaseDamage);
            }
            else
            {
                damage = damagePerInterval;
            }

            //DamageOverTime newDot = target.AddComponent<DamageOverTime>();
            DamageOverTime newDot = new DamageOverTime();
            newDot.Initialize(target, duration, interval, statusType, parentAbility, maxStack);
            newDot.InitializeDamageOverTime(damage, parentAbility.source);

            StatusManager.AddStatus(target.GetComponent <Entity>(), newDot, this, parentAbility);

            Debug.Log("Applying " + damage + " over time");

            break;

        case Constants.StatusEffectType.StaticStatAdjustment:
            StatCollection.StatModifer modStatic = new StatCollection.StatModifer(statAdjustmentValue, modType);

            Debug.Log("Stat " + statType + " is being adjusted by " + statAdjustmentValue);

            StatAdjustmentManager.ApplyTrackedStatMod(Source, target.GetComponent <Entity>(), statType, modStatic);

            break;

        case Constants.StatusEffectType.DurationalStatAdjustment:
            //StatCollection.StatModifer modDur = new StatCollection.StatModifer(statAdjustmentValue, modType);

            Debug.Log("Setting durational stuff");

            DurationalStatChange newDurationalStatChange = new DurationalStatChange();
            newDurationalStatChange.Initialize(target, duration, interval, statusType, parentAbility, maxStack);
            newDurationalStatChange.InitializeDurationalStatChange(statType, modType, statAdjustmentValue);

            StatusManager.AddStatus(target.GetComponent <Entity>(), newDurationalStatChange, this, parentAbility);

            break;
        }
    }
Exemplo n.º 16
0
 public void ModifyCoolDown(StatCollection cause, StatModifier mod)
 {
     StatAdjustmentManager.ApplyTrackedStatMod(cause, Stats, BaseStat.StatType.CoolDown, mod);
 }
Exemplo n.º 17
0
 protected void ApplyInstantStatAdjustment(GameObject target)
 {
     StatAdjustmentManager.ApplyUntrackedStatMod(ParentAbility.Source.GetStats(), target.GetStats(), adjInfo.targetStat, adjInfo.adjustmentValue, adjInfo.modType, adjInfo.options.ToArray());
 }