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.ModularFleetAIAPI; 010import com.fs.starfarer.api.campaign.rules.MemoryAPI; 011import com.fs.starfarer.api.impl.campaign.ids.MemFlags; 012import com.fs.starfarer.api.util.Misc; 013import com.fs.starfarer.api.util.Misc.Token; 014 015/** 016 * @author Alex Mosolov 017 * 018 * MakeHostileWhileTOff <reason> <true or false> 019 * 020 * Copyright 2015 Fractal Softworks, LLC 021 */ 022public class MakeHostileWhileTOff extends BaseCommandPlugin { 023 024 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 025 026 if (dialog == null) return false; 027 if (!(dialog.getInteractionTarget() instanceof CampaignFleetAPI)) return false; 028 029 String reason = "generic"; 030 boolean value; 031 float expire = 0f; 032 if (params.size() >= 2) { 033 reason = params.get(0).getString(memoryMap); 034 value = params.get(1).getBoolean(memoryMap); 035 if (params.size() >= 3) { 036 expire = params.get(2).getFloat(memoryMap); 037 } 038 } else { 039 value = params.get(0).getBoolean(memoryMap); 040 } 041 042 boolean wasHostile = false; 043 if (dialog.getInteractionTarget() instanceof CampaignFleetAPI) { 044 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget(); 045 wasHostile = fleet.isHostileTo(Global.getSector().getPlayerFleet()); 046 } 047 048 049 MemoryAPI memory = dialog.getInteractionTarget().getMemoryWithoutUpdate(); 050 051 boolean stillSet = Misc.setFlagWithReason(memory, MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF, reason, value, expire); 052 053 if (!stillSet && Global.getSector().getPlayerFleet().isTransponderOn()) { 054 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget(); 055 if (fleet.getAI() instanceof ModularFleetAIAPI) { 056 ModularFleetAIAPI mAI = (ModularFleetAIAPI) fleet.getAI(); 057 mAI.getTacticalModule().forceTargetReEval(); 058 } 059 } 060 061 boolean isHostile = false; 062 if (dialog.getInteractionTarget() instanceof CampaignFleetAPI) { 063 CampaignFleetAPI fleet = (CampaignFleetAPI) dialog.getInteractionTarget(); 064 isHostile = fleet.isHostileTo(Global.getSector().getPlayerFleet()); 065 } 066 067 if (isHostile != wasHostile) { 068 Global.getSoundPlayer().restartCurrentMusic(); 069 } 070 071 return true; 072 } 073 074} 075 076 077 078 079