Starsector API
Loading...
Searching...
No Matches
BaseEnergyLashActivatedSystem.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat.threat;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.combat.MutableShipStatsAPI;
6import com.fs.starfarer.api.combat.ShipAPI;
7import com.fs.starfarer.api.combat.ShipCommand;
8import com.fs.starfarer.api.combat.ShipwideAIFlags.AIFlags;
9import com.fs.starfarer.api.combat.WeaponGroupAPI;
10import com.fs.starfarer.api.impl.combat.BaseShipSystemScript;
11import com.fs.starfarer.api.util.Misc;
12
14
15 protected boolean inited = false;
16
17 protected void init(ShipAPI ship) {
18 ship.getSystem().setAmmo(0);
19 }
20
21 public void apply(MutableShipStatsAPI stats, String id, State state, float effectLevel) {
22 ShipAPI ship = null;
23 //boolean player = false;
24 if (stats.getEntity() instanceof ShipAPI) {
25 ship = (ShipAPI) stats.getEntity();
26 //player = ship == Global.getCombatEngine().getPlayerShip();
27 } else {
28 return;
29 }
30 if (ship.getSystem() == null) return;
31
32 if (!inited) {
33 init(ship);
34 inited = true;
35 }
36
37 applyImpl(ship, stats, id, state, effectLevel);
38 }
39
40 protected abstract void applyImpl(ShipAPI ship, MutableShipStatsAPI stats, String id, State state, float effectLevel);
41
42
43 @Override
44 public void hitWithEnergyLash(ShipAPI overseer, ShipAPI ship) {
45 if (ship.getSystem() == null) return;
46
47 ship.getSystem().setAmmo(1);
48 ship.giveCommand(ShipCommand.USE_SYSTEM, null, 0);
49 }
50
51 protected void setStandardJitter(ShipAPI ship, State state, float effectLevel) {
52 if (ship.isHulk()) return;
53
54 float jitterLevel = effectLevel;
55 jitterLevel = 0.5f + 0.5f * jitterLevel;
56 if (state == State.OUT) {
57 jitterLevel *= jitterLevel;
58 }
60 Color overColor = Misc.setAlpha(base, 255);;
61 ship.setJitter(this, overColor, jitterLevel, 1, 0f, 4f);
62 ship.setJitterShields(false);
63 ship.setCircularJitter(true);
64 }
65
67 for (WeaponGroupAPI g : ship.getWeaponGroupsCopy()) {
68 if (!g.isAutofiring()) {
69 g.toggleOn();
70 }
71 }
72 ship.resetSelectedGroup();
77
78 Object test = ship.getAIFlags().getCustom(AIFlags.MANEUVER_TARGET);
79 if (test instanceof ShipAPI) {
80 ShipAPI target = (ShipAPI) test;
81 ship.setShipTarget(target);
82 }
83 }
84
85}
86
87
88
89
90
91
92
93
abstract void applyImpl(ShipAPI ship, MutableShipStatsAPI stats, String id, State state, float effectLevel)
void apply(MutableShipStatsAPI stats, String id, State state, float effectLevel)
static Color setAlpha(Color color, int alpha)
Definition Misc.java:1316
void setCircularJitter(boolean circular)
List< WeaponGroupAPI > getWeaponGroupsCopy()
void blockCommandForOneFrame(ShipCommand command)
void setJitterShields(boolean jitterShields)
void setJitter(Object source, Color color, float intensity, int copies, float range)
void giveCommand(ShipCommand command, Object param, int groupNumber)