def makeShipMinSpec(player, name, hullID, eqIDs, improvements, raiseExs=True): ship = makeShipFullSpec(player, name, hullID, eqIDs, improvements, raiseExs) # make 'real' ship spec spec = IDataHolder() spec.type = Const.T_SHIP spec.name = ship.name spec.hullID = ship.hullID spec.level = ship.level spec.eqIDs = ship.eqIDs spec.improvements = ship.improvements spec.combatClass = ship.combatClass spec.signature = ship.signature spec.scannerPwr = ship.scannerPwr spec.speed = ship.speed spec.battleSpeed = ship.battleSpeed spec.maxHP = ship.maxHP spec.shieldHP = ship.shieldHP spec.combatAtt = ship.combatAtt spec.combatDef = ship.combatDef spec.missileDef = ship.missileDef spec.storEn = ship.storEn spec.operEn = ship.operEn spec.buildProd = ship.buildProd spec.buildSRes = ship.buildSRes spec.weaponIDs = ship.weaponIDs spec.deployStructs = ship.deployStructs spec.deployHandlers = ship.deployHandlers spec.built = 0 spec.buildTurns = 1 spec.upgradeTo = 0 spec.isMilitary = ship.isMilitary spec.baseExp = ship.baseExp spec.combatPwr = ship.combatPwr spec.autoRepairFix = ship.autoRepairFix spec.autoRepairPerc = ship.autoRepairPerc spec.shieldRechargeFix = ship.shieldRechargeFix spec.shieldRechargePerc = ship.shieldRechargePerc spec.hardShield = ship.hardShield spec.combatAttMultiplier = ship.combatAttMultiplier spec.damageAbsorb = ship.damageAbsorb return spec
def makeShipMinSpec(player, name, hullID, eqIDs, improvements, raiseExs = True): ship = makeShipFullSpec(player, name, hullID, eqIDs, improvements, raiseExs) # make 'real' ship spec spec = IDataHolder() spec.type = Const.T_SHIP spec.name = ship.name spec.hullID = ship.hullID spec.level = ship.level spec.eqIDs = ship.eqIDs spec.improvements = ship.improvements spec.combatClass = ship.combatClass spec.signature = ship.signature spec.scannerPwr = ship.scannerPwr spec.speed = ship.speed spec.battleSpeed = ship.battleSpeed spec.maxHP = ship.maxHP spec.shieldHP = ship.shieldHP spec.combatAtt = ship.combatAtt spec.combatDef = ship.combatDef spec.missileDef = ship.missileDef spec.storEn = ship.storEn spec.operEn = ship.operEn spec.buildProd = ship.buildProd spec.buildSRes = ship.buildSRes spec.weaponIDs = ship.weaponIDs spec.deployStructs = ship.deployStructs spec.deployHandlers = ship.deployHandlers spec.built = 0 spec.buildTurns = 1 spec.upgradeTo = 0 spec.isMilitary = ship.isMilitary spec.baseExp = ship.baseExp spec.combatPwr = ship.combatPwr spec.autoRepairFix = ship.autoRepairFix spec.autoRepairPerc = ship.autoRepairPerc spec.shieldRechargeFix = ship.shieldRechargeFix spec.shieldRechargePerc = ship.shieldRechargePerc spec.hardShield = ship.hardShield spec.combatAttMultiplier = ship.combatAttMultiplier spec.damageAbsorb = ship.damageAbsorb return spec
def makeShipFullSpec(player, name, hullID, eqIDs, improvements, raiseExs=True): if not hullID: raise GameException("Ship's hull must be specified.") hull = Rules.techs[hullID] if not hull.isShipHull: raise GameException("Ship's hull must be specified.") ship = IDataHolder() ship.type = Const.T_SHIP # initial values hullTechEff = Rules.techImprEff[player.techs.get( hullID, Rules.techBaseImprovement)] ship.name = name ship.hullID = hullID ship.eqIDs = eqIDs ship.level = hull.level ship.combatClass = hull.combatClass ship.improvements = improvements ship.buildProd = hull.buildProd ship.buildSRes = copy.copy(hull.buildSRes) # stats grouped as "Base" ship.operEn = hull.operEn ship.storEn = hull.storEn * hullTechEff ship.weight = hull.weight ship.slots = 0 ship.scannerPwr = max(hull.scannerPwr * hullTechEff, Rules.scannerMinPwr) ship.engPwr = 0 ship.engStlPwr = 0 ship.speed = 0.0 ship.battleSpeed = 0.0 # stats grouped as "Signature" ship.signature = hull.signature ship.negsignature = 0 ship.minSignature = hull.minSignature ship.signatureCloak = 1.0 ship.signatureDecloak = 1.0 # stats grouped as "Combat" ship.combatAttBase = hull.combatAtt * hullTechEff ship.combatAtt = 0 ship.combatAttMultiplier = 1.0 ship.combatDefBase = hull.combatDef * hullTechEff ship.combatDef = 0 ship.combatDefMultiplier = 1.0 ship.missileDefBase = hull.missileDef * hullTechEff ship.missileDef = 0 ship.missileDefMultiplier = 1.0 ship.weaponIDs = [] ship.isMilitary = 0 ship.baseExp = 0 combatExtra = 0 # stats grouped as "Sturdiness" ship.autoRepairFix = hull.autoRepairFix ship.autoRepairPerc = hull.autoRepairPerc ship.shieldRechargeFix = hull.shieldRechargeFix ship.shieldRechargePerc = hull.shieldRechargePerc ship.hardShield = 0.0 ship.shieldHP = 0 ship.maxHP = int(hull.maxHP * hullTechEff) ship.damageAbsorb = 0 shieldPerc = 0.0 # stats grouped as "Deployables" ship.deployStructs = [] ship.deployHandlers = [] ship.upgradeTo = 0 counter = {} installations = {} equipCounter = {} for techID in eqIDs: tech = Rules.techs[techID] techEff = Rules.techImprEff[player.techs.get( techID, Rules.techBaseImprovement)] if eqIDs[techID] < 0 and raiseExs: raise GameException("Invalid equipment count (less than 0).") for i in xrange(0, eqIDs[techID]): counter[tech.subtype] = 1 + counter.get(tech.subtype, 0) installations[techID] = 1 + installations.get(techID, 0) _checkValidity(ship, tech, installations, equipCounter, raiseExs) # add values _moduleBase(ship, tech, techEff) _moduleSignature(ship, tech) _moduleCombat(ship, tech, techEff, combatExtra) _moduleSturdiness(ship, tech, techEff, shieldPerc) _moduleDeployables(ship, tech) _checkValidityWhole(ship, hull, counter, raiseExs) _finalizeBase(ship, hull) _finalizeSignature(ship, hull) _finalizeCombat(ship) _finalizeSturdiness(ship, shieldPerc) _setCombatPower(ship, combatExtra) return ship
def makeShipFullSpec(player, name, hullID, eqIDs, improvements, raiseExs = True): if not hullID: raise GameException("Ship's hull must be specified.") hull = Rules.techs[hullID] if not hull.isShipHull: raise GameException("Ship's hull must be specified.") ship = IDataHolder() ship.type = Const.T_SHIP # initial values hullTechEff = Rules.techImprEff[player.techs.get(hullID, Rules.techBaseImprovement)] ship.name = name ship.hullID = hullID ship.eqIDs = eqIDs ship.level = hull.level ship.combatClass = hull.combatClass ship.improvements = improvements ship.buildProd = hull.buildProd ship.buildSRes = copy.copy(hull.buildSRes) # stats grouped as "Base" ship.operEn = hull.operEn ship.storEn = hull.storEn * hullTechEff ship.weight = hull.weight ship.slots = 0 ship.scannerPwr = max(hull.scannerPwr * hullTechEff, Rules.scannerMinPwr) ship.engPwr = 0 ship.engStlPwr = 0 ship.speed = 0.0 ship.battleSpeed = 0.0 # stats grouped as "Signature" ship.signature = hull.signature ship.negsignature = 0 ship.minSignature = hull.minSignature ship.signatureCloak = 1.0 ship.signatureDecloak = 1.0 # stats grouped as "Combat" ship.combatAttBase = hull.combatAtt * hullTechEff ship.combatAtt = 0 ship.combatAttMultiplier = 1.0 ship.combatDefBase = hull.combatDef * hullTechEff ship.combatDef = 0 ship.combatDefMultiplier = 1.0 ship.missileDefBase = hull.missileDef * hullTechEff ship.missileDef = 0 ship.missileDefMultiplier = 1.0 ship.weaponIDs = [] ship.isMilitary = 0 ship.baseExp = 0 combatExtra = 0 # stats grouped as "Sturdiness" ship.autoRepairFix = hull.autoRepairFix ship.autoRepairPerc = hull.autoRepairPerc ship.shieldRechargeFix = hull.shieldRechargeFix ship.shieldRechargePerc = hull.shieldRechargePerc ship.hardShield = 0.0 ship.shieldHP = 0 ship.maxHP = int(hull.maxHP * hullTechEff) ship.damageAbsorb = 0 shieldPerc = 0.0 # stats grouped as "Deployables" ship.deployStructs = [] ship.deployHandlers = [] ship.upgradeTo = 0 counter = {} installations = {} equipCounter = {} for techID in eqIDs: tech = Rules.techs[techID] techEff = Rules.techImprEff[player.techs.get(techID, Rules.techBaseImprovement)] if eqIDs[techID] < 0 and raiseExs: raise GameException("Invalid equipment count (less than 0).") for i in xrange(0, eqIDs[techID]): counter[tech.subtype] = 1 + counter.get(tech.subtype, 0) installations[techID] = 1 + installations.get(techID, 0) _checkValidity(ship, tech, installations, equipCounter, raiseExs) # add values _moduleBase(ship, tech, techEff) _moduleSignature(ship, tech) _moduleCombat(ship, tech, techEff, combatExtra) _moduleSturdiness(ship, tech, techEff, shieldPerc) _moduleDeployables(ship, tech) _checkValidityWhole(ship, hull, counter, raiseExs) _finalizeBase(ship, hull) _finalizeSignature(ship, hull) _finalizeCombat(ship) _finalizeSturdiness(ship, shieldPerc) _setCombatPower(ship, combatExtra) return ship