Starsector API
Loading...
Searching...
No Matches
DwellerFIDConfig.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat.dweller;
2
3import com.fs.starfarer.api.campaign.CampaignFleetAPI;
4import com.fs.starfarer.api.campaign.CargoAPI;
5import com.fs.starfarer.api.campaign.InteractionDialogAPI;
6import com.fs.starfarer.api.combat.BattleCreationContext;
7import com.fs.starfarer.api.impl.campaign.FleetEncounterContext;
8import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.BaseFIDDelegate;
9import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.FIDConfig;
10import com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.FIDConfigGen;
11
18public class DwellerFIDConfig implements FIDConfigGen {
19 public FIDConfig createConfig() {
20 FIDConfig config = new FIDConfig();
21
22 config.alwaysAttackVsAttack = true;
23 //config.alwaysPursue = true;
24 config.alwaysHarry = true;
25 config.showTransponderStatus = false;
26 //config.showEngageText = false;
27 config.lootCredits = false;
28
29
30 config.delegate = new BaseFIDDelegate() {
31 public void postPlayerSalvageGeneration(InteractionDialogAPI dialog, FleetEncounterContext context, CargoAPI salvage) {
32 if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return;
33
34// float mult = context.computePlayerContribFraction();
35// float p = Global.getSettings().getFloat("salvageHullmodProb");
36// float pItem = Global.getSettings().getFloat("salvageHullmodRequiredItemProb");
37//
38// CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
39//
40// DataForEncounterSide data = context.getDataFor(fleet);
41// List<FleetMemberAPI> losses = new ArrayList<FleetMemberAPI>();
42// for (FleetMemberData fmd : data.getOwnCasualties()) {
43// losses.add(fmd.getMember());
44// }
45//
46// Random random = Misc.getRandom(Misc.getSalvageSeed(fleet), 7);
47// //random = new Random();
48//
49// for (FleetMemberAPI member : losses) {
50// if (member.getHullSpec().hasTag(Tags.THREAT_FABRICATOR)) {
51// int rolls = 0;
52// switch (member.getHullSpec().getHullSize()) {
53// case CAPITAL_SHIP: rolls = 30; break;
54// case CRUISER: rolls = 18; break;
55// case DESTROYER: rolls = 12; break;
56// case FRIGATE: rolls = 6; break;
57// }
58//
59// WeightedRandomPicker<SwarmConstructableVariant> picker = new WeightedRandomPicker<>(random);
60// for (SwarmConstructableVariant curr : ConstructionSwarmSystemScript.CONSTRUCTABLE) {
61// picker.add(curr, curr.dp);
62// }
63//
64// for (int i = 0; i < rolls; i++) {
65// SwarmConstructableVariant pick = picker.pick();
66// ShipVariantAPI variant = Global.getSettings().getVariant(pick.variantId);
67//
68// for (String id : variant.getHullMods()) {
69// if (!variant.getHullSpec().isBuiltInMod(id)) {
70// if (random.nextFloat() < pItem && random.nextFloat() < mult) {
71// HullModSpecAPI spec = Global.getSettings().getHullModSpec(id);
72// CargoStackAPI item = spec.getEffect().getRequiredItem();
73// if (item != null) {
74// boolean addToLoot = true;
75// if (item.getSpecialItemSpecIfSpecial() != null && item.getSpecialItemSpecIfSpecial().hasTag(Tags.NO_DROP)) {
76// addToLoot = false;
77// } else if (item.getResourceIfResource() != null && item.getResourceIfResource().hasTag(Tags.NO_DROP)) {
78// addToLoot = false;
79// } else if (item.getFighterWingSpecIfWing() != null && item.getFighterWingSpecIfWing().hasTag(Tags.NO_DROP)) {
80// addToLoot = false;
81// } else if (item.getWeaponSpecIfWeapon() != null && item.getWeaponSpecIfWeapon().hasTag(Tags.NO_DROP)) {
82// addToLoot = false;
83// }
84// if (addToLoot) {
85// salvage.addItems(item.getType(), item.getData(), 1);
86// }
87// }
88// }
89// }
90//
91// //if (random.nextFloat() > mult) continue;
92// if (random.nextFloat() < p && random.nextFloat() < mult) {
93// HullModSpecAPI spec = Global.getSettings().getHullModSpec(id);
94// boolean known = Global.getSector().getPlayerFaction().knowsHullMod(id);
95// if (DebugFlags.ALLOW_KNOWN_HULLMOD_DROPS) known = false;
96// if (known || spec.isHidden() || spec.isHiddenEverywhere()) continue;
97// //if (spec.isAlwaysUnlocked()) continue;
98// if (spec.hasTag(Tags.HULLMOD_NO_DROP)) continue;
99//
100// salvage.addHullmods(id, 1);
101// }
102// }
103// }
104// }
105// }
106 }
107
108 public void battleContextCreated(InteractionDialogAPI dialog, BattleCreationContext bcc) {
109 bcc.aiRetreatAllowed = false;
110 bcc.fightToTheLast = true;
111 bcc.objectivesAllowed = false;
112 bcc.enemyDeployAll = true;
113 }
114 };
115 return config;
116 }
117}
118
119
120
121
122