23 Map<ShipAPI, Float> dissipation =
new LinkedHashMap<ShipAPI, Float>();
29 super.advanceInCombat(ship, amount);
36 FluxSinkData data = (FluxSinkData) engine.
getCustomData().get(key);
38 data =
new FluxSinkData();
42 if (module.getStationSlot() ==
null || !module.isAlive() || !
Misc.
isActiveModule(module))
continue;
43 float d = module.getMutableStats().getFluxDissipation().getModifiedValue();
45 data.dissipation.put(module, d);
50 List<ShipAPI> losses =
new ArrayList<ShipAPI>(data.dissipation.keySet());
51 List<ShipAPI> remaining =
new ArrayList<ShipAPI>();
52 float totalLiveDissipation = 0f;
54 if (module.getStationSlot() ==
null || !module.isAlive() || !
Misc.
isActiveModule(module))
continue;
55 losses.remove(module);
56 remaining.add(module);
57 if (data.dissipation.containsKey(module)) {
58 totalLiveDissipation += data.dissipation.get(module);
62 float extraDissipation = 0f;
64 if (data.dissipation.containsKey(lost)) {
65 extraDissipation += data.dissipation.get(lost);
69 for (
ShipAPI module : remaining) {
70 if (!data.dissipation.containsKey(module))
continue;
73 if (totalLiveDissipation > 0) {
74 currBonus = data.dissipation.get(module) / totalLiveDissipation * extraDissipation;
77 module.getMutableStats().getFluxDissipation().modifyFlat(
"shared_flux_sink", currBonus);
79 float hardFluxFraction = 0f;
80 float totalDissipation = module.getMutableStats().getFluxDissipation().getModifiedValue();
81 if (totalDissipation > 0) {
85 module.getMutableStats().getHardFluxDissipationFraction().modifyFlat(
"shared_flux_sink", hardFluxFraction);