Starsector API
Loading...
Searching...
No Matches
SetNearbyFleetsVariable.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.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.InteractionDialogAPI;
8import com.fs.starfarer.api.campaign.SectorEntityToken;
9import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
10import com.fs.starfarer.api.campaign.rules.MemoryAPI;
11import com.fs.starfarer.api.util.Misc;
12import com.fs.starfarer.api.util.Misc.Token;
13
14
19
20 //BroadcastPlayerAction <type> <range> <responseVariable>
21 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
22
23
24 float range = Float.parseFloat(params.get(0).string);
25 String factionId = params.get(1).getString(memoryMap);
26 String varName = params.get(2).string;
27 String value = params.get(3).getString(memoryMap);
28 float dur = Float.parseFloat(params.get(4).string);
29
30 final SectorEntityToken target = dialog.getInteractionTarget();
31 if (target.getContainingLocation() == null) return false;
32
33 List<CampaignFleetAPI> fleets = target.getContainingLocation().getFleets();
34 for (CampaignFleetAPI fleet : fleets) {
35 if (fleet == target) continue;
36 if (!fleet.getFaction().getId().equals(factionId)) continue;
37 if (fleet.getAI() instanceof CampaignFleetAIAPI) {
38 float dist = Misc.getDistance(target.getLocation(), fleet.getLocation());
39 if (dist <= range) {
40 fleet.getMemoryWithoutUpdate().set(varName, value, dur);
41 }
42 }
43 }
44
45 return true;
46 }
47
48
49}
50
51
52
53
54
55
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)