001package com.fs.starfarer.api.impl.campaign.intel.group; 002 003import com.fs.starfarer.api.Global; 004import com.fs.starfarer.api.campaign.CampaignFleetAPI; 005import com.fs.starfarer.api.impl.campaign.ids.Factions; 006import com.fs.starfarer.api.impl.campaign.ids.FleetTypes; 007import com.fs.starfarer.api.impl.campaign.ids.MemFlags; 008import com.fs.starfarer.api.impl.campaign.missions.FleetCreatorMission; 009import com.fs.starfarer.api.util.IntervalUtil; 010import com.fs.starfarer.api.util.Misc; 011 012 013 014public class SindrianDiktatPunitiveExpedition extends GenericRaidFGI { 015 016 public static final String SDPE_FLEET = "$SDPE_fleet"; 017 018 public static String KEY = "$SDPE_ref"; 019 public static SindrianDiktatPunitiveExpedition get() { 020 return (SindrianDiktatPunitiveExpedition) Global.getSector().getMemoryWithoutUpdate().get(KEY); 021 } 022 023 024 protected IntervalUtil interval = new IntervalUtil(0.1f, 0.3f); 025 026 027 public SindrianDiktatPunitiveExpedition(GenericRaidParams params) { 028 super(params); 029 030 Global.getSector().getMemoryWithoutUpdate().set(KEY, this); 031 } 032 033 @Override 034 protected String getFleetCreationFactionOverride(int size) { 035 return Factions.LIONS_GUARD; 036 } 037 038 @Override 039 protected void notifyEnding() { 040 super.notifyEnding(); 041 042 Global.getSector().getMemoryWithoutUpdate().unset(KEY); 043 } 044 045 @Override 046 protected void notifyEnded() { 047 super.notifyEnded(); 048 } 049 050 051 @Override 052 public String getNoun() { 053 return super.getNoun(); 054 //return "punitive expedition"; 055 } 056 057 @Override 058 public String getForcesNoun() { 059 return super.getForcesNoun(); 060 } 061 062 063 @Override 064 public String getBaseName() { 065 return super.getBaseName(); 066 //return Misc.ucFirst(getFaction().getPersonNamePrefix()) + " " + "Punitive Expedition"; 067 } 068 069 070 @Override 071 protected void preConfigureFleet(int size, FleetCreatorMission m) { 072 m.setFleetTypeMedium(FleetTypes.TASK_FORCE); // default would be "Patrol", don't want that 073 } 074 075 @Override 076 protected void configureFleet(int size, FleetCreatorMission m) { 077 m.triggerSetFleetFlag(SDPE_FLEET); 078 if (size >= 8) { 079 m.triggerSetFleetDoctrineOther(5, 0); // more capitals in large fleets 080 } 081 } 082 083 084 @Override 085 public void abort() { 086 if (!isAborted()) { 087 for (CampaignFleetAPI curr : getFleets()) { 088 curr.getMemoryWithoutUpdate().unset(SDPE_FLEET); 089 } 090 } 091 super.abort(); 092 } 093 094 095 096 @Override 097 public void advance(float amount) { 098 super.advance(amount); 099 100 float days = Misc.getDays(amount); 101 interval.advance(days); 102 103 if (interval.intervalElapsed()) { 104 if (isCurrent(PAYLOAD_ACTION)) { 105 String reason = "SDPunEx"; 106 for (CampaignFleetAPI curr : getFleets()) { 107 Misc.setFlagWithReason(curr.getMemoryWithoutUpdate(), MemFlags.MEMORY_KEY_MAKE_HOSTILE, 108 reason, true, 1f); 109 } 110 111 } 112 } 113 } 114 115 116 117} 118 119 120 121