Katharsis & me are working on a program that can automatically expand one ship type into a whole class of ships. To do that, it reads in some variables and info from the complete shipdata and shipyard plists of one ship, it needs a player version and at least one (can also be more) NPC versions of that ship.
From that data and the roles contained in the NPC version, a new template for that ship is generated, and then diverse player and NPC versions - the ship is expanded into a whole class.
Also a lot of features are included as standard via that process. If you want to know what they are, have a look at the very first post in this thread under "special ship classes".
When the program has worked in helping to produce finished OSE, we will probably make it available as a feature for shop oxp creators.
Here comes the ship template and the player versions for the shipdata template:
Code: Select all
<key>"playernamekey"-template</key>
<dict>
// ...
// Alle Einträge die in shipdata.plist möglich sind werden angesehen und hier hinein ge - copy & paste - d (stehen in der how-to shipdata.plist Liste)
// <key>roles>/key> etc. wird NICHT ge - copy & paste - d
// <key>escorts</key> etc. wird NICHT ge - copy & paste - d
// <key>escort-role</key> etc. wird NICHT ge - copy & paste - d
// <key>escort-ship</key> etc. wird NICHT ge - copy & paste - d
// Mit folgenden Ausnahmen, die wie folgt ausgegeben werden:
// ...
<key>max_energy</key>
<real>„Aplayer“</real>
<key>energy_recharge_rate</key>
<real>„Bplayer“</real>
<key>max_cargo</key>
<integer>„D“</integer>
<key>extra_cargo</key>
<integer>„E“</integer>
<key>fuel</key>
<integer>„L“ * 60</integer>
<key>max_flight_pitch</key>
<real>„G“</real>
<key>max_flight_roll</key>
<real>„H“</real>
<key>max_flight_speed</key>
<real>„I“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„J“</integer>
<key>thrust</key>
<real>„SP“ * 100</real>
<key>density</key>
<real>„C“ / 35</real>
<key>likely_cargo</key>
<integer>„F“</integer>
<key>max_missiles</key>
<integer>„L“</integer>
<key>missiles</key>
<integer>„L“</integer>
<key>cloak_passive</key>
<true/>
<key>is_template</key>
<true/>
// Falls "custom_views" schon in shipdata.plist vorhanden sind werden die hier hinein ge - copy & paste - d, falls nicht die unten stehenden eingefügt
<key>custom_views</key>
<array>
<dict>
<key>view_description</key>
<string>Rear View</string>
<key>view_position</key>
<string>0.0 -50.0 -500.0</string>
<key>view_orientation</key>
<string>1.0 0.0 0.0 0.0</string>
<key>weapon_facing</key>
<string>AFT</string>
</dict>
<dict>
<key>view_description</key>
<string>Rear Right View</string>
<key>view_position</key>
<string>235 -33.3 -235</string>
<key>view_orientation</key>
<string>0.9239 0.0 0.3829 0.0</string>
<key>weapon_facing</key>
<string>AFT</string>
</dict>
<dict>
<key>view_description</key>
<string>Right View</string>
<key>view_position</key>
<string>400.0 -40.0 0.0</string>
<key>view_orientation</key>
<string>0.7071 0.0 0.7071 0.0</string>
<key>weapon_facing</key>
<string>STARBOARD</string>
</dict>
<dict>
<key>view_description</key>
<string>Front Right View</string>
<key>view_position</key>
<string>280 -40.0 280</string>
<key>view_orientation</key>
<string>0.3829 0.0 0.9239 0.0</string>
<key>weapon_facing</key>
<string>STARBOARD</string>
</dict>
<dict>
<key>view_description</key>
<string>Front View</string>
<key>view_position</key>
<string>0.0 -50.0 500.0</string>
<key>view_orientation</key>
<string>0.0 0.0 1.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>Front Left View</string>
<key>view_position</key>
<string>-280 -40.0 280</string>
<key>view_orientation</key>
<string>0.3829 0.0 -0.9239 0.0</string>
<key>weapon_facing</key>
<string>PORT</string>
</dict>
<dict>
<key>view_description</key>
<string>Left View</string>
<key>view_position</key>
<string>-400.0 -40.0 0.0</string>
<key>view_orientation</key>
<string>0.7071 0.0 -0.7071 0.0</string>
<key>weapon_facing</key>
<string>PORT</string>
</dict>
<dict>
<key>view_description</key>
<string>Rear Left View</string>
<key>view_position</key>
<string>-235 -33.3 -235</string>
<key>view_orientation</key>
<string>0.9239 0.0 -0.3829 0.0</string>
<key>weapon_facing</key>
<string>AFT</string>
</dict>
<dict>
<key>view_description</key>
<string>Top View</string>
<key>view_position</key>
<string>0.0 650 -33.3</string>
<key>view_orientation</key>
<string>-0.7071 0.7071 0.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>Bottom View</string>
<key>view_position</key>
<string>0.0 -650 -33.3</string>
<key>view_orientation</key>
<string>0.0 0.0 0.7071 0.7071</string>
<key>weapon_facing</key>
<string>AFT</string>
</dict>
</array>
<key>death_actions</key>
<array>
<string>spawn: "playernamekey"-dredgerhulk 1</string>
</array>
</dict>
<key>"playernamekey"-dredgerhulk</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"-template</string>
<key>ai_type</key>
<string>nullAI.plist</string>
<key>cargo_type</key>
<string>CARGO_NOT_CARGO</string>
<key>escorts</key>
<integer>0</integer>
<key>is_hulk</key>
<string>1.0</string>
<key>roles</key>
<string>dredgerDerelict</string>
<key>scanClass</key>
<string>CLASS_CARGO</string>
<key>name</key>
<string>"Name" (derelict)</string>
</dict>
<key>"playernamekey"</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"-template</string>
<key>max_energy</key>
<real>„Aplayer“</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" (Mk X)</string>
</dict>
// Template: Entries for all Player Ship Variants of the "Name" class
// Insert next if class1 = 1
<key>"playernamekey"-rustyplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Drusty“</integer>
<key>extra_cargo</key>
<integer>„Erusty“</integer>
<key>likely_cargo</key>
<integer>„Frusty“</integer>
<key>energy_recharge_rate</key>
<real>„Bplayerrusty“</real>
<key>max_energy</key>
<real>„Aplayerrusty“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jrusty“</integer>
<key>max_flight_pitch</key>
<real>„Grusty“</real>
<key>max_flight_roll</key>
<real>„Hrusty“</real>
<key>max_flight_speed</key>
<real>„Irusty“</real>
<key>max_missiles</key>
<integer>„Lrusty“</integer>
<key>missiles</key>
<integer>„Lrusty“</integer>
<key>thrust</key>
<real>„SPrusty“ * 100</real>
<key>density</key>
<real>„Crusty“ / 35</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Rusty "Name"</string>
</dict>
// Insert next if class2 = 1
<key>"playernamekey"-playerhauler</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Hauler (Mk X+1)</string>
</dict>
// Insert next if class3 = 1
<key>"playernamekey"-overtunedplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Overtuned "Name" (Mk X+1)</string>
</dict>
// Insert next if class4 = 1
<key>"playernamekey"-playercourier</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Courier (Mk X+1)</string>
</dict>
// Insert next if class5 = 1
<key>"playernamekey"-playergunship</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Gunship (Mk X+1)</string>
</dict>
// Insert next if class6 = 1
<key>"playernamekey"-heavyfreighterplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Heavy Freighter "Name" (Mk X+2)</string>
</dict>
// Insert next if class7 = 1
<key>"playernamekey"-playertransporter</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Transporter (Mk X+2)</string>
</dict>
// Insert next if class8 = 1
<key>"playernamekey"-yakuzaplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Yakuza "Name" (Mk X+2)</string>
</dict>
// Insert next if class9 = 1
<key>"playernamekey"-playerexplorer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Explorer (Mk X+2)</string>
</dict>
// Insert next if class10 = 1
<key>"playernamekey"-playercruiser</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Cruiser (Mk X+2)</string>
</dict>
// Insert next if class11 = 1
<key>"playernamekey"-playercorvette</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Corvette (Mk X+2)</string>
</dict>
// Insert next if class12 = 1
<key>"playernamekey"-beyonderplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Beyonder "Name" (Mk X+3)</string>
</dict>
// Insert next if class13 = 1
<key>"playernamekey"-playercarrier</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Carrier (Mk X+3)</string>
</dict>
// Insert next if class14 = 1
<key>"playernamekey"-playercapitalship</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Capital Ship (Mk X+3)</string>
</dict>
// Insert next if class15 = 1
<key>"playernamekey"-playerdestroyer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>"Name" Destroyer (Mk X+3)</string>
</dict>
// Insert next if class16 = 1
<key>"playernamekey"-superplayer</key>
<dict>
<key>like_ship</key>
<string>"playernamekey"</string>
<key>max_cargo</key>
<integer>„Chauler“</integer>
<key>likely_cargo</key>
<integer>„Fhauler“</integer>
<key>extra_cargo</key>
<integer>„Ehauler“</integer>
<key>density</key>
<real>„Chauler“ / 35</real>
<key>energy_recharge_rate</key>
<real>„Bplayerovertuned“</real>
<key>max_energy</key>
<real>„Aplayerovertuned“</real>
<key>hyperspace_motor_spin_time</key>
<integer>„Jcourier“</integer>
<key>max_flight_pitch</key>
<real>„Gcourier“</real>
<key>max_flight_roll</key>
<real>„Hcourier“</real>
<key>max_flight_speed</key>
<real>„Icourier“</real>
<key>thrust</key>
<real>„SPcourier“ * 100</real>
<key>max_missiles</key>
<integer>„Lgunship“</integer>
<key>missiles</key>
<integer>„Lgunship“</integer>
<key>roles</key>
<string>player</string>
<key>name</key>
<string>Super "Name"</string>
</dict>
Code: Select all
// Template: Entries for all Player Ship Variants of the "Name" class
<key>"playernamekey"</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL1" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 1) Copy & paste from original entry
// 2) Remove any of the following entries: <string>EQ_COMBAT_COMP</string>, <string>EQ_MISSILE_ANALYSER</string>, <string>EQ_FRAME_BOUNTY_SCANNER</string>, <string>EQ_CHAIN_LAUNCHER</string>,
<string>EQ_HYPERDRIVE_2</string>, <string>EQ_MILITARY_JAMMER</string>,
<string>EQ_GALACTIC_HYPERDRIVE_2</string>, <string>EQ_NAVAL_ENERGY_UNIT</string>,
<string>EQ_MILITARY_SCANNER_FILTER</string>, <string>EQ_CLOAKING_DEVICE</string>,
<string>EQ_WEAPON_TWIN_PLASMA_CANNON</string>
// 3) Reuse the basic optional equipment list derived from 1) and 2) for this entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O1 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O1 > 1.000.000
EQ_MILITARY_JAMMER -> O1 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O1 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O1 > 10.000.000
EQ_CLOAKING_DEVICE -> O1 > 25.000.000
</array>
<key>price</key>
<integer>„O1“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL1" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class1 = 1
<key>"playernamekey"-rustyplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL0" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O0 > 500.000 & "Crusty" > 500
EQ_HYPERDRIVE_2 -> O0 > 1.000.000
EQ_MILITARY_JAMMER -> O0 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O0 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O0 > 10.000.000
EQ_CLOAKING_DEVICE -> O0 > 25.000.000
</array>
<key>price</key>
<integer>„O0“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL0" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfrusty“</integer>
</dict>
// Insert next if class2 = 1
<key>"playernamekey"-playerhauler</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL2" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O2 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O2 > 1.000.000
EQ_MILITARY_JAMMER -> O2 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O2 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O2 > 10.000.000
EQ_CLOAKING_DEVICE -> O2 > 25.000.000
</array>
<key>price</key>
<integer>„O2“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL2" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class3 = 1
<key>"playernamekey"-overtunedplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL2" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O2 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O2 > 1.000.000
EQ_MILITARY_JAMMER -> O2 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O2 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O2 > 10.000.000
EQ_CLOAKING_DEVICE -> O2 > 25.000.000
</array>
<key>price</key>
<integer>„O2“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL2" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class4 = 1
<key>"playernamekey"-playercourier</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL2" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O2 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O2 > 1.000.000
EQ_MILITARY_JAMMER -> O2 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O2 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O2 > 10.000.000
EQ_CLOAKING_DEVICE -> O2 > 25.000.000
</array>
<key>price</key>
<integer>„O2“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL2" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class5 = 1
<key>"playernamekey"-playergunship</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL2" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O2 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O2 > 1.000.000
EQ_MILITARY_JAMMER -> O2 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O2 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O2 > 10.000.000
EQ_CLOAKING_DEVICE -> O2 > 25.000.000
</array>
<key>price</key>
<integer>„O2“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL2" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class6 = 1
<key>"playernamekey"-heavyfreighterplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class7 = 1
<key>"playernamekey"-playertransporter</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class8 = 1
<key>"playernamekey"-yakuzaplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class9 = 1
<key>"playernamekey"-playerexplorer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class10 = 1
<key>"playernamekey"-playercruiser</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class11 = 1
<key>"playernamekey"-playercorvette</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL3" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O3 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O3 > 1.000.000
EQ_MILITARY_JAMMER -> O3 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O3 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O3 > 10.000.000
EQ_CLOAKING_DEVICE -> O3 > 25.000.000
</array>
<key>price</key>
<integer>„O3“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL3" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class12 = 1
<key>"playernamekey"-beyonderplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL4" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O4 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O4 > 1.000.000
EQ_MILITARY_JAMMER -> O4 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O4 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O4 > 10.000.000
EQ_CLOAKING_DEVICE -> O4 > 25.000.000
</array>
<key>price</key>
<integer>„O4“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL4" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwf“</integer>
</dict>
// Insert next if class13 = 1
<key>"playernamekey"-playercarrier</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL4" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O4 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O4 > 1.000.000
EQ_MILITARY_JAMMER -> O4 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O4 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O4 > 10.000.000
EQ_CLOAKING_DEVICE -> O4 > 25.000.000
</array>
<key>price</key>
<integer>„O4“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL4" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class14 = 1
<key>"playernamekey"-playercapitalship</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL4" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O4 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O4 > 1.000.000
EQ_MILITARY_JAMMER -> O4 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O4 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O4 > 10.000.000
EQ_CLOAKING_DEVICE -> O4 > 25.000.000
</array>
<key>price</key>
<integer>„O4“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL4" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class15 = 1
<key>"playernamekey"-playerdestroyer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL4" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O4 > 500.000 & "C" > 500
EQ_HYPERDRIVE_2 -> O4 > 1.000.000
EQ_MILITARY_JAMMER -> O4 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O4 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O4 > 10.000.000
EQ_CLOAKING_DEVICE -> O4 > 25.000.000
</array>
<key>price</key>
<integer>„O4“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL4" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>
// Insert next if class16 = 1
<key>"playernamekey"-superplayer</key>
<dict>
<key>chance</key>
<real>0.75</real>
<key>conditions</key>
<array>
<string>dockedTechLevel_number lessthan ("TL5" + 4)</string>
</array>
<key>optional_equipment</key>
<array>
// 3) Reuse the basic optional equipment list derived from 1) and 2) of the standard ship entry but modify with entry 4) accordingly
// 4) Insert any of the following entries if: EQ_CHAIN_LAUNCHER -> O5 > 500.000 & "Chauler" > 500
EQ_HYPERDRIVE_2 -> O5 > 1.000.000
EQ_MILITARY_JAMMER -> O5 > 2.000.000
EQ_NAVAL_ENERGY_UNIT -> O5 > 5.000.000
EQ_MILITARY_SCANNER_FILTER -> O5 > 10.000.000
EQ_CLOAKING_DEVICE -> O5 > 25.000.000
</array>
<key>price</key>
<integer>„O5“</integer>
<key>standard_equipment</key>
<dict>
// Simply copy & paste from original entry
</dict>
<key>techlevel</key>
<integer>"TL5" - 1</integer>
<key>weapon_facings</key>
<integer>„Kwfgunship“</integer>
</dict>