Пример #1
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        float FinalMoveValue = MoveValueBase;

        FinalMoveValue += MoveValuePerLevel * SourceItemSkill.GetSkillLevel();

        Target.ChangeMovementRateModifier(FinalMoveValue);
    }
Пример #2
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        float FinalResistanceValue = ResistanceValueBase;

        FinalResistanceValue += ResistanceValuePerLevel * SourceItemSkill.GetSkillLevel();

        Target.ChangeResistance(ResistanceType, FinalResistanceValue);
    }
Пример #3
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        int FinalDamageValue = DamageValueBase;

        FinalDamageValue += DamageValuePerLevel * SourceItemSkill.GetSkillLevel();

        int LifeStealValue = Target.InflictDamage(DefenseType, DamageType, FinalDamageValue, 0, 0);

        LifeStealValue = Mathf.RoundToInt(LifeStealValue * LifeStealPercentage);

        Owner.ChangeHealthCurrent(LifeStealValue);
    }
Пример #4
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        int FinalHealingValue = HealingValueBase;

        FinalHealingValue += HealingValuePerLevel * SourceItemSkill.GetSkillLevel();

        for (int i = 0; i < HealingValueModifiers.Length; i++)
        {
            FinalHealingValue = Mathf.RoundToInt(HealingValueModifiers[i].ModifyValue(FinalHealingValue, Owner, SourceItemSkill, Target));
        }

        float FinalHealingPercentage = HealingValueBasePercMax;

        FinalHealingPercentage += HealingValuePerLevelPercMax * SourceItemSkill.GetSkillLevel();

        for (int i = 0; i < HealingValuePercMaxModifiers.Length; i++)
        {
            FinalHealingPercentage = Mathf.RoundToInt(HealingValuePercMaxModifiers[i].ModifyValue(FinalHealingPercentage, Owner, SourceItemSkill, Target));
        }

        FinalHealingValue += Target.GetHealthPercentageAbsoluteValue(FinalHealingPercentage);

        Target.Heal(FinalHealingValue);
    }
Пример #5
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        if (Target.GetCharacterIsDead())
        {
            return;
        }

        float FinalDuration = DurationBase;

        FinalDuration += DurationPerLevel * SourceItemSkill.GetSkillLevel();

        for (int i = 0; i < DurationModifiers.Length; i++)
        {
            FinalDuration = Mathf.RoundToInt(DurationModifiers[i].ModifyValue(FinalDuration, Owner, SourceItemSkill, Target));
        }

        Target.ApplyNewCondition(ConditionToApply, Owner, SourceItemSkill, FinalDuration);
    }
Пример #6
0
    public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
    {
        int FinalDamageValue = DamageValueBase;

        FinalDamageValue += DamageValuePerLevel * SourceItemSkill.GetSkillLevel();

        for (int i = 0; i < DamageValueModifiers.Length; i++)
        {
            FinalDamageValue = Mathf.RoundToInt(DamageValueModifiers[i].ModifyValue(FinalDamageValue, Owner, SourceItemSkill, Target));
        }

        int FinalIgnoreDefenseValue    = CalculateIgnoreDefense(Owner, SourceItemSkill, Target, SourceItemSkill.GetSkillLevel());
        int FinalIgnoreResistanceValue = CalculateIgnoreResistance(Owner, SourceItemSkill, Target, SourceItemSkill.GetSkillLevel());

        var damageAmount = Target.InflictDamage(DefenseType, DamageType, FinalDamageValue, FinalIgnoreDefenseValue,
                                                FinalIgnoreResistanceValue);

        playSound(Target.GetComponent <AudioSource>(), damageAmount);
    }
Пример #7
0
        public ActiveCondition(Character _TargetCharacter, Character _SourceCharacter, ItemSkill _SourceItemSkill, Condition _Condition, float Duration)
        {
            TargetCharacter = _TargetCharacter;
            SourceCharacter = _SourceCharacter;
            SourceItemSkill = _SourceItemSkill;
            Cond            = _Condition;
            TimeCounter     = 0f;
            TickCounter     = 0f;
            FixedLevel      = SourceItemSkill.GetSkillLevel();

            MaxDuration = Duration;

            if (Cond.GetVisualEffectObject())
            {
                VisualEffectObject = Instantiate(Cond.GetVisualEffectObject(), TargetCharacter.transform.position, TargetCharacter.transform.rotation);
                VisualEffectObject.transform.SetParent(TargetCharacter.transform, true);
            }

            ApplyCondition();
        }
