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.FactionAPI; 008import com.fs.starfarer.api.campaign.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.RepLevel; 010import com.fs.starfarer.api.campaign.rules.MemoryAPI; 011import com.fs.starfarer.api.impl.campaign.ids.Factions; 012import com.fs.starfarer.api.util.Misc.Token; 013import com.fs.starfarer.api.util.Misc.VarAndMemory; 014 015 016/** 017 * TakeRepCheck <factionid> <resultVarName> 018 */ 019public class TakeRepCheck extends BaseCommandPlugin { 020// public static enum RepCheckResult { 021// R0(0.0f), 022// R1(0.1f), 023// R2(0.2f), 024// R3(0.4f), 025// R4(0.6f), 026// R5(0.95f); 027// 028// private final float threshold; 029// private RepCheckResult(float threshold) { 030// this.threshold = threshold; 031// } 032// public float getThreshold() { 033// return threshold; 034// } 035// } 036 037 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 038 039 String factionId = params.get(0).getString(memoryMap); 040 VarAndMemory result = params.get(1).getVarNameAndMemory(memoryMap); 041 042 FactionAPI faction = Global.getSector().getFaction(factionId); 043 FactionAPI player = Global.getSector().getFaction(Factions.PLAYER); 044 RepLevel level = player.getRelationshipLevel(faction); 045 if (level.isAtBest(RepLevel.SUSPICIOUS)) { 046 //result.memory.set(result.name, RepCheckResult.R0.name(), 0); 047 result.memory.set(result.name, 0f, 0); 048 } 049 050 float rel = player.getRelationship(factionId); 051 052 float r = (float) Math.random(); 053 r *= r; 054 float roll = rel * 0.2f + rel * 0.8f * (float) Math.random() + (1f - rel) * r; 055 056 result.memory.set(result.name, roll, 0); 057 //result.memory.set(result.name, 1f, 0); 058// RepCheckResult max = RepCheckResult.R0; 059// float minDiff = Float.MAX_VALUE; 060// for (RepCheckResult r : EnumSet.allOf(RepCheckResult.class)) { 061// float diff = 2f - 062// } 063 return true; 064 } 065 066 067} 068 069 070 071