Skip to content

Gameplay

PRXPHET edited this page May 27, 2025 · 1 revision

New parameters for artifacts

  • Increase of the carrying weight. Adjustable in the same way as for armor, by parameters:
additional_inventory_weight  = 11
additional_inventory_weight2 = 11

To display the extra weight in the artifact properties, you need to add to af_params.xml, af_params_16.xml something like:

<static_additional_inventory_weight width="257" height="20" complex_mode="1">
	<texture>ui_inv_icon_additional_inventory_weight</texture>
	<text font="letterica16" x="17" y="0"/>
</static_additional_inventory_weight>

<static_additional_inventory_weight2 width="257" height="20" complex_mode="1">
	<texture>ui_inv_icon_additional_inventory_weight2</texture>
	<text font="letterica16" x="17" y="0"/>
</static_additional_inventory_weight2>

If additional_inventory_weight and additional_inventory_weight2 are the same, only additional_inventory_weight2 is displayed. As a reminder, the engine has confused the meaning of additional_inventory_weight and additional_inventory_weight2. additional_inventory_weight is the weight before which you can still move, and additional_inventory_weight2 is the maximum weight carried, after which overloading begins and other coefficients are applied to the endurance calculation. I.e. additional_inventory_weight must always be equal to or greater than additional_inventory_weight2 and both must be specified.

  • Satiety. Enabled by the af_satiety option in the [features] section. Enables the satiety_restore_speed processing in the artifact section.

  • Psi Health. Enabled by the af_psy_health option in the [features] section. Enables psy_health_restore_speed processing in the artifact section. When enabling it, you must remember to add a static to display it in af_params.xml, af_params_16.xml:

<static_psy_health_restore_speed width="257" height="20" complex_mode="1">
	<texture>ui_inv_icon_telepatic_immunity</texture>
	<text font="letterica16" x="17" y="0"/>
</static_psy_health_restore_speed>
  • The objects_radioactive option in the [features] section enables inventory radioactivity and psi. That is, all items in inventory that have positive radiation_restore_speed or negative psy_health_restore_speed (if af_psy_health is enabled) increase radiation or decrease psi health.

  • The af_zero_condition option in the [features] section limits artifact processing so that only artifacts with a condition greater than zero are processed. Completely corrupted artifacts are ignored.

  • The af_radiation_immunity_mod option in the [features] section enables a mode in which artifacts with radiation_immunity > 1 will appropriately amplify radiation from other artifacts. I.e. red 20% will amplify the radiation of other artifacts by 20%.

  • Added a callback for the update_artefacts_on_belt actor, which is called immediately after processing artifacts on the belt and is passed the number of seconds that were used when accounting for artifacts.

  • Added get_actor_obj():UpdateArtefactsOnBelt() method, which can be called from the sleep loop to take into account the effect of artifacts on the belt. The same call will result in a call to the above callback.

  • Added the ability to create custom keyboard actions via config with the ability to customize the key via menu. Example:

[custom_keyboard_action]
dlg_quickaction = kDLG_QUICKACTION

in config\ui\ui_keybinding.xml:

<command id="kb_dlg_quickaction" exe="dlg_quickaction" />

in config\ui\carbody_new_16.xml:

<take_all_btn x="765" y="727" width="157" height="48" highlight_text="1" accel_action="dlg_quickaction">
...
</take_all_btn>

But due to the fact that the engine binds all buttons without context, it is not so convenient. You can't, for example, in a dialog bind the same button as for running in the game.

  • Added outfit_af option. It enables the mode when *_restore_speed properties start to be processed for armor, like artifacts. In order for suits to work with health regeneration properties and so on.
  • Collision with corpses can be enabled in the features section with the corpses_collision parameter. Take into account that if it is enabled, the mobs will be dumb, stacked on the carcass with mutants, since they do not know how to bypass obstacles, as well as the mountain of corpses will lag.
  • Added the gd_master_only parameter to the features section to disable difficulty level changes. There will be a single difficulty level, the default one, i.e. master.
  • Fixed a bug where you could pick up an item without seeing it, i.e. from a closed closet, for example. Enabled by the option pickup_check_overlaped, just in case, so that you can keep the standard behavior of PM, if you need it.

Thirst

Essentially thirst is another parameter and resource for the actor on par with hunger. A rough adaptation plan for the mod:

  • Enable the feature in the main engine config:
[features]
actor_thirst = true
  • Add into actor.ltx:
