001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.util.List; 004import java.util.Map; 005 006import com.fs.starfarer.api.Global; 007import com.fs.starfarer.api.Script; 008import com.fs.starfarer.api.campaign.CampaignFleetAPI; 009import com.fs.starfarer.api.campaign.CargoAPI; 010import com.fs.starfarer.api.campaign.InteractionDialogAPI; 011import com.fs.starfarer.api.campaign.PlanetAPI; 012import com.fs.starfarer.api.campaign.StarSystemAPI; 013import com.fs.starfarer.api.campaign.rules.MemKeys; 014import com.fs.starfarer.api.campaign.rules.MemoryAPI; 015import com.fs.starfarer.api.characters.CharacterCreationData; 016import com.fs.starfarer.api.characters.PersonAPI; 017import com.fs.starfarer.api.fleet.FleetMemberAPI; 018import com.fs.starfarer.api.impl.campaign.ids.Commodities; 019import com.fs.starfarer.api.impl.campaign.ids.Factions; 020import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionIntel; 021import com.fs.starfarer.api.util.Misc.Token; 022 023/** 024 * $ngcAddOfficer 025 * $ngcSkipTutorial 026 * 027 */ 028public class NGCAddDevStartingScript extends BaseCommandPlugin { 029 030 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 031 if (dialog == null) return false; 032 033 CharacterCreationData data = (CharacterCreationData) memoryMap.get(MemKeys.LOCAL).get("$characterData"); 034 final MemoryAPI memory = memoryMap.get(MemKeys.LOCAL); 035 data.addScript(new Script() { 036 public void run() { 037 038 Global.getSector().getPlayerStats().addStoryPoints(100); 039 040 CampaignFleetAPI fleet = Global.getSector().getPlayerFleet(); 041 fleet.getFleetData().addFleetMember("hammerhead_Balanced"); 042 fleet.getFleetData().addFleetMember("tarsus_Standard"); 043 fleet.getFleetData().addFleetMember("dram_Light"); 044 // add crew, supplies, and fuel 045 int crew = 0; 046 int supplies = 0; 047 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) { 048 crew += Math.ceil(member.getMinCrew() + (member.getMaxCrew() - member.getMinCrew()) * 0.5f); 049 supplies += member.getDeploymentCostSupplies() * 4f; 050 } 051 052 CargoAPI cargo = fleet.getCargo(); 053 cargo.removeCrew(cargo.getCrew()); 054 cargo.addCrew(crew); 055 cargo.addFuel(cargo.getMaxFuel() * 0.5f); 056 057 cargo.addCommodity(Commodities.ALPHA_CORE, 10); 058 cargo.addCommodity(Commodities.BETA_CORE, 10); 059 cargo.addCommodity(Commodities.GAMMA_CORE, 10); 060 061 cargo.addSupplies(cargo.getSpaceLeft()); 062 063 fleet.getFleetData().ensureHasFlagship(); 064 065 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) { 066 float max = member.getRepairTracker().getMaxCR(); 067 member.getRepairTracker().setCR(max); 068 } 069 fleet.getFleetData().setSyncNeeded(); 070 071 StarSystemAPI system = Global.getSector().getStarSystem("galatia"); 072 PlanetAPI ancyra = (PlanetAPI) system.getEntityById("ancyra"); 073 PersonAPI mainContact = TutorialMissionIntel.createMainContact(ancyra); 074 PersonAPI jangalaContact = TutorialMissionIntel.getJangalaContact(); 075 076 TutorialMissionIntel.endGalatiaPortionOfMission(true, false); 077 078 mainContact.getRelToPlayer().setRel(0.2f); 079 jangalaContact.getRelToPlayer().setRel(0.1f); 080 Global.getSector().getFaction(Factions.HEGEMONY).getRelToPlayer().setRel(0.15f); 081 } 082 083 }); 084 return true; 085 } 086 087 088 089} 090 091 092