@@ -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