4 changed files with 145 additions and 1 deletions
			
			
		| @ -0,0 +1,139 @@ | |||||||
|  | package engine; | ||||||
|  | 
 | ||||||
|  | import engine.InterestManagement.WorldGrid; | ||||||
|  | import engine.gameManager.BuildingManager; | ||||||
|  | import engine.gameManager.ChatManager; | ||||||
|  | import engine.math.Vector3fImmutable; | ||||||
|  | import engine.objects.*; | ||||||
|  | import engine.server.MBServerStatics; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Random; | ||||||
|  | import java.util.concurrent.ThreadLocalRandom; | ||||||
|  | 
 | ||||||
|  | public class PlayerAi { | ||||||
|  |     public static ArrayList<PlayerCharacter> ai_players = new ArrayList<>(); | ||||||
|  | 
 | ||||||
|  |     public static void addPlayer(PlayerCharacter pc){ | ||||||
|  |         ai_players.add(pc); | ||||||
|  |         int index = ai_players.indexOf(pc); | ||||||
|  |         pc.setObjectUUID(MBServerStatics.NO_DB_ROW_ASSIGNED_YET - (1 + index)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void populate_world(){ | ||||||
|  |         for(Mine mine : Mine.getMines()){ | ||||||
|  |             Building tower = BuildingManager.getBuildingFromCache(mine.getBuildingID()); | ||||||
|  |             if(tower != null){ | ||||||
|  |                 for(int i = 0; i < mine.capSize; i++){ | ||||||
|  |                     addPlayer(createPlayer(tower)); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static PlayerCharacter createPlayer(Building tower){ | ||||||
|  | 
 | ||||||
|  |         Vector3fImmutable loc = Vector3fImmutable.getRandomPointOnCircle(tower.loc,40f); | ||||||
|  | 
 | ||||||
|  |         //get random race
 | ||||||
|  |         Race race = null; | ||||||
|  |         while(race == null) { | ||||||
|  |             int raceId = ThreadLocalRandom.current().nextInt(1999, 2030); | ||||||
|  |             while (raceId == 2021 || raceId == 2020 || raceId == 2019 || raceId == 2018) { | ||||||
|  |                 raceId = ThreadLocalRandom.current().nextInt(1999, 2030); | ||||||
|  |             } | ||||||
|  |             race = Race.getRace(raceId); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         //get random baseClass
 | ||||||
|  |         BaseClass baseClass = null; | ||||||
|  |         while(baseClass == null) { | ||||||
|  |             int baseId = ThreadLocalRandom.current().nextInt(2499, 2505); | ||||||
|  |             BaseClass temp = BaseClass.getBaseClass(baseId); | ||||||
|  |             if (temp == null || !race.getValidBaseClasses().contains(temp)) { | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  |             baseClass = BaseClass.getBaseClass(baseId); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         PlayerCharacter newPLayer = new PlayerCharacter("", "AI POWERED", (short) 5, (short) 5, (short) 5, (short) 5, | ||||||
|  |                 (short) 5, Guild.getGuild(5), (byte) 0, (Account) null, race, baseClass | ||||||
|  |                 , (byte) 1, (byte) 1, | ||||||
|  |                 (byte) 1, (byte) 1, (byte) 1); | ||||||
|  | 
 | ||||||
|  |         newPLayer.runAfterLoad(); | ||||||
|  | 
 | ||||||
|  |         if(newPLayer.isMale()) { | ||||||
|  |             newPLayer.setFirstName(getMaleName()); | ||||||
|  |         }else { | ||||||
|  |             newPLayer.setFirstName(getFemaleName()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         newPLayer.setLevel((short)10); | ||||||
|  | 
 | ||||||
|  |         PromotionClass promo = null; | ||||||
|  |         while(promo == null){ | ||||||
|  |             int promoId = ThreadLocalRandom.current().nextInt(2508,2526); | ||||||
|  |             PromotionClass temp = PromotionClass.GetPromtionClassFromCache(promoId); | ||||||
|  |             if(temp == null) | ||||||
|  |                 continue; | ||||||
|  |             if(!temp.isAllowedRune(race.getToken())) | ||||||
|  |                 continue; | ||||||
|  |             if(!temp.isAllowedRune(baseClass.getToken())) | ||||||
|  |                 continue; | ||||||
|  |             promo = PromotionClass.GetPromtionClassFromCache(promoId); | ||||||
|  |         } | ||||||
|  |         newPLayer.setPromotionClass(promo.getObjectUUID()); | ||||||
|  |         newPLayer.setLevel((short)75); | ||||||
|  | 
 | ||||||
|  |         newPLayer.setLoc(loc); | ||||||
|  | 
 | ||||||
|  |         newPLayer.setObjectTypeMask(MBServerStatics.MASK_PLAYER); | ||||||
|  |         WorldGrid.addObject(newPLayer,loc.x,loc.z); | ||||||
|  | 
 | ||||||
|  |         return newPLayer; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void run_ai_players() { | ||||||
|  |         for (PlayerCharacter pc : ai_players) { | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static String getMaleName(){ | ||||||
|  |         String[] maleNames = { | ||||||
|  |                 "James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Thomas", "Charles", | ||||||
|  |                 "Christopher", "Daniel", "Matthew", "Anthony", "Mark", "Donald", "Steven", "Paul", "Andrew", "Joshua", | ||||||
|  |                 "Kenneth", "Kevin", "Brian", "George", "Edward", "Ronald", "Timothy", "Jason", "Jeffrey", "Ryan", | ||||||
|  |                 "Jacob", "Gary", "Nicholas", "Eric", "Jonathan", "Stephen", "Larry", "Justin", "Scott", "Brandon", | ||||||
|  |                 "Benjamin", "Samuel", "Gregory", "Alexander", "Patrick", "Frank", "Raymond", "Jack", "Dennis", "Jerry", | ||||||
|  |                 "Tyler", "Aaron", "Jose", "Adam", "Nathan", "Henry", "Douglas", "Zachary", "Peter", "Kyle", | ||||||
|  |                 "Walter", "Ethan", "Jeremy", "Harold", "Keith", "Christian", "Roger", "Noah", "Gerald", "Carl", | ||||||
|  |                 "Terry", "Sean", "Austin", "Arthur", "Lawrence", "Jesse", "Dylan", "Bryan", "Joe", "Jordan", | ||||||
|  |                 "Billy", "Bruce", "Albert", "Willie", "Gabriel", "Logan", "Alan", "Juan", "Wayne", "Roy", | ||||||
|  |                 "Ralph", "Randy", "Eugene", "Vincent", "Russell", "Louis", "Philip", "Bobby", "Johnny", "Bradley" | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         Random random = new Random(); | ||||||
|  |         return maleNames[random.nextInt(maleNames.length)]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static String getFemaleName(){ | ||||||
|  |         String[] femaleNames = { | ||||||
|  |                 "Mary", "Patricia", "Jennifer", "Linda", "Elizabeth", "Barbara", "Susan", "Jessica", "Sarah", "Karen", | ||||||
|  |                 "Nancy", "Lisa", "Betty", "Margaret", "Sandra", "Ashley", "Kimberly", "Emily", "Donna", "Michelle", | ||||||
|  |                 "Carol", "Amanda", "Melissa", "Deborah", "Stephanie", "Rebecca", "Laura", "Sharon", "Cynthia", "Kathleen", | ||||||
|  |                 "Amy", "Shirley", "Angela", "Helen", "Anna", "Brenda", "Pamela", "Nicole", "Samantha", "Katherine", | ||||||
|  |                 "Christine", "Debra", "Rachel", "Catherine", "Carolyn", "Janet", "Ruth", "Maria", "Heather", "Diane", | ||||||
|  |                 "Virginia", "Julie", "Joyce", "Victoria", "Kelly", "Christina", "Lauren", "Joan", "Evelyn", "Judith", | ||||||
|  |                 "Olivia", "Frances", "Martha", "Cheryl", "Megan", "Andrea", "Hannah", "Jacqueline", "Ann", "Gloria", | ||||||
|  |                 "Jean", "Kathryn", "Alice", "Teresa", "Sara", "Janice", "Doris", "Madison", "Julia", "Grace", | ||||||
|  |                 "Judy", "Abigail", "Marie", "Denise", "Beverly", "Amber", "Theresa", "Marilyn", "Danielle", "Diana", | ||||||
|  |                 "Brittany", "Natalie", "Sophia", "Rose", "Isabella", "Alexis", "Kayla", "Charlotte", "Faith", "Alyssa" | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         Random random = new Random(); | ||||||
|  |         return femaleNames[random.nextInt(femaleNames.length)]; | ||||||
|  |     } | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue