/** called when a player becomes observer, after shared setup */
#define EV_MakePlayerObserver(i, o) \
/** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** is_forced */ i(bool, MUTATOR_ARGV_1_bool) \
/**/
MUTATOR_HOOKABLE(MakePlayerObserver, EV_MakePlayerObserver)
/**/
MUTATOR_HOOKABLE(PlayerDied, EV_PlayerDied);
+/** called when showing an obituary for the player. return true to show nothing (workarounds may be needed) */
+#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);
+
/** allows overriding the frag centerprint messages */
#define EV_FragCenterMessage(i, o) \
/** attacker */ i(entity, MUTATOR_ARGV_0_entity) \
/**/
MUTATOR_HOOKABLE(GetPressedKeys, EV_GetPressedKeys);
-/** is meant to call GetCvars_handle*(get_cvars_s, get_cvars_f, cvarfield, "cvarname") for cvars this mutator needs from the client */
+/**
+ * is meant to call GetCvars_handle* for cvars this mutator needs from the client, e.g.:
+ MUTATOR_HOOKFUNCTION(mymutator, GetCvars)
+ {
+ GetCvars_handleFloat(this, store, s, f, cvar_mycvar, "mycvar");
+ return false;
+ }
+ * Usually you can just use REPLICATE instead of this hook, e.g.:
+ REPLICATE(cvar_mycvar, int, "mycvar");
+ * NOTE: requesting cvar values (get_cvars_f 0) is deprecated
+ */
#define EV_GetCvars(i, o) \
/**/ i(float, get_cvars_f) \
/**/ i(string, get_cvars_s) \
/**
* Called when a player is damaged
+ * Returns true if damage shouldn't be logged
*/
#define EV_PlayerDamaged(i, o) \
/** attacker */ i(entity, MUTATOR_ARGV_0_entity) \
resource limit. */
#define EV_GetResourceLimit(i, o) \
/** checked entity */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
/** limit */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/**/
MUTATOR_HOOKABLE(GetResourceLimit, EV_GetResourceLimit);
-/** Called when the amount of resource of an entity changes. See RESOURCE_*
+/** Called when the amount of resource of an entity changes. See RES_*
constants for resource types. Return true to forbid the change. */
-#define EV_SetResourceAmount(i, o) \
+#define EV_SetResource(i, o) \
/** checked entity */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
- /**/ o(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/ o(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/**/
-MUTATOR_HOOKABLE(SetResourceAmount, EV_SetResourceAmount);
+MUTATOR_HOOKABLE(SetResource, EV_SetResource);
-/** Called after the amount of resource of an entity has changed. See RESOURCE_*
+/** Called after the amount of resource of an entity has changed. See RES_*
constants for resource types. Amount wasted is the amount of resource that is
above resource limit so it was not given. */
#define EV_ResourceAmountChanged(i, o) \
/** checked entity */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/
MUTATOR_HOOKABLE(ResourceAmountChanged, EV_ResourceAmountChanged);
/** Called when there was an attempt to set entity resources higher than their
-limit. See RESOURCE_* constants for resource types. Amount wasted is the amount
+limit. See RES_* constants for resource types. Amount wasted is the amount
of resource that is above resource limit so it was not given. */
#define EV_ResourceWasted(i, o) \
/** checked entity */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
/** amount wasted */ i(float, MUTATOR_ARGV_2_float) \
/**/
MUTATOR_HOOKABLE(ResourceWasted, EV_ResourceWasted);
-/** Called when entity is being given some resource. See RESOURCE_* constants
-for resource types. Return true to forbid giving. */
+/** Called when entity is being given some resource. See RES_* constants
+for resource types. Return true to forbid giving.
+NOTE: This hook is also called by GiveResourceWithLimit */
#define EV_GiveResource(i, o) \
/** receiver */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
- /**/ o(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/ o(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/**/
MUTATOR_HOOKABLE(GiveResource, EV_GiveResource);
/** Called when entity is being given some resource with specified limit. See
-RESOURCE_* constants for resource types. Return true to forbid giving. */
+RES_* constants for resource types. Return true to forbid giving. */
#define EV_GiveResourceWithLimit(i, o) \
/** receiver */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
- /**/ o(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/ o(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/** limit */ i(float, MUTATOR_ARGV_3_float) \
/**/
MUTATOR_HOOKABLE(GiveResourceWithLimit, EV_GiveResourceWithLimit);
-/** Called when some resource is being taken from an entity. See RESOURCE_* constants
-for resource types. Return true to forbid giving. */
+/** Called when some resource is being taken from an entity. See RES_* constants
+for resource types. Return true to forbid giving.
+NOTE: This hook is also called by TakeResourceWithLimit */
#define EV_TakeResource(i, o) \
/** receiver */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
- /**/ o(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/ o(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/**/
MUTATOR_HOOKABLE(TakeResource, EV_TakeResource);
/** Called when some resource is being taken from an entity, with a limit. See
-RESOURCE_* constants for resource types. Return true to forbid giving. */
+RES_* constants for resource types. Return true to forbid giving. */
#define EV_TakeResourceWithLimit(i, o) \
/** receiver */ i(entity, MUTATOR_ARGV_0_entity) \
- /** resource type */ i(int, MUTATOR_ARGV_1_int) \
- /**/ o(int, MUTATOR_ARGV_1_int) \
+ /** resource type */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/ o(entity, MUTATOR_ARGV_1_entity) \
/** amount */ i(float, MUTATOR_ARGV_2_float) \
/**/ o(float, MUTATOR_ARGV_2_float) \
/** limit */ i(float, MUTATOR_ARGV_3_float) \
/** id */ i(float, MUTATOR_ARGV_0_float) \
/** status */ i(float, MUTATOR_ARGV_1_float) \
/** data */ i(string, MUTATOR_ARGV_2_string) \
- /**/
+ /**/
MUTATOR_HOOKABLE(URI_GetCallback, EV_URI_GetCallback);
+/**
+ * return true to lock weapon (can't be used nor changed) for a player
+ */
+#define EV_LockWeapon(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
+MUTATOR_HOOKABLE(LockWeapon, EV_LockWeapon);
+
/**
* return true to prevent weapon use for a player
*/
- #define EV_ForbidWeaponUse(i, o) \
- /** player */ i(entity, MUTATOR_ARGV_0_entity) \
- /**/
+#define EV_ForbidWeaponUse(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
MUTATOR_HOOKABLE(ForbidWeaponUse, EV_ForbidWeaponUse);
/** called when creating a clone of the player (usually for corpses that stay after the player has re-spawned) */
/**/ o(int, MUTATOR_ARGV_0_int) \
/**/
MUTATOR_HOOKABLE(GetPlayerLimit, EV_GetPlayerLimit);
+
+/** include special item codes for a death to the game log */
+#define EV_LogDeath_AppendItemCodes(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** item codes */ i(string, MUTATOR_ARGV_1_string) \
+ /**/ o(string, MUTATOR_ARGV_1_string) \
+ /**/
+MUTATOR_HOOKABLE(LogDeath_AppendItemCodes, EV_LogDeath_AppendItemCodes);
+
+/** Allows disabling or enabling rocket jumping independently of balance, use the parameter to force a preferred setting */
+#define EV_AllowRocketJumping(i, o) \
+ /** allow_rocketjump */ i(bool, MUTATOR_ARGV_0_bool) \
+ /**/ o(bool, MUTATOR_ARGV_0_bool) \
+ /**/
+MUTATOR_HOOKABLE(AllowRocketJumping, EV_AllowRocketJumping);
+
+/** Called when weapons are performing their attack, useful for applying bonus attack sounds */
+#define EV_W_PlayStrengthSound(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
+MUTATOR_HOOKABLE(W_PlayStrengthSound, EV_W_PlayStrengthSound);