1package com.fs.starfarer.api.impl.campaign.rulecmd;
3import java.util.ArrayList;
6import java.util.Random;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.fleet.FleetMemberAPI;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.Misc.Token;
16import com.fs.starfarer.api.util.WeightedRandomPicker;
41 if (dialog ==
null)
return false;
50 float baseFP = params.get(0).getFloat(memoryMap);
51 float fpMult = params.get(1).getFloat(memoryMap);
52 float crMult = params.get(2).getFloat(memoryMap);
53 String desc = params.get(3).getString(memoryMap);
58 seed += (ruleId ==
null ? 0 : ruleId.hashCode());
60 seed *= (
Global.
getSector().getClock().getMonth() + 10 + (baseFP * fpMult * crMult) * 10f);
67 applyCRDamage(playerFleet, baseFP * fpMult, crMult, desc, text, random);
73 List<FleetMemberAPI> shipsToDamage =
new ArrayList<FleetMemberAPI>();
76 if (member.isMothballed() && member.getRepairTracker().getBaseCR() < 0.2f)
continue;
77 picker.
add(member, member.getFleetPointCost());
80 float totalDamage = damageFP;
82 while (picked < totalDamage && !picker.
isEmpty()) {
84 shipsToDamage.add(pick);
90 float crLost = Math.min(member.getRepairTracker().getBaseCR(), member.getDeployCost() * 0.5f);
91 crLost += 0.01f * (float)random.nextInt(10);
94 member.getRepairTracker().applyCREvent(-crLost, desc);
static SectorAPI getSector()
static void addCRLossText(FleetMemberAPI member, TextPanelAPI text, float crLoss)
static void applyCRDamage(CampaignFleetAPI fleet, float damageFP, float crMult, String desc, TextPanelAPI text, Random random)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static Random getRandom(long seed, int level)
static long getSalvageSeed(SectorEntityToken entity)
static long genRandomSeed()
FleetDataAPI getFleetData()
List< FleetMemberAPI > getMembersListCopy()
TextPanelAPI getTextPanel()
SectorEntityToken getInteractionTarget()
CampaignFleetAPI getPlayerFleet()