GetCvars_handleFloat(s, f, cvar_cl_shownames, "cl_shownames");\r
GetCvars_handleString(s, f, cvar_g_voretournamentversion, "g_voretournamentversion");\r
GetCvars_handleFloat(s, f, cvar_cl_handicap, "cl_handicap");\r
+ GetCvars_handleFloat(s, f, cvar_cl_clippedspectating, "cl_clippedspectating");\r
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriority, "cl_weaponpriority", W_FixWeaponOrder_ForceComplete);\r
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[0], "cl_weaponpriority0", W_FixWeaponOrder_AllowIncomplete);\r
GetCvars_handleString_Fixup(s, f, cvar_cl_weaponpriorities[1], "cl_weaponpriority1", W_FixWeaponOrder_AllowIncomplete);\r
GetCvars_handleFloat(s, f, cvar_cl_accuracy_data_receive, "cl_accuracy_data_receive");\r
GetCvars_handleFloat(s, f, cvar_chase_active, "chase_active");\r
GetCvars_handleFloat(s, f, cvar_cl_vore_stomachmodel, "cl_vore_stomachmodel");\r
+ GetCvars_handleFloat(s, f, cvar_cl_vore_swallowmodel, "cl_vore_swallowmodel");\r
GetCvars_handleFloat(s, f, cvar_cl_vore_autodigest, "cl_vore_autodigest");\r
\r
self.cvar_cl_accuracy_data_share = boolean(self.cvar_cl_accuracy_data_share);\r
float g_pickup_armorlarge_max;\r
float g_pickup_healthsmall;\r
float g_pickup_healthsmall_max;\r
+float g_pickup_healthsmall_consumable;\r
float g_pickup_healthmedium;\r
float g_pickup_healthmedium_max;\r
+float g_pickup_healthmedium_consumable;\r
float g_pickup_healthlarge;\r
float g_pickup_healthlarge_max;\r
+float g_pickup_healthlarge_consumable;\r
float g_pickup_healthmega;\r
float g_pickup_healthmega_max;\r
+float g_pickup_healthmega_consumable;\r
float g_weaponspeedfactor;\r
float g_weaponratefactor;\r
float g_weapondamagefactor;\r
g_warmup_allguns = cvar("g_warmup_allguns");\r
g_warmup_allow_timeout = cvar("g_warmup_allow_timeout");\r
\r
- if ((g_race && g_race_qualifying == 2) || g_arena || g_assault || cvar("g_campaign"))\r
+ if ((g_race && g_race_qualifying == 2) || g_arena || g_assault || g_rpg || cvar("g_campaign"))\r
inWarmupStage = 0; // these modes cannot work together, sorry\r
\r
g_pickup_respawntime_weapon = cvar("g_pickup_respawntime_weapon");\r
g_pickup_armorlarge_max = cvar("g_pickup_armorlarge_max");\r
g_pickup_healthsmall = cvar("g_pickup_healthsmall");\r
g_pickup_healthsmall_max = cvar("g_pickup_healthsmall_max");\r
+ g_pickup_healthsmall_consumable = cvar("g_pickup_healthsmall_consumable");\r
g_pickup_healthmedium = cvar("g_pickup_healthmedium");\r
g_pickup_healthmedium_max = cvar("g_pickup_healthmedium_max");\r
+ g_pickup_healthmedium_consumable = cvar("g_pickup_healthmedium_consumable");\r
g_pickup_healthlarge = cvar("g_pickup_healthlarge");\r
g_pickup_healthlarge_max = cvar("g_pickup_healthlarge_max");\r
+ g_pickup_healthlarge_consumable = cvar("g_pickup_healthlarge_consumable");\r
g_pickup_healthmega = cvar("g_pickup_healthmega");\r
g_pickup_healthmega_max = cvar("g_pickup_healthmega_max");\r
+ g_pickup_healthmega_consumable = cvar("g_pickup_healthmega_consumable");\r
\r
g_weapon_stay = cvar("g_weapon_stay");\r
\r
if(g_ghost_items >= 1)\r
g_ghost_items = 0.25; // default alpha value\r
\r
- if not(inWarmupStage && !g_ca)\r
+ if not(inWarmupStage && !g_ca && !g_rpg)\r
game_starttime = cvar("g_start_delay");\r
\r
sv_pitch_min = cvar("sv_pitch_min");\r
#define SND_ATTENUATION 2\r
#define SND_LARGEENTITY 8\r
#define SND_LARGESOUND 16\r
+#define SND_SPEEDUSHORT4000 32\r
\r
float sound_allowed(float dest, entity e)\r
{\r
return;\r
sound_builtin(e, chan, samp, vol, atten);\r
}\r
-void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten)\r
+void soundtoat(float dest, entity e, vector o, float chan, string samp, float vol, float atten, float spd)\r
{\r
float entno, idx;\r
\r
sflags |= SND_VOLUME;\r
if (atten != 64)\r
sflags |= SND_ATTENUATION;\r
+ if (spd)\r
+ sflags |= SND_SPEEDUSHORT4000;\r
if (entno >= 8192)\r
sflags |= SND_LARGEENTITY;\r
if (idx >= 256)\r
WriteByte(dest, vol);\r
if (sflags & SND_ATTENUATION)\r
WriteByte(dest, atten);\r
+ if(sflags & SND_SPEEDUSHORT4000)\r
+ WriteShort(dest, spd * 4000);\r
if (sflags & SND_LARGEENTITY)\r
{\r
WriteShort(dest, entno);\r
WriteCoord(dest, o_y);\r
WriteCoord(dest, o_z);\r
}\r
-void soundto(float dest, entity e, float chan, string samp, float vol, float atten)\r
+void soundto(float dest, entity e, float chan, string samp, float vol, float atten, float spd)\r
{\r
vector o;\r
\r
return;\r
\r
o = e.origin + 0.5 * (e.mins + e.maxs);\r
- soundtoat(dest, e, o, chan, samp, vol, atten);\r
+ soundtoat(dest, e, o, chan, samp, vol, atten, spd);\r
}\r
-void soundat(entity e, vector o, float chan, string samp, float vol, float atten)\r
+void soundat(entity e, vector o, float chan, string samp, float vol, float atten, float spd)\r
{\r
- soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten);\r
+ soundtoat(MSG_BROADCAST, e, o, chan, samp, vol, atten, spd);\r
}\r
void stopsoundto(float dest, entity e, float chan)\r
{\r
if (clienttype(e) == CLIENTTYPE_REAL)\r
{\r
msg_entity = e;\r
- soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE);\r
+ soundtoat(MSG_ONE, world, '0 0 0', CHAN_AUTO, filename, VOL_BASE, ATTN_NONE, 0);\r
}\r
}\r
\r
\r
void precache()\r
{\r
+ float i;\r
+\r
// gamemode related things\r
precache_model ("models/misc/chatbubble.spr");\r
- precache_model ("models/misc/teambubble.spr");\r
- precache_model ("models/misc/teambubbleheal.spr");\r
\r
// used by the waypoint editor\r
precache_model ("models/rune.mdl");\r
precache_all_models("models/player/*.md3");\r
precache_all_models("models/player/*.psk");\r
precache_all_models("models/player/*.iqm");\r
- //precache_model("models/player/vixen.zym");\r
}\r
\r
if (cvar("sv_defaultcharacter"))\r
{\r
PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));\r
PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));\r
+ if(cvar("g_healthsize"))\r
+ precache_sound("misc/macro_footstep.wav");\r
}\r
\r
// gore and miscellaneous sounds\r
precache_sound ("misc/beep.wav");\r
PrecacheGlobalSound((globalsound_fall = "misc/hitground 4"));\r
PrecacheGlobalSound((globalsound_metalfall = "misc/metalhitground 4"));\r
+ if(cvar("g_healthsize"))\r
+ precache_sound("misc/macro_hitground.wav");\r
precache_sound ("misc/null.wav");\r
precache_sound ("misc/spawn.wav");\r
precache_sound ("misc/talk.wav");\r
precache_sound ("player/digest.wav");\r
precache_sound ("misc/health_regen.wav");\r
precache_sound ("misc/armor_regen.wav");\r
+ precache_sound ("misc/power_fail.wav");\r
\r
if (g_jetpack)\r
precache_sound ("misc/jetpack_fly.wav");\r
// common weapon precaches\r
precache_sound ("weapons/weapon_switch.wav");\r
precache_sound ("weapons/weaponpickup.wav");\r
- precache_sound ("weapons/grabber_fire.wav"); // grabber\r
- precache_sound ("weapons/grabber_altfire.wav"); // grabber\r
- precache_sound ("weapons/grabber_impact.wav"); // grabber\r
- precache_sound ("weapons/stomachkick.wav");\r
+\r
+ // precache display digits\r
+ for(i = WEP_FIRST; i <= WEP_LAST; ++i)\r
+ {\r
+ entity e;\r
+ float w;\r
+ e = get_weaponinfo(i);\r
+ for(w = 1; fexists(strcat("models/weapons/v_", e.netname, "_digit1-", ftos(w) , ".md3")); w++)\r
+ precache_model (strcat("models/weapons/v_", e.netname, "_digit1-", ftos(w) , ".md3"));\r
+ for(w = 1; fexists(strcat("models/weapons/v_", e.netname, "_digit2-", ftos(w) , ".md3")); w++)\r
+ precache_model (strcat("models/weapons/v_", e.netname, "_digit2-", ftos(w) , ".md3"));\r
+ }\r
+\r
+ for(i = 0; i < 8; i += 1)\r
+ precache_sound (strcat("weapons/hit", ftos(i), ".wav"));\r
\r
if (cvar("sv_precacheweapons"))\r
{\r
p = pow(2, chan);\r
if (pl.soundentity.cnt & p)\r
return;\r
- soundtoat(MSG_ALL, pl.soundentity, gettaginfo(pl.soundentity, 0), chan, samp, vol, attn);\r
+ soundtoat(MSG_ALL, pl.soundentity, gettaginfo(pl.soundentity, 0), chan, samp, vol, attn, 0);\r
pl.soundentity.cnt |= p;\r
}\r
\r
Net_LinkEntity(e, FALSE, 0.1, modeleffect_SendEntity);\r
}\r
\r
+float portrait_SendEntity(entity to, float sf)\r
+{\r
+ if(to != self.enemy)\r
+ return FALSE;\r
+\r
+ WriteByte(MSG_ENTITY, ENT_CLIENT_PORTRAIT);\r
+\r
+ WriteString(MSG_ENTITY, self.owner.playermodel);\r
+ WriteByte(MSG_ENTITY, stof(self.owner.playerskin));\r
+ WriteString(MSG_ENTITY, self.owner.netname);\r
+\r
+ return TRUE;\r
+}\r
+\r
+void portrait(entity pl, entity targ)\r
+{\r
+ entity e;\r
+ e = spawn();\r
+ e.classname = "portrait";\r
+ e.owner = pl;\r
+ e.enemy = targ;\r
+\r
+ Net_LinkEntity(e, FALSE, 0, portrait_SendEntity);\r
+}\r
+\r
void shockwave_spawn(string m, vector org, float sz, float t1, float t2)\r
{\r
return modeleffect_spawn(m, 0, 0, org, '0 0 0', '0 0 0', '0 0 0', 0, sz, 1, t1, t2);\r
e.think = defer_think;\r
e.nextthink = time + fdelay;\r
}\r
+\r
+// returns 1 if player is at minimum size and 0 if player is at normal size\r
+float playersize_micro(entity e)\r
+{\r
+ if(!cvar("g_healthsize"))\r
+ return 0;\r
+ return bound(0, (e.health / cvar("g_healthsize_center") - 1) / (cvar("g_healthsize_min") / cvar("g_healthsize_center") - 1), 1);\r
+}\r
+// returns 0 if player is at normal size and 1 if player is at maximum size\r
+float playersize_macro(entity e)\r
+{\r
+ if(!cvar("g_healthsize"))\r
+ return 0;\r
+ return 1 - bound(0, (e.health / cvar("g_healthsize_max") - 1) / (cvar("g_healthsize_center") / cvar("g_healthsize_max") - 1), 1);\r
+}\r