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