package darkknight.jewelrycraft.affixes; import java.util.*; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import darkknight.jewelrycraft.api.ModifierEffect; import darkknight.jewelrycraft.random.WeightedRandomAffix; import net.minecraft.util.WeightedRandom; public class AffixMods { private static Map prefixes; private static Map suffixes; private static List generalPrefixGen; private static List generalSuffixGen; private static List ringPrefixGen; private static List ringSuffixGen; private static List braceletPrefixGen; private static List braceletSuffixGen; private static List necklacePrefixGen; private static List necklaceSuffixGen; private static List earringsPrefixGen; private static List earringsSuffixGen; public static void initializeAffixes(FMLPreInitializationEvent fpie) { initFields(); initFlatHealth(); initHitHeal(); initFlatDamage(); initFlatArmor(); initFlatArmLife(); initCoward(); initGambler(); initLooter(); } private static void initLooter() { ModifierEffect looter1 = new LootingAffix(1); ModifierEffect looter2 = new LootingAffix(2); ModifierEffect looter3 = new LootingAffix(3); suffixes.put("looter1", looter1); suffixes.put("looter2", looter2); suffixes.put("looter3", looter3); WeightedRandomAffix wralooter1 = new WeightedRandomAffix("looter1", 6); WeightedRandomAffix wralooter2 = new WeightedRandomAffix("looter2", 4); WeightedRandomAffix wralooter3 = new WeightedRandomAffix("looter3", 2); generalPrefixGen.add(wralooter1); ringPrefixGen.add(wralooter1); braceletPrefixGen.add(wralooter2); necklacePrefixGen.add(wralooter3); } private static void initGambler() { ModifierEffect gambler1 = new ComboAffix(new DamageAffix(0, 0, 1.25f), new ArmorAffix(0, 0, 1.25f)); ModifierEffect gambler2 = new ComboAffix(new DamageAffix(0, 0, 1.5f), new ArmorAffix(0, 0, 1.5f)); ModifierEffect gambler3 = new ComboAffix(new DamageAffix(0, 0, 1.75f), new ArmorAffix(0, 0, 1.75f)); prefixes.put("gambler1", gambler1); prefixes.put("gambler2", gambler2); prefixes.put("gambler3", gambler3); WeightedRandomAffix wragambler1 = new WeightedRandomAffix("gambler1", 6); WeightedRandomAffix wragambler2 = new WeightedRandomAffix("gambler2", 4); WeightedRandomAffix wragambler3 = new WeightedRandomAffix("gambler3", 2); necklacePrefixGen.add(wragambler1); earringsPrefixGen.add(wragambler2); earringsPrefixGen.add(wragambler3); } private static void initCoward() { ModifierEffect coward1 = new ComboAffix(new HealthAffix(2), new ArmorAffix(0, 0, 1.1f)); ModifierEffect coward2 = new ComboAffix(new HealthAffix(4), new ArmorAffix(0, 0, 1.2f)); ModifierEffect coward3 = new ComboAffix(new HealthAffix(6), new ArmorAffix(0, 0, 1.3f)); suffixes.put("coward1", coward1); suffixes.put("coward2", coward2); suffixes.put("coward3", coward3); WeightedRandomAffix wracoward1 = new WeightedRandomAffix("coward1", 9); WeightedRandomAffix wracoward2 = new WeightedRandomAffix("coward1", 7); WeightedRandomAffix wracoward3 = new WeightedRandomAffix("coward1", 5); generalSuffixGen.add(wracoward1); ringSuffixGen.add(wracoward1); braceletSuffixGen.add(wracoward2); necklaceSuffixGen.add(wracoward3); } private static void initFlatArmLife() { ModifierEffect flatarmlife1 = new ComboAffix(new HealthAffix(1), new ArmorAffix(1, 0, 1)); ModifierEffect flatarmlife2 = new ComboAffix(new HealthAffix(2), new ArmorAffix(2, 0, 1)); ModifierEffect flatarmlife3 = new ComboAffix(new HealthAffix(3), new ArmorAffix(3, 0, 1)); prefixes.put("flatarmlife1", flatarmlife1); prefixes.put("flatarmlife2", flatarmlife2); prefixes.put("flatarmlife3", flatarmlife3); WeightedRandomAffix wraflatarmlife1 = new WeightedRandomAffix("flatarmlife1", 8); WeightedRandomAffix wraflatarmlife2 = new WeightedRandomAffix("flatarmlife2", 6); WeightedRandomAffix wraflatarmlife3 = new WeightedRandomAffix("flatarmlife3", 4); generalPrefixGen.add(wraflatarmlife1); braceletPrefixGen.add(wraflatarmlife1); necklacePrefixGen.add(wraflatarmlife2); earringsPrefixGen.add(wraflatarmlife3); } private static void initFlatArmor() { ModifierEffect flatarm1 = new ArmorAffix(1, 0, 1); ModifierEffect flatarm2 = new ArmorAffix(2, 0, 1); ModifierEffect flatarm3 = new ArmorAffix(3, 0, 1); ModifierEffect flatarm4 = new ArmorAffix(4, 0, 1); ModifierEffect flatarm5 = new ArmorAffix(5, 0, 1); ModifierEffect flatarm6 = new ArmorAffix(6, 0, 1); suffixes.put("flatarm1", flatarm1); suffixes.put("flatarm2", flatarm2); suffixes.put("flatarm3", flatarm3); suffixes.put("flatarm4", flatarm4); suffixes.put("flatarm5", flatarm5); suffixes.put("flatarm6", flatarm6); WeightedRandomAffix wraflatarm1 = new WeightedRandomAffix("flatarm1", 9); WeightedRandomAffix wraflatarm2 = new WeightedRandomAffix("flatarm2", 8); WeightedRandomAffix wraflatarm3 = new WeightedRandomAffix("flatarm3", 6); WeightedRandomAffix wraflatarm4 = new WeightedRandomAffix("flatarm4", 4); WeightedRandomAffix wraflatarm5 = new WeightedRandomAffix("flatarm5", 2); WeightedRandomAffix wraflatarm6 = new WeightedRandomAffix("flatarm6", 1); generalSuffixGen.add(wraflatarm1); generalSuffixGen.add(wraflatarm2); generalSuffixGen.add(wraflatarm3); ringSuffixGen.add(wraflatarm1); ringSuffixGen.add(wraflatarm2); braceletSuffixGen.add(wraflatarm2); braceletSuffixGen.add(wraflatarm3); braceletSuffixGen.add(wraflatarm4); necklaceSuffixGen.add(wraflatarm4); necklaceSuffixGen.add(wraflatarm5); earringsSuffixGen.add(wraflatarm5); earringsSuffixGen.add(wraflatarm6); } private static void initFlatDamage() { ModifierEffect flatDMG1 = new DamageAffix(1, 0, 1); ModifierEffect flatDMG2 = new DamageAffix(2, 0, 1); ModifierEffect flatDMG3 = new DamageAffix(3, 0, 1); ModifierEffect flatDMG4 = new DamageAffix(4, 0, 1); ModifierEffect flatDMG5 = new DamageAffix(5, 0, 1); ModifierEffect flatDMG6 = new DamageAffix(6, 0, 1); prefixes.put("flatdmg1", flatDMG1); prefixes.put("flatdmg2", flatDMG2); prefixes.put("flatdmg3", flatDMG3); prefixes.put("flatdmg4", flatDMG4); prefixes.put("flatdmg5", flatDMG5); prefixes.put("flatdmg6", flatDMG6); WeightedRandomAffix wraflatDMG1 = new WeightedRandomAffix("flatdmg1", 9); WeightedRandomAffix wraflatDMG2 = new WeightedRandomAffix("flatdmg2", 8); WeightedRandomAffix wraflatDMG3 = new WeightedRandomAffix("flatdmg3", 6); WeightedRandomAffix wraflatDMG4 = new WeightedRandomAffix("flatdmg4", 4); WeightedRandomAffix wraflatDMG5 = new WeightedRandomAffix("flatdmg5", 2); WeightedRandomAffix wraflatDMG6 = new WeightedRandomAffix("flatdmg6", 1); generalPrefixGen.add(wraflatDMG1); generalPrefixGen.add(wraflatDMG2); ringPrefixGen.add(wraflatDMG1); braceletPrefixGen.add(wraflatDMG2); braceletPrefixGen.add(wraflatDMG3); necklacePrefixGen.add(wraflatDMG3); necklacePrefixGen.add(wraflatDMG4); necklacePrefixGen.add(wraflatDMG5); earringsPrefixGen.add(wraflatDMG5); earringsPrefixGen.add(wraflatDMG6); } private static void initHitHeal() { ModifierEffect hitheal1 = new FlatLifeHitAffix(1); ModifierEffect hitheal2 = new FlatLifeHitAffix(2); ModifierEffect hitheal3 = new FlatLifeHitAffix(3); suffixes.put("hitheal1", hitheal1); suffixes.put("hitheal2", hitheal2); suffixes.put("hitheal3", hitheal3); WeightedRandomAffix wraHitheal1 = new WeightedRandomAffix("hitheal1", 9); WeightedRandomAffix wraHitheal2 = new WeightedRandomAffix("hitheal2", 8); WeightedRandomAffix wraHitheal3 = new WeightedRandomAffix("hitheal3", 7); generalSuffixGen.add(wraHitheal1); braceletSuffixGen.add(wraHitheal1); braceletSuffixGen.add(wraHitheal2); necklaceSuffixGen.add(wraHitheal2); necklaceSuffixGen.add(wraHitheal3); } private static void initFlatHealth() { ModifierEffect health1 = new HealthAffix(1); ModifierEffect health2 = new HealthAffix(2); ModifierEffect health3 = new HealthAffix(3); ModifierEffect health4 = new HealthAffix(4); ModifierEffect health5 = new HealthAffix(5); ModifierEffect health6 = new HealthAffix(6); prefixes.put("health1", health1); prefixes.put("health2", health2); prefixes.put("health3", health3); prefixes.put("health4", health4); prefixes.put("health5", health5); prefixes.put("health6", health6); suffixes.put("health1", health1); suffixes.put("health2", health2); suffixes.put("health3", health3); WeightedRandomAffix wraHealth1 = new WeightedRandomAffix("health1", 9); WeightedRandomAffix wraHealth2 = new WeightedRandomAffix("health2", 8); WeightedRandomAffix wraHealth3 = new WeightedRandomAffix("health3", 6); WeightedRandomAffix wraHealth4 = new WeightedRandomAffix("health4", 4); WeightedRandomAffix wraHealth5 = new WeightedRandomAffix("health5", 2); WeightedRandomAffix wraHealth6 = new WeightedRandomAffix("health6", 1); generalPrefixGen.add(wraHealth1); generalPrefixGen.add(wraHealth2); generalPrefixGen.add(wraHealth3); ringPrefixGen.add(wraHealth1); ringPrefixGen.add(wraHealth2); braceletPrefixGen.add(wraHealth2); braceletPrefixGen.add(wraHealth3); necklacePrefixGen.add(wraHealth4); necklacePrefixGen.add(wraHealth5); earringsPrefixGen.add(wraHealth5); earringsPrefixGen.add(wraHealth6); generalSuffixGen.add(wraHealth1); generalSuffixGen.add(wraHealth2); generalSuffixGen.add(wraHealth3); ringSuffixGen.add(wraHealth1); ringSuffixGen.add(wraHealth2); braceletSuffixGen.add(wraHealth2); braceletSuffixGen.add(wraHealth3); } private static void initFields() { prefixes = new HashMap(); suffixes = new HashMap(); generalPrefixGen = new LinkedList(); generalSuffixGen = new LinkedList(); ringPrefixGen = new LinkedList(); ringSuffixGen = new LinkedList(); braceletPrefixGen = new LinkedList(); braceletSuffixGen = new LinkedList(); necklacePrefixGen = new LinkedList(); necklaceSuffixGen = new LinkedList(); earringsPrefixGen = new LinkedList(); earringsSuffixGen = new LinkedList(); } public static ModifierEffect getPrefix(String prefix) { return prefixes.get(prefix); } public static ModifierEffect getSuffix(String suffix) { return suffixes.get(suffix); } public static String pickPrefix(Random random, int jewelType) { List pickList = generalPrefixGen; if (random.nextInt(3) != 0) { switch (jewelType) { case 0: pickList = ringPrefixGen; break; case 1: pickList = braceletPrefixGen; break; case 2: pickList = necklacePrefixGen; break; case 3: pickList = earringsPrefixGen; break; case -1: default: pickList = generalPrefixGen; } } if (pickList.size() <= 0) pickList = generalPrefixGen; WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, pickList)); return wra.getAffix(random); } public static String pickSuffix(Random random, int jewelType) { List pickList = generalSuffixGen; if (random.nextInt(3) != 0) { switch (jewelType) { case 0: pickList = ringSuffixGen; break; case 1: pickList = braceletSuffixGen; break; case 2: pickList = necklaceSuffixGen; break; case 3: pickList = earringsSuffixGen; break; case -1: default: pickList = generalSuffixGen; } } if (pickList.size() <= 0) pickList = generalSuffixGen; WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, pickList)); return wra.getAffix(random); } }