Starsector API
Loading...
Searching...
No Matches
MakeOtherFleetNonHostile.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
10import com.fs.starfarer.api.campaign.rules.MemoryAPI;
11import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
12import com.fs.starfarer.api.util.Misc;
13import com.fs.starfarer.api.util.Misc.Token;
14
23
24 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
25
26 if (dialog == null) return false;
27 if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false;
28
29 String reason = "generic";
30 boolean value;
31 boolean generic = false;
32 float expire = -1f;
33 if (params.size() >= 2) {
34 reason = params.get(0).getString(memoryMap);
35 value = params.get(1).getBoolean(memoryMap);
36 if (params.size() >= 3) {
37 expire = params.get(2).getFloat(memoryMap);
38 }
39 } else if (params.size() < 1) {
40 value = true;
41 } else {
42 generic = true;
43 value = params.get(0).getBoolean(memoryMap);
44 }
45
46 boolean wasHostile = false;
47 if (dialog.getInteractionTarget() instanceof CampaignFleetAPI) {
48 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
49 wasHostile = fleet.isHostileTo(Global.getSector().getPlayerFleet());
50 }
51
52
53 MemoryAPI memory = dialog.getInteractionTarget().getMemoryWithoutUpdate();
54
55 if (value) {
56 if (generic) {
57 Misc.clearFlag(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE);
58 Misc.clearFlag(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF);
59 memory.unset(MemFlags.MEMORY_KEY_MAKE_HOSTILE);
60 memory.unset(MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF);
61 } else {
62 Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE, reason, false, expire);
63 Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF, reason, false, expire);
64 }
65 }
66
67 boolean stillSet = Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_NON_HOSTILE, reason, value, expire);
68
69 if (stillSet) {
70 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
71 if (fleet.getAI() instanceof ModularFleetAIAPI) {
72 ModularFleetAIAPI mAI = (ModularFleetAIAPI) fleet.getAI();
73 mAI.getTacticalModule().forceTargetReEval();
74 }
75 }
76
77 boolean isHostile = false;
78 if (dialog.getInteractionTarget() instanceof CampaignFleetAPI) {
79 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget();
80 isHostile = fleet.isHostileTo(Global.getSector().getPlayerFleet());
81 }
82
83 if (isHostile != wasHostile) {
85 }
86
87 return true;
88 }
89
90}
91
92
93
94
95
static SoundPlayerAPI getSoundPlayer()
Definition Global.java:43
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)