[actor_condition]
thirst_v = 0.01 ;thirst increase rate
thirst_power_v = 0.2 ;rate of power loss when thirst level is lower than thirst_light_limit
thirst_health_v = 0.01 ;rate of recovery or loss of health depending on thirst
thirst_light_limit	= 0.5 
thirst_critical_limit	= 0.3
  • Add into maingame.xml (and maingame_16.xml):
<thirst_static x="000" y="000" width="0" height="0" stretch="1">
	<texture></texture>
</thirst_static>
  • Add into system.ltx:
[main_ingame_indicators_thresholds]
thirst  = 0.5,0.6,0.7,0.8,0.9
[tutorial_conditions_thresholds]
thirst  = 0.6
  • Add into _g.script:
function on_actor_thirst() --Thirst tutorial
end
  • Also, add into one or few eatable items in configs:
eat_thirst = 1 ;Thirst quenching value
  • For artifacts and costumes thirst_restore_speed processing also has been added.

You can turn thirst on/off at any time. Saves will be compatible. When disabling simply will not be processed action on the actor and indicators on the hood, but all scripting methods and item parameters will be available.

Support for CoP-style detectors

Simple and medium detectors fully work as in CoP, for elite detector works CoP-style UI output on the screen with settings in ui_detector_artefact.xml. Also left compatibility with OGSE-style system when the elite detector screen is assigned shader models_detector_3, and the display of artifacts/anomalies/quest stuff is controlled by scripts. The limit of shown objects there has been raised from 8 to 24.

  • Old class of detectors without hood has been renamed to CCustomDetectorSHOC, they will work as before, no changes.

  • Added ability to detect all artifacts by adding to detector config:

af_class_all = true
af_sound_all_ = detectors\art_beep1
af_freq_all = 0.05, 2
  • Added get_actor_obj():IsDetectorActive() check for scripts so you can check if the detector is in the actor's hands at the moment.

  • Artifact parameters af_rank, can_be_controlled, det_show_particles, det_hide_particles, particles_bone, det_show_snd, det_hide_snd from CoP were added to the config to make artifacts invisible without detector.

  • The detector can be held in the place with a bolt, knife or object to which the first slot (pistol slot) is assigned.

Slots

Added recovery of the active slot after loading a save.

  • Equal slots. Items are allowed to be in any slots from the list of slots specified in the “slot” parameter, rather than in a single slot specified in the “slot” parameter. For example, like this:
slot = 1,2

Along with this, new options have been added to the [features] section in the configs:

[features]
; The first and second slots of any weapon will be forced equal.
; Made for convenience - make slots in inventory equal in size, enable this mode - and that's it.
; No need to write slot = 1,2 in dozens of weapon configs.
forcibly_equivalent_slots = true

; Show extended context menu for equal slots.
; Adds move items to each available slot.
slots_extend_menu = true
  • You can disable mouse wheel switching between slots with the g_mouse_wheel_switch_slot console command. If disabled, switching fire modes with the mouse wheel will work. Switching is not cyclic. I.e. when you reach the single mode in one direction and the automatic mode in the other, you will not be able to switch to another mode. Thus, you can quickly switch to single or automatic mode just by turning the wheel hard.
  • Slots for knife, binoculars, helmet, bioradar, spotting scope, artifact detector, flashlight are included in the features section by the ogse_new_slots parameter.
  • The old option to display suit slot in inventory can be enabled by the old_outfit_slot_style option in the features section.
  • Added ruck_flag_preferred option to allow for all items to react to the FRuckDefault flag. If the flag is set, the loot will be picked up in the backpack instead of the default slot. To make it work properly, you need to add
default_to_ruck = false

in the [bolt] section at least. Otherwise you won't be able to get and throw the bolt. And for reliability, also in [device_pda], [device_torch] and in the grenade section.

  • Added the ability to change the visibility of slots through the config section [inventory], parameters slot_visible_1-12 (needed to activate the slot, by default in the engine part of the slots are made not activatable). For example:
[inventory]
slot_visible_10 = true ;now you can activate the 10th slot.
  • Added the ability to accelerate switching to some slots. Example configuration:
[inventory]
slot_switch_fast_1 = true ;when switching to the first slot from another slot, the current weapon will be hidden immediately, with no retraction animation.
  • It is now possible to specify the number of available artifact slots for a suit by the artefact_count parameter in the suit config. If there is no suit, the new min_belt parameter from the [inventory] section is used. And if the costume does not have the number of artifacts prescribed and/or min_belt is not prescribed in the inventory config, then the old parameter max_belt is used, in which the maximum number of slots for artifacts must always be prescribed. The seventh square from the texture ui_grid.dds is used for locked slots for artes. It is possible to change the number of slots for artes at any time without the requirement to start a new game, previously it was impossible. **Please note that for this system to work properly, items placed on the belt must occupy exactly one cell (inv_grid_width = 1, inv_grid_height = 1), otherwise there will be crashes!

