76 protected void maintainStatus(ShipAPI playerShip, State state,
float effectLevel) {
77 float level = effectLevel;
80 ShipSystemAPI cloak = playerShip.getPhaseCloak();
81 if (cloak ==
null) cloak = playerShip.getSystem();
82 if (cloak ==
null)
return;
88 cloak.getSpecAPI().getIconSpriteName(), cloak.getDisplayName(),
"time flow altered",
false);
100 cloak.getSpecAPI().getIconSpriteName(),
"phase coils stable",
"top speed at 100%",
false);
104 String speedPercentStr = (int) Math.round(
getSpeedMult(playerShip, effectLevel) * 100f) +
"%";
106 cloak.getSpecAPI().getIconSpriteName(),
109 "top speed at " + speedPercentStr,
true);
330 public void apply(MutableShipStatsAPI stats, String
id, State state,
float effectLevel) {
332 boolean player =
false;
333 if (stats.getEntity() instanceof ShipAPI) {
334 ship = (ShipAPI) stats.getEntity();
336 id =
id +
"_" + ship.getId();
356 ShipSystemAPI cloak = ship.getPhaseCloak();
357 if (cloak ==
null) cloak = ship.getSystem();
358 if (cloak ==
null)
return;
366 if (state == State.ACTIVE || state == State.OUT || state == State.IN) {
369 stats.getMaxSpeed().modifyMult(
id +
"_2", mult);
371 stats.getMaxSpeed().unmodifyMult(
id +
"_2");
377 if (state == State.COOLDOWN || state == State.IDLE) {
382 float speedPercentMod = stats.getDynamic().getMod(Stats.PHASE_CLOAK_SPEED_MOD).computeEffective(0f);
383 float accelPercentMod = stats.getDynamic().getMod(Stats.PHASE_CLOAK_ACCEL_MOD).computeEffective(0f);
384 stats.getMaxSpeed().modifyPercent(
id, speedPercentMod * effectLevel);
385 stats.getAcceleration().modifyPercent(
id, accelPercentMod * effectLevel);
386 stats.getDeceleration().modifyPercent(
id, accelPercentMod * effectLevel);
388 float speedMultMod = stats.getDynamic().getMod(Stats.PHASE_CLOAK_SPEED_MOD).getMult();
389 float accelMultMod = stats.getDynamic().getMod(Stats.PHASE_CLOAK_ACCEL_MOD).getMult();
390 stats.getMaxSpeed().modifyMult(
id, speedMultMod * effectLevel);
391 stats.getAcceleration().modifyMult(
id, accelMultMod * effectLevel);
392 stats.getDeceleration().modifyMult(
id, accelMultMod * effectLevel);
394 float level = effectLevel;
399 float jitterLevel = 0f;
400 float jitterRangeBonus = 0f;
401 float levelForAlpha = level;
407 if (state == State.IN || state == State.ACTIVE) {
408 ship.setPhased(
true);
409 levelForAlpha = level;
410 }
else if (state == State.OUT) {
412 ship.setPhased(
true);
414 ship.setPhased(
false);
416 levelForAlpha = level;
453 ship.setApplyExtraAlphaToEngines(
true);
461 float shipTimeMult = 1f + (
getMaxTimeMult(stats) - 1f) * levelForAlpha * (1f - extra);
462 stats.getTimeMult().modifyMult(
id, shipTimeMult);
487 public void unapply(MutableShipStatsAPI stats, String
id) {
494 if (stats.getEntity() instanceof ShipAPI) {
495 ship = (ShipAPI) stats.getEntity();
503 stats.getTimeMult().unmodify(
id);
505 stats.getMaxSpeed().unmodify(
id);
506 stats.getMaxSpeed().unmodifyMult(
id +
"_2");
507 stats.getAcceleration().unmodify(
id);
508 stats.getDeceleration().unmodify(
id);
510 ship.setPhased(
false);
511 ship.setExtraAlphaMult(1f);
513 ShipSystemAPI cloak = ship.getPhaseCloak();
514 if (cloak ==
null) cloak = ship.getSystem();
516 ((PhaseCloakSystemAPI)cloak).setMinCoilJitterLevel(0f);