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.InteractionDialogAPI; 008import com.fs.starfarer.api.campaign.RepLevel; 009import com.fs.starfarer.api.campaign.ReputationActionResponsePlugin.ReputationAdjustmentResult; 010import com.fs.starfarer.api.campaign.SectorEntityToken; 011import com.fs.starfarer.api.campaign.rules.MemoryAPI; 012import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.CustomRepImpact; 013import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope; 014import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions; 015import com.fs.starfarer.api.util.Misc.Token; 016 017/** 018 * AdjustRepActivePerson <RepActions action> 019 */ 020public class AdjustRepActivePerson extends BaseCommandPlugin { 021 022 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 023 //String factionId = params.get(0).getString(memoryMap); 024 SectorEntityToken entity = dialog.getInteractionTarget(); 025 if (entity.getActivePerson() == null) return false; 026 027 try { 028 RepActions action = RepActions.valueOf(params.get(0).getString(memoryMap)); 029 RepActionEnvelope envelope = new RepActionEnvelope(action, null, dialog.getTextPanel()); 030 ReputationAdjustmentResult result = Global.getSector().adjustPlayerReputation(envelope, entity.getActivePerson()); 031 return result.delta != 0; 032 } catch (Throwable t) { 033 CustomRepImpact impact = new CustomRepImpact(); 034 if (params.size() >= 2) { 035 impact.limit = RepLevel.valueOf(params.get(0).getString(memoryMap)); 036 impact.delta = params.get(1).getFloat(memoryMap) * 0.01f; 037 } else { 038 impact.delta = params.get(0).getFloat(memoryMap) * 0.01f; 039 } 040 ReputationAdjustmentResult result = Global.getSector().adjustPlayerReputation( 041 new RepActionEnvelope(RepActions.CUSTOM, impact, 042 null, dialog.getTextPanel(), true), entity.getActivePerson()); 043 return result.delta != 0; 044 } 045 } 046}