Exemple #1
0
 public virtual void Activate(int x, int y)
 {
     Debug.Log("Activate:" + Name);
     CharacterBhv.Instantiator.PopIcon(Helper.GetSpriteFromSpriteSheet("Sprites/IconsSkill_" + IconId), CharacterBhv.transform.position);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         CharacterBhv.LosePa(PaNeeded);
         return(true);
     }));
     _isDebuffed = false;
     if (CooldownType == CooldownType.Normal)
     {
         Cooldown       = CooldownMax + 1;
         EffectDuration = EffectDurationMax;
         if (Effect != SkillEffect.None)
         {
             CharacterBhv.GainSkillEffect(Effect);
         }
     }
     else if (CooldownType == CooldownType.OnceAFight)
     {
         Cooldown       = -1;
         EffectDuration = EffectDurationMax;
         if (Effect != SkillEffect.None)
         {
             CharacterBhv.GainSkillEffect(Effect);
         }
     }
     CharacterBhv.SkinContainer.OrientToTarget(CharacterBhv.X - x);
     GameObject.Find(Constants.GoSceneBhvName).GetComponent <FightSceneBhv>().ManagePlayerButtons();
 }
Exemple #2
0
 public override void Activate(int x, int y)
 {
     base.Activate(x, y);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         AfterActivation();
         return(true);
     }));
 }
Exemple #3
0
 public override void Activate(int x, int y)
 {
     base.Activate(x, y);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         CharacterBhv.Instantiator.NewEffect(InventoryItemType.Skill, GridBhv.Cells[x, y].transform.position, null, EffectId, Constants.GridMax - y);
         CharacterBhv.MoveToPosition(x, y, false);
         return(true);
     }));
 }
Exemple #4
0
 public override void Activate(int x, int y)
 {
     base.Activate(x, y);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         CharacterBhv.Instantiator.NewEffect(InventoryItemType.Skill, CharacterBhv.transform.position, null, EffectId, Constants.GridMax - CharacterBhv.Y);
         _floatHealAmount = 50.0f * Helper.MultiplierFromPercent(1, 10 * (CharacterBhv.Character.Level - 1));
         CharacterBhv.GainHp((int)_floatHealAmount);
         AfterActivation();
         return(true);
     }));
 }
 public override void OnStartTurn()
 {
     CharacterBhv.Instantiator.PopIcon(Helper.GetSpriteFromSpriteSheet("Sprites/IconsSkill_" + IconId), CharacterBhv.transform.position);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         CharacterBhv.Instantiator.NewEffect(InventoryItemType.Skill, CharacterBhv.transform.position, null, EffectId, Constants.GridMax - CharacterBhv.Y);
         float hpToRestore = (CharacterBhv.Character.HpMax * 0.05f);
         //hpToRestore *= Helper.MultiplierFromPercent(1.0f, Random.Range(0, 51));
         CharacterBhv.GainHp((int)hpToRestore);
         return(true);
     }));
 }
Exemple #6
0
 public override void Activate(int x, int y)
 {
     base.Activate(x, y);
     _currentTargetX = x;
     _currentTargetY = y;
     //CharacterBhv.GainSkillEffect(SkillEffect.Immuned);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         CharacterBhv.LosePm(CharacterBhv.Character.PmMax);
         AfterActivation();
         return(true);
     }));
 }
Exemple #7
0
 public override void Activate(int x, int y)
 {
     base.Activate(x, y);
     CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         var result = Grap(GridBhv.IsOpponentOnCell(x, y));
         if (result == false)
         {
             AfterGrap();
         }
         return(true);
     }));
 }
 private void EndFightVictory()
 {
     Constants.InputLocked = true;
     Instantiator.NewOverTitle(string.Empty, "Sprites/MapTitle_2", AfterVictory, Direction.Up);
     object AfterVictory(bool result)
     {
         StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
         {
             GainLoot();
             return(true);
         }));
         return(result);
     }
 }
 object OnLootGained(bool result)
 {
     StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         PlayerPrefsHelper.SaveCharacter(Constants.PpPlayer, PlayerBhv.Character);
         Instantiator.NewOverBlend(OverBlendType.StartLoadMidActionEnd, "BACK TO JOURNEY", 4.0f, TransitionFight, reverse: true);
         object TransitionFight(bool transResult)
         {
             NavigationService.LoadNextScene(Constants.SwipeScene);
             Constants.InputLocked = false;
             return(transResult);
         }
         return(true);
     }));
     return(result);
 }
Exemple #10
0
 public void TakeDamages(Damage damage)
 {
     StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
     {
         Instantiator.PopText("-" + Character.TakeDamages(damage.Amount).ToString(), transform.position, damage.Critical ? TextType.HpCritical : TextType.Hp);
         SkinContainer.OnHit();
         if (Character.IsPlayer && Character.Hp <= 0)
         {
             _fightSceneBhv.OnPlayerDeath(this);
         }
         else if (Character.Hp <= 0)
         {
             _fightSceneBhv.OnOpponentDeath(this);
         }
         return(true);
     }));
 }
