+- **`ForbidPlayerScore_Clear`**
+
+Returns 1 if clearing player score shall not be allowed.
+```c
+#define EV_ForbidPlayerScore_Clear(i, o) \
+ /**/
+MUTATOR_HOOKABLE(ForbidPlayerScore_Clear, EV_ForbidPlayerScore_Clear);
+```
+
+- **`ClientDisconnect`**
+
+Called when a player disconnects.
+```c
+#define EV_ClientDisconnect(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
+MUTATOR_HOOKABLE(ClientDisconnect, EV_ClientDisconnect);
+```
+
+- **`PlayerDies`**
+
+Called when a player dies to e.g. remove stuff he was carrying.
+```c
+#define EV_PlayerDies(i, o) \
+ /** inflictor */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** target */ i(entity, MUTATOR_ARGV_2_entity) \
+ /** deathtype */ i(float, MUTATOR_ARGV_3_float) \
+ /** damage */ i(float, MUTATOR_ARGV_4_float) \
+ /** damage */ o(float, MUTATOR_ARGV_4_float) \
+ /**/
+MUTATOR_HOOKABLE(PlayerDies, EV_PlayerDies);
+```
+
+- **`PlayerDied`**
+
+Called after a player died.
+```c
+#define EV_PlayerDied(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
+MUTATOR_HOOKABLE(PlayerDied, EV_PlayerDied);
+```
+
+- **`ClientObituary`**
+
+Called when showing an obituary for the player. Returns true to show nothing (workarounds may be needed).
+```c
+#define EV_ClientObituary(i, o) \
+ /** inflictor */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** target */ i(entity, MUTATOR_ARGV_2_entity) \
+ /** deathtype */ i(float, MUTATOR_ARGV_3_float) \
+ /** wep entity */ i(entity, MUTATOR_ARGV_4_entity) \
+ /** anonymous killer*/ o(bool, MUTATOR_ARGV_5_bool) \
+ /**/
+MUTATOR_HOOKABLE(ClientObituary, EV_ClientObituary);
+```
+
+- **`FragCenterMessage`**
+
+Allows overriding the frag centerprint messages.
+```c
+#define EV_FragCenterMessage(i, o) \
+ /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** target */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** deathtype */ i(float, MUTATOR_ARGV_2_float) \
+ /** attacker kcount*/ i(int, MUTATOR_ARGV_3_int) \
+ /** targ killcount */ i(int, MUTATOR_ARGV_4_int) \
+ /**/
+MUTATOR_HOOKABLE(FragCenterMessage, EV_FragCenterMessage);
+```
+
+- **`PlayHitsound`**
+
+Called when a player dies to e.g. remove stuff he was carrying.
+```c
+#define EV_PlayHitsound(i, o) \
+ /** victim */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/
+MUTATOR_HOOKABLE(PlayHitsound, EV_PlayHitsound);
+```
+
+- **`ItemModel`**
+
+Called when an item model is about to be set, allows custom paths etc.
+```c
+#define EV_ItemModel(i, o) \
+ /** model */ i(string, MUTATOR_ARGV_0_string) \
+ /** output */ i(string, MUTATOR_ARGV_1_string) \
+ /**/ o(string, MUTATOR_ARGV_1_string) \
+ /**/
+MUTATOR_HOOKABLE(ItemModel, EV_ItemModel);
+```
+
+- **`ItemSound`**
+
+Called when an item sound is about to be played, allows custom paths etc.
+```c
+#define EV_ItemSound(i, o) \
+ /** sound */ i(string, MUTATOR_ARGV_0_string) \
+ /** output */ i(string, MUTATOR_ARGV_1_string) \
+ /**/ o(string, MUTATOR_ARGV_1_string) \
+ /**/
+MUTATOR_HOOKABLE(ItemSound, EV_ItemSound);
+```
+
+- **`GiveFragsForKill`**
+
+Called when someone was fragged by "self", and is expected to change frag_score to adjust scoring for the kill.
+```c
+#define EV_GiveFragsForKill(i, o) \
+ /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** target */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** frag score */ i(float, MUTATOR_ARGV_2_float) \
+ /** */ o(float, MUTATOR_ARGV_2_float) \
+ /** deathtype */ i(float, MUTATOR_ARGV_3_float) \
+ /** wep entity */ i(entity, MUTATOR_ARGV_4_entity) \
+ /**/
+MUTATOR_HOOKABLE(GiveFragsForKill, EV_GiveFragsForKill);
+```
+
+- **`MatchEnd`**
+
+Called when the match ends.
+```c
+MUTATOR_HOOKABLE(MatchEnd, EV_NO_ARGS);
+```
+
+- **`TeamBalance_CheckAllowedTeams`**
+
+Allows adjusting allowed teams. Return true to use the bitmask value and set non-empty string to use team entity name. Both behaviors can be active at the same time and will stack allowed teams.
+```c
+#define EV_TeamBalance_CheckAllowedTeams(i, o) \
+ /** mask of teams */ i(float, MUTATOR_ARGV_0_float) \
+ /**/ o(float, MUTATOR_ARGV_0_float) \
+ /** team entity name */ i(string, MUTATOR_ARGV_1_string) \
+ /**/ o(string, MUTATOR_ARGV_1_string) \
+ /** player checked */ i(entity, MUTATOR_ARGV_2_entity) \
+ /**/
+MUTATOR_HOOKABLE(TeamBalance_CheckAllowedTeams, EV_TeamBalance_CheckAllowedTeams);
+```
+
+