X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fevents.qh;h=58e9ca127dabb4fb3183616f7815885fcfafa861;hb=25bfe79fe909550426d761d99ac65e38c59433ad;hp=7c2fa32dc3a07e463947a13d41d41c52f3433723;hpb=ff169c9d675521c4e05efe123024cf9703fd4984;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 7c2fa32dc..58e9ca127 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -27,6 +27,12 @@ MUTATOR_HOOKABLE(PutClientInServer, EV_PutClientInServer); /**/ MUTATOR_HOOKABLE(ForbidSpawn, EV_ForbidSpawn); +/** returns true if client should be put as player on connection */ +#define EV_AutoJoinOnConnection(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(AutoJoinOnConnection, EV_AutoJoinOnConnection); + /** called when player spawns to determine whether to give them random start weapons. Return true to forbid giving them. */ #define EV_ForbidRandomStartWeapons(i, o) \ /** player */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -123,6 +129,8 @@ MUTATOR_HOOKABLE(ItemSound, EV_ItemSound); /** 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); @@ -146,18 +154,12 @@ MUTATOR_HOOKABLE(TeamBalance_CheckAllowedTeams, /** return true to manually override team counts */ MUTATOR_HOOKABLE(TeamBalance_GetTeamCounts, EV_NO_ARGS); -/** allow overriding of team counts */ +/** allows overriding of team counts */ #define EV_TeamBalance_GetTeamCount(i, o) \ /** team index to count */ i(float, MUTATOR_ARGV_0_float) \ /** player to ignore */ i(entity, MUTATOR_ARGV_1_entity) \ - /** number of players in a team */ i(float, MUTATOR_ARGV_2_float) \ - /**/ o(float, MUTATOR_ARGV_2_float) \ - /** number of bots in a team */ i(float, MUTATOR_ARGV_3_float) \ - /**/ o(float, MUTATOR_ARGV_3_float) \ - /** lowest scoring human in a team */ i(entity, MUTATOR_ARGV_4_entity) \ - /**/ o(entity, MUTATOR_ARGV_4_entity) \ - /** lowest scoring bot in a team */ i(entity, MUTATOR_ARGV_5_entity) \ - /**/ o(entity, MUTATOR_ARGV_5_entity) \ + /** number of players in a team */ o(float, MUTATOR_ARGV_2_float) \ + /** number of bots in a team */ o(float, MUTATOR_ARGV_3_float) \ /**/ MUTATOR_HOOKABLE(TeamBalance_GetTeamCount, EV_TeamBalance_GetTeamCount); @@ -170,6 +172,17 @@ MUTATOR_HOOKABLE(TeamBalance_GetTeamCount, EV_TeamBalance_GetTeamCount); /**/ MUTATOR_HOOKABLE(TeamBalance_FindBestTeams, EV_TeamBalance_FindBestTeams); +/** Called during autobalance. Return true to override the player that will be +switched. */ +#define EV_TeamBalance_GetPlayerForTeamSwitch(i, o) \ + /** source team index */ i(int, MUTATOR_ARGV_0_int) \ + /** destination team index */ i(int, MUTATOR_ARGV_1_int) \ + /** is looking for bot */ i(bool, MUTATOR_ARGV_2_bool) \ + /** player to switch */ o(entity, MUTATOR_ARGV_3_entity) \ + /**/ +MUTATOR_HOOKABLE(TeamBalance_GetPlayerForTeamSwitch, + EV_TeamBalance_GetPlayerForTeamSwitch); + /** copies variables for spectating "spectatee" to "this" */ #define EV_SpectateCopy(i, o) \ /** spectatee */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -247,7 +260,7 @@ MUTATOR_HOOKABLE(CustomizeWaypoint, EV_CustomizeWaypoint); MUTATOR_HOOKABLE(FilterItemDefinition, EV_FilterItemDefinition); /** - * checks if the current item may be spawned (.items and .weapons may be read and written to, as well as the ammo_ fields) + * checks if the current item may be spawned (.items may be read and written to, as well as the ammo_ fields) * return error to request removal */ #define EV_FilterItem(i, o) \ @@ -417,7 +430,8 @@ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor /** 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) \ + /** force */ o(vector, MUTATOR_ARGV_6_vector) \ + /** weapon entity */ i(entity, MUTATOR_ARGV_7_entity) \ /**/ MUTATOR_HOOKABLE(Damage_Calculate, EV_Damage_Calculate); @@ -742,6 +756,30 @@ RESOURCE_* constants for resource types. Return true to forbid giving. */ /**/ 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. */ +#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) \ + /** 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. */ +#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) \ + /** amount */ i(float, MUTATOR_ARGV_2_float) \ + /**/ o(float, MUTATOR_ARGV_2_float) \ + /** limit */ i(float, MUTATOR_ARGV_3_float) \ + /**/ o(float, MUTATOR_ARGV_3_float) \ + /**/ +MUTATOR_HOOKABLE(TakeResourceWithLimit, EV_TakeResourceWithLimit); + /** called at when a player connect */ #define EV_ClientConnect(i, o) \ /** player */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -1112,6 +1150,13 @@ MUTATOR_HOOKABLE(Item_ScheduleRespawn, EV_Item_ScheduleRespawn); /**/ MUTATOR_HOOKABLE(PlayerPhysics_UpdateStats, EV_PlayerPhysics_UpdateStats); +/** called after physics stats are set on a player, allows post-initialization modifications */ +#define EV_PlayerPhysics_PostUpdateStats(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** maxspeed_mod */ i(float, MUTATOR_ARGV_1_float) \ + /**/ +MUTATOR_HOOKABLE(PlayerPhysics_PostUpdateStats, EV_PlayerPhysics_PostUpdateStats); + /** 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) \ @@ -1140,3 +1185,21 @@ enum { MUT_VOTEPARSE_INVALID, // return -1 (vote parsed but counted as invalid, no action or vote) MUT_VOTEPARSE_UNACCEPTABLE // return 0 (vote parameter counted as unacceptable, warns caller) }; + +/** + * Called when freezing an entity (monster or player), return true to force showing a waypoint + */ +#define EV_Freeze(i, o) \ + /** targ */ i(entity, MUTATOR_ARGV_0_entity) \ + /** revive speed */ i(float, MUTATOR_ARGV_1_float) \ + /** frozen type */ i(int, MUTATOR_ARGV_2_int) \ + /**/ +MUTATOR_HOOKABLE(Freeze, EV_Freeze); + +/** + * Called when an entity (monster or player) is defrosted + */ +#define EV_Unfreeze(i, o) \ + /** targ */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(Unfreeze, EV_Unfreeze);