Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19414a4aa7 | ||
|
|
dcb1af6e7c | ||
|
|
d0a3a22223 | ||
|
|
e27558ce9f | ||
|
|
9d7bd1ceed | ||
|
|
a398c53e35 | ||
|
|
c866fec4e9 | ||
|
|
3e588ec585 | ||
|
|
5b8755f20b | ||
|
|
d12dc215c8 | ||
|
|
6e49351d18 | ||
|
|
14002151b8 | ||
|
|
6e544572d2 | ||
|
|
6eb785d57c | ||
|
|
574536f419 | ||
|
|
b070cdd9e1 | ||
|
|
8ff0278810 | ||
|
|
aecfb849d5 | ||
|
|
420c661bad | ||
|
|
f0a303d12f | ||
|
|
e879235d94 | ||
|
|
8a6c410b18 | ||
|
|
e9562164eb | ||
|
|
a94c04d6f2 | ||
|
|
6bd2228fb0 | ||
|
|
c28f5d30cf | ||
|
|
392af625f9 | ||
|
|
efee3092fa | ||
|
|
b11912dc40 | ||
|
|
f60d358084 | ||
|
|
c5a3e0032a | ||
|
|
ee9c1a7bde | ||
|
|
42b9887a58 |
@@ -6,4 +6,23 @@ SAVE/PerfOptions.ini
|
|||||||
SAVE/WindowSettings.ini
|
SAVE/WindowSettings.ini
|
||||||
SAVE/Accts/SinglePlayer/Restart.fl
|
SAVE/Accts/SinglePlayer/Restart.fl
|
||||||
SAVE/Accts/SinglePlayer/AutoSave.fl
|
SAVE/Accts/SinglePlayer/AutoSave.fl
|
||||||
SAVE/Accts/SinglePlayer/nostory.fl
|
SAVE/Accts/SinglePlayer/nostory.fl
|
||||||
|
|
||||||
|
# crash dumps, logs, traces, debug symbols, build leftovers
|
||||||
|
*.dmp
|
||||||
|
*.log
|
||||||
|
*.trace
|
||||||
|
*.pdb
|
||||||
|
*.obj
|
||||||
|
*.bak
|
||||||
|
EXE/codec-samples.jsonl
|
||||||
|
|
||||||
|
# the server is a private project, nothing of it goes into the mod
|
||||||
|
EXE/rem-server*
|
||||||
|
EXE/flserver_rebuilt.*
|
||||||
|
EXE/flbot.exe
|
||||||
|
EXE/LargeID.dat
|
||||||
|
EXE/REM/ServerModule/
|
||||||
|
EXE/REM/npc_profiles.ini
|
||||||
|
EXE/REM/rem-server-*.txt
|
||||||
|
flserver-reconstruction/
|
||||||
|
|||||||
@@ -5399,3 +5399,19 @@ HP_child = HpConnect
|
|||||||
parent_impulse = 0.010000
|
parent_impulse = 0.010000
|
||||||
child_impulse = 0.010000
|
child_impulse = 0.010000
|
||||||
debris_type = debris_vanish
|
debris_type = debris_vanish
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; neb02_outside
|
||||||
|
|
||||||
|
[CargoPod]
|
||||||
|
nickname = neb02_outside
|
||||||
|
LODranges = 0, 2000
|
||||||
|
DA_archetype = solar\REM_MISC\neb02_outside.3db
|
||||||
|
material_library = solar\REM_MISC\neb02_outside.3db
|
||||||
|
hit_pts = 1e36
|
||||||
|
mass = 1e10
|
||||||
|
HP_child = HpConnect
|
||||||
|
parent_impulse = 0.010000
|
||||||
|
child_impulse = 0.010000
|
||||||
|
debris_type = debris_vanish
|
||||||
@@ -4592,7 +4592,7 @@ volume = 0.000000
|
|||||||
regeneration_rate = 0
|
regeneration_rate = 0
|
||||||
max_capacity = 0
|
max_capacity = 0
|
||||||
toughness = 0
|
toughness = 0
|
||||||
hp_type = hp_elite_shield_special_1
|
hp_type = hp_rem_module01
|
||||||
offline_rebuild_time = 0
|
offline_rebuild_time = 0
|
||||||
offline_threshold = 0.000000
|
offline_threshold = 0.000000
|
||||||
constant_power_draw = 0
|
constant_power_draw = 0
|
||||||
@@ -4626,7 +4626,7 @@ volume = 0.000000
|
|||||||
regeneration_rate = 0
|
regeneration_rate = 0
|
||||||
max_capacity = 0
|
max_capacity = 0
|
||||||
toughness = 0
|
toughness = 0
|
||||||
hp_type = hp_elite_shield_special_1
|
hp_type = hp_rem_module01
|
||||||
offline_rebuild_time = 0
|
offline_rebuild_time = 0
|
||||||
offline_threshold = 0.000000
|
offline_threshold = 0.000000
|
||||||
constant_power_draw = 0
|
constant_power_draw = 0
|
||||||
@@ -4912,4 +4912,40 @@ shield_hit_effects = 500, gf_li_shield03
|
|||||||
separation_explosion = sever_debris
|
separation_explosion = sever_debris
|
||||||
LODranges = 0, 1500
|
LODranges = 0, 1500
|
||||||
lootable = true
|
lootable = true
|
||||||
|
phantom_physics = true
|
||||||
|
|
||||||
|
|
||||||
|
; Sublight-Modul
|
||||||
|
[ShieldGenerator]
|
||||||
|
;[JumpEngine]
|
||||||
|
nickname = jump_drive
|
||||||
|
ids_name = 265001
|
||||||
|
ids_info = 265002
|
||||||
|
DA_archetype = equipment\models\st\li_refractor_shield.3db
|
||||||
|
material_library = equipment\models\li_equip.mat
|
||||||
|
HP_child = HpConnect
|
||||||
|
hit_pts = 8000
|
||||||
|
mass = 0
|
||||||
|
explosion_resistance = 0.300000
|
||||||
|
debris_type = debris_normal
|
||||||
|
parent_impulse = 20
|
||||||
|
child_impulse = 80
|
||||||
|
volume = 0.000000
|
||||||
|
regeneration_rate = 0
|
||||||
|
max_capacity = 0
|
||||||
|
toughness = 0
|
||||||
|
hp_type = hp_rem_module02
|
||||||
|
offline_rebuild_time = 0
|
||||||
|
offline_threshold = 0.000000
|
||||||
|
constant_power_draw = 0
|
||||||
|
rebuild_power_draw = 0
|
||||||
|
shield_type = S_Graviton01
|
||||||
|
shield_collapse_sound = shield_offline
|
||||||
|
shield_rebuilt_sound = shield_rebuilt
|
||||||
|
shield_hit_effects = 0, gf_li_shield01
|
||||||
|
shield_hit_effects = 100, gf_li_shield02
|
||||||
|
shield_hit_effects = 500, gf_li_shield03
|
||||||
|
separation_explosion = sever_debris
|
||||||
|
LODranges = 0, 1500
|
||||||
|
lootable = true
|
||||||
phantom_physics = true
|
phantom_physics = true
|
||||||
@@ -1863,4 +1863,17 @@ combinable = false
|
|||||||
ids_name = 263960
|
ids_name = 263960
|
||||||
ids_info = 263960
|
ids_info = 263960
|
||||||
shop_archetype = equipment\models\st\ku_thruster.3db
|
shop_archetype = equipment\models\st\ku_thruster.3db
|
||||||
|
material_library = equipment\models\ku_equip.mat
|
||||||
|
|
||||||
|
; Sublight-Modul
|
||||||
|
[Good]
|
||||||
|
nickname = jump_drive
|
||||||
|
equipment = jump_drive
|
||||||
|
category = equipment
|
||||||
|
price = 75000
|
||||||
|
item_icon = equipment\models\commodities\nn_icons\EQUIPICON_thruster.3db
|
||||||
|
combinable = false
|
||||||
|
ids_name = 265001
|
||||||
|
ids_info = 265002
|
||||||
|
shop_archetype = equipment\models\st\ku_thruster.3db
|
||||||
material_library = equipment\models\ku_equip.mat
|
material_library = equipment\models\ku_equip.mat
|
||||||
@@ -4433,7 +4433,56 @@ turn_rate = 90
|
|||||||
lootable = true
|
lootable = true
|
||||||
LODranges = 0, 999999
|
LODranges = 0, 999999
|
||||||
|
|
||||||
; Acc Tizona del Cid
|
; Steady Tizona del Cid
|
||||||
|
|
||||||
|
[Munition]
|
||||||
|
nickname = fc_c_gun02_mark03_650_ammo
|
||||||
|
hp_type = hp_gun
|
||||||
|
requires_ammo = false
|
||||||
|
hit_pts = 2
|
||||||
|
hull_damage = 40.8
|
||||||
|
energy_damage = 1222.5
|
||||||
|
weapon_type = W_Pulse01
|
||||||
|
one_shot_sound = fire_pulse5
|
||||||
|
munition_hit_effect = pi_pulse_03_impact
|
||||||
|
const_effect = pi_pulse_03_proj
|
||||||
|
lifetime = 1
|
||||||
|
force_gun_ori = false
|
||||||
|
mass = 1
|
||||||
|
volume = 0.0001
|
||||||
|
|
||||||
|
[Gun]
|
||||||
|
nickname = fc_c_gun02_mark03_650
|
||||||
|
ids_name = 520002
|
||||||
|
ids_info = 264213
|
||||||
|
DA_archetype = equipment\models\weapons\ge_shredder_shotgun.cmp
|
||||||
|
material_library = equipment\models\ge_equip.mat
|
||||||
|
HP_child = HPConnect
|
||||||
|
hit_pts = 6752
|
||||||
|
explosion_resistance = 1
|
||||||
|
debris_type = debris_normal
|
||||||
|
parent_impulse = 20
|
||||||
|
child_impulse = 80
|
||||||
|
volume = 0
|
||||||
|
mass = 10
|
||||||
|
hp_gun_type = hp_gun_special_9
|
||||||
|
damage_per_fire = 0
|
||||||
|
power_usage = 97.8
|
||||||
|
refire_delay = 0.25
|
||||||
|
muzzle_velocity = 650
|
||||||
|
use_animation = Sc_fire
|
||||||
|
toughness = 1.6
|
||||||
|
flash_particle_name = pi_laser_03_flash
|
||||||
|
flash_radius = 15
|
||||||
|
light_anim = l_gun01_flash
|
||||||
|
projectile_archetype = fc_c_gun02_mark03_650_ammo
|
||||||
|
separation_explosion = sever_debris
|
||||||
|
auto_turret = false
|
||||||
|
turn_rate = 90
|
||||||
|
lootable = true
|
||||||
|
LODranges = 0, 999999
|
||||||
|
|
||||||
|
; Swift Tizona del Cid
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = fc_c_gun02_mark03_700_ammo
|
nickname = fc_c_gun02_mark03_700_ammo
|
||||||
@@ -22605,8 +22654,8 @@ hit_pts = 2
|
|||||||
hull_damage = 328.8
|
hull_damage = 328.8
|
||||||
energy_damage = 62
|
energy_damage = 62
|
||||||
one_shot_sound = fire_tachyon5
|
one_shot_sound = fire_tachyon5
|
||||||
munition_hit_effect = nightfall_impact
|
munition_hit_effect = icesplinter_impact
|
||||||
const_effect = nightfall_proj
|
const_effect = icesplinter_proj
|
||||||
lifetime = 0.8
|
lifetime = 0.8
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
@@ -22614,8 +22663,8 @@ volume = 0.0001
|
|||||||
|
|
||||||
[Gun]
|
[Gun]
|
||||||
nickname = special_gun36
|
nickname = special_gun36
|
||||||
ids_name = 299020
|
ids_name = 299070
|
||||||
ids_info = 299021
|
ids_info = 299071
|
||||||
DA_archetype = equipment\models\weapons\co_proton_cooker.cmp
|
DA_archetype = equipment\models\weapons\co_proton_cooker.cmp
|
||||||
material_library = equipment\models\ge_equip.mat
|
material_library = equipment\models\ge_equip.mat
|
||||||
HP_child = HPConnect
|
HP_child = HPConnect
|
||||||
@@ -22633,7 +22682,7 @@ refire_delay = 0.12
|
|||||||
muzzle_velocity = 750
|
muzzle_velocity = 750
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 17.6
|
toughness = 17.6
|
||||||
flash_particle_name = nightfall_flash
|
flash_particle_name = icesplinter_flash
|
||||||
flash_radius = 15
|
flash_radius = 15
|
||||||
light_anim = l_gun01_flash
|
light_anim = l_gun01_flash
|
||||||
projectile_archetype = special_gun36_ammo
|
projectile_archetype = special_gun36_ammo
|
||||||
@@ -29720,7 +29769,7 @@ volume = 0.000100
|
|||||||
; New Weapon Effect
|
; New Weapon Effect
|
||||||
; Nomad Gun Effect GREEN Blaster
|
; Nomad Gun Effect GREEN Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_green_500_ammo
|
nickname = nomad_blaster_green_500_ammo
|
||||||
@@ -29732,7 +29781,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_green_impact
|
munition_hit_effect = no_gun_green_impact
|
||||||
const_effect = no_gun_green_proj
|
const_effect = no_gun_green_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -29755,7 +29804,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_green_flash
|
flash_particle_name = no_gun_green_flash
|
||||||
@@ -29916,7 +29965,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect GREEN cannon
|
; Nomad Gun Effect GREEN cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_green_500_ammo
|
nickname = nomad_cannon_green_500_ammo
|
||||||
@@ -29928,7 +29977,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_green_impact
|
munition_hit_effect = no_gun_green_impact
|
||||||
const_effect = no_gun_green_proj
|
const_effect = no_gun_green_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -29951,7 +30000,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_green_flash
|
flash_particle_name = no_gun_green_flash
|
||||||
@@ -30112,7 +30161,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect GREEN Prototyp
|
; Nomad Gun Effect GREEN Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_green_500_ammo
|
nickname = nomad_prototyp_green_500_ammo
|
||||||
@@ -30124,7 +30173,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_green_impact
|
munition_hit_effect = no_gun_green_impact
|
||||||
const_effect = no_gun_green_proj
|
const_effect = no_gun_green_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -30147,7 +30196,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_green_flash
|
flash_particle_name = no_gun_green_flash
|
||||||
@@ -30309,7 +30358,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect YELLOW Blaster
|
; Nomad Gun Effect YELLOW Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_yellow_500_ammo
|
nickname = nomad_blaster_yellow_500_ammo
|
||||||
@@ -30321,7 +30370,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_yellow_impact
|
munition_hit_effect = no_gun_yellow_impact
|
||||||
const_effect = no_gun_yellow_proj
|
const_effect = no_gun_yellow_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -30344,7 +30393,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_yellow_flash
|
flash_particle_name = no_gun_yellow_flash
|
||||||
@@ -30505,7 +30554,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect YELLOW cannon
|
; Nomad Gun Effect YELLOW cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_yellow_500_ammo
|
nickname = nomad_cannon_yellow_500_ammo
|
||||||
@@ -30517,7 +30566,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_yellow_impact
|
munition_hit_effect = no_gun_yellow_impact
|
||||||
const_effect = no_gun_yellow_proj
|
const_effect = no_gun_yellow_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -30540,7 +30589,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_yellow_flash
|
flash_particle_name = no_gun_yellow_flash
|
||||||
@@ -30700,7 +30749,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect YELLOW Prototyp
|
; Nomad Gun Effect YELLOW Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_yellow_500_ammo
|
nickname = nomad_prototyp_yellow_500_ammo
|
||||||
@@ -30712,7 +30761,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_yellow_impact
|
munition_hit_effect = no_gun_yellow_impact
|
||||||
const_effect = no_gun_yellow_proj
|
const_effect = no_gun_yellow_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -30735,7 +30784,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_yellow_flash
|
flash_particle_name = no_gun_yellow_flash
|
||||||
@@ -30895,7 +30944,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect RED Blaster
|
; Nomad Gun Effect RED Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_red_500_ammo
|
nickname = nomad_blaster_red_500_ammo
|
||||||
@@ -30907,7 +30956,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_red_impact
|
munition_hit_effect = no_gun_red_impact
|
||||||
const_effect = no_gun_red_proj
|
const_effect = no_gun_red_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -30930,7 +30979,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_red_flash
|
flash_particle_name = no_gun_red_flash
|
||||||
@@ -31090,7 +31139,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect RED cannon
|
; Nomad Gun Effect RED cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_red_500_ammo
|
nickname = nomad_cannon_red_500_ammo
|
||||||
@@ -31102,7 +31151,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_red_impact
|
munition_hit_effect = no_gun_red_impact
|
||||||
const_effect = no_gun_red_proj
|
const_effect = no_gun_red_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -31125,7 +31174,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_red_flash
|
flash_particle_name = no_gun_red_flash
|
||||||
@@ -31286,7 +31335,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect RED Prototyp
|
; Nomad Gun Effect RED Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_red_500_ammo
|
nickname = nomad_prototyp_red_500_ammo
|
||||||
@@ -31298,7 +31347,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_red_impact
|
munition_hit_effect = no_gun_red_impact
|
||||||
const_effect = no_gun_red_proj
|
const_effect = no_gun_red_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -31321,7 +31370,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_red_flash
|
flash_particle_name = no_gun_red_flash
|
||||||
@@ -31482,7 +31531,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect CYAN Blaster
|
; Nomad Gun Effect CYAN Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_cyan_500_ammo
|
nickname = nomad_blaster_cyan_500_ammo
|
||||||
@@ -31494,7 +31543,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_cyan_impact
|
munition_hit_effect = no_gun_cyan_impact
|
||||||
const_effect = no_gun_cyan_proj
|
const_effect = no_gun_cyan_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -31517,7 +31566,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_cyan_flash
|
flash_particle_name = no_gun_cyan_flash
|
||||||
@@ -31678,7 +31727,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect CYAN cannon
|
; Nomad Gun Effect CYAN cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_cyan_500_ammo
|
nickname = nomad_cannon_cyan_500_ammo
|
||||||
@@ -31690,7 +31739,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_cyan_impact
|
munition_hit_effect = no_gun_cyan_impact
|
||||||
const_effect = no_gun_cyan_proj
|
const_effect = no_gun_cyan_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -31713,7 +31762,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_cyan_flash
|
flash_particle_name = no_gun_cyan_flash
|
||||||
@@ -31874,7 +31923,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect CYAN Prototyp
|
; Nomad Gun Effect CYAN Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_cyan_500_ammo
|
nickname = nomad_prototyp_cyan_500_ammo
|
||||||
@@ -31886,7 +31935,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_cyan_impact
|
munition_hit_effect = no_gun_cyan_impact
|
||||||
const_effect = no_gun_cyan_proj
|
const_effect = no_gun_cyan_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -31909,7 +31958,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_cyan_flash
|
flash_particle_name = no_gun_cyan_flash
|
||||||
@@ -32071,7 +32120,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect BLUE Blaster
|
; Nomad Gun Effect BLUE Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_blue_500_ammo
|
nickname = nomad_blaster_blue_500_ammo
|
||||||
@@ -32083,7 +32132,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_blue_impact
|
munition_hit_effect = no_gun_blue_impact
|
||||||
const_effect = no_gun_blue_proj
|
const_effect = no_gun_blue_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -32106,7 +32155,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_blue_flash
|
flash_particle_name = no_gun_blue_flash
|
||||||
@@ -32267,7 +32316,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect BLUE cannon
|
; Nomad Gun Effect BLUE cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_blue_500_ammo
|
nickname = nomad_cannon_blue_500_ammo
|
||||||
@@ -32279,7 +32328,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_blue_impact
|
munition_hit_effect = no_gun_blue_impact
|
||||||
const_effect = no_gun_blue_proj
|
const_effect = no_gun_blue_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -32302,7 +32351,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_blue_flash
|
flash_particle_name = no_gun_blue_flash
|
||||||
@@ -32463,7 +32512,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect BLUE Prototyp
|
; Nomad Gun Effect BLUE Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_blue_500_ammo
|
nickname = nomad_prototyp_blue_500_ammo
|
||||||
@@ -32475,7 +32524,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_blue_impact
|
munition_hit_effect = no_gun_blue_impact
|
||||||
const_effect = no_gun_blue_proj
|
const_effect = no_gun_blue_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -32498,7 +32547,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_blue_flash
|
flash_particle_name = no_gun_blue_flash
|
||||||
@@ -32659,7 +32708,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect ORANGE Blaster
|
; Nomad Gun Effect ORANGE Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_orange_500_ammo
|
nickname = nomad_blaster_orange_500_ammo
|
||||||
@@ -32671,7 +32720,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_orange_impact
|
munition_hit_effect = no_gun_orange_impact
|
||||||
const_effect = no_gun_orange_proj
|
const_effect = no_gun_orange_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -32694,7 +32743,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_orange_flash
|
flash_particle_name = no_gun_orange_flash
|
||||||
@@ -32856,7 +32905,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect ORANGE cannon
|
; Nomad Gun Effect ORANGE cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_orange_500_ammo
|
nickname = nomad_cannon_orange_500_ammo
|
||||||
@@ -32868,7 +32917,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_orange_impact
|
munition_hit_effect = no_gun_orange_impact
|
||||||
const_effect = no_gun_orange_proj
|
const_effect = no_gun_orange_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -32891,7 +32940,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun_orange_flash
|
flash_particle_name = no_gun_orange_flash
|
||||||
@@ -33052,7 +33101,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect ORANGE Prototyp
|
; Nomad Gun Effect ORANGE Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_orange_500_ammo
|
nickname = nomad_prototyp_orange_500_ammo
|
||||||
@@ -33064,7 +33113,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun_orange_impact
|
munition_hit_effect = no_gun_orange_impact
|
||||||
const_effect = no_gun_orange_proj
|
const_effect = no_gun_orange_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -33087,7 +33136,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun_orange_flash
|
flash_particle_name = no_gun_orange_flash
|
||||||
@@ -33247,7 +33296,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect Purple Blaster
|
; Nomad Gun Effect Purple Blaster
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_blaster_purple_500_ammo
|
nickname = nomad_blaster_purple_500_ammo
|
||||||
@@ -33259,7 +33308,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun01_rank01_impact
|
munition_hit_effect = no_gun01_rank01_impact
|
||||||
const_effect = no_gun01_rank01_proj
|
const_effect = no_gun01_rank01_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -33282,7 +33331,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.25
|
refire_delay = 0.25
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun01_rank01_flash
|
flash_particle_name = no_gun01_rank01_flash
|
||||||
@@ -33443,7 +33492,7 @@ LODranges = 0, 999999
|
|||||||
|
|
||||||
; Nomad Gun Effect Purple cannon
|
; Nomad Gun Effect Purple cannon
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_cannon_purple_500_ammo
|
nickname = nomad_cannon_purple_500_ammo
|
||||||
@@ -33455,7 +33504,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun01_rank01_impact
|
munition_hit_effect = no_gun01_rank01_impact
|
||||||
const_effect = no_gun01_rank01_proj
|
const_effect = no_gun01_rank01_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -33478,7 +33527,7 @@ hp_gun_type = hp_gun_special_10
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 25.4
|
toughness = 25.4
|
||||||
flash_particle_name = no_gun01_rank01_flash
|
flash_particle_name = no_gun01_rank01_flash
|
||||||
@@ -33639,7 +33688,7 @@ LODranges = 0, 20, 60, 100
|
|||||||
|
|
||||||
; Nomad Gun Effect Purple Prototyp
|
; Nomad Gun Effect Purple Prototyp
|
||||||
|
|
||||||
; Projectile Speed 500
|
; Projectile Speed 650
|
||||||
|
|
||||||
[Munition]
|
[Munition]
|
||||||
nickname = nomad_prototyp_purple_500_ammo
|
nickname = nomad_prototyp_purple_500_ammo
|
||||||
@@ -33651,7 +33700,7 @@ energy_damage = 0
|
|||||||
one_shot_sound = fire_no1
|
one_shot_sound = fire_no1
|
||||||
munition_hit_effect = no_gun01_rank01_impact
|
munition_hit_effect = no_gun01_rank01_impact
|
||||||
const_effect = no_gun01_rank01_proj
|
const_effect = no_gun01_rank01_proj
|
||||||
lifetime = 1.398
|
lifetime = 1
|
||||||
force_gun_ori = false
|
force_gun_ori = false
|
||||||
mass = 1
|
mass = 1
|
||||||
volume = 0.0001
|
volume = 0.0001
|
||||||
@@ -33674,7 +33723,7 @@ hp_gun_type = hp_gun_special_7
|
|||||||
damage_per_fire = 0
|
damage_per_fire = 0
|
||||||
power_usage = 0
|
power_usage = 0
|
||||||
refire_delay = 0.33
|
refire_delay = 0.33
|
||||||
muzzle_velocity = 500
|
muzzle_velocity = 650
|
||||||
use_animation = Sc_fire
|
use_animation = Sc_fire
|
||||||
toughness = 9.1
|
toughness = 9.1
|
||||||
flash_particle_name = no_gun01_rank01_flash
|
flash_particle_name = no_gun01_rank01_flash
|
||||||
|
|||||||
@@ -1189,7 +1189,21 @@ ids_info = 264213
|
|||||||
shop_archetype = equipment\models\weapons\ge_shredder_shotgun.cmp
|
shop_archetype = equipment\models\weapons\ge_shredder_shotgun.cmp
|
||||||
material_library = equipment\models\ge_equip.mat
|
material_library = equipment\models\ge_equip.mat
|
||||||
|
|
||||||
; Acc. Tizona del Cid
|
; Steady Tizona del Cid
|
||||||
|
|
||||||
|
[Good]
|
||||||
|
nickname = fc_c_gun02_mark03_650
|
||||||
|
equipment = fc_c_gun02_mark03_650
|
||||||
|
category = equipment
|
||||||
|
price = 120480
|
||||||
|
item_icon = equipment\models\commodities\nn_icons\EQUIPICON_gun.3db
|
||||||
|
combinable = false
|
||||||
|
ids_name = 520002
|
||||||
|
ids_info = 264213
|
||||||
|
shop_archetype = equipment\models\weapons\ge_shredder_shotgun.cmp
|
||||||
|
material_library = equipment\models\ge_equip.mat
|
||||||
|
|
||||||
|
; Swift Tizona del Cid
|
||||||
|
|
||||||
[Good]
|
[Good]
|
||||||
nickname = fc_c_gun02_mark03_700
|
nickname = fc_c_gun02_mark03_700
|
||||||
@@ -8762,6 +8776,19 @@ ids_info = 299049
|
|||||||
shop_archetype = equipment\models\weapons\co_proton_cooker.cmp
|
shop_archetype = equipment\models\weapons\co_proton_cooker.cmp
|
||||||
material_library = equipment\models\ge_equip.mat
|
material_library = equipment\models\ge_equip.mat
|
||||||
|
|
||||||
|
; Codename ICESPLINTER
|
||||||
|
[Good]
|
||||||
|
nickname = special_gun36
|
||||||
|
equipment = special_gun36
|
||||||
|
category = equipment
|
||||||
|
price = 115660
|
||||||
|
item_icon = equipment\models\commodities\nn_icons\EQUIPICON_gun.3db
|
||||||
|
combinable = false
|
||||||
|
ids_name = 299070
|
||||||
|
ids_info = 299071
|
||||||
|
shop_archetype = equipment\models\weapons\co_proton_cooker.cmp
|
||||||
|
material_library = equipment\models\ge_equip.mat
|
||||||
|
|
||||||
; Codename MIRAGE
|
; Codename MIRAGE
|
||||||
|
|
||||||
[Good]
|
[Good]
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
; REM: the REM target marks (REM client rem_target_hud.cpp); textures made by
|
||||||
|
; REM-Client tools/rem/make_hud_txm.py
|
||||||
|
[Texture]
|
||||||
|
file = interface\REM\rem_hud.txm
|
||||||
|
tex_shape = REM_skull.tga
|
||||||
|
tex_shape = REM_probe.tga
|
||||||
|
tex_shape = REM_menu.tga
|
||||||
@@ -319,4 +319,29 @@ id = USER_TRADE_REQUEST
|
|||||||
group_num = 2
|
group_num = 2
|
||||||
name = 1504
|
name = 1504
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_SENSOR_PROBE
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_ACTIVATE_PROBE
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_WAYPOINT_BOT
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_SECTOR_SCANNER
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_WAYPOINTS
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_BASE
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_MISSIONS
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_CONTRACTS
|
||||||
|
|
||||||
|
[key]
|
||||||
|
id = USER_REM_PLAYER
|
||||||
|
|||||||
@@ -1018,8 +1018,68 @@ nickname = DBG_FIRE_FORWARD
|
|||||||
state = keydown
|
state = keydown
|
||||||
key = 32
|
key = 32
|
||||||
|
|
||||||
|
; REM: REM key commands (REM client, rem_hotkeys.h), unbound by default
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_SENSOR_PROBE
|
||||||
|
ids_name = 524500
|
||||||
|
ids_info = 524501
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_ACTIVATE_PROBE
|
||||||
|
ids_name = 524502
|
||||||
|
ids_info = 524503
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_WAYPOINTS
|
||||||
|
ids_name = 524504
|
||||||
|
ids_info = 524505
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_BASE
|
||||||
|
ids_name = 524506
|
||||||
|
ids_info = 524507
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_MISSIONS
|
||||||
|
ids_name = 524508
|
||||||
|
ids_info = 524509
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_CONTRACTS
|
||||||
|
ids_name = 524510
|
||||||
|
ids_info = 524511
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_PLAYER
|
||||||
|
ids_name = 524512
|
||||||
|
ids_info = 524513
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_WAYPOINT_BOT
|
||||||
|
ids_name = 524514
|
||||||
|
ids_info = 524515
|
||||||
|
state = keydown
|
||||||
|
|
||||||
|
[KeyCmd]
|
||||||
|
nickname = USER_REM_SECTOR_SCANNER
|
||||||
|
ids_name = 524526
|
||||||
|
ids_info = 524527
|
||||||
|
state = keydown
|
||||||
|
|
||||||
[KeyMap]
|
[KeyMap]
|
||||||
nickname = IDR_ALWAYS_PRESENT
|
nickname = IDR_ALWAYS_PRESENT
|
||||||
|
key = USER_REM_WAYPOINTS
|
||||||
|
key = USER_REM_BASE
|
||||||
|
key = USER_REM_MISSIONS
|
||||||
|
key = USER_REM_CONTRACTS
|
||||||
|
key = USER_REM_PLAYER
|
||||||
key = USER_YES
|
key = USER_YES
|
||||||
key = USER_NO
|
key = USER_NO
|
||||||
key = USER_CANCEL
|
key = USER_CANCEL
|
||||||
@@ -1055,6 +1115,10 @@ nickname = IDR_GAMEFLOW
|
|||||||
|
|
||||||
[KeyMap]
|
[KeyMap]
|
||||||
nickname = IDR_SPACE
|
nickname = IDR_SPACE
|
||||||
|
key = USER_REM_SECTOR_SCANNER
|
||||||
|
key = USER_REM_WAYPOINT_BOT
|
||||||
|
key = USER_REM_SENSOR_PROBE
|
||||||
|
key = USER_REM_ACTIVATE_PROBE
|
||||||
key = USER_MANEUVER_FREE_FLIGHT
|
key = USER_MANEUVER_FREE_FLIGHT
|
||||||
key = USER_MANEUVER_GOTO
|
key = USER_MANEUVER_GOTO
|
||||||
key = USER_MANEUVER_DOCK
|
key = USER_MANEUVER_DOCK
|
||||||
|
|||||||
@@ -1736,10 +1736,6 @@ drop_properties = 25, 646965, 646965, 0, 2, 1
|
|||||||
nickname = special_gun15
|
nickname = special_gun15
|
||||||
drop_properties = 25, 646965, 646965, 0, 2, 1
|
drop_properties = 25, 646965, 646965, 0, 2, 1
|
||||||
|
|
||||||
[mLootProps]
|
|
||||||
nickname = commodity_halloween
|
|
||||||
drop_properties = 100, 0, 3333, 1, 150, 150
|
|
||||||
|
|
||||||
[mLootProps]
|
[mLootProps]
|
||||||
nickname = commodity_presentbox
|
nickname = commodity_presentbox
|
||||||
drop_properties = 100, 0, 3333, 1, 150, 150
|
drop_properties = 100, 0, 3333, 1, 150, 150
|
||||||
@@ -2648,6 +2644,36 @@ toughness_range = 11, 19
|
|||||||
percent_chance = 0.32
|
percent_chance = 0.32
|
||||||
num_to_drop = 1, 1
|
num_to_drop = 1, 1
|
||||||
|
|
||||||
|
; PHANTOM Blueprint
|
||||||
|
|
||||||
|
[mLootProps]
|
||||||
|
nickname = commodity_phantom_blueprint
|
||||||
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
|
; PHANTOM Schematic
|
||||||
|
|
||||||
|
[mLootProps]
|
||||||
|
nickname = commodity_phantom_schematic
|
||||||
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
|
; VECTOR Schematic
|
||||||
|
|
||||||
|
[mLootProps]
|
||||||
|
nickname = commodity_vector_schematic
|
||||||
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
|
; WRAITH Schematic
|
||||||
|
|
||||||
|
[mLootProps]
|
||||||
|
nickname = commodity_wraith_schematic
|
||||||
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
|
; HALLOWEEN EVENT ITEM
|
||||||
|
|
||||||
|
[mLootProps]
|
||||||
|
nickname = commodity_halloween
|
||||||
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
; VECTOR Schematic
|
; VECTOR Schematic
|
||||||
|
|
||||||
[PhantomLoot]
|
[PhantomLoot]
|
||||||
@@ -2656,6 +2682,14 @@ toughness_range = 11, 19
|
|||||||
percent_chance = 0.52
|
percent_chance = 0.52
|
||||||
num_to_drop = 1, 1
|
num_to_drop = 1, 1
|
||||||
|
|
||||||
|
; HALLOWEEN EVENT ITEM
|
||||||
|
|
||||||
|
[PhantomLoot]
|
||||||
|
nickname = commodity_halloween
|
||||||
|
toughness_range = 11, 19
|
||||||
|
percent_chance = 100
|
||||||
|
num_to_drop = 1, 1
|
||||||
|
|
||||||
; WRAITH Schematic
|
; WRAITH Schematic
|
||||||
|
|
||||||
[PhantomLoot]
|
[PhantomLoot]
|
||||||
@@ -3032,36 +3066,12 @@ drop_properties = 100, 500, 600, 0, 2, 1
|
|||||||
nickname = commodity_venator_schematic
|
nickname = commodity_venator_schematic
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
; PHANTOM Blueprint
|
|
||||||
|
|
||||||
[mLootProps]
|
|
||||||
nickname = commodity_phantom_blueprint
|
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
|
||||||
|
|
||||||
; PHANTOM Schematic
|
|
||||||
|
|
||||||
[mLootProps]
|
|
||||||
nickname = commodity_phantom_schematic
|
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
|
||||||
|
|
||||||
; Tizona del Cid Schematic
|
; Tizona del Cid Schematic
|
||||||
|
|
||||||
[mLootProps]
|
[mLootProps]
|
||||||
nickname = commodity_tizona_schematic
|
nickname = commodity_tizona_schematic
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
drop_properties = 100, 500, 600, 0, 2, 1
|
||||||
|
|
||||||
; VECTOR Cid Schematic
|
|
||||||
|
|
||||||
[mLootProps]
|
|
||||||
nickname = commodity_vector_schematic
|
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
|
||||||
|
|
||||||
; WRAITH Cid Schematic
|
|
||||||
|
|
||||||
[mLootProps]
|
|
||||||
nickname = commodity_wraith_schematic
|
|
||||||
drop_properties = 100, 500, 600, 0, 2, 1
|
|
||||||
|
|
||||||
; VULCAN Blueprint
|
; VULCAN Blueprint
|
||||||
|
|
||||||
[mLootProps]
|
[mLootProps]
|
||||||
|
|||||||
@@ -10806,4 +10806,30 @@ cargo = commodity_ship_hull_panels, 25
|
|||||||
[Loadout]
|
[Loadout]
|
||||||
nickname = SECRET_transport_large_anomalie01
|
nickname = SECRET_transport_large_anomalie01
|
||||||
archetype = suprise_transport_large
|
archetype = suprise_transport_large
|
||||||
cargo = commodity_shield_schematic, 1
|
cargo = commodity_shield_schematic, 1
|
||||||
|
|
||||||
|
|
||||||
|
; Drone
|
||||||
|
|
||||||
|
[Loadout]
|
||||||
|
nickname = ge_drone_loadout01
|
||||||
|
archetype = ge_drone
|
||||||
|
equip = ge_gf6_engine_01, HpDrive01
|
||||||
|
equip = shield01_mark07_hf, HpShield01
|
||||||
|
equip = ge_fighter6_power01, HpPower01
|
||||||
|
equip = ge_s_scanner_01
|
||||||
|
equip = ge_s_tractor_01
|
||||||
|
equip = ge_s_thruster_01, HpThruster01
|
||||||
|
equip = rem_gun05_mark05, HpWeapon01
|
||||||
|
equip = rem_gun05_mark05, HpWeapon02
|
||||||
|
equip = rem_gun05_mark05, HpWeapon03
|
||||||
|
equip = rem_gun05_mark05, HpWeapon04
|
||||||
|
equip = ge_s_cm_01, HpCM01
|
||||||
|
cargo = ge_s_cm_01_ammo, 50
|
||||||
|
equip = LargeWhiteSpecial, HpHeadlight
|
||||||
|
equip = SlowSmallBlue, HpRunningLight01
|
||||||
|
equip = SlowSmallBlue, HpRunningLight02
|
||||||
|
equip = SlowSmallBlue, HpRunningLight03
|
||||||
|
equip = SlowSmallBlue, HpRunningLight04
|
||||||
|
equip = DockingLightRedSmall, HpDockLight01
|
||||||
|
equip = DockingLightRedSmall, HpDockLight02
|
||||||
@@ -80,7 +80,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = port fin_lod1
|
obj = port fin_lod1
|
||||||
@@ -216,7 +216,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = Li_star_wing_lod1
|
obj = Li_star_wing_lod1
|
||||||
@@ -493,7 +493,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
steering_torque = 54000, 54000, 104000
|
steering_torque = 54000, 54000, 104000
|
||||||
angular_drag = 60000, 60000, 60000
|
angular_drag = 60000, 60000, 60000
|
||||||
rotation_inertia = 16800, 16800, 16800
|
rotation_inertia = 16800, 16800, 16800
|
||||||
@@ -1108,7 +1108,7 @@ rotation_inertia = 2800, 2800, 1000
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = br_fighter_tail_lod1
|
obj = br_fighter_tail_lod1
|
||||||
@@ -1208,7 +1208,7 @@ rotation_inertia = 8400, 8400, 8400
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = br_port_wing_lod1
|
obj = br_port_wing_lod1
|
||||||
@@ -1352,7 +1352,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = br_freighter_port_wing_lod1
|
obj = br_freighter_port_wing_lod1
|
||||||
@@ -1988,7 +1988,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = wing_starboard_lod1
|
obj = wing_starboard_lod1
|
||||||
@@ -2286,7 +2286,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = starboard_wing_lod1
|
obj = starboard_wing_lod1
|
||||||
@@ -2428,7 +2428,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05, HpTurret06
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05, HpTurret06
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
HP_tractor_source = HpTractor_Source
|
HP_tractor_source = HpTractor_Source
|
||||||
num_exhaust_nozzles = 2
|
num_exhaust_nozzles = 2
|
||||||
|
|
||||||
@@ -3127,7 +3127,7 @@ num_exhaust_nozzles = 1
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = port_wing_lod1
|
obj = port_wing_lod1
|
||||||
@@ -3256,7 +3256,7 @@ num_exhaust_nozzles = 2
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = Rh_port_wing_lod1
|
obj = Rh_port_wing_lod1
|
||||||
@@ -3398,7 +3398,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05, HpTurret06
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05, HpTurret06
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
HP_tractor_source = HpTractor_Source
|
HP_tractor_source = HpTractor_Source
|
||||||
num_exhaust_nozzles = 2
|
num_exhaust_nozzles = 2
|
||||||
|
|
||||||
@@ -3935,7 +3935,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bh_topfin_lod1
|
obj = bh_topfin_lod1
|
||||||
@@ -4070,7 +4070,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bh_topfin_lod1
|
obj = bh_topfin_lod1
|
||||||
@@ -4214,7 +4214,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bh_topfin_lod1
|
obj = bh_topfin_lod1
|
||||||
@@ -4351,7 +4351,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
HP_tractor_source = HpTractor_Source
|
HP_tractor_source = HpTractor_Source
|
||||||
num_exhaust_nozzles = 2
|
num_exhaust_nozzles = 2
|
||||||
|
|
||||||
@@ -4464,7 +4464,7 @@ num_exhaust_nozzles = 3
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = fins_top_lod1
|
obj = fins_top_lod1
|
||||||
@@ -4591,7 +4591,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
HP_tractor_source = HpTractor_Source
|
HP_tractor_source = HpTractor_Source
|
||||||
num_exhaust_nozzles = 2
|
num_exhaust_nozzles = 2
|
||||||
|
|
||||||
@@ -4705,7 +4705,7 @@ num_exhaust_nozzles = 2
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
@@ -4871,7 +4871,7 @@ num_exhaust_nozzles = 2
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = wing_port_lod1
|
obj = wing_port_lod1
|
||||||
@@ -5019,7 +5019,8 @@ num_exhaust_nozzles = 2
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
hp_type = hp_rem_module02, HpJump
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = wing_port_lod1
|
obj = wing_port_lod1
|
||||||
@@ -5157,13 +5158,14 @@ hp_type = hp_gun_special_2, HpWeapon01, HpWeapon02, HpWeapon03
|
|||||||
hp_type = hp_gun_special_1, HpWeapon01, HpWeapon02, HpWeapon03
|
hp_type = hp_gun_special_1, HpWeapon01, HpWeapon02, HpWeapon03
|
||||||
hp_type = hp_fighter_shield_special_4, HpShield01
|
hp_type = hp_fighter_shield_special_4, HpShield01
|
||||||
hp_type = hp_fighter_shield_special_3, HpShield01
|
hp_type = hp_fighter_shield_special_3, HpShield01
|
||||||
|
hp_type = hp_fighter_shield_special_2, HpShield01
|
||||||
hp_type = hp_thruster, HpThruster01
|
hp_type = hp_thruster, HpThruster01
|
||||||
hp_type = hp_mine_dropper, HpMine01
|
hp_type = hp_mine_dropper, HpMine01
|
||||||
hp_type = hp_countermeasure_dropper, HpCM01
|
hp_type = hp_countermeasure_dropper, HpCM01
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
hp_type = hp_elite_shield_special_2, HpCloak01
|
hp_type = hp_elite_shield_special_2, HpCloak01
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
@@ -5263,7 +5265,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = port_wing_lod1
|
obj = port_wing_lod1
|
||||||
@@ -5379,7 +5381,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = cv_port_wing_lod1
|
obj = cv_port_wing_lod1
|
||||||
@@ -5522,7 +5524,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = cv_port_wing_lod1
|
obj = cv_port_wing_lod1
|
||||||
@@ -5655,7 +5657,8 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
hp_type = hp_rem_module02, HpJump
|
||||||
hp_type = hp_elite_shield_special_2, HpCloak01
|
hp_type = hp_elite_shield_special_2, HpCloak01
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
@@ -5805,7 +5808,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = cv_port_wing_g_lod1
|
obj = cv_port_wing_g_lod1
|
||||||
@@ -5954,7 +5957,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = cv_port_wing_b_lod1
|
obj = cv_port_wing_b_lod1
|
||||||
@@ -6093,7 +6096,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_fighter_power_special_10, HpPower01
|
hp_type = hp_fighter_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bw_port_wing01_lod1
|
obj = bw_port_wing01_lod1
|
||||||
@@ -6203,7 +6206,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bw_port_wing01_lod1
|
obj = bw_port_wing01_lod1
|
||||||
@@ -6393,7 +6396,8 @@ hp_type = hp_turret_special_1, HpTurret01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
hp_type = hp_rem_module02, HpJump
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = bw_port_wing01_lod1
|
obj = bw_port_wing01_lod1
|
||||||
@@ -6527,7 +6531,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
steering_torque = 54000, 54000, 54000
|
steering_torque = 54000, 54000, 54000
|
||||||
angular_drag = 60000, 60000, 60000
|
angular_drag = 60000, 60000, 60000
|
||||||
rotation_inertia = 16800, 16800, 16800
|
rotation_inertia = 16800, 16800, 16800
|
||||||
@@ -6662,7 +6666,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = Or_star_wing_lod1
|
obj = Or_star_wing_lod1
|
||||||
@@ -8684,7 +8688,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
@@ -8855,7 +8859,7 @@ hp_type = hp_turret_special_2, HpTurret01
|
|||||||
hp_type = hp_turret_special_1, HpTurret01
|
hp_type = hp_turret_special_1, HpTurret01
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
surface_hit_effects = 0, small_hull_hit_light01, small_hull_hit_light02, small_hull_hit_light03
|
surface_hit_effects = 0, small_hull_hit_light01, small_hull_hit_light02, small_hull_hit_light03
|
||||||
surface_hit_effects = 150, small_hull_hit_medium01, small_hull_hit_medium02, small_hull_hit_medium03
|
surface_hit_effects = 150, small_hull_hit_medium01, small_hull_hit_medium02, small_hull_hit_medium03
|
||||||
@@ -8962,7 +8966,7 @@ shield_battery_limit = 58
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = starboard_wing_lod1
|
obj = starboard_wing_lod1
|
||||||
@@ -9097,7 +9101,7 @@ hp_type = hp_thruster, HpEngine01
|
|||||||
hp_type = hp_countermeasure_dropper, HpEngine02
|
hp_type = hp_countermeasure_dropper, HpEngine02
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
|
|
||||||
|
|
||||||
@@ -9143,7 +9147,7 @@ hp_type = hp_countermeasure_dropper, HpEngine01
|
|||||||
hp_type = hp_freighter_shield_special_1, HpCargo01, HpCargo02
|
hp_type = hp_freighter_shield_special_1, HpCargo01, HpCargo02
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
steering_torque = 22405000, 22405000, 22405000
|
steering_torque = 22405000, 22405000, 22405000
|
||||||
angular_drag = 64000000, 64000000, 64000000
|
angular_drag = 64000000, 64000000, 64000000
|
||||||
rotation_inertia = 2000000, 18000000, 18000000
|
rotation_inertia = 2000000, 18000000, 18000000
|
||||||
@@ -9217,7 +9221,7 @@ camera_turn_look_ahead_slerp_amount = 1.000000
|
|||||||
cockpit = cockpits\hc_transport.ini
|
cockpit = cockpits\hc_transport.ini
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
|
|
||||||
; Alpaca
|
; Alpaca
|
||||||
@@ -9296,7 +9300,7 @@ hp_type = hp_turret_special_2, HpTurret01, HpTurret02, HpTurret03, HpTurret04, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
hp_type = hp_turret_special_1, HpTurret01, HpTurret02, HpTurret03, HpTurret04, HpTurret05
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
steering_torque = 54000, 54000, 104000
|
steering_torque = 54000, 54000, 104000
|
||||||
angular_drag = 60000, 60000, 60000
|
angular_drag = 60000, 60000, 60000
|
||||||
rotation_inertia = 16800, 16800, 16800
|
rotation_inertia = 16800, 16800, 16800
|
||||||
@@ -9392,7 +9396,7 @@ shield_battery_limit = 61
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = Or_star_wing_s_lod1
|
obj = Or_star_wing_s_lod1
|
||||||
@@ -9485,7 +9489,7 @@ hp_type = hp_turret_special_2, HpTurret_U1_01, HpTurret_U1_02, HpTurret_U1_03, H
|
|||||||
hp_type = hp_turret_special_1, HpTurret_U1_01, HpTurret_U1_02, HpTurret_U1_03, HpTurret_U1_04, HpTurret_U1_05
|
hp_type = hp_turret_special_1, HpTurret_U1_01, HpTurret_U1_02, HpTurret_U1_03, HpTurret_U1_04, HpTurret_U1_05
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = lifter_clamp01_lod1
|
obj = lifter_clamp01_lod1
|
||||||
@@ -9570,7 +9574,7 @@ hp_type = hp_thruster, HpThruster01
|
|||||||
hp_type = hp_countermeasure_dropper, HpCM01
|
hp_type = hp_countermeasure_dropper, HpCM01
|
||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_freighter_power_special_10, HpPower01
|
hp_type = hp_freighter_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
@@ -10118,7 +10122,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
|
|
||||||
; HALLOWEEN JACK O LANTERN NPC
|
; HALLOWEEN JACK O LANTERN NPC
|
||||||
@@ -10237,7 +10241,8 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_fighter_power_special_1, HpPower02
|
hp_type = hp_fighter_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
hp_type = hp_rem_module02, HpJump
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = cv02_port_wing_lod1
|
obj = cv02_port_wing_lod1
|
||||||
@@ -10511,7 +10516,7 @@ hp_type = hp_torpedo_special_2, HpTorpedo01
|
|||||||
hp_type = hp_fighter_engine_special_10, HpDrive01
|
hp_type = hp_fighter_engine_special_10, HpDrive01
|
||||||
hp_type = hp_elite_power_special_10, HpPower01
|
hp_type = hp_elite_power_special_10, HpPower01
|
||||||
hp_type = hp_elite_power_special_1, HpPower02
|
hp_type = hp_elite_power_special_1, HpPower02
|
||||||
hp_type = hp_elite_shield_special_1, HpVelocity
|
hp_type = hp_rem_module01, HpVelocity
|
||||||
|
|
||||||
[CollisionGroup]
|
[CollisionGroup]
|
||||||
obj = drone_port_wing01_lod1
|
obj = drone_port_wing01_lod1
|
||||||
|
|||||||
@@ -13493,4 +13493,11 @@ cargo = experimental_weapons, 1
|
|||||||
[Loadout]
|
[Loadout]
|
||||||
nickname = hispania_loot_load
|
nickname = hispania_loot_load
|
||||||
equip = pod_hightech_crate, HpHispania01
|
equip = pod_hightech_crate, HpHispania01
|
||||||
cargo = fc_c_gun03_mark03, 1, HpHispania01
|
cargo = fc_c_gun03_mark03, 1, HpHispania01
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
[Loadout]
|
||||||
|
nickname = neb_debris_load
|
||||||
|
equip = neb02_outside, HpNav01
|
||||||
@@ -9832,4 +9832,20 @@ material_library = solar\MISC\blackhole.3db
|
|||||||
mass = 1e10
|
mass = 1e10
|
||||||
hit_pts = 1e36
|
hit_pts = 1e36
|
||||||
solar_radius = 100000
|
solar_radius = 100000
|
||||||
|
shape_name = NNM_SM_COMMUNICATIONS
|
||||||
|
|
||||||
|
|
||||||
|
; nav_buoy_nebula
|
||||||
|
|
||||||
|
[Solar]
|
||||||
|
nickname = neb01_debris
|
||||||
|
type = NON_TARGETABLE
|
||||||
|
DA_archetype = solar\rem_misc\neb01_debris.3db
|
||||||
|
material_library = solar\rem_misc\neb01_debris.3db
|
||||||
|
LODranges = 0, 999999
|
||||||
|
mass = 10000
|
||||||
|
hit_pts = 1e36
|
||||||
|
nomad = true
|
||||||
|
loadout = neb_debris_load
|
||||||
|
solar_radius = 3000
|
||||||
shape_name = NNM_SM_COMMUNICATIONS
|
shape_name = NNM_SM_COMMUNICATIONS
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
-- 50000 to 50020 reserved for anomaly
|
-- 50000 to 50020 reserved for anomaly
|
||||||
-- 524288 to 524353 reserved for engclass plugin
|
-- 524288 to 524353 reserved for engclass plugin
|
||||||
-- 524400 - 524499 reserved for per-client dynamic trade mission infocards (server sync, SINGLE:)
|
-- 524400 - 524499 reserved for per-client dynamic trade mission infocards (server sync, SINGLE:)
|
||||||
|
-- 524500 - 524549 reserved for REM key commands (keymap.ini, Controls page) and module slot names
|
||||||
|
|
||||||
-- Test Infocard
|
-- Test Infocard
|
||||||
rem.AddInfoCard(9000, "Spam")
|
rem.AddInfoCard(9000, "Spam")
|
||||||
@@ -10,6 +11,37 @@ rem.AddInfoCard(9000, "Spam")
|
|||||||
-- HotkeyMenu Infocard (Override)
|
-- HotkeyMenu Infocard (Override)
|
||||||
rem.AddInfoCard(1904, "REMNANT")
|
rem.AddInfoCard(1904, "REMNANT")
|
||||||
|
|
||||||
|
-- REM key commands (name, description) -- Options > Controls
|
||||||
|
rem.AddInfoCard(524500, "JETTISON SENSOR PROBE")
|
||||||
|
rem.AddInfoCard(524501, "Drops a sensor probe from the cargo hold beside the ship.")
|
||||||
|
rem.AddInfoCard(524502, "ACTIVATE SENSOR PROBE")
|
||||||
|
rem.AddInfoCard(524503, "Starts the scan of the targeted sensor probe.")
|
||||||
|
rem.AddInfoCard(524504, "REM WAYPOINTS")
|
||||||
|
rem.AddInfoCard(524505, "Opens the REM waypoint sharing window.")
|
||||||
|
rem.AddInfoCard(524506, "REM BASE MANAGER")
|
||||||
|
rem.AddInfoCard(524507, "Opens the REM base manager (depot, market, crafting, research).")
|
||||||
|
rem.AddInfoCard(524508, "REM MISSIONS")
|
||||||
|
rem.AddInfoCard(524509, "Opens the REM missions window (story progress, races).")
|
||||||
|
rem.AddInfoCard(524510, "REM CONTRACTS")
|
||||||
|
rem.AddInfoCard(524511, "Opens the REM contract network (bounties).")
|
||||||
|
rem.AddInfoCard(524512, "REM PLAYER")
|
||||||
|
rem.AddInfoCard(524513, "Opens the REM player window (stats, skills, bank).")
|
||||||
|
rem.AddInfoCard(524514, "TOGGLE WAYPOINT BOT")
|
||||||
|
rem.AddInfoCard(524515, "Flies the waypoint route by autopilot (skill WayPoint Bot).")
|
||||||
|
-- module slots hp_rem_module01..10 (ship view hardpoint captions)
|
||||||
|
rem.AddInfoCard(524516, "MODULE SLOT 1")
|
||||||
|
rem.AddInfoCard(524517, "MODULE SLOT 2")
|
||||||
|
rem.AddInfoCard(524518, "MODULE SLOT 3")
|
||||||
|
rem.AddInfoCard(524519, "MODULE SLOT 4")
|
||||||
|
rem.AddInfoCard(524520, "MODULE SLOT 5")
|
||||||
|
rem.AddInfoCard(524521, "MODULE SLOT 6")
|
||||||
|
rem.AddInfoCard(524522, "MODULE SLOT 7")
|
||||||
|
rem.AddInfoCard(524523, "MODULE SLOT 8")
|
||||||
|
rem.AddInfoCard(524524, "MODULE SLOT 9")
|
||||||
|
rem.AddInfoCard(524525, "MODULE SLOT 10")
|
||||||
|
rem.AddInfoCard(524526, "SECTOR SCANNER")
|
||||||
|
rem.AddInfoCard(524527, "Shows / hides the 3D sector scanner (contacts within 7.5 km).")
|
||||||
|
|
||||||
-- RACE INFOCARDS
|
-- RACE INFOCARDS
|
||||||
rem.AddInfoCard(9001, "1")
|
rem.AddInfoCard(9001, "1")
|
||||||
rem.AddInfoCard(9002, "2")
|
rem.AddInfoCard(9002, "2")
|
||||||
@@ -153,7 +185,7 @@ rem.AddInfoCard(458771, [[<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><JU
|
|||||||
rem.AddInfoCard(471205, "Investigate the wreckage")
|
rem.AddInfoCard(471205, "Investigate the wreckage")
|
||||||
rem.AddInfoCard(458772, "Fly to Westpoint Military Academy")
|
rem.AddInfoCard(458772, "Fly to Westpoint Military Academy")
|
||||||
rem.AddInfoCard(458773, "Land on Westpoint to meet King")
|
rem.AddInfoCard(458773, "Land on Westpoint to meet King")
|
||||||
rem.AddInfoCard(458774, [[<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><JUST loc="left"/><TEXT>Mission 01: The Reunion</TEXT><PARA/><TEXT></TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>Juni arranged a meeting with King to gather more information about Orillion. He once worked closely with The Order, but ever since his disappearance, Orillion has vanished without a trace, leaving his whereabouts unknown. King has located a distress beacon that may contain The Order patrol’s last known coordinates. It could be our only lead to determining Orillion’s last known location.</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT></TEXT><PARA/><JUST loc="left"/><TEXT>Objectives:</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>- Reach the Distress Beacon</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>- Find Orillion</TEXT><PARA/><JUST
|
rem.AddInfoCard(458774, [[<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><JUST loc="left"/><TEXT>Mission 01: The Reunion</TEXT><PARA/><TEXT></TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>Juni arranged a meeting with King to gather more information about Orillion. He once worked closely with The Order, but ever since his disappearance, Orillion has vanished without a trace, leaving his whereabouts unknown. King has located a distress beacon that may contain The Order patrol’s last known coordinates. It could be our only lead to determining Orillion’s last known location.</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT></TEXT><PARA/><JUST loc="left"/><TEXT>Objectives:</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>- Reach the Distress Beacon</TEXT><PARA/><JUST loc="left"/><JUST loc="left"/><TEXT>- Find Orillion</TEXT><PARA/><JUST loc="left"/><POP/></RDL>]])
|
||||||
rem.AddInfoCard(458775, "Fly to Ithaca Research Station Debris")
|
rem.AddInfoCard(458775, "Fly to Ithaca Research Station Debris")
|
||||||
rem.AddInfoCard(458776, "Reach the Distress Beacon")
|
rem.AddInfoCard(458776, "Reach the Distress Beacon")
|
||||||
rem.AddInfoCard(458777, "Destroy the Distress Beacon")
|
rem.AddInfoCard(458777, "Destroy the Distress Beacon")
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 627 KiB After Width: | Height: | Size: 604 KiB |
|
After Width: | Height: | Size: 689 KiB |
|
After Width: | Height: | Size: 675 KiB |
|
After Width: | Height: | Size: 678 KiB |
|
After Width: | Height: | Size: 665 KiB |
|
After Width: | Height: | Size: 690 KiB |
|
After Width: | Height: | Size: 676 KiB |
|
After Width: | Height: | Size: 537 KiB |
@@ -13,8 +13,8 @@ Website : https://rem-freelancer.moe/
|
|||||||
|
|
||||||
File Name : REM.zip
|
File Name : REM.zip
|
||||||
File Size : 15,00 GB
|
File Size : 15,00 GB
|
||||||
Mod Version : 0.4.8.0
|
Mod Version : 0.4.9.3
|
||||||
Date Released : 04/10/2026
|
Date Released : 26/10/2026
|
||||||
|
|
||||||
******************************************************
|
******************************************************
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# REM tools
|
||||||
|
|
||||||
|
Generators for the REM interface art (Python 3, no extra packages). Inputs are PNGs (8 or 16 bit),
|
||||||
|
the pictures of the old ClientHook are in `EXE/REM/UI`.
|
||||||
|
|
||||||
|
| Script | Makes |
|
||||||
|
|---|---|
|
||||||
|
| `make_icon_3db.py <in.png> <out.3db> <name> [--color]` | a NeuroNet-style icon (grey, tinted by the game), e.g. the REM bar icons in `DATA/INTERFACE/NEURONET/ICONS/rem_*.3db` |
|
||||||
|
| `make_image_3db.py <in.png> <out.3db> <name> [--size N] [--nocrop] [--crop x0,y0,x1,y1]` | a coloured picture for the REM windows (medals, row icons, banners) in `DATA/INTERFACE/REM/IMAGES` |
|
||||||
|
| `make_hud_txm.py <out.txm> <name>=<in.png> ...` | the HUD texture file `DATA/INTERFACE/REM/rem_hud.txm` (target marks) |
|
||||||
|
|
||||||
|
`<name>` must be unique per file: it becomes the material, texture and mesh names, and
|
||||||
|
Freelancer keys materials globally by the CRC of the name. `utf.py` (UTF files) and `flcrc.py`
|
||||||
|
(Freelancer's name CRC) are shared helpers.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
python tools/make_image_3db.py EXE/REM/UI/ICON/Cargo_icon.png DATA/INTERFACE/REM/IMAGES/icon_cargo.3db icon_cargo --size 128
|
||||||
|
python tools/make_image_3db.py EXE/REM/UI/CONTRACTS/combat_image.png DATA/INTERFACE/REM/IMAGES/contracts_banner.3db contracts_banner --size 512 --nocrop --crop 0,420,1600,1220
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
"""Freelancer's name CRC (dacom.dll GetCRC32): its own table, names folded to lower case.
|
||||||
|
|
||||||
|
VMeshRef library ids and material ids in VMeshData are this CRC of the name.
|
||||||
|
"""
|
||||||
|
|
||||||
|
_TABLE = [
|
||||||
|
0x00000000, 0x09073096, 0x120E612C, 0x1B0951BA, 0xFF6DC419, 0xF66AF48F, 0xED63A535, 0xE46495A3,
|
||||||
|
0xFEDB8832, 0xF7DCB8A4, 0xECD5E91E, 0xE5D2D988, 0x01B64C2B, 0x08B17CBD, 0x13B82D07, 0x1ABF1D91,
|
||||||
|
0xFDB71064, 0xF4B020F2, 0xEFB97148, 0xE6BE41DE, 0x02DAD47D, 0x0BDDE4EB, 0x10D4B551, 0x19D385C7,
|
||||||
|
0x036C9856, 0x0A6BA8C0, 0x1162F97A, 0x1865C9EC, 0xFC015C4F, 0xF5066CD9, 0xEE0F3D63, 0xE7080DF5,
|
||||||
|
0xFB6E20C8, 0xF269105E, 0xE96041E4, 0xE0677172, 0x0403E4D1, 0x0D04D447, 0x160D85FD, 0x1F0AB56B,
|
||||||
|
0x05B5A8FA, 0x0CB2986C, 0x17BBC9D6, 0x1EBCF940, 0xFAD86CE3, 0xF3DF5C75, 0xE8D60DCF, 0xE1D13D59,
|
||||||
|
0x06D930AC, 0x0FDE003A, 0x14D75180, 0x1DD06116, 0xF9B4F4B5, 0xF0B3C423, 0xEBBA9599, 0xE2BDA50F,
|
||||||
|
0xF802B89E, 0xF1058808, 0xEA0CD9B2, 0xE30BE924, 0x076F7C87, 0x0E684C11, 0x15611DAB, 0x1C662D3D,
|
||||||
|
0xF6DC4190, 0xFFDB7106, 0xE4D220BC, 0xEDD5102A, 0x09B18589, 0x00B6B51F, 0x1BBFE4A5, 0x12B8D433,
|
||||||
|
0x0807C9A2, 0x0100F934, 0x1A09A88E, 0x130E9818, 0xF76A0DBB, 0xFE6D3D2D, 0xE5646C97, 0xEC635C01,
|
||||||
|
0x0B6B51F4, 0x026C6162, 0x196530D8, 0x1062004E, 0xF40695ED, 0xFD01A57B, 0xE608F4C1, 0xEF0FC457,
|
||||||
|
0xF5B0D9C6, 0xFCB7E950, 0xE7BEB8EA, 0xEEB9887C, 0x0ADD1DDF, 0x03DA2D49, 0x18D37CF3, 0x11D44C65,
|
||||||
|
0x0DB26158, 0x04B551CE, 0x1FBC0074, 0x16BB30E2, 0xF2DFA541, 0xFBD895D7, 0xE0D1C46D, 0xE9D6F4FB,
|
||||||
|
0xF369E96A, 0xFA6ED9FC, 0xE1678846, 0xE860B8D0, 0x0C042D73, 0x05031DE5, 0x1E0A4C5F, 0x170D7CC9,
|
||||||
|
0xF005713C, 0xF90241AA, 0xE20B1010, 0xEB0C2086, 0x0F68B525, 0x066F85B3, 0x1D66D409, 0x1461E49F,
|
||||||
|
0x0EDEF90E, 0x07D9C998, 0x1CD09822, 0x15D7A8B4, 0xF1B33D17, 0xF8B40D81, 0xE3BD5C3B, 0xEABA6CAD,
|
||||||
|
0xEDB88320, 0xE4BFB3B6, 0xFFB6E20C, 0xF6B1D29A, 0x12D54739, 0x1BD277AF, 0x00DB2615, 0x09DC1683,
|
||||||
|
0x13630B12, 0x1A643B84, 0x016D6A3E, 0x086A5AA8, 0xEC0ECF0B, 0xE509FF9D, 0xFE00AE27, 0xF7079EB1,
|
||||||
|
0x100F9344, 0x1908A3D2, 0x0201F268, 0x0B06C2FE, 0xEF62575D, 0xE66567CB, 0xFD6C3671, 0xF46B06E7,
|
||||||
|
0xEED41B76, 0xE7D32BE0, 0xFCDA7A5A, 0xF5DD4ACC, 0x11B9DF6F, 0x18BEEFF9, 0x03B7BE43, 0x0AB08ED5,
|
||||||
|
0x16D6A3E8, 0x1FD1937E, 0x04D8C2C4, 0x0DDFF252, 0xE9BB67F1, 0xE0BC5767, 0xFBB506DD, 0xF2B2364B,
|
||||||
|
0xE80D2BDA, 0xE10A1B4C, 0xFA034AF6, 0xF3047A60, 0x1760EFC3, 0x1E67DF55, 0x056E8EEF, 0x0C69BE79,
|
||||||
|
0xEB61B38C, 0xE266831A, 0xF96FD2A0, 0xF068E236, 0x140C7795, 0x1D0B4703, 0x060216B9, 0x0F05262F,
|
||||||
|
0x15BA3BBE, 0x1CBD0B28, 0x07B45A92, 0x0EB36A04, 0xEAD7FFA7, 0xE3D0CF31, 0xF8D99E8B, 0xF1DEAE1D,
|
||||||
|
0x1B64C2B0, 0x1263F226, 0x096AA39C, 0x006D930A, 0xE40906A9, 0xED0E363F, 0xF6076785, 0xFF005713,
|
||||||
|
0xE5BF4A82, 0xECB87A14, 0xF7B12BAE, 0xFEB61B38, 0x1AD28E9B, 0x13D5BE0D, 0x08DCEFB7, 0x01DBDF21,
|
||||||
|
0xE6D3D2D4, 0xEFD4E242, 0xF4DDB3F8, 0xFDDA836E, 0x19BE16CD, 0x10B9265B, 0x0BB077E1, 0x02B74777,
|
||||||
|
0x18085AE6, 0x110F6A70, 0x0A063BCA, 0x03010B5C, 0xE7659EFF, 0xEE62AE69, 0xF56BFFD3, 0xFC6CCF45,
|
||||||
|
0xE00AE278, 0xE90DD2EE, 0xF2048354, 0xFB03B3C2, 0x1F672661, 0x166016F7, 0x0D69474D, 0x046E77DB,
|
||||||
|
0x1ED16A4A, 0x17D65ADC, 0x0CDF0B66, 0x05D83BF0, 0xE1BCAE53, 0xE8BB9EC5, 0xF3B2CF7F, 0xFAB5FFE9,
|
||||||
|
0x1DBDF21C, 0x14BAC28A, 0x0FB39330, 0x06B4A3A6, 0xE2D03605, 0xEBD70693, 0xF0DE5729, 0xF9D967BF,
|
||||||
|
0xE3667A2E, 0xEA614AB8, 0xF1681B02, 0xF86F2B94, 0x1C0BBE37, 0x150C8EA1, 0x0E05DF1B, 0x0702EF8D,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def _fold(ch):
|
||||||
|
i = ch - 256 if ch >= 128 else ch # signed char
|
||||||
|
if i < 0:
|
||||||
|
off = 0x400 + i
|
||||||
|
return (_TABLE[off >> 2] >> ((off & 3) * 8)) & 0xFF
|
||||||
|
if ord('A') <= i <= ord('Z'):
|
||||||
|
return i + 32
|
||||||
|
return i
|
||||||
|
|
||||||
|
|
||||||
|
def crc(name):
|
||||||
|
c = 0xFFFFFFFF
|
||||||
|
for ch in name.encode('latin-1'):
|
||||||
|
c = _TABLE[(_fold(ch) ^ (c & 0xFF))] ^ (c >> 8)
|
||||||
|
return (~c) & 0xFFFFFFFF
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
"""The REM HUD texture file (.txm) -- the icons drawn in the target brackets (rem_target_hud.cpp).
|
||||||
|
|
||||||
|
A .txm is a UTF file with one "Texture library" node, as DATA\\INTERFACE\\ButtonTextures.txm. Each
|
||||||
|
PNG becomes a grey 32-bit TGA with alpha (brightest pixel white, three mips) named
|
||||||
|
"REM_<name>.tga"; the HUD tints it with the bracket colour like Freelancer's own target corners.
|
||||||
|
DATA\\INTERFACE\\REM\\rem_hud.ini lists the textures as shapes (tex_shape = REM_<name>.tga).
|
||||||
|
|
||||||
|
python tools/make_hud_txm.py <out.txm> <name>=<in.png> [<name>=<in.png> ...]
|
||||||
|
|
||||||
|
Example (the shipped file):
|
||||||
|
|
||||||
|
python tools/make_hud_txm.py DATA/INTERFACE/REM/rem_hud.txm \\
|
||||||
|
skull=EXE/REM/UI/ICON/skull_icon.png \\
|
||||||
|
probe=EXE/REM/UI/ICON/sensorprobe_active.png \\
|
||||||
|
menu=EXE/REM/UI/ICON/target_menu.png
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
|
import make_icon_3db as icon # noqa: E402
|
||||||
|
import utf # noqa: E402
|
||||||
|
|
||||||
|
TEX_SIZE = 64
|
||||||
|
|
||||||
|
|
||||||
|
def make(out, entries):
|
||||||
|
N = utf.Node
|
||||||
|
textures = []
|
||||||
|
for name, png in entries:
|
||||||
|
w, h, rows = icon.read_png(png)
|
||||||
|
w, h, rows = icon.crop_to_content(w, h, rows)
|
||||||
|
mips = [icon.tga(icon.to_grey(icon.resample(w, h, rows, size)))
|
||||||
|
for size in (TEX_SIZE, TEX_SIZE // 2, TEX_SIZE // 4)]
|
||||||
|
textures.append(N('REM_' + name + '.tga', children=[N('MIP%d' % i, data=m) for i, m in enumerate(mips)]))
|
||||||
|
root = N('\\', children=[N('Texture library', children=textures)])
|
||||||
|
os.makedirs(os.path.dirname(os.path.abspath(out)), exist_ok=True)
|
||||||
|
utf.write(out, root)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) < 3 or any('=' not in a for a in sys.argv[2:]):
|
||||||
|
print(__doc__)
|
||||||
|
sys.exit(1)
|
||||||
|
make(sys.argv[1], [a.split('=', 1) for a in sys.argv[2:]])
|
||||||
|
print('wrote', sys.argv[1])
|
||||||
@@ -0,0 +1,212 @@
|
|||||||
|
"""A Freelancer interface icon (.3db) from a PNG -- like the NeuroNet icons (NN_info.3db ...).
|
||||||
|
|
||||||
|
Retail icons are one textured quad: the mesh lives in DATA\\INTERFACE\\interface.generic.vms, the
|
||||||
|
material (DcDtOcOt, Dt_flags 64) and a 32-bit TGA with three mips are inside the .3db. The
|
||||||
|
texture is grey; the button tints it (white, yellow under the mouse). A new icon gets the same
|
||||||
|
quad in its own embedded VMeshLibrary, its own material name (material ids are global, keyed by
|
||||||
|
the name's CRC) and the PNG as grey + alpha, brightest pixel white.
|
||||||
|
|
||||||
|
python tools/make_icon_3db.py <in.png> <out.3db> <name> [--color]
|
||||||
|
|
||||||
|
<name> becomes the material "UI_REM_<name>", the texture "REM_<name>.tga" and the mesh library
|
||||||
|
"rem_icon_<name>.lod0.vms". --color keeps the PNG's colours (not tinted like the originals).
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import struct
|
||||||
|
import sys
|
||||||
|
import zlib
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
|
import flcrc # noqa: E402
|
||||||
|
import utf # noqa: E402
|
||||||
|
|
||||||
|
# the retail NN_info quad (interface.generic-102.vms, start vertex 11026): x, y, z, u, v
|
||||||
|
QUAD_HALF = 0.020543185994029045
|
||||||
|
QUAD_Z = -2.1847961306775687e-06
|
||||||
|
QUAD = [(-QUAD_HALF, QUAD_HALF, QUAD_Z, 0.0, 1.0), (-QUAD_HALF, -QUAD_HALF, QUAD_Z, 0.0, 0.0),
|
||||||
|
(QUAD_HALF, QUAD_HALF, QUAD_Z, 1.0, 1.0), (QUAD_HALF, -QUAD_HALF, QUAD_Z, 1.0, 0.0)]
|
||||||
|
QUAD_INDICES = [0, 1, 2, 1, 3, 2]
|
||||||
|
TEX_SIZE = 128
|
||||||
|
|
||||||
|
|
||||||
|
def read_png(path):
|
||||||
|
"""RGBA rows (top first) of an 8-bit PNG: grey, grey+alpha, RGB, RGBA or palette."""
|
||||||
|
d = open(path, 'rb').read()
|
||||||
|
assert d[:8] == b'\x89PNG\r\n\x1a\n', path
|
||||||
|
pos = 8
|
||||||
|
idat = b''
|
||||||
|
palette = trns = None
|
||||||
|
while pos < len(d):
|
||||||
|
n, kind = struct.unpack('>I4s', d[pos:pos + 8])
|
||||||
|
body = d[pos + 8:pos + 8 + n]
|
||||||
|
if kind == b'IHDR':
|
||||||
|
w, h, depth, ctype, _c, _f, interlace = struct.unpack('>IIBBBBB', body)
|
||||||
|
elif kind == b'PLTE':
|
||||||
|
palette = body
|
||||||
|
elif kind == b'tRNS':
|
||||||
|
trns = body
|
||||||
|
elif kind == b'IDAT':
|
||||||
|
idat += body
|
||||||
|
pos += 12 + n
|
||||||
|
assert depth in (8, 16) and interlace == 0, path + ': only 8/16-bit non-interlaced PNG'
|
||||||
|
assert depth == 8 or ctype != 3, path + ': 16-bit palette PNG'
|
||||||
|
# a 16-bit sample is filtered byte-wise as two bytes; its high byte is kept below
|
||||||
|
channels = {0: 1, 2: 3, 3: 1, 4: 2, 6: 4}[ctype] * (depth // 8)
|
||||||
|
raw = zlib.decompress(idat)
|
||||||
|
stride = w * channels
|
||||||
|
rows = []
|
||||||
|
prev = bytearray(stride)
|
||||||
|
p = 0
|
||||||
|
for _ in range(h):
|
||||||
|
f = raw[p]
|
||||||
|
line = bytearray(raw[p + 1:p + 1 + stride])
|
||||||
|
p += 1 + stride
|
||||||
|
for i in range(stride):
|
||||||
|
a = line[i - channels] if i >= channels else 0
|
||||||
|
b = prev[i]
|
||||||
|
c = prev[i - channels] if i >= channels else 0
|
||||||
|
if f == 1:
|
||||||
|
line[i] = (line[i] + a) & 0xFF
|
||||||
|
elif f == 2:
|
||||||
|
line[i] = (line[i] + b) & 0xFF
|
||||||
|
elif f == 3:
|
||||||
|
line[i] = (line[i] + ((a + b) >> 1)) & 0xFF
|
||||||
|
elif f == 4:
|
||||||
|
pa, pb, pc = abs(b - c), abs(a - c), abs(a + b - 2 * c)
|
||||||
|
pr = a if pa <= pb and pa <= pc else (b if pb <= pc else c)
|
||||||
|
line[i] = (line[i] + pr) & 0xFF
|
||||||
|
prev = line
|
||||||
|
rows.append(line if depth == 8 else line[0::2])
|
||||||
|
channels //= depth // 8
|
||||||
|
out = []
|
||||||
|
for line in rows:
|
||||||
|
px = []
|
||||||
|
for x in range(w):
|
||||||
|
s = line[x * channels:(x + 1) * channels]
|
||||||
|
if ctype == 6:
|
||||||
|
px.append(tuple(s))
|
||||||
|
elif ctype == 2:
|
||||||
|
px.append((s[0], s[1], s[2], 255))
|
||||||
|
elif ctype == 4:
|
||||||
|
px.append((s[0], s[0], s[0], s[1]))
|
||||||
|
elif ctype == 0:
|
||||||
|
px.append((s[0], s[0], s[0], 255))
|
||||||
|
else:
|
||||||
|
i = s[0]
|
||||||
|
a = trns[i] if trns is not None and i < len(trns) else 255
|
||||||
|
px.append((palette[3 * i], palette[3 * i + 1], palette[3 * i + 2], a))
|
||||||
|
out.append(px)
|
||||||
|
return w, h, out
|
||||||
|
|
||||||
|
|
||||||
|
def resample(w, h, rows, size):
|
||||||
|
"""Box filter to size x size, colour weighted by alpha (no dark fringes)."""
|
||||||
|
out = []
|
||||||
|
for y in range(size):
|
||||||
|
y0, y1 = y * h // size, max((y + 1) * h // size, y * h // size + 1)
|
||||||
|
line = []
|
||||||
|
for x in range(size):
|
||||||
|
x0, x1 = x * w // size, max((x + 1) * w // size, x * w // size + 1)
|
||||||
|
r = g = b = a = n = 0
|
||||||
|
for yy in range(y0, y1):
|
||||||
|
for xx in range(x0, x1):
|
||||||
|
pr, pg, pb, pa = rows[yy][xx]
|
||||||
|
r += pr * pa
|
||||||
|
g += pg * pa
|
||||||
|
b += pb * pa
|
||||||
|
a += pa
|
||||||
|
n += 1
|
||||||
|
line.append((r // a, g // a, b // a, a // n) if a else (0, 0, 0, 0))
|
||||||
|
out.append(line)
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def to_grey(rows, gamma=0.55):
|
||||||
|
"""Luminance, the brightest visible pixel white and the rest lifted (gamma < 1) -- the retail
|
||||||
|
icons are near-white shapes the button tints."""
|
||||||
|
lum = [[(0.2126 * r + 0.7152 * g + 0.0722 * b, a) for (r, g, b, a) in line] for line in rows]
|
||||||
|
peak = max([l for line in lum for (l, a) in line if a > 32] or [255.0])
|
||||||
|
out = []
|
||||||
|
for line in lum:
|
||||||
|
out.append([(min(int(255.0 * (min(l / max(peak, 1.0), 1.0) ** gamma) + 0.5), 255),) * 3 + (a,)
|
||||||
|
for (l, a) in line])
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def crop_to_content(w, h, rows, margin=0.06):
|
||||||
|
"""The visible part (alpha > 8) as a centred square with a small margin, so the icon fills
|
||||||
|
the quad like the retail ones."""
|
||||||
|
xs = [x for line in rows for x, p in enumerate(line) if p[3] > 8]
|
||||||
|
ys = [y for y, line in enumerate(rows) if any(p[3] > 8 for p in line)]
|
||||||
|
if not xs:
|
||||||
|
return w, h, rows
|
||||||
|
x0, x1, y0, y1 = min(xs), max(xs) + 1, min(ys), max(ys) + 1
|
||||||
|
side = int(max(x1 - x0, y1 - y0) * (1.0 + 2.0 * margin)) + 1
|
||||||
|
cx, cy = (x0 + x1) // 2, (y0 + y1) // 2
|
||||||
|
ox, oy = cx - side // 2, cy - side // 2
|
||||||
|
empty = (0, 0, 0, 0)
|
||||||
|
out = [[rows[y][x] if 0 <= y < h and 0 <= x < w else empty for x in range(ox, ox + side)]
|
||||||
|
for y in range(oy, oy + side)]
|
||||||
|
return side, side, out
|
||||||
|
|
||||||
|
|
||||||
|
def tga(rows):
|
||||||
|
"""32-bit uncompressed TGA, bottom row first, 8 alpha bits -- as the retail icons."""
|
||||||
|
size = len(rows)
|
||||||
|
head = struct.pack('<BBBHHBHHHHBB', 0, 0, 2, 0, 0, 0, 0, 0, size, size, 32, 8)
|
||||||
|
body = bytearray()
|
||||||
|
for line in reversed(rows):
|
||||||
|
for r, g, b, a in line:
|
||||||
|
body += bytes((b, g, r, a))
|
||||||
|
return head + bytes(body)
|
||||||
|
|
||||||
|
|
||||||
|
def vmesh_data(material_crc):
|
||||||
|
"""One mesh, four XYZ+TEX1 vertices (FVF 0x102), six indices."""
|
||||||
|
d = struct.pack('<IIHHHH', 1, 4, 1, len(QUAD_INDICES), 0x102, len(QUAD))
|
||||||
|
d += struct.pack('<IHHHH', material_crc, 0, len(QUAD) - 1, len(QUAD_INDICES), 204)
|
||||||
|
d += struct.pack('<%dH' % len(QUAD_INDICES), *QUAD_INDICES)
|
||||||
|
for v in QUAD:
|
||||||
|
d += struct.pack('<5f', *v)
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
def vmesh_ref(library_crc):
|
||||||
|
"""VMeshRef (60 bytes): the whole library, bounds and sphere of the quad."""
|
||||||
|
return struct.pack('<IIHHHHHH10f', 60, library_crc, 0, len(QUAD), 0, len(QUAD_INDICES), 0, 1,
|
||||||
|
QUAD_HALF, -QUAD_HALF, QUAD_HALF, -QUAD_HALF, QUAD_Z, QUAD_Z, 0.0, 0.0, QUAD_Z,
|
||||||
|
QUAD_HALF * 1.5094)
|
||||||
|
|
||||||
|
|
||||||
|
def make(png, out, name, color=False):
|
||||||
|
w, h, rows = read_png(png)
|
||||||
|
w, h, rows = crop_to_content(w, h, rows)
|
||||||
|
mips = []
|
||||||
|
for size in (TEX_SIZE, TEX_SIZE // 2, TEX_SIZE // 4):
|
||||||
|
img = resample(w, h, rows, size)
|
||||||
|
mips.append(tga(img if color else to_grey(img)))
|
||||||
|
material = 'UI_REM_' + name
|
||||||
|
texture = 'REM_' + name + '.tga'
|
||||||
|
library = 'rem_icon_' + name.lower() + '.lod0.vms'
|
||||||
|
N = utf.Node
|
||||||
|
root = N('\\', children=[
|
||||||
|
N('Exporter Version', data=b'REM make_icon_3db\0'),
|
||||||
|
N('VMeshLibrary', children=[N(library, children=[N('VMeshData', data=vmesh_data(flcrc.crc(material)))])]),
|
||||||
|
N('VMeshPart', children=[N('VMeshRef', data=vmesh_ref(flcrc.crc(library)))]),
|
||||||
|
N('Material library', children=[
|
||||||
|
N('Material count', data=struct.pack('<I', 1)),
|
||||||
|
N(material, children=[N('Type', data=b'DcDtOcOt\0'), N('Dt_name', data=texture.encode() + b'\0'),
|
||||||
|
N('Dt_flags', data=struct.pack('<I', 64))])]),
|
||||||
|
N('Texture library', children=[
|
||||||
|
N(texture, children=[N('MIP%d' % i, data=m) for i, m in enumerate(mips)])]),
|
||||||
|
])
|
||||||
|
utf.write(out, root)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
args = [a for a in sys.argv[1:] if not a.startswith('--')]
|
||||||
|
if len(args) != 3:
|
||||||
|
print(__doc__)
|
||||||
|
sys.exit(1)
|
||||||
|
make(args[0], args[1], args[2], color='--color' in sys.argv)
|
||||||
|
print('wrote', args[1])
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
"""A coloured Freelancer interface image (.3db) from a PNG -- for pictures in the REM windows
|
||||||
|
(statistics medals, banners, portraits), shown with a StaticControl like the inventory's item
|
||||||
|
icons. Unlike make_icon_3db.py the colours stay and the quad keeps the picture's aspect.
|
||||||
|
|
||||||
|
python tools/make_image_3db.py <in.png> <out.3db> <name> [--size 256] [--nocrop] [--crop x0,y0,x1,y1]
|
||||||
|
|
||||||
|
The transparent border is cut off (unless --nocrop), the picture is stretched into a square
|
||||||
|
texture of --size pixels (three mips) and drawn on a quad of the picture's aspect, the longer
|
||||||
|
side as long as the retail icon quad. --crop cuts that pixel rectangle out first (a banner
|
||||||
|
strip from a square picture). <name> gives the material "UI_REMIMG_<name>", the texture
|
||||||
|
"REMIMG_<name>.tga" and the mesh library "rem_img_<name>.lod0.vms".
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import struct
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
|
import flcrc # noqa: E402
|
||||||
|
import make_icon_3db as icon # noqa: E402
|
||||||
|
import utf # noqa: E402
|
||||||
|
|
||||||
|
HALF = icon.QUAD_HALF
|
||||||
|
Z = icon.QUAD_Z
|
||||||
|
INDICES = [0, 1, 2, 1, 3, 2]
|
||||||
|
|
||||||
|
|
||||||
|
def crop(w, h, rows):
|
||||||
|
xs = [x for line in rows for x, p in enumerate(line) if p[3] > 8]
|
||||||
|
ys = [y for y, line in enumerate(rows) if any(p[3] > 8 for p in line)]
|
||||||
|
if not xs:
|
||||||
|
return w, h, rows
|
||||||
|
x0, x1, y0, y1 = min(xs), max(xs) + 1, min(ys), max(ys) + 1
|
||||||
|
return x1 - x0, y1 - y0, [line[x0:x1] for line in rows[y0:y1]]
|
||||||
|
|
||||||
|
|
||||||
|
def make(png, out, name, size=256, do_crop=True, rect=None):
|
||||||
|
w, h, rows = icon.read_png(png)
|
||||||
|
if rect is not None:
|
||||||
|
x0, y0, x1, y1 = rect
|
||||||
|
w, h, rows = x1 - x0, y1 - y0, [line[x0:x1] for line in rows[y0:y1]]
|
||||||
|
if do_crop:
|
||||||
|
w, h, rows = crop(w, h, rows)
|
||||||
|
hx, hy = (HALF, HALF * h / w) if w >= h else (HALF * w / h, HALF)
|
||||||
|
quad = [(-hx, hy, Z, 0.0, 1.0), (-hx, -hy, Z, 0.0, 0.0), (hx, hy, Z, 1.0, 1.0), (hx, -hy, Z, 1.0, 0.0)]
|
||||||
|
mips = []
|
||||||
|
s = size
|
||||||
|
for _ in range(3):
|
||||||
|
mips.append(icon.tga(icon.resample(w, h, rows, s)))
|
||||||
|
s = max(4, s // 2)
|
||||||
|
material = 'UI_REMIMG_' + name
|
||||||
|
texture = 'REMIMG_' + name + '.tga'
|
||||||
|
library = 'rem_img_' + name.lower() + '.lod0.vms'
|
||||||
|
data = struct.pack('<IIHHHH', 1, 4, 1, len(INDICES), 0x102, len(quad))
|
||||||
|
data += struct.pack('<IHHHH', flcrc.crc(material), 0, len(quad) - 1, len(INDICES), 204)
|
||||||
|
data += struct.pack('<%dH' % len(INDICES), *INDICES)
|
||||||
|
for v in quad:
|
||||||
|
data += struct.pack('<5f', *v)
|
||||||
|
ref = struct.pack('<IIHHHHHH10f', 60, flcrc.crc(library), 0, len(quad), 0, len(INDICES), 0, 1,
|
||||||
|
hx, -hx, hy, -hy, Z, Z, 0.0, 0.0, Z, max(hx, hy) * 1.5094)
|
||||||
|
N = utf.Node
|
||||||
|
root = N('\\', children=[
|
||||||
|
N('Exporter Version', data=b'REM make_image_3db\0'),
|
||||||
|
N('VMeshLibrary', children=[N(library, children=[N('VMeshData', data=data)])]),
|
||||||
|
N('VMeshPart', children=[N('VMeshRef', data=ref)]),
|
||||||
|
N('Material library', children=[
|
||||||
|
N('Material count', data=struct.pack('<I', 1)),
|
||||||
|
N(material, children=[N('Type', data=b'DcDtOcOt\0'), N('Dt_name', data=texture.encode() + b'\0'),
|
||||||
|
N('Dt_flags', data=struct.pack('<I', 64))])]),
|
||||||
|
N('Texture library', children=[
|
||||||
|
N(texture, children=[N('MIP%d' % i, data=m) for i, m in enumerate(mips)])]),
|
||||||
|
])
|
||||||
|
os.makedirs(os.path.dirname(os.path.abspath(out)), exist_ok=True)
|
||||||
|
utf.write(out, root)
|
||||||
|
return w, h
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
argv = sys.argv[1:]
|
||||||
|
size = 256
|
||||||
|
if '--size' in argv:
|
||||||
|
i = argv.index('--size')
|
||||||
|
size = int(argv[i + 1])
|
||||||
|
del argv[i:i + 2]
|
||||||
|
rect = None
|
||||||
|
if '--crop' in argv:
|
||||||
|
i = argv.index('--crop')
|
||||||
|
rect = tuple(int(v) for v in argv[i + 1].split(','))
|
||||||
|
del argv[i:i + 2]
|
||||||
|
args = [a for a in argv if not a.startswith('--')]
|
||||||
|
if len(args) != 3:
|
||||||
|
print(__doc__)
|
||||||
|
sys.exit(1)
|
||||||
|
w, h = make(args[0], args[1], args[2], size, '--nocrop' not in argv, rect)
|
||||||
|
print('wrote', args[1], '(%dx%d)' % (w, h))
|
||||||
@@ -0,0 +1,151 @@
|
|||||||
|
"""Freelancer UTF container (.3db, .cmp, .mat, .txm): read, edit and write.
|
||||||
|
|
||||||
|
A UTF file is a tree of named nodes; a directory node has children, a leaf node carries bytes.
|
||||||
|
Header (0x38 bytes): "UTF ", version 0x101, tree offset/size, node size 44, string table
|
||||||
|
offset/allocated/used, data offset. Node (44 bytes): next sibling offset, name offset, flags
|
||||||
|
(0x10 directory, 0x80 leaf), 0, child offset (directory) or data offset (leaf), allocated,
|
||||||
|
size, size again, three FILETIME words.
|
||||||
|
|
||||||
|
python tools/utf.py dump file.3db
|
||||||
|
"""
|
||||||
|
import struct
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
def __init__(self, name, data=None, children=None):
|
||||||
|
self.name = name
|
||||||
|
self.data = data # bytes for a leaf
|
||||||
|
self.children = children # list for a directory
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_dir(self):
|
||||||
|
return self.children is not None
|
||||||
|
|
||||||
|
def find(self, path):
|
||||||
|
"""The node at a '\\'-separated path below this one (case-insensitive), or None."""
|
||||||
|
node = self
|
||||||
|
for part in [p for p in path.replace('/', '\\').split('\\') if p]:
|
||||||
|
if not node.is_dir:
|
||||||
|
return None
|
||||||
|
nxt = None
|
||||||
|
for c in node.children:
|
||||||
|
if c.name.lower() == part.lower():
|
||||||
|
nxt = c
|
||||||
|
break
|
||||||
|
if nxt is None:
|
||||||
|
return None
|
||||||
|
node = nxt
|
||||||
|
return node
|
||||||
|
|
||||||
|
def walk(self, prefix=''):
|
||||||
|
path = prefix + '\\' + self.name if prefix else self.name
|
||||||
|
yield path, self
|
||||||
|
if self.is_dir:
|
||||||
|
for c in self.children:
|
||||||
|
yield from c.walk(path)
|
||||||
|
|
||||||
|
|
||||||
|
def read(path):
|
||||||
|
raw = open(path, 'rb').read()
|
||||||
|
sig, ver, tree_ofs, tree_size, _res, node_size, str_ofs, str_alloc, str_used, data_ofs = \
|
||||||
|
struct.unpack_from('<4sIIIIIIIII', raw, 0)
|
||||||
|
if sig != b'UTF ':
|
||||||
|
raise ValueError(path + ': not a UTF file')
|
||||||
|
strings = raw[str_ofs:str_ofs + str_alloc]
|
||||||
|
|
||||||
|
def name_at(o):
|
||||||
|
end = strings.index(b'\0', o)
|
||||||
|
return strings[o:end].decode('latin-1')
|
||||||
|
|
||||||
|
def node_at(o):
|
||||||
|
nxt, name_o, flags, _z, ptr, alloc, size, _size2 = struct.unpack_from('<8I', raw, tree_ofs + o)
|
||||||
|
name = name_at(name_o)
|
||||||
|
if flags & 0x10:
|
||||||
|
children = []
|
||||||
|
c = ptr
|
||||||
|
while True:
|
||||||
|
child, c_next = node_at(c)
|
||||||
|
children.append(child)
|
||||||
|
if c_next == 0:
|
||||||
|
break
|
||||||
|
c = c_next
|
||||||
|
return Node(name, children=children), nxt
|
||||||
|
return Node(name, data=raw[data_ofs + ptr:data_ofs + ptr + size]), nxt
|
||||||
|
|
||||||
|
root, _ = node_at(0)
|
||||||
|
return root
|
||||||
|
|
||||||
|
|
||||||
|
def write(path, root):
|
||||||
|
"""Writes the tree: nodes in depth-first order, names deduplicated, data 4-byte aligned."""
|
||||||
|
nodes = []
|
||||||
|
for _, n in root.walk():
|
||||||
|
nodes.append(n)
|
||||||
|
index = {id(n): i for i, n in enumerate(nodes)}
|
||||||
|
|
||||||
|
names = bytearray(b'\0')
|
||||||
|
name_ofs = {}
|
||||||
|
for n in nodes:
|
||||||
|
if n.name not in name_ofs:
|
||||||
|
name_ofs[n.name] = len(names)
|
||||||
|
names += n.name.encode('latin-1') + b'\0'
|
||||||
|
while len(names) % 4:
|
||||||
|
names += b'\0'
|
||||||
|
|
||||||
|
data = bytearray()
|
||||||
|
data_ofs = {}
|
||||||
|
for n in nodes:
|
||||||
|
if not n.is_dir:
|
||||||
|
data_ofs[id(n)] = len(data)
|
||||||
|
data += n.data
|
||||||
|
while len(data) % 4:
|
||||||
|
data += b'\0'
|
||||||
|
|
||||||
|
# the next sibling of each node
|
||||||
|
sibling = {}
|
||||||
|
for n in nodes:
|
||||||
|
if n.is_dir:
|
||||||
|
for a, b in zip(n.children, n.children[1:]):
|
||||||
|
sibling[id(a)] = b
|
||||||
|
|
||||||
|
node_size = 44
|
||||||
|
tree = bytearray()
|
||||||
|
for n in nodes:
|
||||||
|
nxt = sibling.get(id(n))
|
||||||
|
nxt_o = index[id(nxt)] * node_size if nxt is not None else 0
|
||||||
|
if n.is_dir:
|
||||||
|
child_o = index[id(n.children[0])] * node_size if n.children else 0
|
||||||
|
tree += struct.pack('<8I3I', nxt_o, name_ofs[n.name], 0x10, 0, child_o, 0, 0, 0, 0, 0, 0)
|
||||||
|
else:
|
||||||
|
size = len(n.data)
|
||||||
|
alloc = (size + 3) & ~3
|
||||||
|
tree += struct.pack('<8I3I', nxt_o, name_ofs[n.name], 0x80, 0, data_ofs[id(n)], alloc, size, size,
|
||||||
|
0, 0, 0)
|
||||||
|
|
||||||
|
header_size = 0x38
|
||||||
|
tree_ofs = header_size
|
||||||
|
str_ofs = tree_ofs + len(tree)
|
||||||
|
dat_ofs = str_ofs + len(names)
|
||||||
|
header = struct.pack('<4sIIIIIIIIIII', b'UTF ', 0x101, tree_ofs, len(tree), 0, node_size, str_ofs, len(names),
|
||||||
|
len(names), dat_ofs, 0, 0) + b'\0' * 8
|
||||||
|
open(path, 'wb').write(header + tree + names + data)
|
||||||
|
|
||||||
|
|
||||||
|
def dump(path):
|
||||||
|
root = read(path)
|
||||||
|
for p, n in root.walk():
|
||||||
|
if n.is_dir:
|
||||||
|
print(p + '\\')
|
||||||
|
else:
|
||||||
|
preview = n.data[:24].hex(' ')
|
||||||
|
print('%s [%d] %s' % (p, len(n.data), preview))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) >= 3 and sys.argv[1] == 'dump':
|
||||||
|
for f in sys.argv[2:]:
|
||||||
|
print('==', f)
|
||||||
|
dump(f)
|
||||||
|
else:
|
||||||
|
print(__doc__)
|
||||||