Starsector API
Loading...
Searching...
No Matches
PickCommsNPC.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.InteractionDialogAPI;
7import com.fs.starfarer.api.campaign.RuleBasedDialog;
8import com.fs.starfarer.api.campaign.rules.MemoryAPI;
9import com.fs.starfarer.api.characters.PersonAPI;
10import com.fs.starfarer.api.util.WeightedRandomPicker;
11import com.fs.starfarer.api.util.Misc.Token;
12
16public class PickCommsNPC extends BaseCommandPlugin {
17
21 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
22 if (!(dialog.getPlugin() instanceof RuleBasedDialog)) return false;
23 if (dialog.getInteractionTarget().getMarket() == null) return false;
24
25 List<PersonAPI> people = dialog.getInteractionTarget().getMarket().getPeopleCopy();
26 WeightedRandomPicker<PersonAPI> picker = new WeightedRandomPicker<PersonAPI>();
27 for (PersonAPI person : people) {
28 if (person.wantsToContactPlayer()) {
29 picker.add(person, person.getContactWeight());
30 }
31 }
32
33 if (picker.isEmpty()) return false;
34
35 PersonAPI pick = picker.pick();
36 dialog.getInteractionTarget().setActivePerson(pick);
37 ((RuleBasedDialog) dialog.getPlugin()).notifyActivePersonChanged();
38
39 return true;
40 }
41
42}
43
44
45
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)