Added, Updated and Removed Mods; Removed Backups
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,111 @@
|
||||
[itm_campfire]:booster
|
||||
GroupControlSection = spawn_group
|
||||
discovery_dependency =
|
||||
$spawn = "food and drugs\antirad"
|
||||
$prefetch = 32
|
||||
;class = II_ANTIR
|
||||
kind = i_kit
|
||||
cform = skeleton
|
||||
visual = dynamics\equipments\sumka2.ogf ;dynamics\equipments\item_tent.ogf
|
||||
inv_weight = 3.68
|
||||
description = st_itms_campfire_descr
|
||||
inv_name = st_itms_campfire_name
|
||||
inv_name_short = st_itms_campfire_name
|
||||
icons_texture = ui\ui_campfire_placeable
|
||||
inv_grid_width = 2
|
||||
inv_grid_height = 1
|
||||
inv_grid_x = 0
|
||||
inv_grid_y = 0
|
||||
cost = 550
|
||||
eat_health = 0
|
||||
eat_satiety = 0
|
||||
eat_power = 0
|
||||
eat_radiation = 0
|
||||
eat_alcohol = 0
|
||||
wounds_heal_perc = 0
|
||||
animation_slot = 4
|
||||
remove_after_use = false
|
||||
hud = wpn_vodka_hud
|
||||
placeable_section = ph_campfiremod
|
||||
tier = 1
|
||||
|
||||
[itm_xcvb_1]:booster
|
||||
$spawn = "food and drugs\bread"
|
||||
visual = dynamics\devices\dev_bred\dev_bred.ogf
|
||||
kind = i_food
|
||||
description = st_bread_descr
|
||||
cost = 1
|
||||
inv_name = st_bread
|
||||
inv_name_short = st_bread
|
||||
inv_weight = 0.01
|
||||
icons_texture = ui\ui_campfire_placeable
|
||||
inv_grid_width = 1
|
||||
inv_grid_height = 1
|
||||
inv_grid_x = 1
|
||||
inv_grid_y = 1
|
||||
attach_angle_offset = -0.287979, 1.560923, 1.544060
|
||||
attach_position_offset = 0.096910, -0.013594, 0.107925
|
||||
attach_bone_name = bip01_r_hand
|
||||
auto_attach = false
|
||||
bone_name = bip01_r_hand
|
||||
position_offset = 0.0,0.0,0.0
|
||||
angle_offset = 1.570790,1.570790,3.92699
|
||||
eat_satiety = -0.225
|
||||
eat_sleepiness = 0.75
|
||||
eat_thirstiness = 2.0
|
||||
use_sound = interface\axe_wood_chop
|
||||
tier = 1
|
||||
|
||||
[itm_xcvb_2]:booster
|
||||
$spawn = "food and drugs\bread"
|
||||
visual = dynamics\devices\dev_bred\dev_bred.ogf
|
||||
kind = i_food
|
||||
description = st_bread_descr
|
||||
cost = 1
|
||||
inv_name = st_bread
|
||||
inv_name_short = st_bread
|
||||
inv_weight = 0.01
|
||||
icons_texture = ui\ui_campfire_placeable
|
||||
inv_grid_width = 1
|
||||
inv_grid_height = 1
|
||||
inv_grid_x = 1
|
||||
inv_grid_y = 1
|
||||
attach_angle_offset = -0.287979, 1.560923, 1.544060
|
||||
attach_position_offset = 0.096910, -0.013594, 0.107925
|
||||
attach_bone_name = bip01_r_hand
|
||||
auto_attach = false
|
||||
bone_name = bip01_r_hand
|
||||
position_offset = 0.0,0.0,0.0
|
||||
angle_offset = 1.570790,1.570790,3.92699
|
||||
eat_satiety = -0.15
|
||||
eat_sleepiness = 0.5
|
||||
eat_thirstiness = 1.32
|
||||
use_sound = interface\axe_wood_chop
|
||||
tier = 1
|
||||
|
||||
[itm_xcvb_3]:booster
|
||||
$spawn = "food and drugs\bread"
|
||||
visual = dynamics\devices\dev_bred\dev_bred.ogf
|
||||
kind = i_food
|
||||
description = st_bread_descr
|
||||
cost = 1
|
||||
inv_name = st_bread
|
||||
inv_name_short = st_bread
|
||||
inv_weight = 0.01
|
||||
icons_texture = ui\ui_campfire_placeable
|
||||
inv_grid_width = 1
|
||||
inv_grid_height = 1
|
||||
inv_grid_x = 1
|
||||
inv_grid_y = 1
|
||||
attach_angle_offset = -0.287979, 1.560923, 1.544060
|
||||
attach_position_offset = 0.096910, -0.013594, 0.107925
|
||||
attach_bone_name = bip01_r_hand
|
||||
auto_attach = false
|
||||
bone_name = bip01_r_hand
|
||||
position_offset = 0.0,0.0,0.0
|
||||
angle_offset = 1.570790,1.570790,3.92699
|
||||
eat_satiety = -0.113
|
||||
eat_sleepiness = 0.375
|
||||
eat_thirstiness = 0.99
|
||||
use_sound = interface\axe_wood_chop
|
||||
tier = 1
|
||||
@@ -0,0 +1,683 @@
|
||||
|
||||
;***************************************************************
|
||||
;* ÍÅ ÈÇÌÅÍßÒÜ!!!!!!!!!!!!!!! *
|
||||
;***************************************************************
|
||||
|
||||
[physic_object]
|
||||
GroupControlSection = spawn_group
|
||||
$spawn = "physics\object"
|
||||
$prefetch = 8
|
||||
class = O_PHYSIC ;Change to O_PHYS_S if you want to use se_item.se_physic
|
||||
remove_time = 60; after this time unbreaked removable bone will be removed
|
||||
script_binding = bind_physic_object.init
|
||||
|
||||
[physic_destroyable_object]
|
||||
GroupControlSection = spawn_group
|
||||
$spawn = "physics\destroyable_object"
|
||||
;$prefetch = 8
|
||||
class = P_DSTRBL ;Change to O_DSTR_S if you want to use se_item.se_physic script binding
|
||||
remove_time = 60; after this time unbreaked removable bone will be removed
|
||||
script_binding = bind_physic_object.init
|
||||
|
||||
|
||||
[physic_door]:physic_destroyable_object
|
||||
GroupControlSection = spawn_group
|
||||
$spawn = "physics\door"
|
||||
is_ai_obstacle = false
|
||||
|
||||
;*******************************************************************************
|
||||
;* ÄÀËÜØÅ ÌÎÆÍÎ ÌÅÍßÒÜ:-) *
|
||||
;*******************************************************************************
|
||||
|
||||
|
||||
;[phys_obj_test]:physic_object
|
||||
;$spawn = "dynamic_objects\test_object"
|
||||
;visual = dynamics\equipments\novice_suit
|
||||
;startup_animation =
|
||||
;fixed_bones =
|
||||
|
||||
;[phys_destroyable_obj_test]:physic_destroyable_object
|
||||
;$spawn = "dynamic_objects\test_destroyable_object"
|
||||
;visual = dynamics\equipments\novice_suit
|
||||
;startup_animation =
|
||||
;fixed_bones =
|
||||
|
||||
;*** scene_objects ***************************************************************
|
||||
[jup_b43_af_fuzz_kolobok]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b43_af_fuzz_kolobok"
|
||||
visual = dynamics\artefacts\af_fuzz_kolobok.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
|
||||
[jup_b43_af_mincer_meat]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b43_af_mincer_meat"
|
||||
visual = dynamics\artefacts\af_mincer_meat.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
|
||||
[jup_b41_af_oasis_heart]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b41_af_oasis_heart"
|
||||
visual = dynamics\artefacts\af_cristall_plant.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
|
||||
[jup_b41_af_half_artifact]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b41_half_artifact"
|
||||
visual = dynamics\artefacts\af_psi_field.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
|
||||
[jup_b32_ph_scanner]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b32_ph_scanner"
|
||||
visual = dynamics\equipments\quest\scanner_artefact.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[jup_b209_ph_scanner]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b209_ph_scanner"
|
||||
visual = dynamics\equipments\quest\scanner_anomaly.ogf
|
||||
custom_data = scripts\jupiter\jup_b209_scanner.ltx
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
story_id = jup_b209_ph_scanner
|
||||
|
||||
[jup_b207_depot_cover]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b207_depot_cover"
|
||||
visual = dynamics\fence\debris_01.ogf
|
||||
story_id = jup_b207_depot_cover_id
|
||||
|
||||
[pri_a28_actor_hideout]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\pri_a28_actor_hideout"
|
||||
visual = dynamics\fence\debris_01.ogf
|
||||
|
||||
[jup_b219_gate]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b219_gate"
|
||||
visual = dynamics\door\door_katakomb_big_4.ogf
|
||||
story_id = jup_b219_gate_id
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[pri_a25_explosive_charge]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\pri_a25_explosive_charge"
|
||||
visual = dynamics\equipments\quest\explosive_charge.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
story_id = pri_a25_explosive_charge_id
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[zat_b57_ph_gas]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\zat_b57_ph_gas"
|
||||
visual = dynamics\equipments\quest\balloon_poison_gas.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
story_id = zat_b57_ph_gas
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[pri_a28_earth_helli_1]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\pri_a28_earth_helli_1"
|
||||
visual = dynamics\vehicles\mi24\veh_mi24_u_02.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = korpus1
|
||||
story_id = pri_a28_earth_helli_1
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[pri_a28_earth_helli_2]:physic_object
|
||||
$spawn = "dynamic_objects\scene_objects\pri_a28_earth_helli_2"
|
||||
visual = dynamics\vehicles\mi24\veh_mi24_u_02.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = korpus1
|
||||
story_id = pri_a28_earth_helli_2
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[door_lab_x8]:physic_object
|
||||
$spawn = "physics\door_lab_x8"
|
||||
script_binding = bind_door_labx8.bind
|
||||
|
||||
[jup_b206_plant_ph]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\scene_objects\jup_b206_plant_ph"
|
||||
visual = dynamics\equipments\quest\anomaly_plant.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
story_id = jup_b206_plant_ph
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;*** armory_room ***************************************************************
|
||||
[shooting_target_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\armory_room\shooting_target_1"
|
||||
visual = dynamics\armory_room\shooting_target_1.ogf
|
||||
startup_animation = shooting_target_1_down
|
||||
fixed_bones = link
|
||||
;*******************************************************************************
|
||||
|
||||
;*** balon *********************************************************************
|
||||
|
||||
[balon_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\balon_01"
|
||||
visual = dynamics\balon\balon_01.ogf
|
||||
|
||||
[balon_02]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\balon_02"
|
||||
visual = dynamics\balon\balon_02.ogf
|
||||
|
||||
[balon_02link]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\balon_02link"
|
||||
visual = dynamics\balon\balon_02.ogf
|
||||
fixed_bones = bone01, bone02, bone03
|
||||
|
||||
[balon_02a]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\balon_02a"
|
||||
visual = dynamics\balon\balon_02a.ogf
|
||||
|
||||
[bidon]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\bidon"
|
||||
visual = dynamics\balon\bidon.ogf
|
||||
|
||||
[bochka_close_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\bochka_close_1"
|
||||
visual = dynamics\balon\bochka_close_1.ogf
|
||||
|
||||
[bochka_close_2]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\bochka_close_2"
|
||||
visual = dynamics\balon\bochka_close_2.ogf
|
||||
|
||||
[bochka_close_3]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\bochka_close_3"
|
||||
visual = dynamics\balon\bochka_close_3.ogf
|
||||
|
||||
[bochka_close_4]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\bochka_close_4"
|
||||
visual = dynamics\balon\bochka_close_4.ogf
|
||||
|
||||
[gaz_balon]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\balon\gaz_balon"
|
||||
visual = dynamics\balon\gaz_balon.ogf
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;*** box ***********************************************************************
|
||||
;*******************************************************************************
|
||||
|
||||
;*** el_tehnika ****************************************************************
|
||||
|
||||
[disel_generator]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\disel_generator"
|
||||
visual = dynamics\el_tehnika\disel_generator.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[krisagenerator]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\krisagenerator"
|
||||
visual = dynamics\el_tehnika\krisagenerator.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[ventilator_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\ventilator_01"
|
||||
visual = dynamics\el_tehnika\ventilator_01.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[ventilator_02]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\ventilator_02"
|
||||
visual = dynamics\el_tehnika\ventilator_02.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[ventilator_03]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\ventilator_03"
|
||||
visual = dynamics\el_tehnika\ventilator_03.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[ventilator_04]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\ventilator_04"
|
||||
visual = dynamics\el_tehnika\ventilator_04.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[ventilator_05]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\ventilator_05"
|
||||
visual = dynamics\el_tehnika\ventilator_05.ogf
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[speakerphone]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\speakerphone"
|
||||
visual = dynamics\el_tehnika\speakerphone.ogf
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
[notebook]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\notebook"
|
||||
visual = dynamics\el_tehnika\notebook.ogf
|
||||
|
||||
[priemnik_gorizont]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\priemnik_gorizont"
|
||||
visual = dynamics\el_tehnika\priemnik_gorizont.ogf
|
||||
|
||||
[rupor]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\rupor"
|
||||
visual = dynamics\el_tehnika\rupor.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[transiver]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\transiver"
|
||||
visual = dynamics\el_tehnika\transiver.ogf
|
||||
|
||||
[tv_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\tv_1"
|
||||
visual = dynamics\el_tehnika\tv_1.ogf
|
||||
|
||||
[table_lamp_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\table_lamp_01"
|
||||
visual = dynamics\el_tehnika\table_lamp_01.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[komp_monitor]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\komp_monitor"
|
||||
visual = dynamics\el_tehnika\komp_monitor.ogf
|
||||
|
||||
[komp_klava]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\komp_klava"
|
||||
visual = dynamics\el_tehnika\komp_klava.ogf
|
||||
|
||||
[komp_block]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\el_tehnika\komp_block"
|
||||
visual = dynamics\el_tehnika\komp_blok.ogf
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;*** fence *********************************************************************
|
||||
;*******************************************************************************
|
||||
|
||||
[debris_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\fence\debris_01"
|
||||
visual = dynamics\fence\debris_01.ogf
|
||||
|
||||
[wood_fence_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\fence\wood_fence_1"
|
||||
fixed_bones = link
|
||||
visual = dynamics\fence\wood_fence_1.ogf
|
||||
|
||||
[wood_fence_2]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\fence\wood_fence_2"
|
||||
fixed_bones = link
|
||||
visual = dynamics\fence\wood_fence_2.ogf
|
||||
|
||||
[wood_fence_3]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\fence\wood_fence_3"
|
||||
fixed_bones = link
|
||||
visual = dynamics\fence\wood_fence_3.ogf
|
||||
|
||||
[wood_fence_4]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\fence\wood_fence_4"
|
||||
fixed_bones = link
|
||||
visual = dynamics\fence\wood_fence_4.ogf
|
||||
|
||||
;*** workshop_room *************************************************************
|
||||
;*******************************************************************************
|
||||
[banka_kraski_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\banka_kraski_1"
|
||||
visual = dynamics\workshop_room\banka_kraski_1.ogf
|
||||
|
||||
[tiski]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\tiski"
|
||||
visual = dynamics\workshop_room\tiski.ogf
|
||||
|
||||
[kanistra_02]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\kanistra_02"
|
||||
visual = dynamics\workshop_room\kanistra_02.ogf
|
||||
|
||||
[vedro_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\vedro_01"
|
||||
visual = dynamics\workshop_room\vedro_01.ogf
|
||||
|
||||
[axe]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\axe"
|
||||
visual = dynamics\workshop_room\axe.ogf
|
||||
|
||||
[hammer]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\hammer"
|
||||
visual = dynamics\workshop_room\hammer.ogf
|
||||
|
||||
[hatch_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\hatch_01"
|
||||
visual = dynamics\workshop_room\hatch_01.ogf
|
||||
|
||||
[keyga]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\keyga"
|
||||
visual = dynamics\workshop_room\keyga.ogf
|
||||
|
||||
[lopata]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\lopata"
|
||||
visual = dynamics\workshop_room\lopata.ogf
|
||||
|
||||
[molot]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\molot"
|
||||
visual = dynamics\workshop_room\molot.ogf
|
||||
|
||||
[pick]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\pick"
|
||||
visual = dynamics\workshop_room\pick.ogf
|
||||
|
||||
[riffler]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\riffler"
|
||||
visual = dynamics\workshop_room\riffler.ogf
|
||||
|
||||
[saw]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\workshop_room\saw"
|
||||
visual = dynamics\workshop_room\saw.ogf
|
||||
|
||||
;***kitchen_room****************************************************************
|
||||
[bottle_3L]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\bottle_3L"
|
||||
visual = dynamics\kitchen_room\bottle_3l.ogf
|
||||
|
||||
[freezer]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\freezer"
|
||||
visual = dynamics\kitchen_room\freezer.ogf
|
||||
|
||||
[bludo]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\bludo"
|
||||
visual = dynamics\kitchen_room\kitchen_bludo.ogf
|
||||
|
||||
[kastrula]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\kastrula"
|
||||
visual = dynamics\kitchen_room\kitchen_kastrula.ogf
|
||||
|
||||
[kastrula_up]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\kastrula_up"
|
||||
visual = dynamics\kitchen_room\kitchen_kastrula_up.ogf
|
||||
|
||||
[krujka]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\krujka"
|
||||
visual = dynamics\kitchen_room\kitchen_krujka.ogf
|
||||
|
||||
[lojka]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\lojka"
|
||||
visual = dynamics\kitchen_room\kitchen_lojka.ogf
|
||||
|
||||
[miska]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\miska"
|
||||
visual = dynamics\kitchen_room\kitchen_miska.ogf
|
||||
|
||||
[tarelka1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\tarelka1"
|
||||
visual = dynamics\kitchen_room\kitchen_tarelka1.ogf
|
||||
|
||||
[tarelka2]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\tarelka2"
|
||||
visual = dynamics\kitchen_room\kitchen_tarelka2.ogf
|
||||
|
||||
[teapot_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\teapot_1"
|
||||
visual = dynamics\kitchen_room\teapot_1.ogf
|
||||
|
||||
[gaz_plita]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\gaz_plita"
|
||||
visual = dynamics\kitchen_room\gaz_plita.ogf
|
||||
|
||||
[gaz_plita_small]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\kitchen_room\gaz_plita_small"
|
||||
visual = dynamics\kitchen_room\gaz_plita_small.ogf
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;*** box ***********************************************************************
|
||||
[box_1a]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_1a"
|
||||
visual = dynamics\box\box_1a.ogf
|
||||
|
||||
[box_1b]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_1b"
|
||||
visual = dynamics\box\box_1b.ogf
|
||||
|
||||
[box_1c]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_1c"
|
||||
visual = dynamics\box\box_1c.ogf
|
||||
|
||||
[box_bottle_1]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_bottle_1"
|
||||
visual = dynamics\box\box_bottle_1.ogf
|
||||
|
||||
[box_metall_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_metall_01"
|
||||
visual = dynamics\box\box_metall_01.ogf
|
||||
|
||||
[box_wood_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_wood_01"
|
||||
visual = dynamics\box\box_wood_01.ogf
|
||||
|
||||
[box_wood_02]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_wood_02"
|
||||
visual = dynamics\box\box_wood_02.ogf
|
||||
|
||||
[box_paper]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\box\box_paper"
|
||||
visual = dynamics\box\box_paper.ogf
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;***medical_object**************************************************************
|
||||
[kolyaska_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\kolyaska_01"
|
||||
visual = dynamics\medical_object\kolyaska_01.ogf
|
||||
|
||||
[kolyaska_01_braked]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\kolyaska_01_braked"
|
||||
visual = dynamics\medical_object\kolyaska_01_braked.ogf
|
||||
|
||||
[kolyaska_wheel_01_braked]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\kolyaska_wheel_01_braked"
|
||||
visual = dynamics\medical_object\kolyaska_wheel_01_braked.ogf
|
||||
|
||||
[wheel_litter_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\wheel_litter_01"
|
||||
visual = dynamics\medical_object\wheel_litter_01.ogf
|
||||
|
||||
[wheel_litter_01_braked]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\wheel_litter_01_braked"
|
||||
visual = dynamics\medical_object\wheel_litter_01_braked.ogf
|
||||
|
||||
[med_stolik_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\medical_object\med_stolik_01"
|
||||
visual = dynamics\medical_object\med_stolik_01.ogf
|
||||
;*******************************************************************************
|
||||
|
||||
;*** firestation ***************************************************************
|
||||
[fire_vedro]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\firestation\fire_vedro"
|
||||
visual = dynamics\firestation\fire_vedro.ogf
|
||||
|
||||
[ognetushitel]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\firestation\ognetushitel"
|
||||
visual = dynamics\firestation\ognetushitel.ogf
|
||||
;*******************************************************************************
|
||||
|
||||
;*** stul **********************************************************************
|
||||
[stul_wood_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\stul_wood_01"
|
||||
visual = dynamics\stul\stul_wood_01.ogf
|
||||
|
||||
[child_bench]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\child_bench"
|
||||
visual = dynamics\stul\child_bench.ogf
|
||||
|
||||
[stul_child_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\stul_child_01"
|
||||
visual = dynamics\stul\stul_child_01.ogf
|
||||
|
||||
[stul_school_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\stul_school_01"
|
||||
visual = dynamics\stul\stul_school_01.ogf
|
||||
|
||||
[stul_school_01_br]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\stul_school_01_br"
|
||||
visual = dynamics\stul\stul_school_01_br.ogf
|
||||
|
||||
[taburet_village]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\taburet_village"
|
||||
visual = dynamics\stul\taburet_village.ogf
|
||||
|
||||
[taburet_wood_01]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\stul\taburet_wood_01"
|
||||
visual = dynamics\stul\taburet_wood_01.ogf
|
||||
|
||||
;*******************************************************************************
|
||||
|
||||
;*** museum weapons ************************************************************
|
||||
[museum_abakan]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_abakan"
|
||||
visual = dynamics\weapons\wpn_abakan\wpn_abakan.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_ak74]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_ak74"
|
||||
visual = dynamics\weapons\wpn_ak74\wpn_ak74.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_ak74u]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_ak74u"
|
||||
visual = dynamics\weapons\wpn_ak74u\wpn_ak74u.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_groza]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_groza"
|
||||
visual = dynamics\weapons\wpn_groza\wpn_groza.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_lr300]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_lr300"
|
||||
visual = dynamics\weapons\wpn_lr300\wpn_lr300.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_rg6]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_rg6"
|
||||
visual = dynamics\weapons\wpn_rg6\wpn_rg6.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_rpg7]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_rpg7"
|
||||
visual = dynamics\weapons\wpn_rpg7\wpn_rpg7.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_sig550]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_sig550"
|
||||
visual = dynamics\weapons\wpn_sig550\wpn_sig550.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_spas12]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_spas12"
|
||||
visual = dynamics\weapons\wpn_spas12\wpn_spas12.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_svd]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_svd"
|
||||
visual = dynamics\weapons\wpn_svd\wpn_svd.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_bm16]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_bm16"
|
||||
visual = dynamics\weapons\wpn_bm16\wpn_bm16.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_toz34]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_toz34"
|
||||
visual = dynamics\weapons\wpn_toz34\wpn_toz34.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_val]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_val"
|
||||
visual = dynamics\weapons\wpn_val\wpn_val.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_vintorez]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_vintorez"
|
||||
visual = dynamics\weapons\wpn_vintorez\wpn_vintorez.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_winchester1300]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_winchester1300"
|
||||
visual = dynamics\weapons\wpn_winchester1300\wpn_winchester1300.ogf
|
||||
fixed_bones = wpn_body
|
||||
|
||||
[museum_ammo_545x39_fmj]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_ammo_545x39_fmj"
|
||||
visual = dynamics\weapons\wpn_ammo\ammo_545x39_fmj.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[museum_ammo_12x70_buck]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_ammo_12x70_buck"
|
||||
visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[museum_ammo_762x54_7h14]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\museum_ammo_762x54_7h14"
|
||||
visual = dynamics\weapons\wpn_ammo\ammo_762x54_7h14.ogf
|
||||
fixed_bones = link
|
||||
;*******************************************************************************
|
||||
|
||||
[balloon_poison_gas]:physic_destroyable_object
|
||||
$spawn = "dynamic_objects\museum_weapons\balloon_poison_gas"
|
||||
visual = dynamics\equipments\quest\balloon_poison_gas.ogf
|
||||
fixed_bones = link
|
||||
|
||||
;*********************************************************************************
|
||||
|
||||
[ph_sleepbag]:physic_destroyable_object
|
||||
visual = dynamics\equipments\mattress02.ogf
|
||||
script_binding = bind_physic_object.init
|
||||
custom_data = scripts\ph_sleepbag.ltx
|
||||
;custom_data = models\objects\ignore_static.ltx
|
||||
;fixed_bones = bone01_(1),bone01_(2),bone01_(3),bone02_(1),bone02_(2),bone02_(3),bone03
|
||||
|
||||
[ph_tent]:physic_destroyable_object
|
||||
visual = dynamics\equipments\item_tent.ogf
|
||||
script_binding = bind_physic_object.init
|
||||
custom_data = scripts\ph_tent.ltx
|
||||
|
||||
[ph_sleepbag_npc]:physic_destroyable_object
|
||||
visual = dynamics\equipments\mattress02.ogf
|
||||
script_binding = bind_physic_object.init
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
fixed_bones = bone01_(1),bone01_(2),bone01_(3),bone02_(1),bone02_(2),bone02_(3),bone03
|
||||
|
||||
[artefact_monolit_ghost]:physic_destroyable_object
|
||||
$spawn = "dynamics\anomaly\artefact_monolit_ghost"
|
||||
visual = dynamics\anomaly\artefact_monolit_ghost.ogf
|
||||
story_id = artefact_monolit_ghost
|
||||
startup_animation = idle
|
||||
fixed_bones = link
|
||||
custom_data = models\objects\ignore_static.ltx
|
||||
|
||||
;************************************* HOLDER ENTITY OBJECT ****************************
|
||||
[holder_stul]
|
||||
$spawn = "holders\holder_stul"
|
||||
GroupControlSection = spawn_group
|
||||
cform = skeleton
|
||||
class = O_HLDR_E
|
||||
visual = dynamics\stul\stul_school_01.ogf
|
||||
|
||||
allow_weapon = true
|
||||
camera_pos = 0,1.5,0
|
||||
camera_angle = 0,0,0 ;0 to 3.14 (PI)
|
||||
exit_pos = 0,0,0
|
||||
lock_enter = false
|
||||
lock_exit = false
|
||||
use_action_hint = st_use_action_sit
|
||||
|
||||
;************************************* xcvb cringefires ****************************
|
||||
[ph_campfiremod]:physic_destroyable_object
|
||||
visual = dynamics\equipments\campfiremod.ogf
|
||||
script_binding = bind_physic_object.init
|
||||
custom_data = scripts\ph_campfiremod.ltx
|
||||
@@ -0,0 +1,8 @@
|
||||
[logic]
|
||||
active = ph_idle@open
|
||||
|
||||
[ph_idle@open]
|
||||
nonscript_usable = true
|
||||
|
||||
[collide]
|
||||
ignore_static
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
|
||||
<string id="st_itms_campfire_name">
|
||||
<text>Firewood</text>
|
||||
</string>
|
||||
<string id="st_itms_campfire_descr">
|
||||
<text>Although it is easy to find wood in the Zone, but high-quality firewood suitable for a campfire is a rarity. Despite of being rare it is very cheap, but also heavy. It can become an essential thing for hiking and raids. Helps to keep warm at night and gives the opportunity to cook food.
|
||||
</text>
|
||||
</string>
|
||||
|
||||
<string id="st_bad_surface">
|
||||
<text>Surface does not suit.</text>
|
||||
</string>
|
||||
|
||||
<string id="st_gather_wood">
|
||||
<text>Ñhop wood</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
|
||||
<!--
|
||||
MCM
|
||||
-->
|
||||
<string_table>
|
||||
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_title">
|
||||
<text>Campfires Placeable</text>
|
||||
</string>
|
||||
<string id="ui_mcm_menu_campfire_placeable">
|
||||
<text>Campfires Placeable</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_place_radius">
|
||||
<text>Fire installation radius</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_place_radius_desc">
|
||||
<text>The radius of the surface around the player, which should be more or less flat so that it is possible to set a campfire. \n
|
||||
\n Default: 3.0</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_dot_dist_diff">
|
||||
<text>Surface control</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_dot_dist_diff_desc">
|
||||
<text>Difference limit in distance between rays casted to surface, used to figure if surface is flat. Increase slider if you want to be able to place campfires on more uneven surfaces. \n
|
||||
\n Default: 0.4</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_transition_delete_items">
|
||||
<text>Delete placed campfires on level change</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_transition_delete_items_desc">
|
||||
<text>Removes placed campfires on every level transition. \n
|
||||
\n Default: On</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_delete_items">
|
||||
<text>DELETE NEW OBJECTS (Addon removal)</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_delete_items_desc">
|
||||
<text>To prevent save file corruption, this option will delete all new items added by this addon on next load. \n
|
||||
\n So, if you want to delete addon: \n
|
||||
\n 1) Enable this option; \n
|
||||
\n 2) Save, load, save again; \n
|
||||
\n 3) Quit game and disable addon.</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
|
||||
<string id="st_itms_campfire_name">
|
||||
<text>Дрова</text>
|
||||
</string>
|
||||
<string id="st_itms_campfire_descr">
|
||||
<text>Хотя в Зоне и легко найти древесину, высококачественные дрова, подходящие для костра - большая редкость. Несмотря на свою редкость, они очень дешевые, но так же тяжелые. Может стать незаменимой вещью для походов и рейдов. Помогает согреться ночью и дает возможность приготовить еду.
|
||||
</text>
|
||||
</string>
|
||||
|
||||
<string id="st_bad_surface">
|
||||
<text>Поверхность не подходит.</text>
|
||||
</string>
|
||||
|
||||
<string id="st_gather_wood">
|
||||
<text>Нарубить дров</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
|
||||
<!--
|
||||
MCM
|
||||
-->
|
||||
<string_table>
|
||||
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_title">
|
||||
<text>Размещаемые костры</text>
|
||||
</string>
|
||||
<string id="ui_mcm_menu_campfire_placeable">
|
||||
<text>Размещаемые костры</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_place_radius">
|
||||
<text>Радиус установки костра</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_place_radius_desc">
|
||||
<text>Радиус поверхности от игрока, который должен быть более менее ровным, чтобы была возможность установить костер. \n
|
||||
\n По умолчанию: 3.0</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_dot_dist_diff">
|
||||
<text>Контроль поверхности</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_dot_dist_diff_desc">
|
||||
<text>Предел разницы в расстоянии между лучами, направленными на поверхность, используется для определения того, плоская ли поверхность. Увеличьте ползунок, если вы хотите иметь возможность размещать костры на более неровных поверхностях. \n
|
||||
\n По умолчанию: 0.4</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_transition_delete_items">
|
||||
<text>Удаление размещенных костров при изменении уровня</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_transition_delete_items_desc">
|
||||
<text>Удаляет размещенные костры при каждом переходе уровня. \n
|
||||
\n По умолчанию: Вкл</text>
|
||||
</string>
|
||||
|
||||
<string id="ui_mcm_campfire_placeable_delete_items">
|
||||
<text>УДАЛЕНИЕ НОВЫХ ОБЪЕКТОВ (удаление аддона)</text>
|
||||
</string>
|
||||
<string id="ui_mcm_campfire_placeable_delete_items_desc">
|
||||
<text>Чтобы предотвратить повреждение файла сохранения, эта опция удалит все новые предметы, добавленные этим аддоном при следующей загрузке. \n
|
||||
\n Итак, если вы хотите удалить аддон: \n
|
||||
\n 1) Включите эту опцию; \n
|
||||
\n 2) Сохранитесь, загрузитесь и сохранитесь снова; \n
|
||||
\n 3) Выйдите из игры и отключите аддон.</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
||||
Binary file not shown.
@@ -0,0 +1,427 @@
|
||||
local ray_pos = {}
|
||||
--local se_campfires = {}
|
||||
local se_anoms = {}
|
||||
local prev_level = {}
|
||||
local chop_allowed = true
|
||||
|
||||
--[[
|
||||
local axes = {
|
||||
["wpn_axe"] = { degr = 0.15, item_to_use = "itm_xcvb_1", hours = 1, minutes = 30},
|
||||
["wpn_axe2"] = { degr = 0.1, item_to_use = "itm_xcvb_2", hours = 1, minutes = 0},
|
||||
["wpn_axe3"] = { degr = 0.05, item_to_use = "itm_xcvb_3", hours = 0, minutes = 45},
|
||||
}
|
||||
--]]
|
||||
|
||||
local axes = {
|
||||
["wpn_axe"] = { degr = 13, item_to_use = "itm_xcvb_1", minutes = 90},
|
||||
["wpn_axe2"] = { degr = 9, item_to_use = "itm_xcvb_2", minutes = 61},
|
||||
["wpn_axe3"] = { degr = 5, item_to_use = "itm_xcvb_3", minutes = 45},
|
||||
}
|
||||
|
||||
function save_state(m_data)
|
||||
-- m_data.se_campfires = se_campfires
|
||||
m_data.se_anoms = se_anoms
|
||||
m_data.prev_level = prev_level
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
-- se_campfires = m_data.se_campfires or {}
|
||||
se_anoms = m_data.se_anoms or {}
|
||||
prev_level = m_data.prev_level or {}
|
||||
end
|
||||
|
||||
function actor_on_first_update()
|
||||
if campfire_placeable_mcm.get_config("delete_items") then
|
||||
for i = 1, 65534 do
|
||||
local se_obj = alife_object(i)
|
||||
if se_obj and (se_obj:section_name() == "itm_campfire" or se_obj:section_name() == "ph_campfiremod" or se_anoms[se_obj.id]) then
|
||||
alife_release(se_obj)
|
||||
end
|
||||
end
|
||||
-- se_campfires = {}
|
||||
se_anoms = {}
|
||||
end
|
||||
|
||||
-- del obj on level change
|
||||
local curr_level = level.name()
|
||||
if (is_empty(prev_level)) then
|
||||
prev_level.level_name = curr_level
|
||||
printf("tbl is empty || .level_name is now: %s", prev_level.level_name)
|
||||
elseif (prev_level.level_name) then
|
||||
printf("tbl is not empty")
|
||||
if (prev_level.level_name ~= curr_level) and (campfire_placeable_mcm.get_config("transition_delete_items")) then
|
||||
printf(".level_name is not equal curr_level")
|
||||
-- del
|
||||
for i = 1, 65534 do
|
||||
local se_obj = alife_object(i)
|
||||
if se_obj and (se_obj:section_name() == "ph_campfiremod" or se_anoms[se_obj.id]) then
|
||||
alife_release(se_obj)
|
||||
printf("- Object deleted (id): %s", se_obj.id)
|
||||
end
|
||||
end
|
||||
se_anoms = {}
|
||||
prev_level.level_name = curr_level
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function ray_main(add_pos_x, add_pos_y, add_pos_z, dir)
|
||||
local pick = ray_pick()
|
||||
local pos = device().cam_pos
|
||||
pos.x = pos.x + add_pos_x
|
||||
pos.y = pos.y + add_pos_y
|
||||
pos.z = pos.z + add_pos_z
|
||||
|
||||
pick:set_position(pos)
|
||||
pick:set_direction(dir)
|
||||
pick:set_flags(2)
|
||||
pick:set_range(200)
|
||||
pick:query()
|
||||
local distance = pick:get_distance()
|
||||
|
||||
return distance
|
||||
end
|
||||
|
||||
function is_flat_surface()
|
||||
local radius = campfire_placeable_mcm.get_config("place_radius")
|
||||
local diff = campfire_placeable_mcm.get_config("dot_dist_diff")
|
||||
local dir = vector():set(0, -0.5, 0)
|
||||
ray_pos[1] = ray_main(0, 0, 0, dir)
|
||||
ray_pos[2] = ray_main(radius, 0, 0, dir)
|
||||
ray_pos[3] = ray_main(-radius, 0, 0, dir)
|
||||
ray_pos[4] = ray_main(0, 0, radius, dir)
|
||||
ray_pos[5] = ray_main(0, 0, -radius, dir)
|
||||
|
||||
-- printf("-----------------------------------")
|
||||
local cnt = 0
|
||||
for k, v in pairs(ray_pos) do
|
||||
-- printf("[%s] = %s", k, v)
|
||||
for i = 1, #ray_pos do
|
||||
if ray_pos[i] + diff < v or ray_pos[i] - diff > v then
|
||||
cnt = cnt + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
-- news_manager.send_tip(db.actor, string.format("surface comparison count: [ %s ]", (cnt)), 0, nil, 1500)
|
||||
|
||||
local front = ray_main(0, 0, 0, device().cam_dir) -- dist to obstacle infront
|
||||
if cnt < 3 and front > 3 then
|
||||
-- actor_menu.set_msg(1, strformat("Surface around is FLAT"))
|
||||
return true
|
||||
end
|
||||
-- actor_menu.set_msg(1, strformat("Surface is meh"))
|
||||
return false
|
||||
end
|
||||
|
||||
function prepare_campfire()
|
||||
local game_minutes = math.random(5, 10)
|
||||
level.add_pp_effector("fade_nine_sec.ppe", 855121, false)
|
||||
level.change_game_time(0, 0, game_minutes)
|
||||
CreateTimeEvent("placing_cf", "placing_cf", 2, place_campfire)
|
||||
|
||||
end
|
||||
|
||||
function place_campfire()
|
||||
-- local snd = sound_object("no_sound_yet\\feels_bad")
|
||||
-- snd:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
|
||||
|
||||
local function apply_force_to_campfire(obj_id)
|
||||
local game_obj = get_object_by_id(obj_id)
|
||||
if game_obj then
|
||||
game_obj:get_physics_shell():apply_force(0, 1, 0)
|
||||
CreateTimeEvent("spawn_anomaly_cf", "spawn_anomaly_cf", 1, spawn_anomaly_campfire, game_obj)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local pos = db.actor:position()
|
||||
local dir = db.actor:direction()
|
||||
pos = pos:add(dir:mul(2))
|
||||
local ph_sec = ini_sys:r_string_ex("itm_campfire", "placeable_section")
|
||||
local se_obj = alife_create(ph_sec or "ph_campfiremod", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
|
||||
-- se_campfires[se_obj.id] = true
|
||||
|
||||
CreateTimeEvent("apply_force_to_cf", "apply_force_to_cf", 0.5, apply_force_to_campfire, se_obj.id)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function spawn_anomaly_campfire(obj)
|
||||
local pos = obj:position()
|
||||
local new_pos = vector():set(pos.x - 0.05, pos.y + 0.15, pos.z + 0.05)
|
||||
local se_obj = alife_create("campfire", new_pos, obj:level_vertex_id(), obj:game_vertex_id())
|
||||
se_anoms[se_obj.id] = true
|
||||
|
||||
local data = utils_stpk.get_anom_zone_data(se_obj)
|
||||
if not (data) then return end
|
||||
data.shapes[1] = {}
|
||||
data.shapes[1].shtype = 0
|
||||
data.shapes[1].offset = vector():set(0, 0, 0)
|
||||
data.shapes[1].center = vector():set(0, 0, 0)
|
||||
data.shapes[1].radius = 0.85
|
||||
utils_stpk.set_anom_zone_data(data, se_obj)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function actor_on_item_use(obj)
|
||||
local sec = obj:section()
|
||||
if (sec == "itm_campfire") then
|
||||
if not (is_flat_surface()) then
|
||||
news_manager.send_tip(db.actor, game.translate_string("st_bad_surface"), 0, nil, 1500)
|
||||
else
|
||||
alife_release(obj)
|
||||
prepare_campfire()
|
||||
hide_hud_inventory()
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-------------------------- gather wood xd -------------------------
|
||||
function allowing_chop()
|
||||
chop_allowed = true
|
||||
return true
|
||||
end
|
||||
|
||||
function gather_wood(obj)
|
||||
chop_allowed = false
|
||||
CreateTimeEvent("allowing_chop_again", "allowing_chop_again", 7, allowing_chop)
|
||||
|
||||
local sec = obj:section()
|
||||
|
||||
-- spawn fake item in inv and eat it
|
||||
local itm_to_spawn = axes[sec].item_to_use
|
||||
alife_create_item(itm_to_spawn, db.actor)
|
||||
|
||||
local function delay_item_use()
|
||||
local itm_obj
|
||||
db.actor:iterate_inventory( function(owner, item)
|
||||
if item:section() == itm_to_spawn then
|
||||
itm_obj = item
|
||||
end
|
||||
end)
|
||||
|
||||
db.actor:eat(itm_obj)
|
||||
return true
|
||||
end
|
||||
|
||||
CreateTimeEvent("eat_xcvb", "eat_xcvb", 0.25, delay_item_use) -- item spawn has small delay apparently ;[
|
||||
|
||||
-- degradate axe
|
||||
local cond = obj:condition()
|
||||
local degr_for = axes[sec].degr
|
||||
degr_for = (math.random(degr_for - 2, degr_for + 3)) / 100
|
||||
printf("%s degraded for: %s %", sec, degr_for * 100)
|
||||
if cond > degr_for then
|
||||
obj:set_condition(cond - degr_for)
|
||||
else
|
||||
obj:set_condition(0.01)
|
||||
end
|
||||
|
||||
-- change time + fade out + play sound
|
||||
local minutes = axes[sec].minutes
|
||||
minutes = math.random(minutes - 15, minutes + 15)
|
||||
hide_hud_inventory()
|
||||
level.change_game_time(0, 0, minutes)
|
||||
printf("Time spent on chopping wood: %s Minutes", minutes)
|
||||
level.add_pp_effector("fade_nine_sec.ppe", 8551213, false)
|
||||
|
||||
-- spawn campfire in inv
|
||||
alife_create_item("itm_campfire", db.actor)
|
||||
|
||||
end
|
||||
|
||||
function menu_gather_wood(obj)
|
||||
local p = obj:parent()
|
||||
if not (p and p:id() == AC_ID) then return end
|
||||
|
||||
return game.translate_string("st_gather_wood")
|
||||
end
|
||||
|
||||
function func_gather_wood(obj)
|
||||
local p = obj:parent()
|
||||
if not (p and p:id() == AC_ID) then return end
|
||||
|
||||
gather_wood(obj)
|
||||
|
||||
end
|
||||
|
||||
NameCustom = ui_inventory.UIInventory.Name_Custom
|
||||
|
||||
function ui_inventory.UIInventory:Name_Custom(obj, bag, temp, i)
|
||||
local active_item = db.actor:active_item()
|
||||
local active_id = active_item and active_item:id()
|
||||
obj = self:CheckItem(obj,"Name_Custom " .. i)
|
||||
if i == 9 and axes[obj:section()] and chop_allowed and (not (level_weathers.bLevelUnderground)) then
|
||||
if obj:condition() >= 0.05 then
|
||||
return menu_gather_wood(obj)
|
||||
else
|
||||
return NameCustom(self, obj, bag, temp, i)
|
||||
end
|
||||
else
|
||||
return NameCustom(self, obj, bag, temp, i)
|
||||
end
|
||||
end
|
||||
|
||||
ActionCustom = ui_inventory.UIInventory.Action_Custom
|
||||
function ui_inventory.UIInventory:Action_Custom(obj, bag, temp, i)
|
||||
local active_item = db.actor:active_item()
|
||||
local active_id = active_item and active_item:id()
|
||||
obj = self:CheckItem(obj,"Action_Custom " .. i)
|
||||
if i == 9 and axes[obj:section()] and chop_allowed and (not (level_weathers.bLevelUnderground)) then
|
||||
if obj:condition() >= 0.05 then
|
||||
func_gather_wood(obj)
|
||||
else
|
||||
ActionCustom(self, obj, bag, temp, i)
|
||||
end
|
||||
else
|
||||
ActionCustom(self, obj, bag, temp, i)
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------- trader artiinject -------------------------
|
||||
local trade_table = {
|
||||
|
||||
["bandit"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["dolg"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["ecolog"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["freedom"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["killer"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["army"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["monolith"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["greh"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["stalker"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["csky"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["isg"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
["renegade"] = {
|
||||
[1] = {
|
||||
["itm_campfire"] = 3,
|
||||
},
|
||||
[2] = {
|
||||
["itm_campfire"] = 4,
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
function campfires_stock(npc)
|
||||
|
||||
local is_trader = trader_autoinject.get_trader_type(npc) == trader_autoinject.SUPPLIER
|
||||
if not is_trader then return end
|
||||
|
||||
local community = npc:character_community() or "stalker"
|
||||
local trader_table = trade_table[community] or trade_table["stalker"]
|
||||
local supply_level = clamp(trader_autoinject.supply_level(npc, true) or 1, 1, 2)
|
||||
|
||||
if trader_table[supply_level] then
|
||||
trader_autoinject.spawn_items(npc, trader_table[supply_level], true)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
TraderAuto = trader_autoinject.update
|
||||
|
||||
function trader_autoinject.update(npc)
|
||||
TraderAuto(npc)
|
||||
campfires_stock(npc)
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("save_state", save_state)
|
||||
RegisterScriptCallback("load_state", load_state)
|
||||
RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
|
||||
RegisterScriptCallback("actor_on_item_use", actor_on_item_use)
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
-- If you don't use MCM, change your defaults from here.
|
||||
local defaults = {
|
||||
["place_radius"] = 3,
|
||||
["dot_dist_diff"] = 0.4,
|
||||
["transition_delete_items"] = true,
|
||||
["delete_items"] = false,
|
||||
}
|
||||
|
||||
function get_config(key)
|
||||
if ui_mcm then return ui_mcm.get("campfire_placeable/"..key) else return defaults[key] end
|
||||
end
|
||||
|
||||
function on_mcm_load()
|
||||
op = { id= "campfire_placeable",sh=true ,gr={
|
||||
{ id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_campfire_placeable_title",size= {512,50},spacing= 20 },
|
||||
{id= "divider", type = "line" },
|
||||
{id = "place_radius", type = "track", val = 2, min=0.5,max=5,step=0.25, def = 3},
|
||||
{id = "dot_dist_diff", type = "track", val = 2, min=0.1,max=5,step=0.05, def = 0.4},
|
||||
{id = "transition_delete_items", type = "check", val = 1, def = true},
|
||||
{id= "divider", type = "line" },
|
||||
{id= "divider", type = "line" },
|
||||
{id = "delete_items", type = "check", val = 1, def = false},
|
||||
}
|
||||
}
|
||||
|
||||
return op
|
||||
end
|
||||
@@ -0,0 +1,197 @@
|
||||
--[[
|
||||
Wrapper class to let you autoinject things via monkey patch to all traders, respecting the restock time.
|
||||
How to use: Monkey patch the update function here in your script.
|
||||
ex:
|
||||
TraderAuto = trader_autoinject.update
|
||||
function trader_autoinject.update(npc)
|
||||
TraderAuto(npc)
|
||||
add_custom_crap(npc) -- you define this function ok
|
||||
end
|
||||
|
||||
Some functions provided below for convenience.
|
||||
Note: If you want to iterate NPC inventory to check for items, fire a time event to allow the items to register on new game.
|
||||
--]] --
|
||||
|
||||
|
||||
find = string.find
|
||||
local function t2c(t)
|
||||
if not t then return nil end
|
||||
local ct = game.CTime()
|
||||
ct:set(t.Y,t.M,t.D,t.h,t.m,t.s,t.ms)
|
||||
return ct
|
||||
end
|
||||
|
||||
local function c2t(ct)
|
||||
if not ct then return nil end
|
||||
-- printf('%s, %s',ct,type(ct))
|
||||
local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
|
||||
Y, M, D, h, m, s, ms = ct:get(Y, M, D, h, m, s, ms)
|
||||
return { Y=Y, M=M, D=D, h=h, m=m, s=s, ms=ms }
|
||||
end
|
||||
|
||||
TraderUpdate = trade_manager.update
|
||||
function trade_manager.update(npc, force_refresh)
|
||||
local id = npc:id()
|
||||
|
||||
if not npc:alive() then
|
||||
return default
|
||||
end
|
||||
local reup_time = trade_manager.get_trade_profile(id, "resupply_time")
|
||||
TraderUpdate(npc, force_refresh)
|
||||
local restock_time = game_difficulties.get_eco_factor("restock") or 24
|
||||
if force_refresh then restock_time = 0 end
|
||||
if reup_time and game.get_game_time():diffSec(t2c(reup_time)) < (restock_time * 3600) then
|
||||
-- print_dbg("Not time to resupply yet!")
|
||||
return
|
||||
end
|
||||
disable_info("sleep_active")
|
||||
CreateTimeEvent("custom_update"..npc:id(), "custom_resupply"..npc:id(), 0.1, timed_update, npc)
|
||||
end
|
||||
|
||||
function timed_update(npc)
|
||||
update(npc)
|
||||
return true
|
||||
end
|
||||
|
||||
-- monkeypatch me
|
||||
function update(npc)
|
||||
end
|
||||
|
||||
-- util functions to help with monkey patching
|
||||
|
||||
function get_faction_goodwill(faction)
|
||||
end
|
||||
|
||||
COMPANION = 0 -- companions got special trade logic, this is just to catch errors
|
||||
MECHANIC = 1 -- mechanics/techs
|
||||
BARMAN = 2 -- exclusive food suppliers like Spirit
|
||||
MEDIC = 3 -- medics
|
||||
SUPPLIER = 4 -- everyone else that sells crap
|
||||
-- return trader type as int, or nil if error
|
||||
function get_trader_type(npc)
|
||||
local st = db.storage[npc:id()]
|
||||
if not st then return -1 end
|
||||
local trader = false
|
||||
if npc:character_community() == "trader" or npc:clsid() == clsid.script_trader or npc:clsid() == clsid.trader then
|
||||
trader = true
|
||||
end
|
||||
if find(npc:section(),"trader") then
|
||||
trader = true
|
||||
end
|
||||
local cini = st.ini
|
||||
local logic = st.section_logic
|
||||
if not logic and not trader then return -1 end
|
||||
local trade_logic = cini and cini:r_string_ex(logic, "trade")
|
||||
if not trade_logic then return -1 end
|
||||
if find(trade_logic, "companion") then
|
||||
return COMPANION
|
||||
elseif find(trade_logic, "trade_generic_mechanic") then
|
||||
return MECHANIC
|
||||
elseif find(trade_logic, "trade_generic_barman") then
|
||||
return BARMAN
|
||||
elseif find(trade_logic, "trade_generic_medic") then
|
||||
return MEDIC
|
||||
else
|
||||
return SUPPLIER
|
||||
end
|
||||
end
|
||||
|
||||
-- return supply level of npc, like suppy_1, supply_2, etc
|
||||
-- as_number removes the supply_ prefix and only returns as int
|
||||
function supply_level(npc, as_number)
|
||||
|
||||
local profile = trade_manager.get_trade_profile(npc:id(), "cfg_ltx")
|
||||
-- printf("Profile is %s", profile)
|
||||
local config = trade_manager.get_trade_cfg(profile)
|
||||
if not config then return end
|
||||
local str = config:r_string_ex("trader", "buy_supplies")
|
||||
if not (str) then
|
||||
return -- no buy_supplies this is normal
|
||||
end
|
||||
|
||||
local condlist = xr_logic.parse_condlist(npc, "trader", "buy_supplies", str)
|
||||
str = condlist and xr_logic.pick_section_from_condlist(db.actor, npc, condlist)
|
||||
if as_number then
|
||||
local num = str_explode(str, "_")
|
||||
return tonumber(num[2])
|
||||
else
|
||||
return str
|
||||
end
|
||||
end
|
||||
|
||||
-- collapse several tables into one table, the way sections work in ltx files
|
||||
-- tables should be in section -> amount format
|
||||
-- precedence goes up to last table, meaning whatever is in the last table will be the last changes applied
|
||||
function merge_tables(tables)
|
||||
local final_table = {}
|
||||
if #tables > 0 then
|
||||
copy_table(final_table, tables[1])
|
||||
if #tables > 1 then
|
||||
for i=2, #tables do
|
||||
for k,v in pairs(tables[i]) do
|
||||
final_table[k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return final_table
|
||||
end
|
||||
|
||||
|
||||
local furniture = {
|
||||
["esc_m_trader"] = true,
|
||||
["red_m_lesnik"] = true
|
||||
}
|
||||
|
||||
local blacklisted_comms = {
|
||||
["trader"] = true,
|
||||
["monster"] = true
|
||||
}
|
||||
|
||||
-- used to get the real community of the NPC by checking spawn id
|
||||
-- author: HarukaSai
|
||||
function get_real_community(npc, default)
|
||||
|
||||
if furniture[npc:name()] then
|
||||
return "stalker"
|
||||
end
|
||||
local community = character_community(npc)
|
||||
if not blacklisted_comms[community] then
|
||||
return community
|
||||
end
|
||||
local squad_community = get_object_squad(npc):get_squad_community()
|
||||
if not blacklisted_comms[squad_community] then
|
||||
return squad_community
|
||||
else
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- to_spawn should be table of sections to amount
|
||||
-- if check_existing is true, only spawns up to that amount in trader inventory. else arbitrarily spawns
|
||||
|
||||
function spawn_items(npc, to_spawn, check_existing)
|
||||
local npc_name = npc:name()
|
||||
local alive_or_furniture = xr_conditions.is_alive(db.actor, npc) or furniture[npc_name]
|
||||
if not alive_or_furniture then return end
|
||||
local supply_table = {}
|
||||
copy_table(supply_table, to_spawn)
|
||||
if check_existing then
|
||||
local function itr_inv(temp, item)
|
||||
if supply_table[item:section()] and supply_table[item:section()] > 0 then
|
||||
-- printf("Found 1 of %s", item:section())
|
||||
supply_table[item:section()] = supply_table[item:section()] - 1
|
||||
end
|
||||
end
|
||||
npc:iterate_inventory(itr_inv)
|
||||
end
|
||||
|
||||
for k,v in pairs(supply_table) do
|
||||
-- printf("Creating %s of %s", v, k)
|
||||
for i=1, v do
|
||||
-- printf("Created %s", k)
|
||||
alife_create_item(k, npc)
|
||||
end
|
||||
end
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
[General]
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.4.4.0
|
||||
newestVersion=
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Campfires_placeable_0.22.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-04-05T02:49:55Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
||||
Reference in New Issue
Block a user