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(); }
public override void Activate(int x, int y) { base.Activate(x, y); CharacterBhv.StartCoroutine(Helper.ExecuteAfterDelay(PlayerPrefsHelper.GetSpeed(), () => { AfterActivation(); return(true); })); }
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); })); }
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); })); }
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); })); }
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); }
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); })); }
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); } }
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); }