1package com.fs.starfarer.api.impl.combat.threat;
3import java.util.ArrayList;
5import java.util.Random;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CampaignFleetAPI;
9import com.fs.starfarer.api.campaign.CargoAPI;
10import com.fs.starfarer.api.campaign.CargoStackAPI;
11import com.fs.starfarer.api.campaign.FleetEncounterContextPlugin.DataForEncounterSide;
12import com.fs.starfarer.api.campaign.FleetEncounterContextPlugin.FleetMemberData;
13import com.fs.starfarer.api.campaign.InteractionDialogAPI;
14import com.fs.starfarer.api.combat.BattleCreationContext;
15import com.fs.starfarer.api.combat.ShipVariantAPI;
16import com.fs.starfarer.api.fleet.FleetMemberAPI;
17import com.fs.starfarer.api.impl.campaign.DebugFlags;
18import com.fs.starfarer.api.impl.campaign.FleetEncounterContext;
19import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.BaseFIDDelegate;
20import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.FIDConfig;
21import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.FIDConfigGen;
22import com.fs.starfarer.api.impl.campaign.ids.Tags;
23import com.fs.starfarer.api.impl.combat.threat.ConstructionSwarmSystemScript.SwarmConstructableVariant;
24import com.fs.starfarer.api.loading.HullModSpecAPI;
25import com.fs.starfarer.api.util.Misc;
26import com.fs.starfarer.api.util.WeightedRandomPicker;
30 FIDConfig config =
new FIDConfig();
32 config.alwaysAttackVsAttack =
true;
34 config.alwaysHarry =
true;
35 config.showTransponderStatus =
false;
37 config.lootCredits =
false;
40 config.delegate =
new BaseFIDDelegate() {
50 DataForEncounterSide data = context.
getDataFor(fleet);
51 List<FleetMemberAPI> losses =
new ArrayList<FleetMemberAPI>();
52 for (FleetMemberData fmd : data.getOwnCasualties()) {
53 losses.add(fmd.getMember());
62 switch (member.getHullSpec().getHullSize()) {
63 case CAPITAL_SHIP: rolls = 30;
break;
64 case CRUISER: rolls = 18;
break;
65 case DESTROYER: rolls = 12;
break;
66 case FRIGATE: rolls = 6;
break;
71 picker.
add(curr, curr.dp);
74 for (
int i = 0; i < rolls; i++) {
75 SwarmConstructableVariant pick = picker.
pick();
80 if (random.nextFloat() < pItem && random.nextFloat() < mult) {
84 boolean addToLoot =
true;
102 if (random.nextFloat() < p && random.nextFloat() < mult) {
119 bcc.aiRetreatAllowed =
false;
120 bcc.fightToTheLast =
true;
125 bcc.forceObjectivesOnMap =
true;
static SettingsAPI getSettings()
static SectorAPI getSector()
CampaignFleetAPI getOtherFleet()
static boolean ALLOW_KNOWN_HULLMOD_DROPS
float computePlayerContribFraction()
DataForEncounterSide getDataFor(CampaignFleetAPI participantOrCombined)
static List< SwarmConstructableVariant > CONSTRUCTABLE
static Random getRandom(long seed, int level)
static long getSalvageSeed(SectorEntityToken entity)
ShipVariantAPI getVariant(String variantId)
HullModSpecAPI getHullModSpec(String modId)
float getFloat(String key)
List< FleetMemberAPI > getMembersWithFightersCopy()
void addHullmods(String id, int count)
void addItems(CargoAPI.CargoItemType itemType, Object data, float quantity)
SpecialItemSpecAPI getSpecialItemSpecIfSpecial()
FighterWingSpecAPI getFighterWingSpecIfWing()
CargoAPI.CargoItemType getType()
CommoditySpecAPI getResourceIfResource()
WeaponSpecAPI getWeaponSpecIfWeapon()
boolean knowsHullMod(String modId)
SectorEntityToken getInteractionTarget()
MemoryAPI getPlayerMemoryWithoutUpdate()
FactionAPI getPlayerFaction()
boolean hasTag(String tag)
boolean hasTag(String tag)
void set(String key, Object value)
default CargoStackAPI getRequiredItem()
boolean isBuiltInMod(String modId)
Collection< String > getHullMods()
ShipHullSpecAPI getHullSpec()
boolean hasTag(String tag)
boolean hasTag(String tag)
boolean isHiddenEverywhere()
HullModEffect getEffect()
boolean hasTag(String tag)