Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gamedata/scripts/lua_help_ex.script
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@
function get_actor_object_looking_at()
function get_actor_person_looking_at()
function get_actor_default_action_for_object()

function set_actor_box_y_offset(u32 box_num, float offset) --box_num:0 for stand, 1 for crouch, 2 for prone;
// Stalker NPCs
function get_enable_anomalies_pathfinding()
function set_enable_anomalies_pathfinding(bool)
Expand Down
23 changes: 22 additions & 1 deletion src/xrGame/Actor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,9 +329,25 @@ void set_box(LPCSTR section, CPHMovementControl& mc, u32 box_num)
mc.SetBox(box_num, bb);
}

void set_box_y_offset(LPCSTR section, CPHMovementControl& mc, u32 box_num, float offset)
{
Fbox bb;
Fvector vBOX_center, vBOX_size;
// m_PhysicMovementControl: BOX
string64 buff, buff1;
strconcat(sizeof(buff), buff, "ph_box", itoa(box_num, buff1, 10), "_center");
vBOX_center = pSettings->r_fvector3(section, buff);
vBOX_center.y = offset;
strconcat(sizeof(buff), buff, "ph_box", itoa(box_num, buff1, 10), "_size");
vBOX_size = pSettings->r_fvector3(section, buff);
vBOX_size.y += (cammera_into_collision_shift / 2.f) + offset;
bb.set(vBOX_center, vBOX_center);
bb.grow(vBOX_size);
mc.SetBox(box_num, bb);
}

void CActor::Load(LPCSTR section)
{
// Msg ("Loading actor: %s",section);
inherited::Load(section);
material().Load(section);
CInventoryOwner::Load(section);
Expand Down Expand Up @@ -508,6 +524,11 @@ void CActor::Load(LPCSTR section)
m_sHeadShotParticle = READ_IF_EXISTS(pSettings, r_string, section, "HeadShotParticle", 0);
}

void CActor::set_actor_box_y_offset(u32 box_num, float offset)
{
set_box_y_offset("actor", *character_physics_support()->movement(), box_num, offset);
}

void CActor::PHHit(SHit& H)
{
m_pPhysics_support->in_Hit(H, false);
Expand Down
2 changes: 1 addition & 1 deletion src/xrGame/Actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ class CActor :

virtual void OnPlayHeadShotParticle(NET_Packet P);


virtual void set_actor_box_y_offset(u32 box_num, float offset);
virtual void Die(CObject* who);
virtual void Hit(SHit* pHDS);
virtual void PHHit(SHit& H);
Expand Down
1 change: 1 addition & 0 deletions src/xrGame/script_game_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,7 @@ class CScriptGameObject
void SetActorRunCoef(float run_coef);
float GetActorRunBackCoef() const;
void SetActorRunBackCoef(float run_back_coef);
void SetActorCamBoxYOffset(u32 box_num, float offset);
float GetActorWalkAccel() const;
void SetActorWalkAccel(float val);
float GetActorWalkBackCoef() const;
Expand Down
12 changes: 12 additions & 0 deletions src/xrGame/script_game_object_inventory_owner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2565,6 +2565,18 @@ void CScriptGameObject::SetActorRunBackCoef(float run_back_coef)
pActor->m_fRunBackFactor = run_back_coef;
}

void CScriptGameObject::SetActorCamBoxYOffset(u32 box_num, float offset)
{
CActor* pActor = smart_cast<CActor*>(&object());
if (!pActor)
{
ai().script_engine().script_log(ScriptStorage::eLuaMessageTypeError,
"CActor : cannot access class member SetActorCamBoxYOffset!");
return;
}
pActor->set_actor_box_y_offset(box_num, offset);
}


float CScriptGameObject::GetActorWalkAccel() const
{
Expand Down
1 change: 1 addition & 0 deletions src/xrGame/script_game_object_script3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,7 @@ class_<CScriptGameObject>& script_register_game_object2(class_<CScriptGameObject
// demonized: Additional exports
.def("get_actor_walk_accel", &CScriptGameObject::GetActorWalkAccel)
.def("set_actor_walk_accel", &CScriptGameObject::SetActorWalkAccel)
.def("set_actor_box_y_offset", &CScriptGameObject::SetActorCamBoxYOffset)
.def("get_actor_walk_back_coef", &CScriptGameObject::GetActorWalkBackCoef)
.def("set_actor_walk_back_coef", &CScriptGameObject::SetActorWalkBackCoef)
.def("get_actor_crouch_coef", &CScriptGameObject::GetActorCrouchCoef)
Expand Down
Loading