1 **Note:** The article is written as developer notes to ease developer tasks and save QuakeC function terms here. Some references are taken from `events.qh`.
4 # MUTATOR functions (from: `qcsrc/server/mutators/events.qh`)
8 How to use MUTATOR functions:
10 **Attention:** to use a hook, first register your mutator using `REGISTER_MUTATOR`, then create your function using `MUTATOR_HOOKFUNCTION`.
13 - **`REGISTER_MUTATOR`**
15 Registers a new `MUTATOR_HOOKFUNCTION`.
17 REGISTER_MUTATOR(new_mutator_name, some_variable);
21 - **`MUTATOR_HOOKFUNCTION`**
23 Creates a function and calls `new_mutator_name` (from `REGISTER_MUTATOR`) and one of `#define MUTATOR()` (from `qcsrc/server/mutators/events.qh` main hooks).
27 MUTATOR_HOOKFUNCTION(new_mutator_name_or_events.qh_main_hook, PlayerSpawn)
33 - **`MUTATOR_CALLHOOK`**
35 Calls some `MUTATOR_HOOKFUNCTION`.
37 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook);
40 There are different versions and depends how many variables need to be called in a `MUTATOR_HOOKFUNCTION`:
42 1 `MUTATOR_HOOKFUNCTION` and 1 variable:
45 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable);
48 1 `MUTATOR_HOOKFUNCTION` and 2 variables:
51 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable);
54 1 `MUTATOR_HOOKFUNCTION` and 3 variables:
57 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable, some_variable);
60 1 `MUTATOR_HOOKFUNCTION` and multiple variables:
63 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable, some_variable, some_variable, ...);
70 ## List of MUTATOR functions
72 You can look the MUTATOR functions in:
74 **`qcsrc/common/mutators/events.qh`** :
75 https://timepath.github.io/scratchspace/d4/d95/common_2mutators_2events_8qh.html
77 **`qcsrc/server/mutators/events.qh`** :
78 https://timepath.github.io/scratchspace/d6/ddd/server_2mutators_2events_8qh.html
84 AND.... STILL in process