#include "player.qh"
+#include <common/anim.qh>
+#include <common/animdecide.qh>
+#include <common/animdecide.qh>
+#include <common/csqcmodel_settings.qh>
+#include <common/deathtypes/all.qh>
#include <common/effects/all.qh>
-#include "bot/api.qh"
-#include "cheats.qh"
-#include "client.qh"
-#include "clientkill.qh"
-#include "g_damage.qh"
-#include "g_world.qh"
-#include "handicap.qh"
-#include "miscfunctions.qh"
-#include "portals.qh"
-#include "teamplay.qh"
-#include <server/sv_main.qh>
-#include "weapons/common.qh"
-#include "weapons/throwing.qh"
-#include "command/common.qh"
-#include "command/vote.qh"
-#include "../common/state.qh"
-#include "../common/anim.qh"
-#include "../common/animdecide.qh"
-#include "../common/csqcmodel_settings.qh"
-#include "../common/gamemodes/sv_rules.qh"
-#include "../common/deathtypes/all.qh"
-#include "../common/mapobjects/subs.qh"
-#include <common/mapobjects/teleporters.qh>
-#include "../common/playerstats.qh"
-#include "../lib/csqcmodel/sv_model.qh"
-
-#include "../common/minigames/sv_minigames.qh"
-
+#include <common/effects/qc/_mod.qh>
#include <common/gamemodes/_mod.qh>
-
-#include "../common/physics/player.qh"
-#include "../common/effects/qc/_mod.qh"
-#include "../common/mutators/mutator/waypoints/waypointsprites.qh"
-#include "../common/mapobjects/_mod.qh"
-#include "../common/wepent.qh"
-
-#include "weapons/weaponstats.qh"
+#include <common/gamemodes/sv_rules.qh>
+#include <common/mapobjects/_mod.qh>
+#include <common/mapobjects/subs.qh>
+#include <common/mapobjects/teleporters.qh>
+#include <common/minigames/sv_minigames.qh>
+#include <common/mutators/mutator/waypoints/waypointsprites.qh>
+#include <common/physics/player.qh>
+#include <common/playerstats.qh>
+#include <common/state.qh>
+#include <common/wepent.qh>
+#include <lib/csqcmodel/sv_model.qh>
+#include <server/bot/api.qh>
+#include <server/cheats.qh>
+#include <server/client.qh>
+#include <server/clientkill.qh>
+#include <server/command/common.qh>
+#include <server/command/vote.qh>
+#include <server/damage.qh>
+#include <server/handicap.qh>
+#include <server/hook.qh>
+#include <server/main.qh>
+#include <server/mutators/_mod.qh>
+#include <server/portals.qh>
+#include <server/teamplay.qh>
+#include <server/weapons/accuracy.qh>
+#include <server/weapons/common.qh>
+#include <server/weapons/throwing.qh>
+#include <server/weapons/weaponstats.qh>
#include <server/weapons/weaponsystem.qh>
-
-#include "../common/animdecide.qh"
+#include <server/world.qh>
void Drop_Special_Items(entity player)
{
UNSET_ONGROUND(this);
// dying animation
this.deadflag = DEAD_DYING;
+ // don't play teleportation sounds
+ this.teleportable = TELEPORT_SIMPLE;
STAT(MOVEVARS_SPECIALCOMMAND, this) = false; // sweet release
GiveResourceWithLimit(targ, RES_HEALTH, amount, limit);
return true;
}
+
+void precache_playermodel(string m)
+{
+ int globhandle, i, n;
+ string f;
+
+ // remove :<skinnumber> suffix
+ int j = strstrofs(m, ":", 0);
+ if(j >= 0)
+ m = substring(m, 0, j);
+
+ if(substring(m, -9, 5) == "_lod1")
+ return;
+ if(substring(m, -9, 5) == "_lod2")
+ return;
+ precache_model(m);
+ f = strcat(substring(m, 0, -5), "_lod1", substring(m, -4, -1));
+ if(fexists(f))
+ precache_model(f);
+ f = strcat(substring(m, 0, -5), "_lod2", substring(m, -4, -1));
+ if(fexists(f))
+ precache_model(f);
+
+ globhandle = search_begin(strcat(m, "_*.sounds"), true, false);
+ if (globhandle < 0)
+ return;
+ n = search_getsize(globhandle);
+ for (i = 0; i < n; ++i)
+ {
+ //print(search_getfilename(globhandle, i), "\n");
+ f = search_getfilename(globhandle, i);
+ PrecachePlayerSounds(f);
+ }
+ search_end(globhandle);
+}
+void precache_all_playermodels(string pattern)
+{
+ int globhandle = search_begin(pattern, true, false);
+ if (globhandle < 0) return;
+ int n = search_getsize(globhandle);
+ for (int i = 0; i < n; ++i)
+ {
+ string s = search_getfilename(globhandle, i);
+ precache_playermodel(s);
+ }
+ search_end(globhandle);
+}
+
+void precache_playermodels(string s)
+{
+ FOREACH_WORD(s, true, { precache_playermodel(it); });
+}
+
+PRECACHE(PlayerModels)
+{
+ // Precache all player models if desired
+ if (autocvar_sv_precacheplayermodels)
+ {
+ PrecachePlayerSounds("sound/player/default.sounds");
+ precache_all_playermodels("models/player/*.zym");
+ precache_all_playermodels("models/player/*.dpm");
+ precache_all_playermodels("models/player/*.md3");
+ precache_all_playermodels("models/player/*.psk");
+ precache_all_playermodels("models/player/*.iqm");
+ }
+
+ if (autocvar_sv_defaultcharacter)
+ {
+ precache_playermodels(autocvar_sv_defaultplayermodel_red);
+ precache_playermodels(autocvar_sv_defaultplayermodel_blue);
+ precache_playermodels(autocvar_sv_defaultplayermodel_yellow);
+ precache_playermodels(autocvar_sv_defaultplayermodel_pink);
+ precache_playermodels(autocvar_sv_defaultplayermodel);
+ }
+}