From 9a1132e1db2c5e45f1addf93f72f3afc7f38e3f6 Mon Sep 17 00:00:00 2001 From: MirceaKitsune Date: Sun, 1 May 2011 23:28:17 +0300 Subject: [PATCH] Basic implementation for scaling players based on their health --- data/defaultVT.cfg | 3 +++ data/qcsrc/server/cl_client.qc | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/data/defaultVT.cfg b/data/defaultVT.cfg index 3707e475..dbb2de0c 100644 --- a/data/defaultVT.cfg +++ b/data/defaultVT.cfg @@ -1547,6 +1547,9 @@ set g_vore_regurgitatecolor_release_fade 0.01 "how quickly the regurgitation col set g_vore_regurgitatecolor_digest "0.15 0.25 0" "the color players will have when digested, only works when g_vore_keepdeadprey is disabled" set g_vore_keepdeadprey 1 "If enabled, prey remains in the stomach after dying, else the predator throws up their dead body. 0 = disabled, 1 = enabled, anything between = probability" +set g_healthsize 1 "Players who are low on health shrink and become smaller" +set g_healthsize_speed 0.1 "Players who are low on health shrink and become smaller" + // part of an ugly hack for the menu audio sliders to work with the cutsound feature seta menu_volume 0.5 seta menu_bgmvolume 1 diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index a9668ea4..8ef9663f 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -2246,6 +2246,23 @@ float vercmp(string v1, string v2) return vercmp_recursive(v1, v2); } +.float current_scale; +void ApplyHealthSize() +{ + if not(cvar("g_healthsize")) + return; + + self.current_scale = self.health / 100; // range between 0 and 100 + self.current_scale = bound(0, self.current_scale, 100); + + if(self.scale < self.current_scale - self.scale) + self.scale += cvar("g_healthsize_speed") * sys_frametime; + else if(self.scale > self.current_scale + self.scale) + self.scale -= cvar("g_healthsize_speed") * sys_frametime; + else + self.scale = self.current_scale; +} + void ObserverThink() { if (self.flags & FL_JUMPRELEASED) { @@ -2358,6 +2375,9 @@ void PlayerPreThink (void) // core code for the vore system Vore(); + // health based player size + ApplyHealthSize(); + // version nagging if(self.version_nagtime) if(self.cvar_g_voretournamentversion) -- 2.39.2