1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 17:42:20 +03:00

Add missing 3.2 ships, modules & commoditites

This commit is contained in:
Jonathan Harris 2018-09-25 00:17:59 +01:00
parent 88dc460a27
commit f2bd931a84
8 changed files with 2135 additions and 2020 deletions

View File

@ -36,7 +36,7 @@ def addcommodities(data):
new = { new = {
'id' : commodity['id'], 'id' : commodity['id'],
'symbol' : commodity['name'], 'symbol' : commodity['name'],
'category' : commodity['categoryname'], 'category' : companion.category_map.get(commodity['categoryname']) or commodity['categoryname'],
'name' : commodity.get('locName') or 'Limpets', 'name' : commodity.get('locName') or 'Limpets',
} }
old = commodities.get(key) old = commodities.get(key)

View File

@ -111,8 +111,8 @@ id,symbol,category,name
128672131,DiplomaticBag,Salvage,Diplomatic Bag 128672131,DiplomaticBag,Salvage,Diplomatic Bag
128672132,ScientificResearch,Salvage,Scientific Research 128672132,ScientificResearch,Salvage,Scientific Research
128672133,ScientificSamples,Salvage,Scientific Samples 128672133,ScientificSamples,Salvage,Scientific Samples
128672134,PoliticalPrisoner,Salvage,Political Prisoner 128672134,PoliticalPrisoner,Salvage,Political Prisoners
128672135,Hostage,Salvage,Hostage 128672135,Hostage,Salvage,Hostages
128672136,LargeExplorationDataCash,Salvage,Large Survey Data Cache 128672136,LargeExplorationDataCash,Salvage,Large Survey Data Cache
128672137,SmallExplorationDataCash,Salvage,Small Survey Data Cache 128672137,SmallExplorationDataCash,Salvage,Small Survey Data Cache
128672159,AntiqueJewellery,Salvage,Antique Jewellery 128672159,AntiqueJewellery,Salvage,Antique Jewellery
@ -204,3 +204,5 @@ id,symbol,category,name
128793129,ThargoidTissueSampleType2,Salvage,Thargoid Basilisk Tissue Sample 128793129,ThargoidTissueSampleType2,Salvage,Thargoid Basilisk Tissue Sample
128793130,ThargoidTissueSampleType3,Salvage,Thargoid Medusa Tissue Sample 128793130,ThargoidTissueSampleType3,Salvage,Thargoid Medusa Tissue Sample
128824468,ThargoidScoutTissueSample,Salvage,Thargoid Scout Tissue Sample 128824468,ThargoidScoutTissueSample,Salvage,Thargoid Scout Tissue Sample
128888499,AncientKey,Salvage,Ancient Key
128902652,ThargoidTissueSampleType4,Salvage,Thargoid Hydra Tissue Sample

1 id symbol category name
111 128672131 DiplomaticBag Salvage Diplomatic Bag
112 128672132 ScientificResearch Salvage Scientific Research
113 128672133 ScientificSamples Salvage Scientific Samples
114 128672134 PoliticalPrisoner Salvage Political Prisoner Political Prisoners
115 128672135 Hostage Salvage Hostage Hostages
116 128672136 LargeExplorationDataCash Salvage Large Survey Data Cache
117 128672137 SmallExplorationDataCash Salvage Small Survey Data Cache
118 128672159 AntiqueJewellery Salvage Antique Jewellery
204 128793129 ThargoidTissueSampleType2 Salvage Thargoid Basilisk Tissue Sample
205 128793130 ThargoidTissueSampleType3 Salvage Thargoid Medusa Tissue Sample
206 128824468 ThargoidScoutTissueSample Salvage Thargoid Scout Tissue Sample
207 128888499 AncientKey Salvage Ancient Key
208 128902652 ThargoidTissueSampleType4 Salvage Thargoid Hydra Tissue Sample

View File

