Skip to content

Commit 82f9ef3

Browse files
committed
Add hybrid drone support to misc column
1 parent 1348346 commit 82f9ef3

File tree

1 file changed

+84
-1
lines changed

1 file changed

+84
-1
lines changed

gui/builtinViewColumns/misc.py

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def __getData(self, stuff):
9494
text = "{} dmg".format(formatAmount(dmg, 3, 0, 6))
9595
tooltip = "Raw damage done"
9696
return text, tooltip
97-
elif itemGroup in ("Energy Weapon", "Hybrid Weapon", "Projectile Weapon", "Combat Drone", "Fighter Drone"):
97+
elif itemGroup in ("Energy Weapon", "Hybrid Weapon", "Projectile Weapon", "Fighter Drone"):
9898
trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed")
9999
optimalSig = stuff.getModifiedItemAttr("optimalSigRadius")
100100
if not trackingSpeed or not optimalSig:
@@ -103,6 +103,89 @@ def __getData(self, stuff):
103103
text = "{0}".format(formatAmount(normalizedTracking, 3, 0, 3))
104104
tooltip = "Tracking speed"
105105
return text, tooltip
106+
elif itemGroup == "Combat Drone":
107+
text_parts = []
108+
tooltip_parts = []
109+
trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed")
110+
optimalSig = stuff.getModifiedItemAttr("optimalSigRadius")
111+
if trackingSpeed and optimalSig:
112+
normalizedTracking = trackingSpeed * 40000 / optimalSig
113+
text_parts.append("{0}".format(formatAmount(normalizedTracking, 3, 0, 3)))
114+
tooltip_parts.append("Tracking speed")
115+
if 'entityEnergyNeutralizerFalloff' in item.effects:
116+
neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount")
117+
cycleTime = stuff.getModifiedItemAttr("energyNeutralizerDuration")
118+
if neutAmount and cycleTime:
119+
capPerSec = float(-neutAmount) * 1000 / cycleTime
120+
text_parts.append("{0}/s".format(formatAmount(capPerSec, 3, 0, 3)))
121+
tooltip_parts.append("Energy neutralization per second")
122+
if 'npcEntityWeaponDisruptor' in item.effects:
123+
falloffRangeBonus = stuff.getModifiedItemAttr("falloffBonus")
124+
optimalRangeBonus = stuff.getModifiedItemAttr("maxRangeBonus")
125+
trackingSpeedBonus = stuff.getModifiedItemAttr("trackingSpeedBonus")
126+
if falloffRangeBonus or optimalRangeBonus or trackingSpeedBonus:
127+
display = 0
128+
for bonus in (falloffRangeBonus, optimalRangeBonus, trackingSpeedBonus):
129+
if abs(bonus) > abs(display):
130+
display = bonus
131+
if display:
132+
ttEntries = []
133+
if display == optimalRangeBonus:
134+
ttEntries.append("optimal range")
135+
if display == falloffRangeBonus:
136+
ttEntries.append("falloff range")
137+
if display == trackingSpeedBonus:
138+
ttEntries.append("tracking speed")
139+
text_parts.append("{0}%".format(formatAmount(display, 3, 0, 3), forceSign=True))
140+
tooltip_parts.append("{0} disruption".format(formatList(ttEntries)).capitalize())
141+
if 'entityECMFalloff' in item.effects:
142+
grav = stuff.getModifiedItemAttr("scanGravimetricStrengthBonus")
143+
ladar = stuff.getModifiedItemAttr("scanLadarStrengthBonus")
144+
radar = stuff.getModifiedItemAttr("scanRadarStrengthBonus")
145+
magnet = stuff.getModifiedItemAttr("scanMagnetometricStrengthBonus")
146+
if grav is not None and ladar is not None and radar is not None and magnet is not None:
147+
display = max(grav, ladar, radar, magnet)
148+
if not display:
149+
return "", None
150+
ttEntries = []
151+
if display == grav:
152+
ttEntries.append("gravimetric")
153+
if display == ladar:
154+
ttEntries.append("ladar")
155+
if display == magnet:
156+
ttEntries.append("magnetometric")
157+
if display == radar:
158+
ttEntries.append("radar")
159+
plu = "" if len(ttEntries) == 1 else "s"
160+
text_parts.append("{0}".format(formatAmount(display, 3, 0, 3)))
161+
tooltip_parts.append("{0} strength{1}".format(formatList(ttEntries), plu).capitalize())
162+
if 'remoteSensorDampEntity' in item.effects:
163+
lockRangeBonus = stuff.getModifiedItemAttr("maxTargetRangeBonus")
164+
scanResBonus = stuff.getModifiedItemAttr("scanResolutionBonus")
165+
if lockRangeBonus or scanResBonus:
166+
display = 0
167+
for bonus in (lockRangeBonus, scanResBonus):
168+
if abs(bonus) > abs(display):
169+
display = bonus
170+
if display:
171+
ttEntries = []
172+
if display == lockRangeBonus:
173+
ttEntries.append("lock range")
174+
if display == scanResBonus:
175+
ttEntries.append("scan resolution")
176+
text_parts.append("{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True)))
177+
tooltip_parts.append("{0} dampening".format(formatList(ttEntries)).capitalize())
178+
if 'remoteWebifierEntity' in item.effects:
179+
speedFactor = stuff.getModifiedItemAttr("speedFactor")
180+
if speedFactor:
181+
text_parts.append("{0}%".format(formatAmount(speedFactor, 3, 0, 3)))
182+
tooltip_parts.append("Speed reduction")
183+
if 'remoteTargetPaintEntity' in item.effects:
184+
sigRadBonus = stuff.getModifiedItemAttr("signatureRadiusBonus")
185+
if sigRadBonus:
186+
text_parts.append("{0}%".format(formatAmount(sigRadBonus, 3, 0, 3, forceSign=True)))
187+
tooltip_parts.append("Signature radius increase")
188+
return " | ".join(text_parts), '\n'.join(tooltip_parts)
106189
elif itemGroup == "Precursor Weapon":
107190
info = []
108191
trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed")

0 commit comments

Comments
 (0)