001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.campaign.CampaignFleetAPI;
007import com.fs.starfarer.api.campaign.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.rules.MemoryAPI;
009import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
010import com.fs.starfarer.api.util.Misc;
011import com.fs.starfarer.api.util.Misc.FleetFilter;
012import com.fs.starfarer.api.util.Misc.Token;
013
014/**
015 * MakeNearbyFleetsNonHostile <faction id> <reason> <range> <days>
016 */
017public class MakeNearbyFleetsNonHostile extends BaseCommandPlugin {
018
019        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
020                if (dialog == null) return false;
021                if (dialog.getInteractionTarget() == null) return false;
022
023                final String factionId = params.get(0).getString(memoryMap);
024                String reason = params.get(1).getString(memoryMap);
025                float range = params.get(2).getFloat(memoryMap);
026                float days = params.get(3).getFloat(memoryMap);
027                
028                List<CampaignFleetAPI> fleets = Misc.findNearbyFleets(dialog.getInteractionTarget(), range, new FleetFilter() {
029                        public boolean accept(CampaignFleetAPI curr) {
030                                return curr.getFaction().getId().equals(factionId);
031                        }
032                });
033                
034                for (CampaignFleetAPI curr : fleets) {
035                        MemoryAPI memory = curr.getMemoryWithoutUpdate();
036                        Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_NON_HOSTILE, reason, true, days);
037                }
038        
039                
040                return true;
041        }
042
043}