Exemple #11
0
 private void Defeat(Character character)
 {
     Constants.InputLocked = true;
     Instantiator.NewOverTitle(string.Empty, "Sprites/MapTitle_3", AfterDefeat, Direction.Down);
     object AfterDefeat(bool result)
     {
         StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
         {
             Soul.Xp     = character.TotalExperience + Soul.XpKept;
             Soul.XpKept = 0;
             PlayerPrefsHelper.SaveSoul(Soul);
             Instantiator.NewOverBlend(OverBlendType.StartLoadMidActionEnd, "SOUL TREE", 4.0f, TransitionDefeat, reverse: true);
             object TransitionDefeat(bool transResult)
             {
                 NavigationService.NewRootScene(Constants.SoulTreeScene);
                 Constants.InputLocked = false;
                 return(transResult);
             }
             return(true);
         }));
         return(result);
     }
 }
Exemple #12
0
    public Damage AttackWithWeapon(int weaponId, CharacterBhv opponentBhv, Map map, bool usePa = true, Vector3 touchedPosition = default(Vector3))
    {
        var tmpDamage = new Damage();
        var tmpWeapon = Character.Weapons[weaponId];

        float baseDamages = tmpWeapon.BaseDamage * Helper.MultiplierFromPercent(1, Random.Range(-tmpWeapon.DamageRangePercentage, tmpWeapon.DamageRangePercentage + 1));

        baseDamages *= Character.GetDamageMultiplier();

        float weaponHandlingMultiplier = 0.0f;

        if (tmpWeapon.Type != Character.FavWeapons[0] && tmpWeapon.Type != Character.FavWeapons[1])
        {
            weaponHandlingMultiplier = Helper.MultiplierFromPercent(weaponHandlingMultiplier, -(RacesData.NotRaceWeaponDamagePercent + Character.NotRaceWeaponDamagePercent));
        }
        else
        {
            weaponHandlingMultiplier = Helper.MultiplierFromPercent(weaponHandlingMultiplier, Character.RaceWeaponDamagePercent);
        }

        float raceGenderMultiplier = 0.0f;

        if (opponentBhv != null && opponentBhv.Character.Race == Character.StrongAgainst)
        {
            raceGenderMultiplier = Helper.MultiplierFromPercent(raceGenderMultiplier, RacesData.StrongAgainstDamagePercent);
        }
        if (map?.Type == Character.StrongIn)
        {
            raceGenderMultiplier = Helper.MultiplierFromPercent(raceGenderMultiplier, RacesData.StrongInDamagePercent);
        }
        if (Character.Gender == CharacterGender.Female)
        {
            raceGenderMultiplier = Helper.MultiplierFromPercent(raceGenderMultiplier, -RacesData.GenderDamage);
        }
        else
        {
            raceGenderMultiplier = Helper.MultiplierFromPercent(raceGenderMultiplier, RacesData.GenderDamage);
        }

        float skillMultiplier = 0.0f;

        foreach (var skill in Character.Skills)
        {
            if (skill != null)
            {
                skillMultiplier = Helper.MultiplierFromPercent(skillMultiplier, skill.OnStartAttack());
            }
        }

        float criticalMultiplier = 0.0f;
        int   criticalPercent    = Random.Range(0, 100);

        if (criticalPercent < tmpWeapon.CritChancePercent)
        {
            tmpDamage.Critical = true;
            criticalMultiplier = Helper.MultiplierFromPercent(raceGenderMultiplier, tmpWeapon.CritMultiplierPercent);
            if (Character.Gender == CharacterGender.Male)
            {
                criticalMultiplier = Helper.MultiplierFromPercent(criticalMultiplier, -RacesData.GenderCritical);
            }
            else
            {
                criticalMultiplier = Helper.MultiplierFromPercent(criticalMultiplier, RacesData.GenderCritical);
            }
        }

        tmpDamage.Amount = (int)(baseDamages * (1.0f + weaponHandlingMultiplier + raceGenderMultiplier + skillMultiplier + criticalMultiplier));
        //Debug.Log("Final Damages = " + resultInt);
        if (usePa)
        {
            SkinContainer.OrientToTarget(transform.position.x - touchedPosition.x);
            Instantiator.PopIcon(Helper.GetSpriteFromSpriteSheet("Sprites/IconsWeapon_" + tmpWeapon.Type.GetHashCode()), transform.position);
            StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () =>
            {
                LosePa(tmpWeapon.PaNeeded);
                _attackedPosition = touchedPosition;
                IsAttacking       = 1;
                foreach (var skill in Character.Skills)
                {
                    if (skill != null)
                    {
                        skill.OnEndAttack(tmpDamage.Amount, opponentBhv);
                    }
                }
                Instantiator.NewEffect(InventoryItemType.Weapon, touchedPosition, transform.position, tmpWeapon.EffectId, Constants.GridMax - Y);
                _gridBhv.ShowPm(this, OpponentBhvs);
                return(true);
            }));
        }
        return(tmpDamage);
    }