Advertisement
LJLim

Fleet injector

Mar 11th, 2015
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.98 KB | None | 0 0
  1. public static void levelCommander(PersonAPI commander, CampaignFleetAPI fleet, CommanderType commanderType, String faction, float level)
  2.     {
  3.         FactionStyle factionStyle = FactionStyle.getStyle(faction);
  4.         commander.getStats().addXP(levelUp.getXPForLevel((int)(level * factionStyle.xpMult * Global.getSettings().getFloat("aiLevelFactor"))));
  5.         commander.getStats().levelUpIfNeeded();
  6.         commander.getStats().addAptitudePoints(2);
  7.         commander.getStats().addSkillPoints(6);
  8.         SSP_FleetInjector.CommanderType.AptitudeData apt = commanderType.getAptitudes(commander.getStats().getAptitudePoints(), factionStyle);
  9.         SSP_LevelUpper.levelUp(commander, fleet, apt.combat, apt.leadership, apt.technology, faction);
  10.     }
  11.  
  12.     public static void levelFleet(CampaignFleetAPI fleet, CrewType crewType, FleetStyle fleetStyle, String faction)
  13.     {
  14.         FactionStyle factionStyle = FactionStyle.getStyle(faction);
  15.         List<FleetMemberAPI> members = fleet.getFleetData().getMembersListCopy();
  16.         int crew = 0;
  17.         for (FleetMemberAPI member : members) {
  18.           crew += (int)((member.getMinCrew() + member.getMaxCrew() * 0.25F) / 1.25F);
  19.         }
  20.         SSP_FleetInjector.CrewType.CrewData data = crewType.getCrewData(crew, factionStyle);
  21.         SSP_LevelUpper.levelCrew(fleet, crew, data.green, data.regular, data.veteran, data.elite);
  22.         fleet.forceSync();
  23.         SSP_LevelUpper.flavorCaptains(fleet, fleetStyle.cowardly * factionStyle.cowardly, fleetStyle.cautious * factionStyle.cautious, fleetStyle.steady * factionStyle.steady, fleetStyle.aggressive * factionStyle.aggressive, fleetStyle.suicidal * factionStyle.suicidal, fleetStyle.fearless * factionStyle.fearless);
  24.         for (FleetMemberAPI member : members) {
  25.           member.getStats().getAutofireAimAccuracy().modifyFlat("ssp_AIFleetBonus", fleet.getCommanderStats().getSkillLevel("command_experience") * 0.05F);
  26.         }
  27.     }
  28.    
  29.     /**
  30.      * Used by Starsector Plus
  31.      * @param fleet
  32.      * @param market
  33.      * @param stability
  34.      * @param qualityFactor
  35.      * @param type
  36.      */
  37.     public static void injectFleet(CampaignFleetAPI fleet, MarketAPI market, Float stability, Float qualityFactor, String type) {
  38.         boolean haveSSP = ExerelinUtils.isSSPInstalled();
  39.         if (!haveSSP) return;
  40.        
  41.         String faction = fleet.getFaction().getId();
  42.         if (!INJECTOR_AFFECTED_FACTIONS.contains(faction)) {
  43.           return;
  44.         }
  45.         MemoryAPI memory = fleet.getMemoryWithoutUpdate();
  46.         int maxFP = memory.contains("$maxFP") ? ((Integer)memory.get("$maxFP")).intValue() : fleet.getFleetPoints();
  47.  
  48.         if ((type != null) && (!type.isEmpty())) {
  49.             switch (type)
  50.             {
  51.                 case "exerelinInvasionFleet":
  52.                     levelCommander(fleet.getCommander(), fleet, CommanderType.ELITE, faction, (maxFP + 100.0F) / ((float)Math.random() * 3.0F + 6.0F));
  53.                     SSP_FleetFactory.createGenericFleet(fleet, faction, qualityFactor, maxFP);
  54.                     levelFleet(fleet, CrewType.ELITE, FleetStyle.ELITE, faction);
  55.                     break;
  56.                 case "exerelinInvasionSupportFleet":
  57.                     levelCommander(fleet.getCommander(), fleet, CommanderType.WAR, faction, (maxFP + 100.0F) / ((float)Math.random() * 3.0F + 6.0F));
  58.                     SSP_FleetFactory.createGenericFleet(fleet, faction, qualityFactor, maxFP);
  59.                     levelFleet(fleet, CrewType.MILITARY, FleetStyle.MILITARY, faction);
  60.                     break;
  61.                 case "exerelinResponseFleet":
  62.                     levelCommander(fleet.getCommander(), fleet, CommanderType.WAR, faction, (maxFP + 100.0F) / ((float)Math.random() * 3.0F + 6.0F));
  63.                     SSP_FleetFactory.createGenericFleet(fleet, faction, qualityFactor, maxFP);
  64.                     levelFleet(fleet, CrewType.MILITARY, FleetStyle.MILITARY, faction);
  65.                     break;  
  66.             }
  67.         }
  68.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement