18 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
24 String abilityId = params.get(0).getString(memoryMap);
25 if (abilityId ==
null)
return false;
27 boolean hadAbilityAlready =
Global.
getSector().getPlayerFleet().hasAbility(abilityId);
29 boolean found =
false;
30 AbilitySlotsAPI slots =
Global.
getSector().getUIData().getAbilitySlotsAPI();
31 int curr = slots.getCurrBarIndex();
32 OUTER:
for (
int i = 0; i < 5; i++) {
33 slots.setCurrBarIndex(i);
34 for (AbilitySlotAPI slot : slots.getCurrSlotsCopy()) {
35 if (abilityId.equals(slot.getAbilityId())) {
40 slots.setCurrBarIndex(curr);
43 hadAbilityAlready =
false;
49 if (!hadAbilityAlready) {
50 boolean assignedToSlot =
false;
51 boolean doNotAssign =
false;
52 if (params.size() >= 2) {
53 int slotIndex = (int) params.get(1).getFloat(memoryMap);
57 slots.setCurrBarIndex(0);
58 AbilitySlotAPI slot = slots.getCurrSlotsCopy().get(slotIndex);
59 if (slot.getAbilityId() ==
null) {
60 slot.setAbilityId(abilityId);
61 assignedToSlot =
true;
66 if (!assignedToSlot && !doNotAssign) {
67 int currBarIndex = slots.getCurrBarIndex();
68 OUTER:
for (
int i = 0; i < 5; i++) {
69 slots.setCurrBarIndex(i);
70 for (
int j = 0; j < 10; j++) {
71 AbilitySlotAPI slot = slots.getCurrSlotsCopy().get(j);
72 if (slot.getAbilityId() ==
null) {
73 slot.setAbilityId(abilityId);
74 assignedToSlot =
true;
79 slots.setCurrBarIndex(currBarIndex);
82 Global.
getSector().getCharacterData().getMemoryWithoutUpdate().set(
"$ability:" + abilityId,
true, 0);