001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.util.List; 004import java.util.Map; 005import java.util.Random; 006 007import com.fs.starfarer.api.Global; 008import com.fs.starfarer.api.campaign.InteractionDialogAPI; 009import com.fs.starfarer.api.campaign.rules.MemoryAPI; 010import com.fs.starfarer.api.util.Misc; 011import com.fs.starfarer.api.util.Misc.Token; 012 013 014/** 015 * RollProbability <float probability> 016 */ 017public class RollProbability extends BaseCommandPlugin { 018 019 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) { 020 021 float prob = params.get(0).getFloat(memoryMap); 022 //prob = 1f; 023 024 long seed; 025 if (dialog.getInteractionTarget() != null) { 026 seed = Misc.getSalvageSeed(dialog.getInteractionTarget(), true); 027 seed += (ruleId == null ? 0 : ruleId.hashCode()); 028 seed /= 321L; 029 seed *= (Global.getSector().getClock().getMonth() + 10 + prob * 10f); 030 } else { 031 seed = Misc.genRandomSeed(); 032 } 033 034 Random r = Misc.getRandom(seed, 1); 035 036 float f = r.nextFloat(); 037 //System.out.println("Seed: " + seed); 038 //System.out.println("rolled: " + f); 039 040 return f < prob; //r.nextFloat() < prob; 041 } 042 043 044} 045 046 047 048