Mutants

  • Added support for almost all monsters from CoP with all their attacks, animations, auras, effectors, etc.
  • Mutant auras have been redesigned a bit compared to CoP:

The way these auras are detected has been redone. In CoP, the mutants around were taken from the DA. They were not displayed, but they were available in the list. The solution is bad, because the detection radius of the DA is configurable and it is one. That is, if someone wants that the PDA would show stalkers only at a distance of 10 meters, then in addition, he will get that all the aura mutants will not act at a distance of no more than 10 meters. In our version uses its own Feel::Touch, and the radius for it is taken as the maximum range of aura of all mutants online.

Corrected *_enable_for_dead handling. This parameter specifies whether to continue using this aura on a dead mob. For radiation_* it is by default true. Except that in CoP, when updating the state of the actor, this parameter is not taken into account. So the effector will be activated, but the hit will not be inflicted, because there are considered only the living. In our variant, the hit will be applied.

  • Phantom section for Psi-dog can be overridden in its config by phantom_section parameter.
  • New options added to the controller's config:
tube_disable_camera_effect = true ; allows you to disable the actor's camera movement during an attack
tube_disable_actor_block = true ; allows you to disable actor control blocking during an attack
  • The corpse of a fire poltergeist can be made visible by specifying its section:
dead_always_visible = true
  • Taught poltergeists, burrs and pseudo-giants not to touch objects with bound bones, as well as objects that have the following in their section.
ph_heavy = true
;or
quest_item = true
  • Added the HugeKick_Hit_Jumping_Actor option to the pseudo-giant section. If enabled, the actor's jumping will be ignored and a hit will be applied.
  • Added the ability for poltergeists to have different immunities in visible and invisible states. In the invisible state the poltergeist uses immunities_sect and in the visible state it uses visible_immunities_sect. If visible_immunities_sect is not present, then everything is unchanged. Example Usage
  • The Spawn_Inventory_Item_Section features have been extended. This parameter can now contain a comma-separated list of the form:
Spawn_Inventory_Item_Section = mutant_krovosos_red_jaw, 0.05, mutant_krovososos_jaw, 0.2
; i.e. if the random is less than 0.05, the mutant will have mutant_krovosos_red_jaw. If not, a new random number is generated and the next part is checked and so on until the list runs out or something is spun. If there is only one item in this list, everything works the same old way and its probability is taken from Spawn_Inventory_Item_Probability.
; Spawn_Inventory_Item_Probability is now an optional parameter and its default value is 0. This is so that it can be omitted if there is a list with probabilities in Spawn_Inventory_Item_Section.

AI

  • Fixed a bug where you could throw a weapon at a NPS and it would immediately go to his inventory. The thing is that there were two independent parts. One part is the engine scheme, which leads a non-person to the position of the item. The second part is is picking up anything that's within the radius of the person. Now the second part will be disabled if the first part is disabled. If anyone doesn't know, the engine scheme of picking up weapons for NPCs is disabled like this:
local manager = npc:motivation_action_manager()
manager:remove_evaluator( stalker_ids.property_items )
manager:add_evaluator( stalker_ids.property_items, property_evaluator_const( false ) )
  • New parameter for stalkers is max_hear_dist, like mutants. The default value is -1, i.e. it is not used. If the value is positive, all sounds beyond this distance are ignored and are not stored in memory.
  • New parameter for stalkers - forget_killer_time. This is the number of seconds to forget the killer id. The default value is the original 180 seconds.
  • Added the effect of fog on the vision of mobs. The deeper the object is in the fog, the slower the mobs should see it. Added parameters to [vision_free_section] and [vision_danger_section] to regulate this:
fog_factor = 1 ;Sets the coefficient for fog density. The default is 1. In this case, at the fog_far distance, the dot will be the color of the fog, not the object, and at this distance the mobs will never see the object. If this coefficient is increased, the distance at which the mobs will not see the object will decrease. If you set it to 0, the fog will not affect vision, because the fog density will also become 0.
fog_pow = 5 ;Sets the curvature of fog density dependence on distance. Default is 5. The curvature of the fog density is calculated by the formula y = x to the degree of fog_pow.
;The graph of such a function looks like this:
; *
; *
; **
;***
; i.e. the farther away, the more the fog density increases. This is to ensure that the fog affects the vision more strongly the farther away the object is in the fog. That it would affect as little as possible at close and medium distances.
  • Added the ability to customize the dependence of the actor's vision speed on semi-transparent obstacles. The more semi-transparent obstacles between the mob and the actor, the slower the mob will “look at” the actor. Off by default. Turns on in the mobs vision sections:
