X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fevents.qh;h=b66b394afb7eef48f003dce1f80b1379ce78e70c;hb=a62687f222272d216e7fb6fa16748f8750643c92;hp=ad97997e2f53c2f4c0d61900688d9a6416c6e84c;hpb=42a9e3d7ece2c716e5cd6899e90841acb7fb891b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index ad97997e2..b66b394af 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -6,20 +6,21 @@ /** called when a player becomes observer, after shared setup */ #define EV_MakePlayerObserver(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(MakePlayerObserver, EV_MakePlayerObserver) /** */ #define EV_PutClientInServer(i, o) \ - /** client wanting to spawn */ i(entity, __self) \ + /** client wanting to spawn */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(PutClientInServer, EV_PutClientInServer); /** 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) \ - /** spot that was used, or world */ i(entity, spawn_spot) \ + /** player spawning */ i(entity, MUTATOR_ARGV_0_entity) \ + /** spot that was used, or world */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ -entity spawn_spot; MUTATOR_HOOKABLE(PlayerSpawn, EV_PlayerSpawn); /** called in reset_map */ @@ -39,101 +40,90 @@ MUTATOR_HOOKABLE(ForbidPlayerScore_Clear, EV_ForbidPlayerScore_Clear); /** called when a player disconnects */ #define EV_ClientDisconnect(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(ClientDisconnect, EV_ClientDisconnect); /** called when a player dies to e.g. remove stuff he was carrying. */ #define EV_PlayerDies(i, o) \ - /**/ i(entity, frag_inflictor) \ - /**/ i(entity, frag_attacker) \ - /** same as self */ i(entity, frag_target) \ - /**/ i(int, frag_deathtype) \ - /**/ -entity frag_inflictor; -entity frag_attacker; -entity frag_target; -int frag_deathtype; + /** 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); /** called when a player dies to e.g. remove stuff he was carrying */ #define EV_PlayHitsound(i, o) \ - /**/ i(entity, frag_victim) \ + /** victim */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ -entity frag_victim; MUTATOR_HOOKABLE(PlayHitsound, EV_PlayHitsound); /** called when a weapon sound is about to be played, allows custom paths etc. */ #define EV_WeaponSound(i, o) \ - /**/ i(string, weapon_sound) \ - /**/ i(string, weapon_sound_output) \ - /**/ o(string, weapon_sound_output) \ + /** sound */ i(string, MUTATOR_ARGV_0_string) \ + /** output */ i(string, MUTATOR_ARGV_1_string) \ + /**/ o(string, MUTATOR_ARGV_1_string) \ /**/ -string weapon_sound; -string weapon_sound_output; MUTATOR_HOOKABLE(WeaponSound, EV_WeaponSound); /** called when an item model is about to be set, allows custom paths etc. */ #define EV_ItemModel(i, o) \ - /**/ i(string, item_model) \ - /**/ i(string, item_model_output) \ - /**/ o(string, item_model_output) \ + /** model */ i(string, MUTATOR_ARGV_0_string) \ + /** output */ i(string, MUTATOR_ARGV_1_string) \ + /**/ o(string, MUTATOR_ARGV_1_string) \ /**/ -string item_model; -string item_model_output; MUTATOR_HOOKABLE(ItemModel, EV_ItemModel); /** called when someone was fragged by "self", and is expected to change frag_score to adjust scoring for the kill */ #define EV_GiveFragsForKill(i, o) \ - /**/ i(entity, __self) \ - /** same as self */ i(entity, frag_attacker) \ - /**/ i(entity, frag_target) \ - /**/ i(float, frag_score) \ - /**/ o(float, frag_score) \ + /** 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) \ /**/ -float frag_score; MUTATOR_HOOKABLE(GiveFragsForKill, EV_GiveFragsForKill); /** called when the match ends */ MUTATOR_HOOKABLE(MatchEnd, EV_NO_ARGS); -/** should adjust ret_float to contain the team count */ +/** should adjust number to contain the team count */ #define EV_GetTeamCount(i, o) \ - /**/ i(float, ret_float) \ - /**/ o(float, ret_float) \ - /**/ i(string, ret_string) \ - /**/ o(string, ret_string) \ + /** number 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) \ /**/ -float ret_float; MUTATOR_HOOKABLE(GetTeamCount, EV_GetTeamCount); /** copies variables for spectating "other" to "self" */ #define EV_SpectateCopy(i, o) \ - /**/ i(entity, other) \ - /**/ i(entity, __self) \ + /** spectatee */ i(entity, MUTATOR_ARGV_0_entity) \ + /** client */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(SpectateCopy, EV_SpectateCopy); /** called when formatting a chat message to replace fancy functions */ #define EV_FormatMessage(i, o) \ - /**/ i(string, format_escape) \ - /**/ i(string, format_replacement) \ - /**/ o(string, format_replacement) \ - /**/ i(string, format_message) \ - /**/ -string format_escape; -string format_replacement; -string format_message; + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** escape */ i(string, MUTATOR_ARGV_1_string) \ + /** replacement */ i(string, MUTATOR_ARGV_2_string) \ + /**/ o(string, MUTATOR_ARGV_2_string) \ + /** message */ i(string, MUTATOR_ARGV_3_string) \ + /**/ MUTATOR_HOOKABLE(FormatMessage, EV_FormatMessage); /** returns true if throwing the current weapon shall not be allowed */ #define EV_ForbidThrowCurrentWeapon(i, o) \ - /**/ i(entity, __self) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(ForbidThrowCurrentWeapon, EV_ForbidThrowCurrentWeapon); /** returns true if dropping the current weapon shall not be allowed at any time including death */ #define EV_ForbidDropCurrentWeapon(i, o) \ - /**/ i(entity, __self) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(ForbidDropCurrentWeapon, EV_ForbidDropCurrentWeapon); @@ -142,16 +132,17 @@ MUTATOR_HOOKABLE(SetDefaultAlpha, EV_NO_ARGS); /** allows changing attack rate */ #define EV_WeaponRateFactor(i, o) \ - /**/ i(float, weapon_rate) \ - /**/ o(float, weapon_rate) \ + /** weapon rate */ i(float, MUTATOR_ARGV_0_float) \ + /**/ o(float, MUTATOR_ARGV_0_float) \ + /** player */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ -float weapon_rate; MUTATOR_HOOKABLE(WeaponRateFactor, EV_WeaponRateFactor); /** allows changing weapon speed (projectiles mostly) */ #define EV_WeaponSpeedFactor(i, o) \ - /**/ i(float, ret_float) \ - /**/ o(float, ret_float) \ + /** weapon speed */ i(float, MUTATOR_ARGV_0_float) \ + /**/ o(float, MUTATOR_ARGV_0_float) \ + /** player */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(WeaponSpeedFactor, EV_WeaponSpeedFactor); @@ -160,8 +151,8 @@ MUTATOR_HOOKABLE(SetStartItems, EV_NO_ARGS); /** called every frame. customizes the waypoint for spectators */ #define EV_CustomizeWaypoint(i, o) \ - /** waypoint */ i(entity, __self) \ - /** player; other.enemy = spectator */ i(entity, other) \ + /** waypoint */ i(entity, MUTATOR_ARGV_0_entity) \ + /** player; other.enemy = spectator */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(CustomizeWaypoint, EV_CustomizeWaypoint); @@ -170,33 +161,32 @@ MUTATOR_HOOKABLE(CustomizeWaypoint, EV_CustomizeWaypoint); * return error to request removal */ #define EV_FilterItem(i, o) \ - /** the current item */ i(entity, __self) \ + /** item */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(FilterItem, EV_FilterItem); /** return error to request removal */ #define EV_TurretSpawn(i, o) \ - /** turret */ i(entity, __self) \ + /** turret */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(TurretSpawn, EV_TurretSpawn); /** return error to not attack */ #define EV_TurretFire(i, o) \ - /** turret */ i(entity, __self) \ + /** turret */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(TurretFire, EV_TurretFire); /** return error to not attack */ #define EV_Turret_CheckFire(i, o) \ - /**/ i(bool, ret_bool) \ - /**/ o(bool, ret_bool) \ + /** turret */ i(entity, MUTATOR_ARGV_0_entity) \ + /** to fire or not to fire */ o(bool, MUTATOR_ARGV_1_bool) \ /**/ -bool ret_bool; MUTATOR_HOOKABLE(Turret_CheckFire, EV_Turret_CheckFire); /** return error to prevent entity spawn, or modify the entity */ #define EV_OnEntityPreSpawn(i, o) \ - /** turret */ i(entity, __self) \ + /** entity */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(OnEntityPreSpawn, EV_OnEntityPreSpawn); @@ -217,41 +207,43 @@ MUTATOR_HOOKABLE(GetCvars, EV_NO_ARGS); // NOTE: Can't use EV_GetCvars because o /** can edit any "just fired" projectile */ #define EV_EditProjectile(i, o) \ - /**/ i(entity, __self) \ - /**/ i(entity, other) \ + /** projectile owner */ i(entity, MUTATOR_ARGV_0_entity) \ + /** projectile */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(EditProjectile, EV_EditProjectile); /** called when a monster spawns */ #define EV_MonsterSpawn(i, o) \ - /**/ i(entity, __self) \ + /** monster */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(MonsterSpawn, EV_MonsterSpawn); /** called when a monster dies */ #define EV_MonsterDies(i, o) \ - /**/ i(entity, frag_target) \ - /**/ i(entity, frag_attacker) \ + /** target */ i(entity, MUTATOR_ARGV_0_entity) \ + /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \ + /** deathtype */ i(float, MUTATOR_ARGV_2_float) \ /**/ MUTATOR_HOOKABLE(MonsterDies, EV_MonsterDies); /** called when a monster dies */ #define EV_MonsterRemove(i, o) \ - /**/ i(entity, rem_mon) \ + /** monster */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ -entity rem_mon; // avoiding ovewriting self & other MUTATOR_HOOKABLE(MonsterRemove, EV_MonsterRemove); /** called when a monster wants to respawn */ #define EV_MonsterRespawn(i, o) \ - /**/ i(entity, other) \ + /** monster */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(MonsterRespawn, EV_MonsterRespawn); /** called when a monster is dropping loot */ #define EV_MonsterDropItem(i, o) \ - /**/ i(entity, other) \ - /**/ o(entity, other) \ + /* monster */ i(entity, MUTATOR_ARGV_0_entity) \ + /* item (can be removed or changed) */ i(entity, MUTATOR_ARGV_1_entity) \ + /**/ o(entity, MUTATOR_ARGV_1_entity) \ + /* attacker */ i(entity, MUTATOR_ARGV_2_entity) \ /**/ .void(entity this) monster_loot; MUTATOR_HOOKABLE(MonsterDropItem, EV_MonsterDropItem); @@ -261,16 +253,13 @@ MUTATOR_HOOKABLE(MonsterDropItem, EV_MonsterDropItem); * returning true makes the monster stop */ #define EV_MonsterMove(i, o) \ - /**/ i(entity, __self) \ - /**/ i(float, monster_speed_run) \ - /**/ o(float, monster_speed_run) \ - /**/ i(float, monster_speed_walk) \ - /**/ o(float, monster_speed_walk) \ - /**/ i(entity, monster_target) \ - /**/ -float monster_speed_run; -float monster_speed_walk; -entity monster_target; + /** monster */ i(entity, MUTATOR_ARGV_0_entity) \ + /** run speed */ i(float, MUTATOR_ARGV_1_float) \ + /**/ o(float, MUTATOR_ARGV_1_float) \ + /** walk speed */ i(float, MUTATOR_ARGV_2_float) \ + /**/ o(float, MUTATOR_ARGV_2_float) \ + /** move target */ i(entity, MUTATOR_ARGV_3_entity) \ + /**/ MUTATOR_HOOKABLE(MonsterMove, EV_MonsterMove); /** called when a monster looks for another target */ @@ -278,7 +267,7 @@ MUTATOR_HOOKABLE(MonsterFindTarget, EV_NO_ARGS); /** called to change a random monster to a miniboss */ #define EV_MonsterCheckBossFlag(i, o) \ - /**/ i(entity, __self) \ + /** monster */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(MonsterCheckBossFlag, EV_MonsterCheckBossFlag); @@ -290,18 +279,17 @@ MUTATOR_HOOKABLE(AllowMobSpawning, EV_NO_ARGS); /** called when a player gets damaged to e.g. remove stuff he was carrying. */ #define EV_PlayerDamage_SplitHealthArmor(i, o) \ - /**/ i(entity, frag_inflictor) \ - /**/ i(entity, frag_attacker) \ - /** same as self */ i(entity, frag_target) \ - /** NOTE: this force already HAS been applied */ i(vector, damage_force) \ - /**/ i(float, damage_take) \ - /**/ o(float, damage_take) \ - /**/ i(float, damage_save) \ - /**/ o(float, damage_save) \ - /**/ -vector damage_force; -float damage_take; -float damage_save; + /** inflictor */ i(entity, MUTATOR_ARGV_0_entity) \ + /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \ + /** target */ i(entity, MUTATOR_ARGV_2_entity) \ + /** force (no out) */ i(vector, MUTATOR_ARGV_3_vector) \ + /** damage take */ i(float, MUTATOR_ARGV_4_float) \ + /** damage take */ o(float, MUTATOR_ARGV_4_float) \ + /** damage save */ i(float, MUTATOR_ARGV_5_float) \ + /** damage save */ o(float, MUTATOR_ARGV_5_float) \ + /** deathtype */ i(float, MUTATOR_ARGV_6_float) \ + /** damage */ i(float, MUTATOR_ARGV_7_float) \ + /**/ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor); /** @@ -309,20 +297,17 @@ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor * i'm not sure if I should change this around slightly (Naming of the entities, and also how they're done in g_damage). */ #define EV_PlayerDamage_Calculate(i, o) \ - /**/ i(entity, frag_inflictor) \ - /**/ i(entity, frag_attacker) \ - /**/ i(entity, frag_target) \ - /**/ i(float, frag_deathtype) \ - /**/ i(float, frag_damage) \ - /**/ o(float, frag_damage) \ - /**/ i(float, frag_mirrordamage) \ - /**/ o(float, frag_mirrordamage) \ - /**/ i(vector, frag_force) \ - /**/ o(vector, frag_force) \ + /** 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) \ + /** mirrordamage */ i(float, MUTATOR_ARGV_5_float) \ + /** mirrordamage */ o(float, MUTATOR_ARGV_5_float) \ + /** force */ i(vector, MUTATOR_ARGV_6_vector) \ + /** force */ o(vector, MUTATOR_ARGV_6_vector) \ /**/ -float frag_damage; -float frag_mirrordamage; -vector frag_force; MUTATOR_HOOKABLE(PlayerDamage_Calculate, EV_PlayerDamage_Calculate); /** @@ -331,10 +316,10 @@ MUTATOR_HOOKABLE(PlayerDamage_Calculate, EV_PlayerDamage_Calculate); #define EV_PlayerDamaged(i, o) \ /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \ /** target */ i(entity, MUTATOR_ARGV_1_entity) \ - /** health */ i(int, MUTATOR_ARGV_0_int) \ - /** armor */ i(int, MUTATOR_ARGV_1_int) \ - /** location */ i(vector, MUTATOR_ARGV_0_vector) \ - /** deathtype */ i(int, MUTATOR_ARGV_2_int) \ + /** health */ i(int, MUTATOR_ARGV_2_int) \ + /** armor */ i(int, MUTATOR_ARGV_3_int) \ + /** location */ i(vector, MUTATOR_ARGV_4_vector) \ + /** deathtype */ i(int, MUTATOR_ARGV_5_int) \ /**/ MUTATOR_HOOKABLE(PlayerDamaged, EV_PlayerDamaged); @@ -356,10 +341,9 @@ MUTATOR_HOOKABLE(W_Reload, EV_W_Reload); /** called at the end of player_powerups() in cl_client.qc, used for manipulating the values which are set by powerup items. */ #define EV_PlayerPowerups(i, o) \ - /**/ i(entity, __self) \ - /**/ i(int, olditems) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** old items */ i(int, MUTATOR_ARGV_1_int) \ /**/ -int olditems; MUTATOR_HOOKABLE(PlayerPowerups, EV_PlayerPowerups); /** @@ -409,24 +393,19 @@ MUTATOR_HOOKABLE(PlayerUseKey, EV_NO_ARGS); * } */ #define EV_SV_ParseClientCommand(i, o) \ - /** command name */ i(string, cmd_name) \ - /** also, argv() can be used */ i(int, cmd_argc) \ - /** whole command, use only if you really have to */ i(string, cmd_string) \ + /** client sending the command */ i(entity, MUTATOR_ARGV_0_entity) \ + /** command name */ i(string, MUTATOR_ARGV_1_string) \ + /** argc (also, argv() can be used) */ i(int, MUTATOR_ARGV_2_int) \ + /** whole command, use only if you really have to */ i(string, MUTATOR_ARGV_3_string) \ /**/ -string cmd_name; -int cmd_argc; -string cmd_string; MUTATOR_HOOKABLE(SV_ParseClientCommand, EV_SV_ParseClientCommand); /** please read EV_SV_ParseClientCommand description before using */ #define EV_SV_ParseServerCommand(i, o) \ - /** command name */ i(string, cmd_name) \ - /** also, argv() can be used */ i(int, cmd_argc) \ - /** whole command, use only if you really have to */ i(string, cmd_string) \ + /** command name */ i(string, MUTATOR_ARGV_0_string) \ + /** argc (also, argv() can be used) */ i(int, MUTATOR_ARGV_1_int) \ + /** whole command, use only if you really have to */ i(string, MUTATOR_ARGV_2_string) \ /**/ -//string cmd_name; -//int cmd_argc; -//string cmd_string; MUTATOR_HOOKABLE(SV_ParseServerCommand, EV_SV_ParseServerCommand); /** @@ -434,12 +413,11 @@ MUTATOR_HOOKABLE(SV_ParseServerCommand, EV_SV_ParseServerCommand); * return 1 to make the spawnpoint unusable */ #define EV_Spawn_Score(i, o) \ - /** player wanting to spawn */ i(entity, __self) \ - /** spot to be evaluated */ i(entity, spawn_spot) \ - /** _x is priority, _y is "distance" */ i(vector, spawn_score) \ - /**/ o(vector, spawn_score) \ + /** 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) \ /**/ -vector spawn_score; MUTATOR_HOOKABLE(Spawn_Score, EV_Spawn_Score); /** runs globally each server frame */ @@ -466,6 +444,7 @@ MUTATOR_HOOKABLE(Item_Spawn, EV_Item_Spawn); /**/ i(string, ret_string) \ /**/ o(string, ret_string) \ /**/ +//string ret_string; MUTATOR_HOOKABLE(SetWeaponreplace, EV_SetWeaponreplace); /** called when an item is about to respawn */ @@ -580,8 +559,8 @@ MUTATOR_HOOKABLE(HavocBot_ChooseRole, EV_HavocBot_ChooseRole); /** called when a target is checked for accuracy */ #define EV_AccuracyTargetValid(i, o) \ - /** attacker */ i(entity, frag_attacker) \ - /** target */ i(entity, frag_target) \ + /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \ + /** target */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(AccuracyTargetValid, EV_AccuracyTargetValid); enum { @@ -614,7 +593,7 @@ entity bullet_hit; //vector bullet_hitloc; // the end pos matches the hit location, apparently vector bullet_startpos; vector bullet_endpos; -//float frag_damage; +float frag_damage; MUTATOR_HOOKABLE(FireBullet_Hit, EV_FireBullet_Hit); #define EV_FixPlayermodel(i, o) \ @@ -679,16 +658,15 @@ MUTATOR_HOOKABLE(Race_FinalCheckpoint, EV_Race_FinalCheckpoint); /** called when player triggered kill (or is changing teams), return error to not do anything */ #define EV_ClientKill(i, o) \ - /** player */ i(entity, __self) \ - /* kill delay */ i(float, ret_float) \ - /* kill delay */ o(float, ret_float) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** kill delay */ i(float, MUTATOR_ARGV_1_float) \ + /**/ o(float, MUTATOR_ARGV_1_float) \ /**/ MUTATOR_HOOKABLE(ClientKill, EV_ClientKill); #define EV_FixClientCvars(i, o) \ - /**/ i(entity, fix_client) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ -entity fix_client; MUTATOR_HOOKABLE(FixClientCvars, EV_FixClientCvars); #define EV_SpectateSet(i, o) \ @@ -744,35 +722,30 @@ enum { }; #define EV_CheckRules_World(i, o) \ - /* status */ i(float, ret_float) \ - /* status */ o(float, ret_float) \ - /* time limit */ i(float, checkrules_timelimit) \ - /* frag limit */ i(int, checkrules_fraglimit) \ + /** status */ i(float, MUTATOR_ARGV_0_float) \ + /**/ o(float, MUTATOR_ARGV_0_float) \ + /* time limit */ i(float, MUTATOR_ARGV_1_float) \ + /* frag limit */ i(float, MUTATOR_ARGV_2_float) \ /**/ -float checkrules_timelimit; -int checkrules_fraglimit; MUTATOR_HOOKABLE(CheckRules_World, EV_CheckRules_World); #define EV_WantWeapon(i, o) \ - /**/ i(entity, want_weaponinfo) \ - /**/ i(float, ret_float) \ - /**/ o(float, ret_float) \ - /**/ i(bool, want_allguns) \ - /**/ o(bool, want_allguns) \ - /**/ i(bool, want_mutatorblocked) \ - /**/ o(bool, want_mutatorblocked) \ - /**/ -entity want_weaponinfo; -bool want_allguns; -bool want_mutatorblocked; + /** weapon info entity */ i(entity, MUTATOR_ARGV_0_entity) \ + /** do want? */ i(float, MUTATOR_ARGV_1_float) \ + /**/ o(float, MUTATOR_ARGV_1_float) \ + /** want all guns */ i(bool, MUTATOR_ARGV_2_bool) \ + /**/ o(bool, MUTATOR_ARGV_2_bool) \ + /** want mutator blocked */ i(bool, MUTATOR_ARGV_3_bool) \ + /**/ o(bool, MUTATOR_ARGV_3_bool) \ + /**/ MUTATOR_HOOKABLE(WantWeapon, EV_WantWeapon); #define EV_AddPlayerScore(i, o) \ - /**/ i(int, score_field) \ - /**/ i(float, ret_float) \ - /**/ o(float, ret_float) \ + /** score field */ i(int, MUTATOR_ARGV_0_int) \ + /** score */ i(float, MUTATOR_ARGV_1_float) \ + /**/ o(float, MUTATOR_ARGV_1_float) \ + /** player */ i(entity, MUTATOR_ARGV_2_entity) \ /**/ -int score_field; MUTATOR_HOOKABLE(AddPlayerScore, EV_AddPlayerScore); #define EV_GetPlayerStatus(i, o) \ @@ -790,7 +763,7 @@ MUTATOR_HOOKABLE(GetPlayerStatus, EV_GetPlayerStatus); MUTATOR_HOOKABLE(SetWeaponArena, EV_SetWeaponArena); #define EV_DropSpecialItems(i, o) \ - /**/ i(entity, frag_target) \ + /** target */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(DropSpecialItems, EV_DropSpecialItems); @@ -816,13 +789,11 @@ int wp_flag; MUTATOR_HOOKABLE(SendWaypoint, EV_SendWaypoint); #define EV_TurretValidateTarget(i, o) \ - /**/ i(entity, turret_this) \ - /**/ i(entity, turret_target) \ - /**/ i(int, turret_vflags) \ + /** turret */ i(entity, MUTATOR_ARGV_0_entity) \ + /** target */ i(entity, MUTATOR_ARGV_1_entity) \ + /** validate flags */ i(int, MUTATOR_ARGV_2_int) \ + /** target score */ o(float, MUTATOR_ARGV_3_float) \ /**/ -entity turret_this; -entity turret_target; -int turret_vflags; MUTATOR_HOOKABLE(TurretValidateTarget, EV_TurretValidateTarget); #define EV_TurretThink(i, o) \ @@ -834,8 +805,8 @@ MUTATOR_HOOKABLE(Ent_Init, EV_NO_ARGS); /** */ #define EV_PrepareExplosionByDamage(i, o) \ - /**/ i(entity, __self) \ - /**/ i(entity, frag_attacker) \ + /** projectile */ i(entity, MUTATOR_ARGV_0_entity) \ + /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \ /**/ MUTATOR_HOOKABLE(PrepareExplosionByDamage, EV_PrepareExplosionByDamage);