private void generateTeam( String team, int members, List<String> allowedItems, List<String> allowedWeapons, LevelBlock spawnRoom) { double[] randomLocation = levelManager.randomInPosition(spawnRoom); Pattern numberPattern = Pattern.compile("[0-9]+"); Matcher numberMatcher; numberMatcher = numberPattern.matcher(team); numberMatcher.find(); for (int i = 0; i < members; i++) { AiImage aiImg = new AiImage( aiCrowd, combatMembersManager, combatUiManager, combatVisualManager, panningManager, 0, 0, mouseAbilityHandler, floatingIcons); String faction = team.substring(numberMatcher.group().length()); DialoguePool dialoguePool = new DialoguePool(faction, missionManager, cartographer, messageBox); ThinkingAi ai = new ThinkingAi( dialoguePool, panningManager, combatVisualManager, turnProcess, floatingIcons, mouseAbilityHandler, aiCrowd, combatMembersManager, randomName(), randomLocation[0], randomLocation[1], levelManager, combatInorganicManager, combatUiManager, lootbox); ai.setImage(randomImage()); ai.setTeam(team); applyLootList(allowedItems, allowedWeapons, ai); switch (ai.getFaction()) { case BANDITS: ai.setBaseAggression(ThinkingAiEmotion.AGGRESSIVE_FIGHTER); ai.setImage("Bandit"); break; case WHITE_VISTA: ai.setBaseAggression(ThinkingAiEmotion.PASSIVE_RESPOND); ai.setImage("Armour"); break; } ai.assignAbilities(); aiImg.setAi(ai); aiCrowd.addDisplayItem(aiImg); aiCrowd.addMouseActionItem(aiImg); aiCrowd.addActor(ai, new DirectorClassification(DirectorArchetype.UNDECIDED)); aiCrowd.addMask(aiImg); randomLocation = levelManager.randomInPosition(spawnRoom); combatMembersManager.addAi(ai); } }