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