Merge branch 'master' into ammo_graph
This commit is contained in:
@@ -10689,6 +10689,7 @@ class Effect3526(BaseEffect):
|
||||
|
||||
Used by:
|
||||
Ships from group: Force Recon Ship (8 of 9)
|
||||
Ship: Venture
|
||||
Skill: Cynosural Field Theory
|
||||
"""
|
||||
|
||||
|
||||
@@ -318,10 +318,15 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
"energyDestabilizationRange", "empFieldRange",
|
||||
"ecmBurstRange", "warpScrambleRange", "cargoScanRange",
|
||||
"shipScanRange", "surveyScanRange")
|
||||
maxRange = None
|
||||
for attr in attrs:
|
||||
maxRange = self.getModifiedItemAttr(attr, None)
|
||||
if maxRange is not None:
|
||||
return maxRange
|
||||
break
|
||||
if maxRange is not None:
|
||||
if 'burst projector' in self.item.name.lower():
|
||||
maxRange -= self.owner.ship.getModifiedItemAttr("radius")
|
||||
return maxRange
|
||||
missileMaxRangeData = self.missileMaxRangeData
|
||||
if missileMaxRangeData is None:
|
||||
return None
|
||||
|
||||
@@ -89,7 +89,7 @@ class BitmapLoader:
|
||||
@classmethod
|
||||
def loadBitmap(cls, name, location):
|
||||
if cls.scaling_factor is None:
|
||||
cls.scaling_factor = int(wx.GetApp().GetTopWindow().GetContentScaleFactor())
|
||||
cls.scaling_factor = 1 if 'wxGTK' in wx.PlatformInfo else int(wx.GetApp().GetTopWindow().GetContentScaleFactor())
|
||||
scale = cls.scaling_factor
|
||||
|
||||
filename, img = cls.loadScaledBitmap(name, location, scale)
|
||||
|
||||
@@ -83,12 +83,12 @@ class MaxRange(ViewColumn):
|
||||
lines.append('Missile flight range')
|
||||
lowerRange, higherRange, higherChance = missileRangeData
|
||||
if roundToPrec(higherChance, 3) not in (0, 1):
|
||||
lines.append('{}% chance to fly {}'.format(
|
||||
lines.append('{}% chance to fly {}m'.format(
|
||||
formatAmount((1 - higherChance) * 100, prec=3, lowest=0, highest=0),
|
||||
formatAmount(lowerRange, prec=3, lowest=0, highest=3, unitName='m')))
|
||||
lines.append('{}% chance to fly {}'.format(
|
||||
formatAmount(lowerRange, prec=3, lowest=0, highest=3)))
|
||||
lines.append('{}% chance to fly {}m'.format(
|
||||
formatAmount(higherChance * 100, prec=3, lowest=0, highest=0),
|
||||
formatAmount(higherRange, prec=3, lowest=0, highest=3, unitName='m')))
|
||||
formatAmount(higherRange, prec=3, lowest=0, highest=3)))
|
||||
else:
|
||||
lines.append("Optimal + Falloff")
|
||||
return '\n'.join(lines)
|
||||
|
||||
@@ -428,6 +428,31 @@ class SkillTreeView(wx.Panel):
|
||||
# This cuases issues with GTK, see #1866
|
||||
# self.Layout()
|
||||
|
||||
# For level keyboard shortcuts
|
||||
self.ChangeLevelEvent, CHANGE_LEVEL_EVENT = wx.lib.newevent.NewEvent()
|
||||
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
|
||||
self.Bind(CHANGE_LEVEL_EVENT, self.changeLevel)
|
||||
|
||||
def kbEvent(self, event):
|
||||
keyLevelMap = {
|
||||
# Regular number keys
|
||||
48: 0, 49: 1, 50: 2, 51: 3, 52: 4, 53: 5,
|
||||
# Numpad keys
|
||||
wx.WXK_NUMPAD0: 0, wx.WXK_NUMPAD1: 1, wx.WXK_NUMPAD2: 2,
|
||||
wx.WXK_NUMPAD3: 3, wx.WXK_NUMPAD4: 4, wx.WXK_NUMPAD5: 5}
|
||||
keycode = event.GetKeyCode()
|
||||
if keycode in keyLevelMap and event.GetModifiers() == wx.MOD_NONE:
|
||||
level = keyLevelMap[keycode]
|
||||
selection = self.skillTreeListCtrl.GetSelection()
|
||||
if selection:
|
||||
dataType, skillID = self.skillTreeListCtrl.GetItemData(selection)
|
||||
if dataType == 'skill':
|
||||
event = self.ChangeLevelEvent()
|
||||
event.SetId(self.idLevels[level])
|
||||
wx.PostEvent(self, event)
|
||||
return
|
||||
event.Skip()
|
||||
|
||||
def importSkills(self, evt):
|
||||
|
||||
with wx.MessageDialog(
|
||||
@@ -611,6 +636,8 @@ class SkillTreeView(wx.Panel):
|
||||
|
||||
sChar = Character.getInstance()
|
||||
char = self.charEditor.entityEditor.getActiveEntity()
|
||||
if char.name in ("All 0", "All 5"):
|
||||
return
|
||||
selection = self.skillTreeListCtrl.GetSelection()
|
||||
dataType, skillID = self.skillTreeListCtrl.GetItemData(selection)
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ from service.port.muta import parseMutant
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
# 2017/04/05 NOTE: simple validation, for xml file
|
||||
RE_XML_START = r'<\?xml\s+version="1.0"\s*\?>'
|
||||
RE_XML_START = r'<\?xml\s+version="1.0"[^<>]*\?>'
|
||||
|
||||
|
||||
class Port:
|
||||
@@ -182,7 +182,8 @@ class Port:
|
||||
pyfalog.critical(e)
|
||||
# TypeError: not all arguments converted during string formatting
|
||||
# return False, "Unknown Error while processing {0}" % path
|
||||
return False, "Unknown error while processing %s\n\n Error: %s" % (path, e.message)
|
||||
return False, "Unknown error while processing {}\n\n Error: {} {}".format(
|
||||
path, type(e).__name__, getattr(e, 'message', ''))
|
||||
|
||||
return True, fit_list
|
||||
|
||||
@@ -321,4 +322,4 @@ class Port:
|
||||
|
||||
@staticmethod
|
||||
def exportFitStats(fit, callback=None):
|
||||
return exportFitStats(fit, callback=callback)
|
||||
return exportFitStats(fit, callback=callback)
|
||||
|
||||
@@ -82,9 +82,13 @@ def fetchItem(typeName, eagerCat=False):
|
||||
eager = 'group.category' if eagerCat else None
|
||||
try:
|
||||
item = sMkt.getItem(typeName, eager=eager)
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
raise
|
||||
except:
|
||||
pyfalog.warning('service.port.shared: unable to fetch item "{}"'.format(typeName))
|
||||
return None
|
||||
if item is None:
|
||||
return None
|
||||
if sMkt.getPublicityByItem(item):
|
||||
return item
|
||||
else:
|
||||
|
||||
@@ -215747,7 +215747,7 @@
|
||||
{
|
||||
"attributeID": 9,
|
||||
"typeID": 4308,
|
||||
"value": 2170.0
|
||||
"value": 2180.0
|
||||
},
|
||||
{
|
||||
"attributeID": 11,
|
||||
@@ -2361009,6 +2361009,11 @@
|
||||
"typeID": 32880,
|
||||
"value": 1.0
|
||||
},
|
||||
{
|
||||
"attributeID": 1296,
|
||||
"typeID": 32880,
|
||||
"value": -50.0
|
||||
},
|
||||
{
|
||||
"attributeID": 1547,
|
||||
"typeID": 32880,
|
||||
@@ -2890019,6 +2890024,11 @@
|
||||
"typeID": 52694,
|
||||
"value": 380.0
|
||||
},
|
||||
{
|
||||
"attributeID": 1302,
|
||||
"typeID": 52694,
|
||||
"value": 32880.0
|
||||
},
|
||||
{
|
||||
"attributeID": 1333,
|
||||
"typeID": 52694,
|
||||
|
||||
@@ -167469,6 +167469,11 @@
|
||||
"isDefault": false,
|
||||
"typeID": 32878
|
||||
},
|
||||
{
|
||||
"effectID": 3526,
|
||||
"isDefault": false,
|
||||
"typeID": 32880
|
||||
},
|
||||
{
|
||||
"effectID": 5058,
|
||||
"isDefault": false,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[
|
||||
{
|
||||
"field_name": "client_build",
|
||||
"field_value": 1604553
|
||||
"field_value": 1610407
|
||||
},
|
||||
{
|
||||
"field_name": "dump_time",
|
||||
"field_value": 1573560935
|
||||
"field_value": 1574329773
|
||||
}
|
||||
]
|
||||
@@ -733,7 +733,7 @@
|
||||
"text": "reduction in Small Energy Turret activation cost"
|
||||
},
|
||||
{
|
||||
"number": "5%",
|
||||
"number": "10%",
|
||||
"text": "bonus to Small Energy Turret damage"
|
||||
}
|
||||
],
|
||||
@@ -10287,6 +10287,10 @@
|
||||
{
|
||||
"number": "2+",
|
||||
"text": "bonus to ship warp core strength"
|
||||
},
|
||||
{
|
||||
"number": "50%",
|
||||
"text": "reduction in Industrial Cynosural Field Generator liquid ozone consumption"
|
||||
}
|
||||
],
|
||||
"header": "Role Bonus:"
|
||||
@@ -10405,7 +10409,7 @@
|
||||
{
|
||||
"bonuses": [
|
||||
{
|
||||
"number": "10%",
|
||||
"number": "15%",
|
||||
"text": "bonus to Small Hybrid Turret damage"
|
||||
}
|
||||
],
|
||||
@@ -14922,7 +14926,7 @@
|
||||
"text": "reduction in Microwarpdrive signature radius penalty"
|
||||
},
|
||||
{
|
||||
"number": "5%",
|
||||
"number": "10%",
|
||||
"text": "bonus to Small Projectile Turret damage"
|
||||
}
|
||||
],
|
||||
@@ -18810,7 +18814,7 @@
|
||||
{
|
||||
"bonuses": [
|
||||
{
|
||||
"number": "5%",
|
||||
"number": "10%",
|
||||
"text": "bonus to Small Hybrid Turret damage"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1 +1 @@
|
||||
version: v2.14.2
|
||||
version: v2.14.3
|
||||
|
||||
Reference in New Issue
Block a user