Skip to content

Commit 8f694c7

Browse files
revolucasXottab-DUTY
authored andcommitted
+ added weapon_addon_attach and weapon_addon_detach exports (not working...)
* more detailed information on VERIFY in CPlanner::current_action_id() in action_planner_inline.h
1 parent ae9b838 commit 8f694c7

File tree

4 files changed

+52
-15
lines changed

4 files changed

+52
-15
lines changed

src/xrGame/action_planner_inline.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@ IC typename CPlanner::CConditionEvaluator& CPlanner::evaluator(const _condition_
128128
TEMPLATE_SPECIALIZATION
129129
IC typename CPlanner::_action_id_type CPlanner::current_action_id() const
130130
{
131-
VERIFY(initialized());
131+
VERIFY2(initialized(), make_string("ERROR: action by id [%d] not initialized!", m_current_action_id)); //Alundaio: More detailed information needed
132132
return (m_current_action_id);
133133
}
134134

135135
TEMPLATE_SPECIALIZATION
136136
IC typename CPlanner::COperator& CPlanner::current_action() { return (action(current_action_id())); }
137137
TEMPLATE_SPECIALIZATION
138-
IC bool CPlanner::initialized() const { return (m_initialized); }
138+
IC bool CPlanner::initialized() const { return m_initialized; }
139139
TEMPLATE_SPECIALIZATION
140140
IC void CPlanner::add_condition(_world_operator* action, _condition_type condition_id, _value_type condition_value)
141141
{

src/xrGame/script_game_object.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,9 @@ class CScriptGameObject
399399
int Weapon_Scope_Status();
400400
int Weapon_Silencer_Status();
401401

402+
void Weapon_AddonAttach(CScriptGameObject& item); //Alundaio
403+
void Weapon_AddonDetach(pcstr item_section); //Alundaio
404+
402405
LPCSTR ProfileName();
403406
LPCSTR CharacterName();
404407
LPCSTR CharacterIcon();

src/xrGame/script_game_object_inventory_owner.cpp

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,31 @@
66
#include "script_game_object.h"
77
#include "script_game_object_impl.h"
88
#include "InventoryOwner.h"
9-
#include "Pda.h"
9+
#include "PDA.h"
1010
#include "xrMessages.h"
1111
#include "character_info.h"
12-
#include "gametask.h"
13-
#include "actor.h"
12+
#include "GameTask.h"
13+
#include "Actor.h"
1414
#include "Level.h"
1515
#include "date_time.h"
16-
#include "uigamesp.h"
16+
#include "UIGameSP.h"
1717
#include "restricted_object.h"
1818
#include "xrScriptEngine/script_engine.hpp"
1919
#include "attachable_item.h"
2020
#include "script_entity.h"
2121
#include "string_table.h"
2222
#include "alife_registry_wrappers.h"
2323
#include "relation_registry.h"
24-
#include "custommonster.h"
25-
#include "actorcondition.h"
24+
#include "CustomMonster.h"
25+
#include "ActorCondition.h"
2626
#include "xrAICore/Navigation/level_graph.h"
27-
#include "huditem.h"
27+
#include "HudItem.h"
2828
#include "ui/UItalkWnd.h"
29-
#include "inventory.h"
30-
#include "infoportion.h"
29+
#include "Inventory.h"
30+
#include "InfoPortion.h"
3131
#include "AI/Monsters/BaseMonster/base_monster.h"
32-
#include "weaponmagazined.h"
33-
#include "ai/stalker/ai_stalker.h"
32+
#include "WeaponMagazined.h"
33+
#include "Ai/Stalker/ai_stalker.h"
3434
#include "agent_manager.h"
3535
#include "agent_member_manager.h"
3636
#include "stalker_animation_manager.h"
@@ -42,11 +42,11 @@
4242
#include "ai/stalker/ai_stalker_impl.h"
4343
#include "smart_cover_object.h"
4444
#include "smart_cover.h"
45-
#include "customdetector.h"
45+
#include "CustomDetector.h"
4646
#include "doors_manager.h"
4747
#include "doors_door.h"
4848
#include "Torch.h"
49-
#include "physicobject.h"
49+
#include "PhysicObject.h"
5050

5151
bool CScriptGameObject::GiveInfoPortion(LPCSTR info_id)
5252
{
@@ -1693,3 +1693,32 @@ bool CScriptGameObject::is_door_blocked_by_npc() const
16931693
VERIFY2(m_door, make_string("object %s hasn't been registered as a door already", m_game_object->cName().c_str()));
16941694
return ai().doors().is_door_blocked(m_door);
16951695
}
1696+
1697+
1698+
//Alundaio: Methods for exporting the ability to detach/attach addons for magazined weapons
1699+
void CScriptGameObject::Weapon_AddonAttach(CScriptGameObject& item)
1700+
{
1701+
auto weapon = smart_cast<CWeaponMagazined*>(&object());
1702+
if (!weapon)
1703+
{
1704+
ai().script_engine().script_log(LuaMessageType::Error, "CWeaponMagazined : cannot access class member Weapon_AddonAttach!");
1705+
return;
1706+
}
1707+
1708+
if (weapon->CanAttach((PIItem)&item))
1709+
weapon->Attach((PIItem)&item, true);
1710+
}
1711+
1712+
void CScriptGameObject::Weapon_AddonDetach(pcstr item_section)
1713+
{
1714+
auto weapon = smart_cast<CWeaponMagazined*>(&object());
1715+
if (!weapon)
1716+
{
1717+
ai().script_engine().script_log(LuaMessageType::Error, "CWeaponMagazined : cannot access class member Weapon_AddonDetach!");
1718+
return;
1719+
}
1720+
1721+
if (weapon->CanDetach(item_section))
1722+
weapon->Detach(item_section, true);
1723+
}
1724+
//Alundaio: END

src/xrGame/script_game_object_script3.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@ class_<CScriptGameObject>& script_register_game_object2(class_<CScriptGameObject
203203
.def("weapon_scope_status", &CScriptGameObject::Weapon_Scope_Status)
204204
.def("weapon_silencer_status", &CScriptGameObject::Weapon_Silencer_Status)
205205

206+
//Alundaio: Extended exports
207+
.def("weapon_addon_attach", &CScriptGameObject::Weapon_AddonAttach)
208+
.def("weapon_addon_detach", &CScriptGameObject::Weapon_AddonDetach)
209+
//Alundaio: END
210+
206211
.def("allow_sprint", &CScriptGameObject::AllowSprint)
207212

208213
.def("set_start_dialog", &CScriptGameObject::SetStartDialog)

0 commit comments

Comments
 (0)