using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DIGIEVO { public struct Trait { public enum TraitGroup { None, Nature, Body } public const int NUMBER_OF_TRAITS = 32; public static List allTraits; public int type; public TraitGroup group; public string name; public int expCost; public bool canForget; public string description; public float rarity; //elemental change public bool elementChange; public Element elementToChange; //stat changes, percentage public float HPChange; public float ATKChange; public float SPCChange; public float DEFChange; public float AGIChange; public void ApplyTrait(Creature creature) { if (elementChange) creature.element = elementToChange; } public static void InitAllTraits() { allTraits = new List(); for (int i = 0; i < NUMBER_OF_TRAITS; i++) { Trait trait = new Trait(); trait.type = i; trait.group = TraitGroup.None; trait.name = "UNKNOWN"; trait.description = ""; trait.elementChange = false; trait.expCost = 100; trait.canForget = true; trait.HPChange = 1; trait.ATKChange = 1; trait.SPCChange = 1; trait.DEFChange = 1; trait.AGIChange = 1; trait.rarity = 0.5f; switch (i) { //-------------NATURES-------- case 0: trait.group = TraitGroup.Nature; trait.name = "NATURE: NORMAL"; trait.elementChange = true; trait.elementToChange = Element.NORMAL; trait.description = "CREATURE's element is NORMAL."; break; case 1: trait.group = TraitGroup.Nature; trait.name = "NATURE: FIRE"; trait.elementChange = true; trait.elementToChange = Element.FIRE; trait.description = "CREATURE's element is FIRE."; break; case 2: trait.group = TraitGroup.Nature; trait.name = "NATURE: WATER"; trait.elementChange = true; trait.elementToChange = Element.WATER; trait.description = "CREATURE's element is WATER."; break; case 3: trait.group = TraitGroup.Nature; trait.name = "NATURE: GRASS"; trait.elementChange = true; trait.elementToChange = Element.GRASS; trait.description = "CREATURE's element is GRASS."; break; case 4: trait.group = TraitGroup.Nature; trait.name = "NATURE: LIGHT"; trait.elementChange = true; trait.elementToChange = Element.LIGHT; trait.description = "CREATURE's element is LIGHT."; break; case 5: trait.group = TraitGroup.Nature; trait.name = "NATURE: DARK"; trait.elementChange = true; trait.elementToChange = Element.DARK; trait.description = "CREATURE's element is DARK."; break; //-----------BODIES--------- case 6: trait.group = TraitGroup.Body; trait.name = "SMALL ROUND BODY"; trait.ATKChange = 0.8f; trait.DEFChange = 0.8f; trait.HPChange = 0.8f; trait.AGIChange = 1.5f; trait.description = "Small but agile body.\nAGI++ ATK- DEF- HP-"; break; case 7: trait.group = TraitGroup.Body; trait.name = "ROUND BODY"; trait.description = "Average body.\n(Does not affect STATS.)"; break; case 8: trait.group = TraitGroup.Body; trait.name = "SMALL ARMORED BODY"; trait.ATKChange = 0.8f; trait.DEFChange = 1.2f; trait.HPChange = 0.8f; trait.AGIChange = 1.2f; trait.description = "Hard and fast body. Slightly lacking in strength.\nDEF+ AGI+ HP- ATK-"; break; case 9: trait.group = TraitGroup.Body; trait.name = "ARMORED BODY"; trait.DEFChange = 1.5f; trait.HPChange = 0.8f; trait.AGIChange = 0.8f; trait.description = "Hard and heavy body. Not very durable.\nDEF++ HP- AGI-"; break; case 10: trait.group = TraitGroup.Body; trait.name = "TINY BODY"; trait.ATKChange = 0.5f; trait.DEFChange = 0.5f; trait.HPChange = 0.5f; trait.AGIChange = 3f; trait.description = "Weak but very agile body.\nAGI+++ ATK-- DEF-- HP--"; break; case 11: trait.group = TraitGroup.Body; trait.name = "LARGE BODY"; trait.ATKChange = 1.5f; trait.DEFChange = 0.8f; trait.HPChange = 1.5f; trait.AGIChange = 0.6f; trait.description = "Large, slow, strong body.\nATK++ HP++ DEF- AGI--"; break; //------------------ case 12: trait.name = "AGGRESSIVE"; trait.description = "ATK+ DEF-"; trait.ATKChange = 1.2f; trait.DEFChange = 0.8f; break; case 13: trait.name = "PHYSICAL"; trait.description = "ATK+ SPC-"; trait.ATKChange = 1.2f; trait.SPCChange = 0.8f; break; case 14: trait.name = "MUSCLED"; trait.description = "ATK+ AGI-"; trait.ATKChange = 1.2f; trait.AGIChange = 0.8f; break; case 15: trait.name = "GLASS CANNON"; trait.description = "ATK+ HP-"; trait.ATKChange = 1.2f; trait.HPChange = 0.8f; break; case 16: trait.name = "DEFENSIVE"; trait.description = "DEF+ ATK-"; trait.DEFChange = 1.2f; trait.ATKChange = 0.8f; break; case 17: trait.name = "NATURAL"; trait.description = "DEF+ SPC-"; trait.DEFChange = 1.2f; trait.SPCChange = 0.8f; break; case 18: trait.name = "ROCK SOLID"; trait.description = "DEF+ AGI-"; trait.DEFChange = 1.2f; trait.AGIChange = 0.8f; break; case 19: trait.name = "RESISTING"; trait.description = "DEF+ HP-"; trait.DEFChange = 1.2f; trait.HPChange = 0.8f; break; case 20: trait.name = "ELEMENTAL"; trait.description = "SPC+ ATK-"; trait.SPCChange = 1.2f; trait.ATKChange = 0.8f; break; case 21: trait.name = "MYSTIC"; trait.description = "SPC+ DEF-"; trait.SPCChange = 1.2f; trait.DEFChange = 0.8f; break; case 22: trait.name = "OTHERWORLDLY"; trait.description = "SPC+ AGI-"; trait.SPCChange = 1.2f; trait.AGIChange = 0.8f; break; case 23: trait.name = "MAGUS"; trait.description = "SPC+ HP-"; trait.SPCChange = 1.2f; trait.HPChange = 0.8f; break; case 24: trait.name = "QUICK"; trait.description = "AGI+ ATK-"; trait.AGIChange = 1.2f; trait.ATKChange = 0.8f; break; case 25: trait.name = "NIMBLE"; trait.description = "AGI+ DEF-"; trait.AGIChange = 1.2f; trait.DEFChange = 0.8f; break; case 26: trait.name = "AGILE"; trait.description = "AGI+ SPC-"; trait.AGIChange = 1.2f; trait.SPCChange = 0.8f; break; case 27: trait.name = "DODGER"; trait.description = "AGI+ HP-"; trait.AGIChange = 1.2f; trait.HPChange = 0.8f; break; case 28: trait.name = "PASSIVE"; trait.description = "HP+ ATK-"; trait.HPChange = 1.2f; trait.ATKChange = 0.8f; break; case 29: trait.name = "ENDURING"; trait.description = "HP+ DEF-"; trait.HPChange = 1.2f; trait.DEFChange = 0.8f; break; case 30: trait.name = "TOUGH"; trait.description = "HP+ SPC-"; trait.HPChange = 1.2f; trait.SPCChange = 0.8f; break; case 31: trait.name = "TANK"; trait.description = "HP+ AGI-"; trait.HPChange = 1.2f; trait.AGIChange = 0.8f; break; } allTraits.Add(trait); } } } }