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