void doEffect(SkillEffect effect) { Debug.Log("Skill: " + effect.ToString()); Debug.Log("Effect: " + effect.effect.ToString()); switch (effect.effect) { case SkillEffect.Effect.Change: SkillEffect.ChangeSkill cskill = (SkillEffect.ChangeSkill)effect; BoardManager.instance.switchAllTiles(cskill.from, cskill.to); break; case SkillEffect.Effect.ChangeSome: SkillEffect.ChangeSomeSkill csomeskill = (SkillEffect.ChangeSomeSkill)effect; BoardManager.instance.switchSomeTiles(csomeskill.from, csomeskill.to, csomeskill.lower, csomeskill.upper); break; case SkillEffect.Effect.Damage: characterHit(effect.amount + (int)PanelManager.instance.getCurrentMonster().sloth); break; case SkillEffect.Effect.Destroy: SkillEffect.DestroySkill destroyskill = (SkillEffect.DestroySkill)effect; BoardManager.instance.destroyTiles(destroyskill.toRemove); break; case SkillEffect.Effect.DestroySome: SkillEffect.DestroySomeSkill destroysomeskill = (SkillEffect.DestroySomeSkill)effect; BoardManager.instance.destroySomeTiles(destroysomeskill.toRemove, destroysomeskill.from, destroysomeskill.to); break; case SkillEffect.Effect.Heal: characterHit(-(effect.amount + (int)PanelManager.instance.getCurrentMonster().sloth)); break; case SkillEffect.Effect.Poke: SkillEffect.PokeSkill pokeskill = (SkillEffect.PokeSkill)effect; if (type.type == pokeskill.toRemove) { BoardManager.instance.PokeTile(this, effect.amount); } break; case SkillEffect.Effect.Poison: SkillEffect.PoisonSkill poisonskill = (SkillEffect.PoisonSkill)effect; BoardManager.instance.buff(poisonskill.amount); break; case SkillEffect.Effect.Reset: BoardManager.instance.reset(true); break; case SkillEffect.Effect.Sabotage: BoardManager.instance.Sabotage(effect.amount); break; case SkillEffect.Effect.Slice: SkillEffect.SliceSkill sliceskill = (SkillEffect.SliceSkill)effect; if (type.type == sliceskill.toRemove) { BoardManager.instance.SliceTile(this, effect.amount); } break; case SkillEffect.Effect.xTurn: BoardManager.instance.addExtraTurns(effect.amount); break; } }
public static SkillMeta[] parseSkills(string[] skills, Glossary glossary) { List <SkillMeta> retSkills = new List <SkillMeta> (); foreach (string skill in skills) { foreach (GameObject meta in glossary.skills) { if (meta.name.Equals(skill)) { SkillMetaSerializable foundMeta = meta.GetComponent <SkillMain> ().meta; SkillMeta thisSkill = new SkillMeta(); thisSkill.name = foundMeta.name; thisSkill.req1 = new SkillReq(); thisSkill.req1.gem = foundMeta.req1.gem; thisSkill.req1.req = foundMeta.req1.req; thisSkill.req1.has = 0; thisSkill.req2 = new SkillReq(); thisSkill.req2.gem = foundMeta.req2.gem; thisSkill.req2.req = foundMeta.req2.req; thisSkill.req2.has = 0; List <SkillEffect> effects = new List <SkillEffect> (); foreach (SkillEffectSerializable effect in foundMeta.effects) { switch (effect.effect) { case SkillEffect.Effect.Change: SkillEffect.ChangeSkill changeEffect = new SkillEffect.ChangeSkill(); changeEffect.from = effect.gem1; changeEffect.to = effect.gem2; effects.Add(changeEffect); break; case SkillEffect.Effect.ChangeSome: SkillEffect.ChangeSomeSkill changeSomeEffect = new SkillEffect.ChangeSomeSkill(); changeSomeEffect.from = effect.gem1; changeSomeEffect.to = effect.gem2; changeSomeEffect.lower = effect.val; changeSomeEffect.upper = effect.val2; effects.Add(changeSomeEffect); break; case SkillEffect.Effect.Damage: SkillEffect.DamageSkill damageEffect = new SkillEffect.DamageSkill(); damageEffect.amount = effect.val; effects.Add(damageEffect); break; case SkillEffect.Effect.Destroy: SkillEffect.DestroySkill destroyEffect = new SkillEffect.DestroySkill(); destroyEffect.toRemove = effect.gem1; effects.Add(destroyEffect); break; case SkillEffect.Effect.DestroySome: SkillEffect.DestroySomeSkill destroySomeEffect = new SkillEffect.DestroySomeSkill(); destroySomeEffect.toRemove = effect.gem1; destroySomeEffect.from = effect.val; destroySomeEffect.to = effect.val2; effects.Add(destroySomeEffect); break; case SkillEffect.Effect.Heal: SkillEffect.HealSkill healEffect = new SkillEffect.HealSkill(); healEffect.amount = effect.val; effects.Add(healEffect); break; case SkillEffect.Effect.Poison: SkillEffect.PoisonSkill buffEffect = new SkillEffect.PoisonSkill(); buffEffect.amount = effect.val; effects.Add(buffEffect); break; case SkillEffect.Effect.Poke: SkillEffect.PokeSkill pokeEffect = new SkillEffect.PokeSkill(); pokeEffect.toRemove = effect.gem1; pokeEffect.amount = effect.val; effects.Add(pokeEffect); break; case SkillEffect.Effect.Reset: SkillEffect.ResetSkill resetEffect = new SkillEffect.ResetSkill(); effects.Add(resetEffect); break; case SkillEffect.Effect.Sabotage: SkillEffect.SabotageSkill sabotageEffect = new SkillEffect.SabotageSkill(); sabotageEffect.amount = effect.val; effects.Add(sabotageEffect); break; case SkillEffect.Effect.Slice: SkillEffect.SliceSkill sliceEffect = new SkillEffect.SliceSkill(); sliceEffect.amount = effect.val; sliceEffect.toRemove = effect.gem1; effects.Add(sliceEffect); break; case SkillEffect.Effect.xTurn: SkillEffect.xTurnSkill xTurnEffect = new SkillEffect.xTurnSkill(); xTurnEffect.amount = effect.val; effects.Add(xTurnEffect); break; } } thisSkill.effects = effects.ToArray(); retSkills.Add(thisSkill); } } } return(retSkills.ToArray()); }