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;
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());
33 if (picker.isEmpty())
return false;
35 PersonAPI pick = picker.pick();
36 dialog.getInteractionTarget().setActivePerson(pick);
37 ((RuleBasedDialog) dialog.getPlugin()).notifyActivePersonChanged();