1 #using scripts\codescripts\struct;
3 #using scripts\shared\flag_shared;
4 #using scripts\shared\hud_util_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
10 #define LASTSTAND_GETUP_COUNT_START 0
12 #define LASTSTAND_GETUP_BAR_DAMAGE 0.1
20 if ( !
IS_TRUE(
self.no_revive_trigger ) )
22 return ( IsDefined(
self.revivetrigger ) );
26 return (
IS_TRUE(
self.laststand ) );
34 players = GetPlayers();
36 for ( i = 0; i < players.size; i++ )
59 if( level.laststandpistol ==
"none" )
69 if( isdefined(
self.suicidePrompt ) )
73 self.suicidePrompt = undefined;
78 self endon (
"disconnect" );
79 self endon (
"stop_revive_trigger" );
80 self endon (
"player_revived");
81 self endon (
"bled_out");
85 if ( IsDefined(
self.suicideTextHud ) )
87 self.suicideTextHud Destroy();
90 if ( IsDefined(
self.suicideProgressBar ) )
100 self endon (
"disconnect" );
101 self endon (
"stop_revive_trigger" );
105 if ( IsDefined(
self.suicideProgressBar ) )
110 if ( IsDefined(
self.suicideTextHud ) )
112 self.suicideTextHud Destroy();
118 orientation =
self getPlayerAngles();
119 forwardVec = anglesToForward( orientation );
120 forwardVec2D = ( forwardVec[0], forwardVec[1], 0 );
121 unitForwardVec2D = VectorNormalize( forwardVec2D );
122 toFaceeVec = facee.origin -
self.origin;
123 toFaceeVec2D = ( toFaceeVec[0], toFaceeVec[1], 0 );
124 unitToFaceeVec2D = VectorNormalize( toFaceeVec2D );
126 dotProduct = VectorDot( unitForwardVec2D, unitToFaceeVec2D );
127 return ( dotProduct > requiredDot );
137 self.revive_hud = newclientHudElem(
self );
138 self.revive_hud.alignX =
"center";
139 self.revive_hud.alignY =
"middle";
140 self.revive_hud.horzAlign =
"center";
141 self.revive_hud.vertAlign =
"bottom";
142 self.revive_hud.foreground =
true;
143 self.revive_hud.font =
"default";
144 self.revive_hud.fontScale = 1.5;
145 self.revive_hud.alpha = 0;
146 self.revive_hud.color = ( 1.0, 1.0, 1.0 );
147 self.revive_hud.hidewheninmenu =
true;
148 self.revive_hud setText(
"" );
150 self.revive_hud.y = -148;
155 assert( IsDefined(
self ) );
156 assert( IsDefined(
self.revive_hud ) );
158 self.revive_hud.alpha = 1;
166 self.revive_hud fadeOverTime( time );
167 self.revive_hud.alpha = 0;
176 for (r = 0; r < 20; r++)
178 theta = r / 20 * 360;
179 theta2 = (r + 1) / 20 * 360;
181 line(pos + (cos(theta) * currad, sin(theta) * currad, 0), pos + (cos(theta2) * currad, sin(theta2) * currad, 0));
182 line(pos + (cos(theta) * currad, sin(theta) * currad, curheight), pos + (cos(theta2) * currad, sin(theta2) * currad, curheight));
183 line(pos + (cos(theta) * currad, sin(theta) * currad, 0), pos + (cos(theta) * currad, sin(theta) * currad, curheight));
190 assert( level.lastStandGetupAllowed,
"Lives only exist in the Laststand type GETUP." );
192 if ( level.lastStandGetupAllowed && IsDefined(
self.laststand_info ) && IsDefined(
self.laststand_info.type_getup_lives ) )
194 return max( 0,
self.laststand_info.type_getup_lives );
202 assert( level.lastStandGetupAllowed,
"Lives only exist in the Laststand type GETUP." );
203 assert( isdefined(
increment ),
"Must specify increment true or false" );
207 self.laststand_info.type_getup_lives = max( 0, (
increment?
self.laststand_info.type_getup_lives + 1:
self.laststand_info.type_getup_lives - 1 ) );
210 self notify(
"laststand_lives_updated" );
215 /# println(
"ZM >> player_getup_setup called" ); #/
216 self.laststand_info = SpawnStruct();
222 self endon (
"player_revived");
223 self endon (
"disconnect");
227 self waittill(
"damage" );
231 if(
self.laststand_info.getup_bar_value < 0 )
233 self.laststand_info.getup_bar_value = 0;
240 self endon (
"player_revived");
241 self endon (
"disconnect");
243 hudelem = NewClientHudElem(
self );
245 hudelem.alignX =
"left";
246 hudelem.alignY =
"middle";
247 hudelem.horzAlign =
"left";
248 hudelem.vertAlign =
"middle";
251 hudelem.font =
"big";
252 hudelem.fontScale = 1.5;
253 hudelem.foreground = 1;
254 hudelem.hidewheninmenu =
true;
255 hudelem.hidewhendead =
true;
257 hudelem.label = &
"SO_WAR_LASTSTAND_GETUP_BAR";
263 hudelem SetValue(
self.laststand_info.getup_bar_value );
277 self endon (
"player_revived");
278 self endon (
"player_suicide");
279 self endon (
"bled_out");
281 trig =
self.revivetrigger;
283 self waittill (
"disconnect");