From 065aa34652dc5b7ef252ca5519cff4811e7bd281 Mon Sep 17 00:00:00 2001
From: MagicBot <MagicBot@magicbane.com>
Date: Sun, 28 Apr 2024 13:23:52 -0400
Subject: [PATCH] Update to type constructor

---
 src/engine/mbEnums.java | 68 +++++++++++++++++++++++++++--------------
 1 file changed, 45 insertions(+), 23 deletions(-)

diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java
index 720ede75..33406f48 100644
--- a/src/engine/mbEnums.java
+++ b/src/engine/mbEnums.java
@@ -2230,7 +2230,8 @@ public class mbEnums {
         NONE("None", new String[][]{{"None"}}, new String[]{"Thearchy", "Common Rule", "Theocracy", "Republic Rule"},
                 EnumSet.noneOf(ClassType.class),
                 EnumSet.noneOf(MonsterType.class),
-                EnumSet.noneOf(SexType.class)),
+                EnumSet.noneOf(SexType.class),
+                0),
 
         CATHEDRAL("Church of the All-Father", new String[][]{
                 {"Acolyte", "Acolyte"},
@@ -2246,7 +2247,8 @@ public class mbEnums {
                         ClassType.Prelate, ClassType.Priest, ClassType.Sentinel, ClassType.Scout),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Centaur, MonsterType.Elf, MonsterType.HalfGiant,
                         MonsterType.Human),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                559),
         MILITARY("Military", new String[][]{
                 {"Recruit"},
                 {"Footman"},
@@ -2260,7 +2262,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Bard, ClassType.Priest, ClassType.Scout, ClassType.Warlock,
                         ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Centaur, MonsterType.HalfGiant, MonsterType.Human),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                560),
         TEMPLE("Temple of the Cleansing Flame", new String[][]{
                 {"Aspirant"},
                 {"Novice"},
@@ -2275,7 +2278,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Assassin, ClassType.Bard, ClassType.Channeler, ClassType.Confessor,
                         ClassType.Nightstalker, ClassType.Priest, ClassType.Scout, ClassType.Templar),
                 EnumSet.of(MonsterType.HalfGiant, MonsterType.Human),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                561),
         BARBARIAN("Barbarian Clan", new String[][]{
                 {"Barbarian"},
                 {"Skald"},
@@ -2288,7 +2292,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Barbarian, ClassType.Bard, ClassType.Doomsayer, ClassType.Fury,
                         ClassType.Priest, ClassType.Scout, ClassType.Thief, ClassType.Warrior),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.HalfGiant, MonsterType.Human, MonsterType.Minotaur),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                562),
         RANGER("Ranger's Brotherhood", new String[][]{
                 {"Yeoman"},
                 {"Pathfinder"},
@@ -2301,7 +2306,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Bard, ClassType.Channeler, ClassType.Druid, ClassType.Priest,
                         ClassType.Ranger, ClassType.Scout, ClassType.Warrior),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Elf, MonsterType.HalfGiant, MonsterType.Human, MonsterType.Shade),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                563),
         AMAZON("Amazon Temple", new String[][]{
                 {"Amazon Thrall", "Amazon"},
                 {"Amazon Slave", "Amazon Warrior"},
@@ -2313,7 +2319,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Bard, ClassType.Druid, ClassType.Fury, ClassType.Huntress,
                         ClassType.Priest, ClassType.Scout, ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Elf, MonsterType.HalfGiant, MonsterType.Human),
-                EnumSet.of(SexType.FEMALE)),
+                EnumSet.of(SexType.FEMALE),
+                564),
         NOBLE("Noble House", new String[][]{
                 {"Serf"},
                 {"Vassal"},
@@ -2328,7 +2335,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Assassin, ClassType.Bard, ClassType.Channeler, ClassType.Priest,
                         ClassType.Scout, ClassType.Thief, ClassType.Warlock, ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.HalfGiant, MonsterType.Human),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                565),
         WIZARD("Wizard's Conclave", new String[][]{
                 {"Apprentice"},
                 {"Neophyte"},
@@ -2341,7 +2349,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Assassin, ClassType.Bard, ClassType.Channeler, ClassType.Doomsayer,
                         ClassType.Fury, ClassType.Necromancer, ClassType.Priest, ClassType.Warlock, ClassType.Wizard),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Elf, MonsterType.Human, MonsterType.Nephilim, MonsterType.Shade),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                566),
         MERCENARY("Mercenary Company", new String[][]{
                 {"Soldier"},
                 {"Man-at-Arms"},
@@ -2355,7 +2364,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Assassin, ClassType.Bard, ClassType.Priest, ClassType.Scout,
                         ClassType.Thief, ClassType.Warlock, ClassType.Warrior),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Aracoix, MonsterType.HalfGiant, MonsterType.Human, MonsterType.Shade),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                567),
         THIEVES("Thieve's Den", new String[][]{
                 {"Urchin"},
                 {"Footpad"},
@@ -2371,7 +2381,8 @@ public class mbEnums {
                         ClassType.Scout, ClassType.Thief, ClassType.Wizard),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Aracoix, MonsterType.Elf, MonsterType.Human, MonsterType.Irekei,
                         MonsterType.Nephilim, MonsterType.Shade, MonsterType.Vampire),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                568),
         DWARF("Dwarf Hold", new String[][]{
                 {"Citizen"},
                 {"Master"},
@@ -2383,7 +2394,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Crusader, ClassType.Prelate, ClassType.Priest, ClassType.Sentinel,
                         ClassType.Warrior),
                 EnumSet.of(MonsterType.Dwarf),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                569),
         HIGHCOURT("High Court", new String[][]{
                 {"Eccekebe"},
                 {"Saedulor"},
@@ -2399,7 +2411,8 @@ public class mbEnums {
                         ClassType.Necromancer, ClassType.Priest, ClassType.Ranger, ClassType.Scout,
                         ClassType.Thief, ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Elf, MonsterType.Minotaur),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                570),
         VIRAKT("Virakt", new String[][]{
                 {"Jov'uus"},
                 {"Urikhan"},
@@ -2414,7 +2427,8 @@ public class mbEnums {
                         ClassType.Huntress, ClassType.Nightstalker, ClassType.Priest, ClassType.Ranger,
                         ClassType.Scout, ClassType.Thief, ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Irekei),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                571),
         BRIALIA("Coven of Brialia", new String[][]{ // Unknown Rank names
                 {"Devotee"},
                 {"Initiated"},
@@ -2427,8 +2441,8 @@ public class mbEnums {
                 new String[]{"Despot Rule", "Common Rule", "Council Rule", "Republic Rule"},
                 EnumSet.allOf(ClassType.class),
                 EnumSet.allOf(MonsterType.class),
-                EnumSet.allOf(SexType.class)),
-
+                EnumSet.allOf(SexType.class),
+                577),
         UNHOLY("Unholy Legion", new String[][]{ // Unknown Rank names
                 {"Footman"},
                 {"Fell Legionaire"},
@@ -2443,7 +2457,8 @@ public class mbEnums {
                         ClassType.Scout, ClassType.Thief, ClassType.Warlock, ClassType.Warrior,
                         ClassType.Wizard),
                 EnumSet.of(MonsterType.Human, MonsterType.Shade, MonsterType.Vampire),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                575),
         SCOURGE("Cult of the Scourge", new String[][]{
                 {"Thrall"},
                 {"Mudir"},
@@ -2454,7 +2469,8 @@ public class mbEnums {
                 EnumSet.of(ClassType.Bard, ClassType.Channeler, ClassType.Doomsayer, ClassType.Priest,
                         ClassType.Scout, ClassType.Warrior, ClassType.Wizard),
                 EnumSet.of(MonsterType.Aelfborn, MonsterType.Human, MonsterType.Minotaur, MonsterType.Nephilim),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                572),
         PIRATE("Pirate Crew", new String[][]{
                 {"Midshipman", "Midshipwoman"},
                 {"Sailor"},
@@ -2465,7 +2481,8 @@ public class mbEnums {
                 new String[]{"Despot Rule", "Common Rule", "Council Rule", "Republic Rule"},
                 EnumSet.allOf(ClassType.class),
                 EnumSet.allOf(MonsterType.class),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                576),
         HERALD("Academy of Heralds", new String[][]{
                 {"Pupil"},
                 {"Scribe"},
@@ -2478,7 +2495,8 @@ public class mbEnums {
                 new String[]{"Despot Rule", "Common Rule", "Council Rule", "Republic Rule"},
                 EnumSet.allOf(ClassType.class),
                 EnumSet.allOf(MonsterType.class),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                582),
         CENTAUR("Centaur Cohort", new String[][]{
                 {"Hoplite"},
                 {"Peltast"},
@@ -2493,7 +2511,8 @@ public class mbEnums {
                         ClassType.Prelate, ClassType.Priest, ClassType.Ranger, ClassType.Sentinel,
                         ClassType.Warrior),
                 EnumSet.of(MonsterType.Centaur),
-                EnumSet.allOf(SexType.class)),
+                EnumSet.allOf(SexType.class),
+                574),
         KHREE("Aracoix Kh'ree", new String[][]{
                 {"Duriacor"},
                 {"Exarch"},
@@ -2510,7 +2529,8 @@ public class mbEnums {
                         ClassType.Priest, ClassType.Ranger, ClassType.Scout, ClassType.Thief,
                         ClassType.Warlock, ClassType.Warrior),
                 EnumSet.of(MonsterType.Aracoix),
-                EnumSet.allOf(SexType.class));
+                EnumSet.allOf(SexType.class),
+                573);
 
         public final EnumSet<ClassType> requiredClasses;
         public final EnumSet<MonsterType> requiredRaces;
@@ -2518,15 +2538,17 @@ public class mbEnums {
         private final String name;
         private final String[][] ranks;    //Stored Rank#->Gender(M,F)
         private final String[] leadershipTypes;
+        private final int templateID;
 
         GuildCharterType(String name, String[][] ranks, String[] leadershipTypes, EnumSet<ClassType> requiredClasses,
-                         EnumSet<MonsterType> requiredRaces, EnumSet<SexType> sexRequired) {
+                         EnumSet<MonsterType> requiredRaces, EnumSet<SexType> sexRequired, int templateID) {
             this.name = name;
             this.ranks = ranks;
             this.leadershipTypes = leadershipTypes;
             this.requiredClasses = requiredClasses;
             this.requiredRaces = requiredRaces;
             this.sexRequired = sexRequired;
+            this.templateID = templateID;
         }
 
         public static GuildCharterType getGuildTypeFromCharter(Item charter) {