diff --git a/eos/effects/shipbonuscarriera1armorresists.py b/eos/effects/shipbonuscarriera1armorresists.py
new file mode 100644
index 000000000..01e12a0d2
--- /dev/null
+++ b/eos/effects/shipbonuscarriera1armorresists.py
@@ -0,0 +1,6 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.ship.boostItemAttr("armorKineticDamageResonance", src.getModifiedItemAttr("shipBonusCarrierA1"), skill="Amarr Carrier")
+ fit.ship.boostItemAttr("armorEmDamageResonance", src.getModifiedItemAttr("shipBonusCarrierA1"), skill="Amarr Carrier")
+ fit.ship.boostItemAttr("armorExplosiveDamageResonance", src.getModifiedItemAttr("shipBonusCarrierA1"), skill="Amarr Carrier")
+ fit.ship.boostItemAttr("armorThermalDamageResonance", src.getModifiedItemAttr("shipBonusCarrierA1"), skill="Amarr Carrier")
diff --git a/eos/effects/shipbonuscarriera2supportfighterbonus.py b/eos/effects/shipbonuscarriera2supportfighterbonus.py
new file mode 100644
index 000000000..87b288278
--- /dev/null
+++ b/eos/effects/shipbonuscarriera2supportfighterbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterSquadronOrbitRange", src.getModifiedItemAttr("shipBonusCarrierA2"), skill="Amarr Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterAbilityEnergyNeutralizerOptimalRange", src.getModifiedItemAttr("shipBonusCarrierA2"), skill="Amarr Carrier")
diff --git a/eos/effects/shipbonuscarriera4warfarelinksbonus.py b/eos/effects/shipbonuscarriera4warfarelinksbonus.py
new file mode 100644
index 000000000..a3711af05
--- /dev/null
+++ b/eos/effects/shipbonuscarriera4warfarelinksbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierA4"), skill="Amarr Carrier")
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Armored Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierA4"), skill="Amarr Carrier")
diff --git a/eos/effects/shipbonuscarrierc1shieldresists.py b/eos/effects/shipbonuscarrierc1shieldresists.py
new file mode 100644
index 000000000..44a3003bc
--- /dev/null
+++ b/eos/effects/shipbonuscarrierc1shieldresists.py
@@ -0,0 +1,6 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.ship.boostItemAttr("shieldThermalDamageResonance", src.getModifiedItemAttr("shipBonusCarrierC1"), skill="Caldari Carrier")
+ fit.ship.boostItemAttr("shieldEmDamageResonance", src.getModifiedItemAttr("shipBonusCarrierC1"), skill="Caldari Carrier")
+ fit.ship.boostItemAttr("shieldKineticDamageResonance", src.getModifiedItemAttr("shipBonusCarrierC1"), skill="Caldari Carrier")
+ fit.ship.boostItemAttr("shieldExplosiveDamageResonance", src.getModifiedItemAttr("shipBonusCarrierC1"), skill="Caldari Carrier")
diff --git a/eos/effects/shipbonuscarrierc2supportfighterbonus.py b/eos/effects/shipbonuscarrierc2supportfighterbonus.py
new file mode 100644
index 000000000..6f2ab33ca
--- /dev/null
+++ b/eos/effects/shipbonuscarrierc2supportfighterbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterSquadronOrbitRange", src.getModifiedItemAttr("shipBonusCarrierC2"), skill="Caldari Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterAbilityECMRangeOptimal", src.getModifiedItemAttr("shipBonusCarrierC2"), skill="Caldari Carrier")
diff --git a/eos/effects/shipbonuscarrierc4warfarelinksbonus.py b/eos/effects/shipbonuscarrierc4warfarelinksbonus.py
new file mode 100644
index 000000000..7aea00cab
--- /dev/null
+++ b/eos/effects/shipbonuscarrierc4warfarelinksbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Siege Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierC4"), skill="Caldari Carrier")
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierC4"), skill="Caldari Carrier")
diff --git a/eos/effects/shipbonuscarrierg1fighterdamageandhitpoints.py b/eos/effects/shipbonuscarrierg1fighterdamageandhitpoints.py
new file mode 100644
index 000000000..f8bfb542c
--- /dev/null
+++ b/eos/effects/shipbonuscarrierg1fighterdamageandhitpoints.py
@@ -0,0 +1,6 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierG1"), skill="Gallente Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackTurretDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierG1"), skill="Gallente Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "shieldCapacity", src.getModifiedItemAttr("shipBonusCarrierG1"), skill="Gallente Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackMissileDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierG1"), skill="Gallente Carrier")
diff --git a/eos/effects/shipbonuscarrierg2supportfighterbonus.py b/eos/effects/shipbonuscarrierg2supportfighterbonus.py
new file mode 100644
index 000000000..685357fe3
--- /dev/null
+++ b/eos/effects/shipbonuscarrierg2supportfighterbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterSquadronOrbitRange", src.getModifiedItemAttr("shipBonusCarrierG2"), skill="Gallente Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterAbilityWarpDisruptionRange", src.getModifiedItemAttr("shipBonusCarrierG2"), skill="Gallente Carrier")
diff --git a/eos/effects/shipbonuscarrierg4warfarelinksbonus.py b/eos/effects/shipbonuscarrierg4warfarelinksbonus.py
new file mode 100644
index 000000000..26deef6a7
--- /dev/null
+++ b/eos/effects/shipbonuscarrierg4warfarelinksbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Armored Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierG4"), skill="Gallente Carrier")
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Skirmish Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierG4"), skill="Gallente Carrier")
diff --git a/eos/effects/shipbonuscarrierm1fighterdamageandvelocity.py b/eos/effects/shipbonuscarrierm1fighterdamageandvelocity.py
new file mode 100644
index 000000000..6d2175864
--- /dev/null
+++ b/eos/effects/shipbonuscarrierm1fighterdamageandvelocity.py
@@ -0,0 +1,6 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "maxVelocity", src.getModifiedItemAttr("shipBonusCarrierM1"), skill="Minmatar Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityMissilesDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierM1"), skill="Minmatar Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackTurretDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierM1"), skill="Minmatar Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Fighters"), "fighterAbilityAttackMissileDamageMultiplier", src.getModifiedItemAttr("shipBonusCarrierM1"), skill="Minmatar Carrier")
diff --git a/eos/effects/shipbonuscarrierm2supportfighterbonus.py b/eos/effects/shipbonuscarrierm2supportfighterbonus.py
new file mode 100644
index 000000000..53bfa558e
--- /dev/null
+++ b/eos/effects/shipbonuscarrierm2supportfighterbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterSquadronOrbitRange", src.getModifiedItemAttr("shipBonusCarrierM2"), skill="Minmatar Carrier")
+ fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill("Support Fighters"), "fighterAbilityStasisWebifierOptimalRange", src.getModifiedItemAttr("shipBonusCarrierM2"), skill="Minmatar Carrier")
diff --git a/eos/effects/shipbonuscarrierm4warfarelinksbonus.py b/eos/effects/shipbonuscarrierm4warfarelinksbonus.py
new file mode 100644
index 000000000..f85e93739
--- /dev/null
+++ b/eos/effects/shipbonuscarrierm4warfarelinksbonus.py
@@ -0,0 +1,4 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Skirmish Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierM4"), skill="Minmatar Carrier")
+ fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Siege Warfare Specialist"), "commandBonus", src.getModifiedItemAttr("shipBonusCarrierM4"), skill="Minmatar Carrier")
diff --git a/eos/effects/shipbonuscarrierrole1numwarfarelinks.py b/eos/effects/shipbonuscarrierrole1numwarfarelinks.py
new file mode 100644
index 000000000..c07ac5ccc
--- /dev/null
+++ b/eos/effects/shipbonuscarrierrole1numwarfarelinks.py
@@ -0,0 +1,3 @@
+type = "passive"
+def handler(fit, src, context):
+ fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Leadership"), "maxGroupActive", src.getModifiedItemAttr("shipBonusRole1"))
diff --git a/eve.db b/eve.db
index 3fa5bea0c..a4d0d390c 100644
Binary files a/eve.db and b/eve.db differ
diff --git a/gui/itemStats.py b/gui/itemStats.py
index d0ef2db3f..0f2b26eeb 100644
--- a/gui/itemStats.py
+++ b/gui/itemStats.py
@@ -24,7 +24,7 @@ from gui.bitmapLoader import BitmapLoader
import sys
import wx.lib.mixins.listctrl as listmix
import wx.html
-from eos.types import Fit, Ship, Module, Skill, Booster, Implant, Drone, Mode
+from eos.types import Fit, Ship, Module, Skill, Booster, Implant, Drone, Mode, Fighter
from gui.utils.numberFormatter import formatAmount
import service
import config
@@ -242,6 +242,10 @@ class ItemDescription ( wx.Panel ):
fgcolor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOWTEXT)
self.description = wx.html.HtmlWindow(self)
+
+ if not item.description:
+ return
+
desc = item.description.replace("\r", "
")
# Strip font tags
desc = re.sub("<( *)font( *)color( *)=(.*?)>(?P.*?)<( *)/( *)font( *)>", "\g", desc)
@@ -557,7 +561,7 @@ class ItemEffects (wx.Panel):
class ItemAffectedBy (wx.Panel):
- ORDER = [Fit, Ship, Mode, Module, Drone, Implant, Booster, Skill]
+ ORDER = [Fit, Ship, Mode, Module, Drone, Fighter, Implant, Booster, Skill]
def __init__(self, parent, stuff, item):
wx.Panel.__init__(self, parent)
self.stuff = stuff