Skip to content

Commit fe7f1c9

Browse files
committed
Added Function.skip_hooks()
1 parent 1e042bd commit fe7f1c9

4 files changed

Lines changed: 15 additions & 6 deletions

File tree

addons/source-python/packages/source-python/entities/specials.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,6 @@ def take_damage(
138138
setattr(take_damage_info, item, kwargs[item])
139139

140140
if skip_hooks:
141-
try:
142-
# Try calling the trampoline
143-
self.on_take_damage.call_trampoline(take_damage_info)
144-
except ValueError:
145-
# If it failed, the function probably wasn't hooked
146-
self.on_take_damage(take_damage_info)
141+
self.on_take_damage.skip_hooks(take_damage_info)
147142
else:
148143
self.on_take_damage(take_damage_info)

src/core/modules/memory/memory_function.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,14 @@ object CFunction::CallTrampoline(tuple args, dict kw)
278278
m_iCallingConvention, m_pCallingConvention, m_tArgs, m_eReturnType, m_oConverter).Call(args, kw);
279279
}
280280

281+
object CFunction::SkipHooks(tuple args, dict kw)
282+
{
283+
if (IsHooked())
284+
return CallTrampoline(args, kw);
285+
286+
return Call(args, kw);
287+
}
288+
281289
handle<> CFunction::AddHook(HookType_t eType, PyObject* pCallable)
282290
{
283291
if (!IsHookable())

src/core/modules/memory/memory_function.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class CFunction: public CPointer
6767

6868
object Call(boost::python::tuple args, dict kw);
6969
object CallTrampoline(boost::python::tuple args, dict kw);
70+
object SkipHooks(boost::python::tuple args, dict kw);
7071

7172
handle<> AddHook(HookType_t eType, PyObject* pCallable);
7273
void RemoveHook(HookType_t eType, PyObject* pCallable);

src/core/modules/memory/memory_wrap.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,11 @@ void export_function(scope _memory)
436436
"Calls the trampoline function dynamically."
437437
)
438438

439+
.def("skip_hooks",
440+
raw_method(&CFunction::SkipHooks),
441+
"Call the function, but skip hooks if there are any."
442+
)
443+
439444
.def("add_hook",
440445
&CFunction::AddHook,
441446
"Adds a hook callback.",

0 commit comments

Comments
 (0)