Exemple #1
0
    IMagicReleaser IBattlePerception.CreateReleaserView(
        IBattleCharacter releaser, IBattleCharacter targt, UVector3?targetPos)
    {
        var obj = new GameObject("MagicReleaser");

        obj.transform.SetParent(this.transform, false);
        return(obj.AddComponent <UMagicReleaserView> ());
    }
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        character = animator.GetComponent<IBattleCharacter>();

        //if (animatorState.idle)

        if (animatorState.dead)
            character.dyingAnimation();
    }
Exemple #3
0
    public void takeGeneralDamage(Damage damage, IAbility ability, IBattleCharacter source)
    {
        List<GameObject> children = listChildren(this.gameObject);

        foreach (GameObject child in children)
        {
            child.GetComponent<IBattleCharacter>().takeGeneralDamage(damage,ability,source);
        }
    }
        void IBattleCharacter.LookAtTarget(IBattleCharacter target)
        {
            var notify = new Proto.Notify_LookAtCharacter
            {
                Own    = Index,
                Target = target.Index
            };

            this.PerceptionView.AddNotify(notify);
            this.transform.LookAt(target.Transform);
        }
        void IBattlePerception.ProcessDamage(IBattleCharacter sources, IBattleCharacter target, DamageResult result)
        {
            var notify = new Notify_DamageResult
            {
                Damage      = result.Damage,
                IsMissed    = result.IsMissed,
                Index       = sources.Index,
                TargetIndex = target.Index
            };

            AddNotify(notify);
        }
Exemple #6
0
        public bool updateDuration(IBattleCharacter character)
        {
            if (turnsElapsed >= totalTurns)
            {
                return true;
            }

            turnsElapsed++;

            return false;
        }
Exemple #7
0
        public int HealthAfterCombat(IBattleCharacter player)
        {
            int randAttack = rand.Next(attack - ATTACK_RANGE, attack + ATTACK_RANGE + 1);
            int newHealth = player.Health;
            if (player.Defense < randAttack)
            {
                newHealth -= randAttack - player.Defense;
            }
            else
            {
                newHealth -= 1; // Always lose at least 1 HP.
            }

            return newHealth;
        }
Exemple #8
0
 public override void takeGeneralDamage(Damage damage, IAbility ability, IBattleCharacter source)
 {
     base.takeGeneralDamage(damage, ability, source);
 }
 public void SetCharacter(IBattleCharacter releaser, IBattleCharacter target)
 {
     CharacterTarget   = target;
     CharacterReleaser = releaser;
 }
Exemple #10
0
 public BattleMagicReleaserView(IBattleCharacter releaser, IBattleCharacter target, BattlePerceptionView view) : base(view)
 {
     CharacterTarget   = target;
     CharacterReleaser = releaser;
 }
 IMagicReleaser IBattlePerception.CreateReleaserView(IBattleCharacter releaser, IBattleCharacter targt, UVector3?targetPos)
 {
     return(new BattleMagicReleaserView(releaser, targt, this));
 }
Exemple #12
0
 void IBattlePerception.ProcessDamage(IBattleCharacter view1, IBattleCharacter view2, GameLogic.Game.DamageResult result)
 {
 }
Exemple #13
0
 void IBattleCharacter.LookAtTarget(IBattleCharacter target)
 {
     this.LookAt(target.Transform);
 }
Exemple #14
0
        public int HealthAfterCombat(IBattleCharacter enemy)
        {
            // create a random number to see if the attack hit!
            int randAttack = rand.Next(attack - ATTACK_RANGE, attack + ATTACK_RANGE + 1);
            int didHit = rand.Next(1, 101);
            int newHealth = enemy.Health;

            if (didHit <= accuracy)
            {
                if (accuracy == 100)
                {
                    if ((int)((randAttack / 2) - enemy.Defense) > 0)
                    {
                        newHealth -= ((int)((randAttack / 2) - enemy.Defense));
                    }
                }

                else if (accuracy == 80)
                {
                    if ((int)(randAttack - enemy.Defense) > 0)
                    {
                        newHealth -= (randAttack - enemy.Defense);
                    }
                }
                else if (accuracy == 55)
                {
                    if (((randAttack * 2) - enemy.Defense) > 0)
                    {
                        newHealth -= ((randAttack * 2) - enemy.Defense);
                    }
                }

                else if (accuracy == 99)
                {
                    if ((magicAtk - enemy.Defense) > 0 && magicAtk >= 2)
                    {
                        newHealth -= magicAtk - enemy.Defense;
                    }
                }
                else if (accuracy == 98)
                {
                    if ((magicAtk - enemy.Defense) > 0 && magicAtk >= 6)
                    {
                        newHealth -= magicAtk + 5 - enemy.Defense;
                    }
                }

                if (newHealth < 0)
                {
                    newHealth = 0;
                }

            }
            else
            {
                return -1;
            }

            return newHealth;
        }
Exemple #15
0
    public virtual void takeGeneralDamage(Damage damage, Ability.IAbility  ability, IBattleCharacter source)
    {
        if (ability.getStatusEffectTypes() != null)
        {
            addStatusEffect(ability.getStatusEffectTypes());
        }

        if (this.getCharStats().targetCurHP <= 0)
            return;

        float modifier = UnityEngine.Random.Range(0.9f, 1.1f);
        damage.actualDamage = (int)((float)playerStats.calculateDamageTaken(damage.baseDamage, ability.getAbilityClass()) * modifier);
        takeDamage(damage, ability.show0Damage(), ability.timeToDamage());
    }
Exemple #16
0
    public int calculateStatusEffect(Ability.StatusEffectType statusEffectType, IBattleCharacter character, bool reset = false)
    {
        offenseDamageMultiplier = 1;
        int totalDamage = 0;
        switch(statusEffectType.status)
        {
            case Ability.StatusEffectType.StatusTypes.Curse:
                break;

            case Ability.StatusEffectType.StatusTypes.Death:
                break;

            case Ability.StatusEffectType.StatusTypes.Haste:
                break;

            case Ability.StatusEffectType.StatusTypes.Poison:
                totalDamage = character.getCharStats().calculateTurnStatusDamage(statusEffectType).actualDamage;

                break;

            case Ability.StatusEffectType.StatusTypes.Raise:
                if (this.dead)
                {
                    this.dead = false;
                }
                else
                {
                    break;
                }

                curHP = 0;

                targetCurHP = (int) (statusEffectType.potency * maxHP);
                break;

            case Ability.StatusEffectType.StatusTypes.Regen:
                break;

            case Ability.StatusEffectType.StatusTypes.Slow:
                break;

            case Ability.StatusEffectType.StatusTypes.Wait:
                if (!reset)
                    offenseDamageMultiplier -= 0.5f;
                break;

            default:
                throw new System.NotImplementedException();

        }

        return totalDamage;
    }