23 public static final String
BONUS_ID =
"comm_relay_script_bonus";
26 private CombatEngineAPI engine;
27 public void init(CombatEngineAPI engine) {
31 private ShipAPI prevPlayerShip =
null;
32 private int skipFrames = 0;
33 private Set<CombatFleetManagerAPI> needsCleanup =
new HashSet<CombatFleetManagerAPI>();
34 public void advance(
float amount, List<InputEventAPI> events) {
35 if (engine ==
null)
return;
36 if (engine.isPaused())
return;
40 ShipAPI playerShip = engine.getPlayerShip();
41 if (playerShip != prevPlayerShip) {
42 prevPlayerShip = playerShip;
51 updateForSide(engine.getFleetManager(0));
52 updateForSide(engine.getFleetManager(1));
56 private void updateForSide(CombatFleetManagerAPI manager) {
58 PersonAPI commander = manager.getFleetCommander();
59 if (commander ==
null) {
60 manager.getTaskManager(
false).getCPRateModifier().unmodify(
BONUS_ID);
67 float modifier = commander.getStats().getDynamic().getValue(Stats.COMMAND_POINT_RATE_COMMANDER);
68 boolean relaysOnly = modifier == 1f;
69 List<DeployedFleetMemberAPI> deployed = manager.getDeployedCopyDFM();
70 for (DeployedFleetMemberAPI member : deployed) {
71 if (member.isFighterWing())
continue;
72 float curr = member.getShip().getMutableStats().getDynamic().getValue(Stats.COMMAND_POINT_RATE_FLAT, 0f);
76 if (total > 0) relaysOnly =
false;
80 for (BattleObjectiveAPI obj : engine.getObjectives()) {
81 if (obj.getOwner() == manager.getOwner() && BattleObjectives.COMM_RELAY.equals(obj.getType())) {
88 manager.getTaskManager(
false).getCPRateModifier().modifyFlat(
BONUS_ID, total);
91 modifier += manager.getTaskManager(
false).getCPRateModifier().getModifiedValue();
94 if (manager.getOwner() == 0) {
96 float withMult = manager.getTaskManager(
false).getCPRateMult();
97 String icon = Global.getSettings().getSpriteName(
"ui",
"icon_tactical_coordinated_maneuvers");
98 String title =
"command network";
101 String data =
"+" + (int)Math.round((withMult - 1f) * 100f) +
"% cp recovery rate";
102 boolean debuff =
false;
104 data =
"" + (int)Math.round((withMult - 1f) * 100f) +
"% cp recovery rate";
117 engine.maintainStatusForPlayerShip(
KEY_STATUS, icon,
126 if (needsCleanup.contains(manager)) {
127 needsCleanup.remove(manager);
128 List<DeployedFleetMemberAPI> deployed = manager.getDeployedCopyDFM();
129 for (DeployedFleetMemberAPI member : deployed) {
130 if (member.isFighterWing())
continue;
131 if (member.getShip() ==
null)
continue;
132 member.getShip().getMutableStats().getMaxSpeed().unmodify(
BONUS_ID);