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 * Issues: 016 * The dialog greeting text is still the same 017 * They still try to engage in toll collection 018 * NOT CURRENTLY USED, SHOULDN'T BE AS IT DOESN'T WORK 019 * 020 * MakeNearbyFleetsHostile <faction id> <range> <days> <optional: also know player identity regardless of transponder, defaults to false> 021 */ 022public class MakeNearbyFleetsHostile extends BaseCommandPlugin { 023 024 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 025 if (dialog == null) return false; 026 if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false; 027 028 final String factionId = params.get(0).getString(memoryMap); 029 float range = params.get(1).getFloat(memoryMap); 030 float days = params.get(2).getFloat(memoryMap); 031 032 boolean makeAware = false; 033 if (params.size() >= 4) { 034 makeAware = params.get(3).getBoolean(memoryMap); 035 } 036 037 038 List<CampaignFleetAPI> fleets = Misc.findNearbyFleets(dialog.getInteractionTarget(), range, new FleetFilter() { 039 public boolean accept(CampaignFleetAPI curr) { 040 return curr.getFaction().getId().equals(factionId); 041 } 042 }); 043 044 if (dialog.getInteractionTarget() instanceof CampaignFleetAPI) { 045 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget(); 046 if (fleet.getFaction().getId().equals(factionId)) { 047 MemoryAPI memory = fleet.getMemoryWithoutUpdate(); 048 memory.set(MemFlags.MEMORY_KEY_MAKE_HOSTILE, true, days); 049 if (makeAware) { 050 memory.set(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_ON, true); 051 } 052 } 053 } 054 055 for (CampaignFleetAPI curr : fleets) { 056 if (curr == dialog.getInteractionTarget()) continue; 057 058 MemoryAPI memory = curr.getMemoryWithoutUpdate(); 059 060 //boolean stillSet = Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE, reason, true, days); 061 062 memory.set(MemFlags.MEMORY_KEY_MAKE_HOSTILE, true, days); 063 if (makeAware) { 064 memory.set(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_ON, true); 065 } 066 } 067 068 069 return true; 070 } 071 072}