void Skill_B() { skillNameB = skill_B.skillNameB; defaultSkill.GetComponent <Image>().color = Colors.WhiteColor; skill_0.GetComponent <Image>().color = Colors.WhiteColor; skill_1.GetComponent <Image>().color = Colors.WhiteColor; skill_2.GetComponent <Image>().color = Colors.WhiteColor; skill_B.GetComponent <Image>().color = Colors.GreenColor; skill_lvl = skill_B.skill_lvl; }
public static InfoSkill GetSkillB(SkillNameB name, int level) { InfoSkill iS = new InfoSkill(); switch (name) { case SkillNameB.none: iS.damageTypeB = DamageType.Default; iS.delay = 0; switch (level) { case 1: break; case 2: break; } break; case SkillNameB.skillB0: iS.damageTypeB = DamageType.Boom; iS.delay = 2; iS.img = ResManager.instance.imgSkill[3]; switch (level) { case 1: break; case 2: break; } break; } return(iS); }
public static List <CombatResult> Attack(TurnBase attackerIn, TurnBase attackedIn, SkillName skillNameIn, SkillNameB skillNameBIn, List <TurnBase> enemyesIn, List <TurnBase> unitsIn, int skill_lvlIn) { InfoSkill infoSkill = SkillInfo.GetSkill(skillNameIn, skill_lvlIn); damageType = infoSkill.damageType; InfoSkill infoSkillB = SkillInfo.GetSkillB(skillNameBIn, skill_lvlIn); damageTypeB = infoSkillB.damageTypeB; targets.Clear(); selectedCells.Clear(); combatResults.Clear(); attacker = attackerIn; attacked = attackedIn; skillName = skillNameIn; skillNameB = skillNameBIn; enemyes.Clear(); units.Clear(); enemyes = enemyesIn; units = unitsIn; skill_lvl = skill_lvlIn; CheckList(); float damage = 0; if (skillName == SkillName.none && skillNameB == SkillNameB.none) { damage = attacker.general.PARAMS[GENERAL_DAMAGE_CURRENT] - attacked.general.PARAMS[GENERAL_DEFENSE_CURRENT]; if (damage <= 0) { damage = 0; } else if (Random.Range(0, 100) < attacker.general.PARAMS[GENERAL_CRIT_CHANGE_CURRENT]) { damage += attacker.general.PARAMS[GENERAL_CRIT_DAMAGE_CURRENT]; } CombatResult cr = new CombatResult(); cr.target = attacked; cr.damage = damage; combatResults.Add(cr); } else { if (damageType != DamageType.Default && skillName != SkillName.none) { switch (damageType) { case DamageType.Link: Link(); break; case DamageType.Rebound: Rebound(); break; case DamageType.Row: Row(); break; case DamageType.Boom: Boom(); break; case DamageType.Dot: break; case DamageType.Buff: break; case DamageType.Debuff: break; } } else if (damageTypeB != DamageType.Default && skillNameB != SkillNameB.none) { switch (damageTypeB) { case DamageType.Link: Link(); break; case DamageType.Rebound: Rebound(); break; case DamageType.Row: Row(); break; case DamageType.Boom: Boom(); break; case DamageType.Dot: break; case DamageType.Buff: break; case DamageType.Debuff: break; } } else { } CombatResult crs = new CombatResult(); crs.target = attacked; if (DamageType.Boom == damageType) { //crs.damage = DamageBoom(); } crs.damage = 20; combatResults.Add(crs); foreach (TurnBase target in targets) { CombatResult crss = new CombatResult(); crss.target = target; crss.damage = 15; combatResults.Add(crss); } } return(combatResults); }
void EnemyAttack() { enemyesCurrent[0].animator.Play("attack"); rHit = Random.Range(0, units.Count - 1); bool targetIsDead = false; List <TurnBase> enemyesOut = new List <TurnBase>(); foreach (TurnBase enemy in enemyes) { enemyesOut.Add(enemy); } List <TurnBase> unitsOut = new List <TurnBase>(); foreach (TurnBase unit in units) { unitsOut.Add(unit); } List <CombatResult> combatResults = Combat.Attack(enemyesCurrent[0], units[rHit], skillName, skillNameB, enemyesOut, unitsOut, skill_lvl); for (int i = 0; i < combatResults.Count; i++) { TurnBase target = combatResults[i].target; float damage = combatResults[i].damage; target.general.PARAMS[GENERAL_HP_CURRENT] -= damage; GameObject gt = Instantiate(ResManager.instance.DamageText, target.transform); gt.transform.position = target.transform.parent.transform.localPosition; DamageText dt = gt.GetComponent <DamageText>(); dt.startMitonUnit("-" + damage, Colors.RedColor); if (target.general.PARAMS[GENERAL_HP_CURRENT] > 0) { target.animator.Play("hart"); if (target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 4 * 3) //75+% { target.text.color = Colors.GreenColor; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 4 * 3 && target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 2) //50% + /75%- { target.text.color = Colors.YellowColor; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 2 && target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 4) //25%+ / 50%- { target.text.color = Colors.Orange; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 4 && target.general.PARAMS[GENERAL_HP_CURRENT] > 0) //0+ / 25- { target.text.color = Colors.RedColor; } target.text.text = target.general.PARAMS[GENERAL_HP_CURRENT].ToString(); } else { targetIsDead = true; } } skillName = SkillName.none; skillNameB = SkillNameB.none; skill_lvl = 0; if (targetIsDead) { Invoke("EnemyAttackDelay", 3f); } else { Invoke("EnemyAttackDelay", 1f); } }
bool PlayerAttack() { bool targetIsDead = false; List <TurnBase> enemyesOut = new List <TurnBase>(); foreach (TurnBase enemy in enemyes) { enemyesOut.Add(enemy); } List <TurnBase> unitsOut = new List <TurnBase>(); foreach (TurnBase unit in units) { unitsOut.Add(unit); } List <CombatResult> combatResults = Combat.Attack(selectedUnit, selectedEnemy, skillName, skillNameB, enemyesOut, unitsOut, skill_lvl); for (int i = 0; i < combatResults.Count; i++) { TurnBase target = combatResults[i].target; float damage = combatResults[i].damage; target.general.PARAMS[GENERAL_HP_CURRENT] -= damage; GameObject gt = Instantiate(ResManager.instance.DamageText, target.transform); gt.transform.position = new Vector3(target.transform.parent.transform.position.x, target.transform.parent.transform.position.y, 5f); DamageText dt = gt.GetComponent <DamageText>(); dt.startMitonEnemy("-" + damage, Colors.RedColor); if (target.general.PARAMS[GENERAL_HP_CURRENT] > 0) { target.animator.Play("hart"); if (target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 4 * 3) //75+% { target.text.color = Colors.GreenColor; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 4 * 3 && target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 2) //50% + /75%- { target.text.color = Colors.YellowColor; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 2 && target.general.PARAMS[GENERAL_HP_CURRENT] > target.general.PARAMS[GENERAL_HP] / 4) //25%+ / 50%- { target.text.color = Colors.Orange; } else if (target.general.PARAMS[GENERAL_HP_CURRENT] < target.general.PARAMS[GENERAL_HP] / 4 && target.general.PARAMS[GENERAL_HP_CURRENT] > 0) //0+ / 25- { target.text.color = Colors.RedColor; } target.text.text = target.general.PARAMS[GENERAL_HP_CURRENT].ToString(); } else { targetIsDead = true; } } skill_0.GetComponent <Image>().color = Colors.WhiteColor; skill_1.GetComponent <Image>().color = Colors.WhiteColor; skill_2.GetComponent <Image>().color = Colors.WhiteColor; skill_B.GetComponent <Image>().color = Colors.WhiteColor; defaultSkill.GetComponent <Image>().color = Colors.GreenColor; selectedUnit.animator.Play("attack"); selectedUnit.isEndTurn = true; skillName = SkillName.none; skillNameB = SkillNameB.none; skill_lvl = 0; CleanSkills(); CheckAdnRegenSkill(); return(targetIsDead); }