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}