; the degree of slowing down of peering, depending on the density of translucent materials between the non-writer and the actor. The lower the value, the slower the peering is. At 1, the slowdown corresponds to the degree of translucency of the materials. I.e. if the bushes have a transparency of 0.7, then the speed of peeking will be multiplied by 0.7.
transparency_factor = 1
  • Added dynamic size of visual memory of mobs. It is configured like this in the mobs section:
DynamicObjectsCount = 32
; how long to keep objects in visual memory if their number exceeds DynamicObjectsCount.
DynamicObjectsCount_adaptive = 10000 ;10 sec.
  • If you specify in the stalker section
fast_can_kill_entity = true

then the engine will not waste resources on checking Friendly-Fire when calculating firing. This is suitable for OGSE, where combat and FF processing are in scripts.

Other

  • Added a wearable inventory box from NLC xp-dev branch (CInventoryContainer).
  • Added eat_psy_health property for eatable items (to restore psi health).
  • Exported to scripts (available for registration in class_registrator.script) and extended CInfoDocument class It now knows how to output an infoportion whose name is specified not only in its netpackage, but also from custom_data and config. It understands the known_info section in custom_data. Example:
[known_info].
info1
info2
infon

Understands the known_info parameter in the config. Example:

[quest_doc1].
known_info = info1, info2, infon
  • Added the ability for detectors to crackle from the actor's internal radiation. Enabled by the parameter
detect_actor_radiation = true

in the detector section.

  • Added support for zone_radius_%d for anomaly detectors. If this parameter is present, the anomaly will be detected at that distance, not the distance specified in the radius parameter. That is, for certain classes of anomalies, you can specify a smaller detection distance. A larger one cannot, because what is specified in radius is the maximum detection distance.
  • New parameters for anomaly configs:
idle_light_shadow = true ; Enable shadow for idle_light, default is enabled

light_volumetric_enable = true
light_volumetric_quality = 0.9
light_volumetric_intensity = 0.05
light_volumetric_distance = 0.3

idle_light_volumetric_enable = true
idle_light_volumetric_quality = 0.9
idle_light_volumetric_intensity = 0.05
idle_light_volumetric_distance = 0.4

ignore_any = false ; To ignore anything within the radius of the anomaly. Can be used for bonfires, for example.
blowout_light_shadow = false ;Disable the shadow from the light of the activated anomaly.
DestroyAfterBlowout = true ;So you can remove mines after their explosion. Mines on the class of anomalies are made.
  • For the flashlight you can turn on the volumetric light. Example settings:
[torch_definition]
volumetric_enabled = true
volumetric_for_actor = false ;So that for the actor volumetric light can be turned off, because it only looks nice for the NPS.
volumetric_quality = 1.0
volumetric_intensity = 0.15
volumetric_distance = 0.45
  • Added support for use_ai_locations = true/false in the item section. Example:
[vodka].
use_ai_locations = false

When net_spawning this item, the corresponding flag will be turned off. This may be needed, for example, for quest items that constantly fail.

  • A new parameter show_info has been added for the [demo_record] section, which can be used to remove the red inscription in the middle of the screen.
  • Dragged visuals (those in [ph_capture_visuals] section) can be specified as path prefixes. Also added a ban on dragging objects with bones attached.
  • Added optional inversion of joints, for curved models that have them bent in the opposite direction. Will be used if the visual's castdate has:
[compat].
fix_cop_joints = true

Normally it is necessary to correct models in this case, but it may be useful.

  • Added third mode for silent_mode for transitions. This mode is activated if level changer has silent_mode = 2. In this case, the transition will just silently throw the actor back. Kind of an anomaly like this.
  • Added ability to specify health_hit_part for different types of hits, for example:
health_hit_part = 1.0
health_fire_wound_hit_part = 0.5 ;for a bullet hit 0.5 will be used, the default health_hit_part value is used for all hits.
  • If you add keep_visual = true to the object's config, its visual from the config will be used, not from the netpack. Made to allow changing object models without requiring a new game.
Clone this wiki locally