001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.util.List; 004import java.util.Map; 005 006import com.fs.starfarer.api.Global; 007import com.fs.starfarer.api.campaign.CampaignFleetAPI; 008import com.fs.starfarer.api.campaign.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI; 010import com.fs.starfarer.api.campaign.rules.MemoryAPI; 011import com.fs.starfarer.api.util.Misc.Token; 012 013/** 014 * AnyNearbyFleetsHostileAndAware <factionId> 015 */ 016public class AnyNearbyFleetsHostileAndAware extends BaseCommandPlugin { 017 018 019 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 020 021 String factionId = params.get(0).getString(memoryMap); 022 //float range = Global.getSettings().getFloat("sensorRangeMax"); 023 024 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet(); 025 026 for (CampaignFleetAPI fleet : playerFleet.getContainingLocation().getFleets()) { 027 if (!fleet.getFaction().getId().equals(factionId)) continue; 028 if (fleet.getAI() == null) continue; 029 if (fleet.isStationMode()) continue; 030 031// VisibilityLevel level = playerFleet.getVisibilityLevelTo(fleet); 032// MemoryAPI mem = fleet.getMemoryWithoutUpdate(); 033// if (!mem.contains(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF)) { 034// if (level == VisibilityLevel.NONE) continue; 035// } 036 if (!fleet.getAI().isHostileTo(playerFleet)) continue; 037 038 FleetAssignmentDataAPI curr = fleet.getAI().getCurrentAssignment(); 039 if (curr != null && curr.getTarget() == playerFleet) { 040 return true; 041 } 042 } 043 044 return false; 045 } 046 047} 048 049 050 051