X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fevents.qh;h=eca689e41a9e315172493dae132e410dd9233a9b;hb=1c61b2c73d8e23c5a052c89c406e29938ff623e0;hp=2d32dc966a32f375c726888f7f4bcda3d0c69228;hpb=8b168a411c49c503a047237b82b6869cf8068857;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 2d32dc966..eca689e41 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -86,14 +86,6 @@ MUTATOR_HOOKABLE(FragCenterMessage, EV_FragCenterMessage); /**/ MUTATOR_HOOKABLE(PlayHitsound, EV_PlayHitsound); -/** called when a weapon sound is about to be played, allows custom paths etc. */ -#define EV_WeaponSound(i, o) \ - /** sound */ i(string, MUTATOR_ARGV_0_string) \ - /** output */ i(string, MUTATOR_ARGV_1_string) \ - /**/ o(string, MUTATOR_ARGV_1_string) \ - /**/ -MUTATOR_HOOKABLE(WeaponSound, EV_WeaponSound); - /** called when an item model is about to be set, allows custom paths etc. */ #define EV_ItemModel(i, o) \ /** model */ i(string, MUTATOR_ARGV_0_string) \ @@ -128,9 +120,18 @@ MUTATOR_HOOKABLE(MatchEnd, EV_NO_ARGS); /**/ 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(CheckAllowedTeams, EV_CheckAllowedTeams); +/** allows overriding best team */ +#define EV_JoinBestTeam(i, o) \ + /** player checked */ i(entity, MUTATOR_ARGV_0_entity) \ + /** team number */ i(float, MUTATOR_ARGV_1_float) \ + /**/ o(float, MUTATOR_ARGV_1_float) \ + /**/ +MUTATOR_HOOKABLE(JoinBestTeam, EV_JoinBestTeam); + /** copies variables for spectating "spectatee" to "this" */ #define EV_SpectateCopy(i, o) \ /** spectatee */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -294,7 +295,7 @@ MUTATOR_HOOKABLE(MonsterRespawn, EV_MonsterRespawn); /**/ o(entity, MUTATOR_ARGV_1_entity) \ /* attacker */ i(entity, MUTATOR_ARGV_2_entity) \ /**/ -.void(entity this) monster_loot; +.entity monster_loot; MUTATOR_HOOKABLE(MonsterDropItem, EV_MonsterDropItem); /** @@ -531,10 +532,7 @@ MUTATOR_HOOKABLE(SetWeaponreplace, EV_SetWeaponreplace); /** called when an item is about to respawn */ #define EV_Item_RespawnCountdown(i, o) \ - /** item name */ i(string, MUTATOR_ARGV_0_string) \ - /**/ o(string, MUTATOR_ARGV_0_string) \ - /** item colour */ i(vector, MUTATOR_ARGV_1_vector) \ - /**/ o(vector, MUTATOR_ARGV_1_vector) \ + /** item */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(Item_RespawnCountdown, EV_Item_RespawnCountdown); @@ -732,6 +730,12 @@ MUTATOR_HOOKABLE(Race_FinalCheckpoint, EV_Race_FinalCheckpoint); /**/ MUTATOR_HOOKABLE(ClientKill, EV_ClientKill); +/** called when player is about to be killed during kill command or changing teams */ +#define EV_ClientKill_Now(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(ClientKill_Now, EV_ClientKill_Now); + #define EV_FixClientCvars(i, o) \ /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ @@ -879,7 +883,9 @@ MUTATOR_HOOKABLE(PrepareExplosionByDamage, EV_PrepareExplosionByDamage); /**/ MUTATOR_HOOKABLE(MonsterModel, EV_MonsterModel); -/**/ +/** + * Called before player changes their team. Return true to block team change. + */ #define EV_Player_ChangeTeam(i, o) \ /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /** current team */ i(float, MUTATOR_ARGV_1_float) \ @@ -887,6 +893,24 @@ MUTATOR_HOOKABLE(MonsterModel, EV_MonsterModel); /**/ MUTATOR_HOOKABLE(Player_ChangeTeam, EV_Player_ChangeTeam); +/** + * Called after player has changed their team. + */ +#define EV_Player_ChangedTeam(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** old team */ i(float, MUTATOR_ARGV_1_float) \ + /** current team */ i(float, MUTATOR_ARGV_2_float) \ + /**/ +MUTATOR_HOOKABLE(Player_ChangedTeam, EV_Player_ChangedTeam); + +/** + * Called when player is about to be killed when changing teams. Return true to block killing. + */ +#define EV_Player_ChangeTeamKill(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(Player_ChangeTeamKill, EV_Player_ChangeTeamKill); + /**/ #define EV_URI_GetCallback(i, o) \ /** id */ i(float, MUTATOR_ARGV_0_float) \ @@ -928,3 +952,41 @@ MUTATOR_HOOKABLE(ChatMessageTo, EV_ChatMessageTo); /** return true to just restart the match, for modes that don't support readyrestart */ MUTATOR_HOOKABLE(ReadyRestart_Deny, EV_NO_ARGS); + +/** called when a fusion reactor is validating its target */ +#define EV_FusionReactor_ValidTarget(i, o) \ + /** turret */ i(entity, MUTATOR_ARGV_0_entity) \ + /** target */ i(entity, MUTATOR_ARGV_1_entity) \ + /**/ +MUTATOR_HOOKABLE(FusionReactor_ValidTarget, EV_FusionReactor_ValidTarget); + +enum { + MUT_FUSREAC_TARG_CONTINUE, // return this flag to make the function continue as normal + MUT_FUSREAC_TARG_VALID, // return this flag to make the function return true (valid target) + MUT_FUSREAC_TARG_INVALID // return this flag to make the function return false (invalid target) +}; + +/** return true to hide the 'teamnumbers are imbalanced' message */ +#define EV_HideTeamNagger(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(HideTeamNagger, EV_HideTeamNagger); + +/** return true to show a waypoint while the item is spawning */ +#define EV_Item_ScheduleRespawn(i, o) \ + /** item */ i(entity, MUTATOR_ARGV_0_entity) \ + /** respawn time */ i(float, MUTATOR_ARGV_1_float) \ + /**/ +MUTATOR_HOOKABLE(Item_ScheduleRespawn, EV_Item_ScheduleRespawn); + +/** called before physics stats are set on a player, allows limited early customization */ +#define EV_PlayerPhysics_UpdateStats(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(PlayerPhysics_UpdateStats, EV_PlayerPhysics_UpdateStats); + +/** return true to use your own aim target (or none at all) */ +#define EV_HavocBot_Aim(i, o) \ + /** bot */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(HavocBot_Aim, EV_HavocBot_Aim);