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}