/** called when a player spawns as player, after shared setup, before his weapon is chosen (so items may be changed in here) */
#define EV_PlayerSpawn(i, o) \
/** player spawning */ i(entity, MUTATOR_ARGV_0_entity) \
- /** spot that was used, or world */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** spot that was used, or NULL */ i(entity, MUTATOR_ARGV_1_entity) \
/**/
MUTATOR_HOOKABLE(PlayerSpawn, EV_PlayerSpawn);
/** called when a player dies to e.g. remove stuff he was carrying */
#define EV_PlayHitsound(i, o) \
/** victim */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \
/**/
MUTATOR_HOOKABLE(PlayHitsound, EV_PlayHitsound);
/** called when a monster looks for another target */
MUTATOR_HOOKABLE(MonsterFindTarget, EV_NO_ARGS);
+/**
+ * called when validating a monster's target
+ */
+#define EV_MonsterValidTarget(i, o) \
+ /** monster */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** target */ i(entity, MUTATOR_ARGV_1_entity) \
+ /**/
+MUTATOR_HOOKABLE(MonsterValidTarget, EV_MonsterValidTarget);
+
/** called to change a random monster to a miniboss */
#define EV_MonsterCheckBossFlag(i, o) \
/** monster */ i(entity, MUTATOR_ARGV_0_entity) \
* called every player think frame
* return 1 to disable regen
*/
-float regen_mod_max;
-float regen_mod_regen;
-float regen_mod_rot;
-float regen_mod_limit;
-float regen_health;
-float regen_health_linear;
-float regen_health_rot;
-float regen_health_rotlinear;
-float regen_health_stable;
-float regen_health_rotstable;
-MUTATOR_HOOKABLE(PlayerRegen, EV_NO_ARGS);
+ #define EV_PlayerRegen(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** max_mod */ i(float, MUTATOR_ARGV_1_float) \
+ /**/ o(float, MUTATOR_ARGV_1_float) \
+ /** regen_mod */ i(float, MUTATOR_ARGV_2_float) \
+ /**/ o(float, MUTATOR_ARGV_2_float) \
+ /** rot_mod */ i(float, MUTATOR_ARGV_3_float) \
+ /**/ o(float, MUTATOR_ARGV_3_float) \
+ /** limit_mod */ i(float, MUTATOR_ARGV_4_float) \
+ /**/ o(float, MUTATOR_ARGV_4_float) \
+ /** health_regen */ i(float, MUTATOR_ARGV_5_float) \
+ /**/ o(float, MUTATOR_ARGV_5_float) \
+ /** health_regenlinear */ i(float, MUTATOR_ARGV_6_float) \
+ /**/ o(float, MUTATOR_ARGV_6_float) \
+ /** health_rot */ i(float, MUTATOR_ARGV_7_float) \
+ /**/ o(float, MUTATOR_ARGV_7_float) \
+ /** health_rotlinear */ i(float, MUTATOR_ARGV_8_float) \
+ /**/ o(float, MUTATOR_ARGV_8_float) \
+ /** health_stable */ i(float, MUTATOR_ARGV_9_float) \
+ /**/ o(float, MUTATOR_ARGV_9_float) \
+ /** health_rotstable */ i(float, MUTATOR_ARGV_10_float) \
+ /**/ o(float, MUTATOR_ARGV_10_float) \
+ /**/
+MUTATOR_HOOKABLE(PlayerRegen, EV_PlayerRegen);
/**
* called when the use key is pressed
#define EV_Spawn_Score(i, o) \
/** player wanting to spawn */ i(entity, MUTATOR_ARGV_0_entity) \
/** spot to be evaluated */ i(entity, MUTATOR_ARGV_1_entity) \
- /** spot score, _x is priority, _y is "distance" */ i(vector, MUTATOR_ARGV_0_vector) \
- /**/ o(vector, MUTATOR_ARGV_0_vector) \
+ /** spot score, _x is priority, _y is "distance" */ i(vector, MUTATOR_ARGV_2_vector) \
+ /**/ o(vector, MUTATOR_ARGV_2_vector) \
/**/
MUTATOR_HOOKABLE(Spawn_Score, EV_Spawn_Score);
MUTATOR_HOOKABLE(DecodeLevelParms, EV_NO_ARGS);
#define EV_GetRecords(i, o) \
- /** page */ i(int, MUTATOR_ARGV_1_int) \
+ /** page */ i(int, MUTATOR_ARGV_0_int) \
/** record list */ i(string, MUTATOR_ARGV_1_string) \
/**/ o(string, MUTATOR_ARGV_1_string) \
/**/
MUTATOR_HOOKABLE(WantWeapon, EV_WantWeapon);
#define EV_AddPlayerScore(i, o) \
- /** score field */ i(int, MUTATOR_ARGV_0_int) \
+ /** score field */ i(PlayerScoreField, MUTATOR_ARGV_0_entity) \
/** score */ i(float, MUTATOR_ARGV_1_float) \
/**/ o(float, MUTATOR_ARGV_1_float) \
/** player */ i(entity, MUTATOR_ARGV_2_entity) \
/** data */ i(string, MUTATOR_ARGV_2_string) \
/**/
MUTATOR_HOOKABLE(URI_GetCallback, EV_URI_GetCallback);
+
+/**
+ * return true to prevent weapon use for a player
+ */
+ #define EV_ForbidWeaponUse(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /**/
+MUTATOR_HOOKABLE(ForbidWeaponUse, EV_ForbidWeaponUse);
+
+/** called when a player spawns as player, after shared setup, before his weapon is chosen (so items may be changed in here) */
+#define EV_CopyBody(i, o) \
+ /** player */ i(entity, MUTATOR_ARGV_0_entity) \
+ /** newly created clone */ i(entity, MUTATOR_ARGV_1_entity) \
+ /** keepvelocity? */ i(bool, MUTATOR_ARGV_2_bool) \
+ /**/
+MUTATOR_HOOKABLE(CopyBody, EV_CopyBody);