set g_healthsize_weapon_scalefactor 1 "Amount by which player size resizes the view weapon model"\r
set g_healthsize_weapon_scalefactor_pos 10 "Amount by which the view model is moved vertically based on player size"\r
\r
+set g_power 5\r
+set g_power_reboot 3\r
+\r
// part of an ugly hack for the menu audio sliders to work with the cutsound feature\r
seta menu_volume 1\r
seta menu_bgmvolume 0.5\r
// only for Porto\r
float angles_held_status;\r
vector angles_held;\r
+\r
+float power_boot;\r
armor_max = ReadCoord();\r
teamheal_max = ReadCoord();\r
\r
+ g_power = ReadShort();\r
+ g_power_reboot = ReadShort();\r
+\r
if(!postinit)\r
PostInit();\r
}\r
\r
// helper system\r
if(cvar("cl_helper"))\r
+ if not(getstati(STAT_ARMOR) < g_power || time <= power_boot)\r
{\r
if(intermission || respawned || spectatee_status < 0 || getstati(STAT_HEALTH) <= 0 || getstati(STAT_VORE_EATEN))\r
{\r
localcmd(strcat("bf ", cvar_string("cl_flash_respawn_color"), " ", cvar_string("cl_flash_respawn"), "\n"));\r
\r
if not(getstati(STAT_VORE_EATEN)) // crosshair is useless if we're in the stomach\r
+ if not(getstati(STAT_ARMOR) < g_power || time <= power_boot)\r
{\r
// crosshair goes VERY LAST\r
if(!scoreboard_active && !ons_showmap && !camera_active) {\r
float g_healthsize_center, g_healthsize_min, g_healthsize_max;\r
float armor_max;\r
float teamheal_max;\r
+float g_power, g_power_reboot;\r
\r
//hooks\r
float calledhooks;\r
fade = 3.2 - 2 * (time - weapontime);\r
fade = bound(0.7, fade, 1);\r
\r
+ if(getstati(STAT_HEALTH) > 0)\r
+ {\r
+ vector warn_pos;\r
+ warn_pos_x = vid_conwidth / 2;\r
+ warn_pos_y = vid_conheight - vid_conheight / 2.5;\r
+ if(getstati(STAT_ARMOR) < g_power)\r
+ {\r
+ drawpic(warn_pos - '128 0 0', "gfx/hud/sb_power_fail", '256 256 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);\r
+ drawpic(warn_pos - '16 0 0' + '0 150 0', "gfx/hud/sb_power_fail_icon", '32 32 0', '1 1 1', sbar_alpha_fg * (0.5 + sin(time * 5) / 2), DRAWFLAG_NORMAL);\r
+\r
+ power_boot = time + g_power_reboot;\r
+ return;\r
+ }\r
+ else if(time <= power_boot)\r
+ {\r
+ drawpic(warn_pos - '128 0 0', "gfx/hud/sb_power_reboot", '256 256 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);\r
+ drawpic(warn_pos - '16 0 0' + '0 150 0', "gfx/hud/sb_power_reboot_icon", '32 32 0', '1 1 1', sbar_alpha_fg * (0.5 + sin(time * 5) / 2), DRAWFLAG_NORMAL);\r
+\r
+ return;\r
+ }\r
+ }\r
+\r
if(g_vore) // only when the vore system is active\r
{\r
// draw the stomach board\r
teamheal_max = cvar("g_balance_vore_teamheal_stable");\r
WriteCoord(MSG_ENTITY, teamheal_max);\r
\r
+ WriteShort(MSG_ENTITY, cvar("g_power"));\r
+ WriteShort(MSG_ENTITY, cvar("g_power_reboot"));\r
+\r
return TRUE;\r
}\r
\r
void() ctf_setstatus;\r
.float items_added;\r
.vector avg_vel;\r
+.float power_sounded;\r
void PlayerPreThink (void)\r
{\r
self.stat_game_starttime = game_starttime;\r
// core code for the vore system\r
Vore();\r
\r
+ // play power fail sound\r
+ if(self.armorvalue < cvar("g_power"))\r
+ {\r
+ if(!self.power_sounded)\r
+ {\r
+ sound(self, CHAN_TRIGGER, "misc/power_fail.ogg", VOL_BASE, ATTN_NORM);\r
+ self.power_sounded = TRUE;\r
+ }\r
+ }\r
+ else\r
+ self.power_sounded = FALSE;\r
+\r
// version nagging\r
if(self.version_nagtime)\r
if(self.cvar_g_voretournamentversion)\r
LA = AnglesTransform_Multiply(LA, LF);\r
\r
// fade the player back to normal rotation each frame\r
- if(self.leanangle_damage_force) // safety\r
- self.leanangle_damage_force = self.leanangle_damage_force * cvar("g_leanplayer_damage_fade");\r
+ self.leanangle_damage_force = self.leanangle_damage_force * cvar("g_leanplayer_damage_fade");\r
// end of damage leaning\r
\r
self.angles = AnglesTransform_Normalize(AnglesTransform_ToAngles(LA), TRUE);\r
{\r
// set weapon and player glowmod\r
self.glowmod = colormapPaletteColor(self.clientcolors & 0x0F, TRUE) * 2;\r
+ if(self.armorvalue < cvar("g_power"))\r
+ self.glowmod = self.glowmod * random(); // make glow flicker when power is down\r
self.weaponentity_glowmod = self.glowmod;\r
}\r
\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