]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/cl_player.qh
Merge branch 'terencehill/g_lms_extra_lives' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / cl_player.qh
1 #ifndef CL_PLAYER_H
2 #define CL_PLAYER_H
3
4 .entity pusher;
5 .float pushltime;
6 .float istypefrag;
7
8 .float CopyBody_nextthink;
9 .void() CopyBody_think;
10 void CopyBody_Think();
11 void CopyBody(float keepvelocity);
12
13 void player_setupanimsformodel();
14
15 void player_anim();
16
17 void PlayerCorpseDamage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force);
18
19 // g_<gametype>_str:
20 // If 0, default is used.
21 // If <0, 0 is used.
22 // Otherwise, g_str (default value) is used.
23 // For consistency, negative values there are mapped to zero too.
24 #define GAMETYPE_DEFAULTED_SETTING(str) \
25         ((gametype_setting_tmp = cvar(strcat("g_", GetGametype(), "_" #str))), \
26         (gametype_setting_tmp < 0) ? 0 \
27         : (gametype_setting_tmp == 0 || autocvar_g_respawn_delay_forced) ? max(0, autocvar_g_##str) \
28         : gametype_setting_tmp)
29
30 void calculate_player_respawn_time();
31
32 void ClientKill_Now_TeamChange();
33
34 void MoveToTeam(entity client, float team_colour, float type);
35
36 void PlayerDamage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force);
37
38 /** to be used by `prvm_edictset server playernumber muted 1` */
39 .float muted;
40 int Say(entity source, float teamsay, entity privatesay, string msgin, float floodcontrol);
41
42 // player sounds, voice messages
43 // TODO implemented fall and falling
44 #define ALLPLAYERSOUNDS(X) \
45         X(death) \
46         X(drown) \
47         X(fall) \
48         X(falling) \
49         X(gasp) \
50         X(jump) \
51         X(pain100) \
52         X(pain25) \
53         X(pain50) \
54         X(pain75)
55
56 #define ALLVOICEMSGS(X) \
57         X(attack) \
58         X(attackinfive) \
59         X(coverme) \
60         X(defend) \
61         X(freelance) \
62         X(incoming) \
63         X(meet) \
64         X(needhelp) \
65         X(seenflag) \
66         X(taunt) \
67         X(teamshoot)
68
69 // reserved sound names for the future (some models lack sounds for them):
70 // _VOICEMSG(flagcarriertakingdamage)
71 // _VOICEMSG(getflag)
72 // reserved sound names for the future (ALL models lack sounds for them):
73 // _VOICEMSG(affirmative)
74 // _VOICEMSG(attacking)
75 // _VOICEMSG(defending)
76 // _VOICEMSG(roaming)
77 // _VOICEMSG(onmyway)
78 // _VOICEMSG(droppedflag)
79 // _VOICEMSG(negative)
80 // _VOICEMSG(seenenemy)
81
82 #define X(m) .string playersound_##m;
83 ALLPLAYERSOUNDS(X)
84 ALLVOICEMSGS(X)
85 #undef X
86
87 bool GetPlayerSoundSampleField_notFound;
88 float GetVoiceMessageVoiceType(string type);
89 .string GetVoiceMessageSampleField(string type);
90 .string GetPlayerSoundSampleField(string type);
91 void PrecacheGlobalSound(string samplestring);
92 void PrecachePlayerSounds(string f);
93 void ClearPlayerSounds(entity this);
94 float LoadPlayerSounds(string f, bool strict);
95 void UpdatePlayerSounds(entity this);
96 #define FakeGlobalSound(sample, chan, voicetype) _GlobalSound(sample, chan, voicetype, true)
97 void _GlobalSound(string sample, float chan, float voicetype, bool fake);
98 #define GlobalSound(def, chan, voicetype) _GlobalSound((def).m_globalsoundstr, chan, voicetype, false)
99 void PlayerSound(.string samplefield, float chan, float voicetype);
100 void VoiceMessage(string type, string msg);
101
102 .string m_globalsoundstr;
103 REGISTRY(GlobalSounds, BITS(8) - 1)
104 #define GlobalSounds_from(i) _GlobalSounds_from(i, NULL)
105 #define REGISTER_GLOBALSOUND(id, str) \
106         REGISTER(GlobalSounds, GS, id, m_id, new(GlobalSound)) \
107         { \
108                 make_pure(this); \
109                 this.m_globalsoundstr = str; \
110         }
111 REGISTER_REGISTRY(GlobalSounds)
112 REGISTRY_SORT(GlobalSounds)
113 REGISTRY_CHECK(GlobalSounds)
114 PRECACHE(GlobalSounds)
115 {
116         FOREACH(GlobalSounds, true, LAMBDA(PrecacheGlobalSound(it.m_globalsoundstr)));
117 }
118
119 REGISTER_GLOBALSOUND(STEP, "misc/footstep0 6")
120 REGISTER_GLOBALSOUND(STEP_METAL, "misc/metalfootstep0 6")
121 REGISTER_GLOBALSOUND(FALL, "misc/hitground 4")
122 REGISTER_GLOBALSOUND(FALL_METAL, "misc/metalhitground 4")
123
124 #endif