28 public void advance(
float amount, CombatEngineAPI engine, BeamAPI beam) {
29 CombatEntityAPI target = beam.getDamageTarget();
30 if (target instanceof ShipAPI && beam.getBrightness() >= 1f && beam.getWeapon() !=
null) {
31 float dur = beam.getDamage().getDpsDuration();
34 wasZero = beam.getDamage().getDpsDuration() <= 0;
38 boolean hitShield = target.getShield() !=
null && target.getShield().isWithinArc(beam.getTo());
40 ShipAPI ship = (ShipAPI) target;
41 if (!ship.hasListenerOfClass(GravitonBeamDamageTakenMod.class)) {
42 ship.addListener(
new GravitonBeamDamageTakenMod(ship));
44 List<GravitonBeamDamageTakenMod> listeners = ship.getListeners(GravitonBeamDamageTakenMod.class);
45 if (listeners.isEmpty())
return;
47 GravitonBeamDamageTakenMod listener = listeners.get(0);
48 listener.notifyHit(beam.getWeapon());