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.characters.PersonAPI; 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; 016import com.fs.starfarer.api.util.Misc.VarAndMemory; 017 018/** 019 * AdjustRepActivePerson <RepActions action> 020 */ 021public class AdjustRepPerson extends BaseCommandPlugin { 022 023 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 024 025 VarAndMemory var = params.get(0).getVarNameAndMemory(memoryMap); 026 PersonAPI person = null; 027 028 if (var.memory.get(var.name) instanceof PersonAPI) { 029 person = (PersonAPI) var.memory.get(var.name); 030 } else { 031 String id = params.get(0).getString(memoryMap); 032 person = Global.getSector().getImportantPeople().getPerson(id); 033 } 034 035// PersonAPI person = (PersonAPI) var.memory.get(var.name); 036// 037// if (person == null) { 038// // well, let's try this another way, then. This is probably sloppy, eh? -dgb 039// String id = params.get(0).getString(memoryMap); 040// person = Global.getSector().getImportantPeople().getPerson(id); 041// } 042 043 try { 044 RepActions action = RepActions.valueOf(params.get(1).getString(memoryMap)); 045 RepActionEnvelope envelope = new RepActionEnvelope(action, null, dialog.getTextPanel()); 046 ReputationAdjustmentResult result = Global.getSector().adjustPlayerReputation(envelope, person); 047 return result.delta != 0; 048 } catch (Throwable t) { 049 CustomRepImpact impact = new CustomRepImpact(); 050 impact.limit = RepLevel.valueOf(params.get(1).getString(memoryMap)); 051 impact.delta = params.get(2).getFloat(memoryMap) * 0.01f; 052 ReputationAdjustmentResult result = Global.getSector().adjustPlayerReputation( 053 new RepActionEnvelope(RepActions.CUSTOM, impact, 054 null, dialog.getTextPanel(), true), person); 055 return result.delta != 0; 056 } 057 } 058}