@ -73,6 +73,7 @@ ship_map = {
'type9' : 'Type-9 Heavy', 'type9' : 'Type-9 Heavy',
'type9_military' : 'Type-10 Defender', 'type9_military' : 'Type-10 Defender',
'typex' : 'Alliance Chieftain', 'typex' : 'Alliance Chieftain',
'typex_2' : 'Alliance Crusader',
'typex_3' : 'Alliance Challenger', 'typex_3' : 'Alliance Challenger',
'viper' : 'Viper MkIII', 'viper' : 'Viper MkIII',
'viper_mkiv' : 'Viper MkIV', 'viper_mkiv' : 'Viper MkIV',

@ -1 +1 @@
Subproject commit e9417ea417690006db18ab649ed6f2384ea12416 Subproject commit 48f19712170915328d38804ca3470fdf20ff176f

View File

@ -3,10 +3,12 @@
# build ship and module databases from https://github.com/EDCD/coriolis-data/ # build ship and module databases from https://github.com/EDCD/coriolis-data/
# #
import csv
import base64 import base64
from collections import OrderedDict from collections import OrderedDict
import cPickle import cPickle
import json import json
from traceback import print_exc
from config import config from config import config
import outfitting import outfitting
@ -73,33 +75,15 @@ if __name__ == "__main__":
else: else:
modules[key] = { 'mass': m.get('mass', 0) } # Some modules don't have mass modules[key] = { 'mass': m.get('mass', 0) } # Some modules don't have mass
# 3.0 / 3.1 additions not yet present in coriolis-data
add(modules, 'hpt_causticmissile_fixed_medium', {'mass': 4})
add(modules, 'hpt_flechettelauncher_fixed_medium', {'mass': 4})
add(modules, 'hpt_flechettelauncher_turret_medium', {'mass': 4})
add(modules, 'hpt_guardian_plasmalauncher_fixed_large', {'mass': 8})
add(modules, 'hpt_guardian_plasmalauncher_turret_large', {'mass': 8})
add(modules, 'hpt_guardian_shardcannon_turret_medium', {'mass': 4})
add(modules, 'hpt_guardian_shardcannon_turret_large', {'mass': 8})
add(modules, 'hpt_plasmashockcannon_fixed_medium', {'mass': 4})
add(modules, 'hpt_plasmashockcannon_gimbal_large', {'mass': 8}) # ???
add(modules, 'hpt_plasmashockcannon_turret_medium', {'mass': 4})
add(modules, 'hpt_plasmashockcannon_turret_large', {'mass': 8}) # ???
add(modules, 'int_dronecontrol_decontamination_size1_class1', {'mass': 1.3})
add(modules, 'int_dronecontrol_decontamination_size3_class1', {'mass': 2})
add(modules, 'int_dronecontrol_decontamination_size5_class1', {'mass': 20})
add(modules, 'int_dronecontrol_decontamination_size7_class1', {'mass': 128})
add(modules, 'int_dronecontrol_unkvesselresearch', {'mass': 1.3})
add(modules, 'int_metaalloyhullreinforcement_size1_class1', { 'mass': 2 })
add(modules, 'int_metaalloyhullreinforcement_size1_class2', { 'mass': 2 }) # anomaly
add(modules, 'int_metaalloyhullreinforcement_size2_class1', { 'mass': 4 })
add(modules, 'int_metaalloyhullreinforcement_size2_class2', { 'mass': 2 })
add(modules, 'int_metaalloyhullreinforcement_size3_class1', { 'mass': 8 })
add(modules, 'int_metaalloyhullreinforcement_size3_class2', { 'mass': 4 })
add(modules, 'int_metaalloyhullreinforcement_size4_class1', { 'mass': 16 })
add(modules, 'int_metaalloyhullreinforcement_size4_class2', { 'mass': 8 })
add(modules, 'int_metaalloyhullreinforcement_size5_class1', { 'mass': 32 })
add(modules, 'int_metaalloyhullreinforcement_size5_class2', { 'mass': 16 })
modules = OrderedDict([(k,modules[k]) for k in sorted(modules)]) # sort for easier diffing modules = OrderedDict([(k,modules[k]) for k in sorted(modules)]) # sort for easier diffing
cPickle.dump(modules, open('modules.p', 'wb')) cPickle.dump(modules, open('modules.p', 'wb'))
# Check data is present for all modules
with open('outfitting.csv') as csvfile:
reader = csv.DictReader(csvfile, restval='')
for row in reader:
try:
module = outfitting.lookup({ 'id': row['id'], 'name': row['symbol'] }, companion.ship_map)
except:
print row['symbol']
print_exc()

3946
modules.p

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ weapon_map = {
'advancedtorppylon' : 'Torpedo Pylon', 'advancedtorppylon' : 'Torpedo Pylon',
'atdumbfiremissile' : 'AX Missile Rack', 'atdumbfiremissile' : 'AX Missile Rack',
'atmulticannon' : 'AX Multi-Cannon', 'atmulticannon' : 'AX Multi-Cannon',
'basicmissilerack' : 'Missile Rack', 'basicmissilerack' : 'Seeker Missile Rack',
'beamlaser' : 'Beam Laser', 'beamlaser' : 'Beam Laser',
('beamlaser','heat') : 'Retributor Beam Laser', ('beamlaser','heat') : 'Retributor Beam Laser',
'cannon' : 'Cannon', 'cannon' : 'Cannon',
@ -81,6 +81,7 @@ weaponclass_map = {
weaponrating_map = { weaponrating_map = {
'hpt_advancedtorppylon_fixed_small' : 'I', 'hpt_advancedtorppylon_fixed_small' : 'I',
'hpt_advancedtorppylon_fixed_medium': 'I', 'hpt_advancedtorppylon_fixed_medium': 'I',
'hpt_advancedtorppylon_fixed_large' : 'I',
'hpt_atdumbfiremissile_fixed_medium': 'B', 'hpt_atdumbfiremissile_fixed_medium': 'B',
'hpt_atdumbfiremissile_fixed_large' : 'A', 'hpt_atdumbfiremissile_fixed_large' : 'A',
'hpt_atdumbfiremissile_turret_medium': 'B', 'hpt_atdumbfiremissile_turret_medium': 'B',
@ -91,6 +92,7 @@ weaponrating_map = {
'hpt_atmulticannon_turret_large' : 'E', 'hpt_atmulticannon_turret_large' : 'E',
'hpt_basicmissilerack_fixed_small' : 'B', 'hpt_basicmissilerack_fixed_small' : 'B',
'hpt_basicmissilerack_fixed_medium' : 'B', 'hpt_basicmissilerack_fixed_medium' : 'B',
'hpt_basicmissilerack_fixed_large' : 'A',
'hpt_beamlaser_fixed_small' : 'E', 'hpt_beamlaser_fixed_small' : 'E',
'hpt_beamlaser_fixed_medium' : 'D', 'hpt_beamlaser_fixed_medium' : 'D',
'hpt_beamlaser_fixed_large': 'C', 'hpt_beamlaser_fixed_large': 'C',
@ -117,17 +119,23 @@ weaponrating_map = {
'hpt_drunkmissilerack_fixed_medium': 'B', 'hpt_drunkmissilerack_fixed_medium': 'B',
'hpt_dumbfiremissilerack_fixed_small': 'B', 'hpt_dumbfiremissilerack_fixed_small': 'B',
'hpt_dumbfiremissilerack_fixed_medium': 'B', 'hpt_dumbfiremissilerack_fixed_medium': 'B',
'hpt_dumbfiremissilerack_fixed_large': 'A',
'hpt_flakmortar_fixed_medium': 'B', 'hpt_flakmortar_fixed_medium': 'B',
'hpt_flakmortar_turret_medium': 'B', 'hpt_flakmortar_turret_medium': 'B',
'hpt_flechettelauncher_fixed_medium': 'B', 'hpt_flechettelauncher_fixed_medium': 'B',
'hpt_flechettelauncher_turret_medium': 'B', 'hpt_flechettelauncher_turret_medium': 'B',
'hpt_guardian_gausscannon_fixed_medium': 'B', # guess 'hpt_guardian_gausscannon_fixed_small': 'D',
'hpt_guardian_gausscannon_fixed_medium': 'B',
'hpt_guardian_plasmalauncher_fixed_small': 'D',
'hpt_guardian_plasmalauncher_fixed_medium': 'B', 'hpt_guardian_plasmalauncher_fixed_medium': 'B',
'hpt_guardian_plasmalauncher_fixed_large': 'C', 'hpt_guardian_plasmalauncher_fixed_large': 'C',
'hpt_guardian_plasmalauncher_turret_small': 'F',
'hpt_guardian_plasmalauncher_turret_medium': 'E', 'hpt_guardian_plasmalauncher_turret_medium': 'E',
'hpt_guardian_plasmalauncher_turret_large': 'D', 'hpt_guardian_plasmalauncher_turret_large': 'D',
'hpt_guardian_shardcannon_fixed_small': 'D',
'hpt_guardian_shardcannon_fixed_medium': 'A', 'hpt_guardian_shardcannon_fixed_medium': 'A',
'hpt_guardian_shardcannon_fixed_large': 'C', 'hpt_guardian_shardcannon_fixed_large': 'C',
'hpt_guardian_shardcannon_turret_small': 'F',
'hpt_guardian_shardcannon_turret_medium': 'D', 'hpt_guardian_shardcannon_turret_medium': 'D',
'hpt_guardian_shardcannon_turret_large': 'D', 'hpt_guardian_shardcannon_turret_large': 'D',
'hpt_minelauncher_fixed_small': 'I', 'hpt_minelauncher_fixed_small': 'I',
@ -146,13 +154,17 @@ weaponrating_map = {
'hpt_multicannon_gimbal_huge': 'A', 'hpt_multicannon_gimbal_huge': 'A',
'hpt_multicannon_turret_small': 'G', 'hpt_multicannon_turret_small': 'G',
'hpt_multicannon_turret_medium': 'F', 'hpt_multicannon_turret_medium': 'F',
'hpt_multicannon_turret_large': 'E',
'hpt_plasmaaccelerator_fixed_medium': 'C', 'hpt_plasmaaccelerator_fixed_medium': 'C',
'hpt_plasmaaccelerator_fixed_large': 'B', 'hpt_plasmaaccelerator_fixed_large': 'B',
'hpt_plasmaaccelerator_fixed_huge': 'A', 'hpt_plasmaaccelerator_fixed_huge': 'A',
'hpt_plasmashockcannon_fixed_small': 'D',
'hpt_plasmashockcannon_fixed_medium': 'D', 'hpt_plasmashockcannon_fixed_medium': 'D',
'hpt_plasmashockcannon_fixed_large': 'C', 'hpt_plasmashockcannon_fixed_large': 'C',
'hpt_plasmashockcannon_gimbal_small': 'E',
'hpt_plasmashockcannon_gimbal_medium': 'D', 'hpt_plasmashockcannon_gimbal_medium': 'D',
'hpt_plasmashockcannon_gimbal_large': 'C', 'hpt_plasmashockcannon_gimbal_large': 'C',
'hpt_plasmashockcannon_turret_small': 'F',
'hpt_plasmashockcannon_turret_medium': 'E', 'hpt_plasmashockcannon_turret_medium': 'E',
'hpt_plasmashockcannon_turret_large': 'D', 'hpt_plasmashockcannon_turret_large': 'D',
'hpt_pulselaser_fixed_small': 'F', 'hpt_pulselaser_fixed_small': 'F',
@ -305,7 +317,7 @@ internal_map = {
# Module mass, FSD data etc # Module mass, FSD data etc
moduledata = cPickle.load(open(join(config.respath, 'modules.p'), 'rb')) moduledata = OrderedDict()
# Given a module description from the Companion API returns a description of the module in the form of a # Given a module description from the Companion API returns a description of the module in the form of a
@ -317,6 +329,10 @@ moduledata = cPickle.load(open(join(config.respath, 'modules.p'), 'rb'))
# (Given the ad-hocery in this implementation a big lookup table might have been simpler and clearer). # (Given the ad-hocery in this implementation a big lookup table might have been simpler and clearer).
def lookup(module, ship_map, entitled=False): def lookup(module, ship_map, entitled=False):
# Lazily populate
if not moduledata:
moduledata.update(cPickle.load(open(join(config.respath, 'modules.p'), 'rb')))
# if not module.get('category'): raise AssertionError('%s: Missing category' % module['id']) # only present post 1.3, and not present in ship loadout # if not module.get('category'): raise AssertionError('%s: Missing category' % module['id']) # only present post 1.3, and not present in ship loadout
if not module.get('name'): raise AssertionError('%s: Missing name' % module['id']) if not module.get('name'): raise AssertionError('%s: Missing name' % module['id'])
@ -358,9 +374,13 @@ def lookup(module, ship_map, entitled=False):
if name[4] in weaponoldvariant_map: # Old variants e.g. Hpt_PulseLaserBurst_Turret_Large_OC if name[4] in weaponoldvariant_map: # Old variants e.g. Hpt_PulseLaserBurst_Turret_Large_OC
new['name'] = weapon_map[name[1]] + ' ' + weaponoldvariant_map[name[4]] new['name'] = weapon_map[name[1]] + ' ' + weaponoldvariant_map[name[4]]
new['rating'] = '?' new['rating'] = '?'
elif '_'.join(name[:4]) not in weaponrating_map:
raise AssertionError('%s: Unknown weapon rating "%s"' % (module['id'], module['name']))
else: # PP faction-specific weapons e.g. Hpt_Slugshot_Fixed_Large_Range else: # PP faction-specific weapons e.g. Hpt_Slugshot_Fixed_Large_Range
new['name'] = weapon_map[(name[1],name[4])] new['name'] = weapon_map[(name[1],name[4])]
new['rating'] = weaponrating_map['_'.join(name[:4])] # assumes same rating as base weapon new['rating'] = weaponrating_map['_'.join(name[:4])] # assumes same rating as base weapon
elif module['name'].lower() not in weaponrating_map:
raise AssertionError('%s: Unknown weapon rating "%s"' % (module['id'], module['name']))
else: else:
new['name'] = weapon_map[name[1]] new['name'] = weapon_map[name[1]]
new['rating'] = weaponrating_map[module['name'].lower()] # no obvious rule - needs lookup table new['rating'] = weaponrating_map[module['name'].lower()] # no obvious rule - needs lookup table

132
ships.p
View File

@ -22,196 +22,202 @@ a(dp12
g6 g6
I400 I400
saa(lp13 saa(lp13
S'Anaconda' S'Alliance Crusader'
p14 p14
a(dp15 a(dp15
g6 g6
I400 I500
saa(lp16 saa(lp16
S'Asp Explorer' S'Anaconda'
p17 p17
a(dp18 a(dp18
g6 g6
I280 I400
saa(lp19 saa(lp19
S'Asp Scout' S'Asp Explorer'
p20 p20
a(dp21 a(dp21
g6 g6
I150 I280
saa(lp22 saa(lp22
S'Beluga Liner' S'Asp Scout'
p23 p23
a(dp24 a(dp24
g6 g6
I950 I150
saa(lp25 saa(lp25
S'Cobra MkIII' S'Beluga Liner'
p26 p26
a(dp27 a(dp27
g6 g6
I180 I950
saa(lp28 saa(lp28
S'Cobra MkIV' S'Cobra MkIII'
p29 p29
a(dp30 a(dp30
g6 g6
I210 I180
saa(lp31 saa(lp31
S'Diamondback Explorer' S'Cobra MkIV'
p32 p32
a(dp33 a(dp33
g6 g6
I260 I210
saa(lp34 saa(lp34
S'Diamondback Scout' S'Diamondback Explorer'
p35 p35
a(dp36 a(dp36
g6 g6
I170 I260
saa(lp37 saa(lp37
S'Dolphin' S'Diamondback Scout'
p38 p38
a(dp39 a(dp39
g6 g6
I140 I170
saa(lp40 saa(lp40
S'Eagle' S'Dolphin'
p41 p41
a(dp42 a(dp42
g6 g6
I50 I140
saa(lp43 saa(lp43
S'Federal Assault Ship' S'Eagle'
p44 p44
a(dp45 a(dp45
g6 g6
I480 I50
saa(lp46 saa(lp46
S'Federal Corvette' S'Federal Assault Ship'
p47 p47
a(dp48 a(dp48
g6 g6
I900 I480
saa(lp49 saa(lp49
S'Federal Dropship' S'Federal Corvette'
p50 p50
a(dp51 a(dp51
g6 g6
I580 I900
saa(lp52 saa(lp52
S'Federal Gunship' S'Federal Dropship'
p53 p53
a(dp54 a(dp54
g6 g6
I580 I580
saa(lp55 saa(lp55
S'Fer-de-Lance' S'Federal Gunship'
p56 p56
a(dp57 a(dp57
g6 g6
I250 I580
saa(lp58 saa(lp58
S'Hauler' S'Fer-de-Lance'
p59 p59
a(dp60 a(dp60
g6 g6
I14 I250
saa(lp61 saa(lp61
S'Imperial Clipper' S'Hauler'
p62 p62
a(dp63 a(dp63
g6 g6
I400 I14
saa(lp64 saa(lp64
S'Imperial Courier' S'Imperial Clipper'
p65 p65
a(dp66 a(dp66
g6 g6
I35 I400
saa(lp67 saa(lp67
S'Imperial Cutter' S'Imperial Courier'
p68 p68
a(dp69 a(dp69
g6 g6
I1100 I35
saa(lp70 saa(lp70
S'Imperial Eagle' S'Imperial Cutter'
p71 p71
a(dp72 a(dp72
g6 g6
I50 I1100
saa(lp73 saa(lp73
S'Keelback' S'Imperial Eagle'
p74 p74
a(dp75 a(dp75
g6 g6
I180 I50
saa(lp76 saa(lp76
S'Krait MkII' S'Keelback'
p77 p77
a(dp78 a(dp78
g6 g6
I320 I180
saa(lp79 saa(lp79
S'Orca' S'Krait MkII'
p80 p80
a(dp81 a(dp81
g6 g6
I290 I320
saa(lp82 saa(lp82
S'Python' S'Orca'
p83 p83
a(dp84 a(dp84
g6 g6
I350 I290
saa(lp85 saa(lp85
S'Sidewinder' S'Python'
p86 p86
a(dp87 a(dp87
g6 g6
I25 I350
saa(lp88 saa(lp88
S'Type-10 Defender' S'Sidewinder'
p89 p89
a(dp90 a(dp90
g6 g6
I1200 I25
saa(lp91 saa(lp91
S'Type-6 Transporter' S'Type-10 Defender'
p92 p92
a(dp93 a(dp93
g6 g6
I155 I1200
saa(lp94 saa(lp94
S'Type-7 Transporter' S'Type-6 Transporter'
p95 p95
a(dp96 a(dp96
g6 g6
I350 I155
saa(lp97 saa(lp97
S'Type-9 Heavy' S'Type-7 Transporter'
p98 p98
a(dp99 a(dp99
g6 g6
I850 I350
saa(lp100 saa(lp100
S'Viper MkIII' S'Type-9 Heavy'
p101 p101
a(dp102 a(dp102
g6 g6
I50 I850
saa(lp103 saa(lp103
S'Viper MkIV' S'Viper MkIII'
p104 p104
a(dp105 a(dp105
g6 g6
I190 I50
saa(lp106 saa(lp106
S'Vulture' S'Viper MkIV'
p107 p107
a(dp108 a(dp108
g6 g6
I190
saa(lp109
S'Vulture'
p110
a(dp111
g6
I230 I230
saatRp109 saatRp112
. .