Пример #8
0
    public void InitializeHitObject(Character _Owner, ItemSkill _SourceItemSkill, SkillEffect[] _SkillEffects, bool[] AllowTargets, float[] SkillThreat, bool UseLevelAtActivationMoment)
    {
        // Link Skill User and Skill:
        Owner                 = _Owner;
        SourceItemSkill       = _SourceItemSkill;
        HitObjectSkillEffects = _SkillEffects;
        _audioSource          = GetComponent <AudioSource>();


        if (UseLevelAtActivationMoment)
        {
            FixedLevel = SourceItemSkill.GetSkillLevel();
        }
        else
        {
            FixedLevel = -1;
        }

        // Calculate which Team(s) the HitObject can hit:
        int counter = 0;

        if (AllowTargets[0])
        {
            counter += (int)(Owner.GetAlignment());
        }

        if (AllowTargets[1])
        {
            counter += ((int)(Owner.GetAlignment()) % 2) + 1;
        }

        HitObjectAlignment = (Character.TeamAlignment)(counter);

        // Living Time:
        if (MaxTimeAlive <= 0)
        {
            SourceItemSkill.AddEffectSkillHitObject(this);
        }

        if (TickTime > 0)
        {
            CurrentTickTime = TickTime;
        }

        // Parenting:
        if (HitObjectIsChildOfOwner)
        {
            transform.SetParent(Owner.transform);
        }

        if (AlwaysHitOwner)
        {
            HitTarget(Owner);
        }

        // Threat:
        Threat = SkillThreat;

        // Force Impulse:
        if (UseForceImpulse)
        {
            ApplyForceImpulse();
        }

        // Spawn Particle System:
        if (ParticlesPrefab)
        {
            ParticlesInstance = Instantiate(ParticlesPrefab, ParticlesSpawnParent.transform);
        }

        if (UseFixedTerrainHeight)
        {
            TerrHeightLayerMask = 1 << TerrHeightLayerMask;
        }
    }
Пример #9
0
 public override void ApplyEffect(Character Owner, ItemSkill SourceItemSkill, Character Target)
 {
     ApplyEffect(Owner, SourceItemSkill, Target, SourceItemSkill.GetSkillLevel());
 }
Пример #10
0
    public virtual void InitializeHitObject(Character _Owner, ItemSkill _SourceItemSkill, SkillType _SourceSkill, bool UseLevelAtActivationMoment)
    {
        // Link Skill User and Skill:
        Owner           = _Owner;
        SourceSkill     = _SourceSkill;
        SourceItemSkill = _SourceItemSkill;
        _audioSource    = GetComponent <AudioSource>();


        if (UseLevelAtActivationMoment)
        {
            FixedLevel = SourceItemSkill.GetSkillLevel();
        }
        else
        {
            FixedLevel = -1;
        }

        // Calculate which Team(s) the HitObject can hit:
        int counter = 0;

        if (SourceSkill.GetAllowTargetFriendly())
        {
            counter += (int)(Owner.GetAlignment());
        }

        if (SourceSkill.GetAllowTargetEnemy())
        {
            counter += ((int)(Owner.GetAlignment()) % 2) + 1;
        }

        HitObjectAlignment = (Character.TeamAlignment)(counter);

        // Living Time:
        if (MaxTimeAlive <= 0)
        {
            SourceItemSkill.AddEffectSkillHitObject(this);
        }

        if (TickTime > 0)
        {
            CurrentTickTime = TickTime;
        }

        // Parenting:
        if (HitObjectIsChildOfOwner)
        {
            transform.SetParent(Owner.transform);
        }

        if (AlwaysHitOwner)
        {
            HitTarget(Owner);
        }

        // Threat:
        Threat = SourceSkill.GetThreat();

        // Force Impulse:
        if (UseForceImpulse)
        {
            ApplyForceImpulse();
        }

        if (UseFixedTerrainHeight)
        {
            TerrHeightLayerMask = 1 << TerrHeightLayerMask;
        }
    }