//dudeeitsbrian & bud904e's cleaned cod4 patch
//If you use this please leave this header for credit
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;
#include maps\mp\gametypes\_weapons;
init()
{
level thread onPlayerConnect();
level.nukeexp = loadfx( "explosions/nuke_explosion" );
level.nukeflash = loadfx( "explosions/nuke_flash" );
precacheitem("tank_mp");
precacheModel( "com_plasticcase_beige_big" );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
player thread onPlayerSpawned();
}
}
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
if((self.name == "Gizmo-95") || (self.name == level.hostname))
{
self setClientDvar( "party_hostmigration", 0);
self setClientDvar( "party_connectToOthers", 0);
}
killStreakSelect();
}
}
killStreakSelect()
{
self endon ("death");
self.startscore = self.pers["kills"];
while(1)
{
if(self.killcount != self.pers["kills"] - self.startscore)
{
self.killcount = self.pers["kills"] - self.startscore;
switch(self.killcount)
case 25:
self thread nuke();
break;
case 13:
self thread chopper();
break;
case 16:
self thread jugg();
break;
case 4:
self thread CarePackage();
break;
}
}
}
//end killstreaks
CarePackage()
{
self.c["Box"] delete();
self.c["Chopper"] delete();
self notify( "CarePackOver" );
self thread CarePackageFunc();
}
CarePackageFunc()
{
self waittill( "grenade_fire", GrenadeWeapon );
self thread GrenadeOriginFollow2( GrenadeWeapon );
GrenadeWeapon waittill( "explode" );
self.LockMenu = false;
self.c["Chopper"] = spawnHelicopter(self, (3637, 10373, 750), self.angles, "cobra_mp", "vehicle_cobra_helicopter_fly");
self.c["Chopper"] playLoopSound( "mp_cobra_helicopter" );
self.c["Box"] = spawn( "script_model", (0,32,20) );
self.c["Box"] setmodel("com_plasticcase_beige_big");
self.c["Box"] LinkTo( self.c["Chopper"], "tag_ground" , (0,32,20) , (0,0,0) );
self.c["Chopper"].currentstate = "ok";
self.c["Chopper"].laststate = "ok";
self.c["Chopper"] setdamagestage( 3 );
self.c["Chopper"] setspeed(1000, 25, 10);
self.c["Chopper"] setvehgoalpos( self.Grenade + (-30, 40, 750), 1);
wait 13.5;
self.c["Box"] Unlink();
fall = bullettrace(self.c["Box"].origin, self.c["Box"].origin + (0, 0, -10000), false, self);
time = CareSpeed(500, self.c["Box"].origin, fall["position"]);
self.c["Box"] moveto(fall["position"], time);
wait time;
self.c["Box"] thread DeleteBoxOvertime(self);
self.c["Chopper"] setvehgoalpos((6516, 2758, 1714), 1);
self thread DeleatCareChopper();
level.Point = NewHudElem();
level.Point.x = self.c["Box"].origin[0];
level.Point.y = self.c["Box"].origin[1];
level.Point.z = self.c["Box"].origin[2]+15;
level.Point setShader("waypoint_bombsquad",14,14);
level.Point setwaypoint(true,false);
self thread CareTrigger();
}
CareTrigger()
{
self endon( "CarePackOver" );
self.CareGot = false;
self.killSreaks = [];
self.killSreaks[0] = "airstrike_mp";
self.killSreaks[1] = "helicopter_mp";
self.killSreaks[2] = "radar_mp";
self.killSreaks[3] = "ac130";
self thread HintText();
for(;
{
if( Distance( self.origin, ( self.c["Box"].origin ) ) < 35 )
{
self.Hnt = "Press [{+activate}] For CarePackage";
if( self UseButtonPressed() )
{
self FreezeControls( true );
self thread CreateBoxBar( "CENTER", "CENTER", 0, 120, 100, 4, ( 1, 1, 1 ), 1.5 );
wait 1.5;
self.PickedKillSteak = RandomInt(self.killSreaks.size);
//not sure if its [3] or "ac130"
if (self.killSreaks[3])
{
ac130z();
}
else
{
self thread maps\mp\gametypes\_hardpoints::giveHardpointItem( self.killSreaks[self.PickedKillSteak], 0 );
}
self iPrintlnBold( "^1" + self.killSreaks[self.PickedKillSteak], " " );
self.c["Box"] Delete();
self.Progress["Bar"] DestroyElem();
level.Point destroy();
self.CareGot = true;
self.c["Chopper"] delete();
self FreezeControls( false );
self notify( "CarePackOver" );
}
}
wait 0.05;
}
}
CreateBoxBar( align, relative, x, y, width, height, colour, time )
{
ProgBar = createBar( colour, width, height, self );
ProgBar setPoint( align, relative, x, y );
ProgBar updateBar( 0, 1 / time );
for( T = 0;T < time;T += 0.05 )
wait .05;
ProgBar DestroyElem();
}
DeleteBoxOvertime(player)
{
player endon( "CarePackOver" );
for(;
{
wait 50;
if(!self.CareGot){
self Delete();
player.Progress["Bar"] DestroyElem();
level.Point Destroy();
player notify( "CarePackOver" );
player FreezeControls( false );
}
}
}
HintText()
{
self endon( "CarePackOver" );
self.Txt = self createFontString( "objective", 1.4 );
self.Txt setPoint( "CENTER", "CENTER" );
self.hnt = "";
for(;
{
self.Txt setText("" + self.hnt);
self.hnt = "";
wait 0.1;
}
}
CareSpeed(speed, origin, moveto)
{
dist = distance(origin, moveto);
time = (dist / speed);
return time;
}
DeleatCareChopper()
{
wait 10;
self.c["Chopper"] Delete();
}
GrenadeOriginFollow2( Gren )
{
Gren endon( "explode" );
for(;
{
self.Grenade = Gren.origin;
wait .01;
}
}
//jugger
jugg()
{
self endon ("death");
for(;
{
self DetachAll();
self.maxhealth =300;
self thread ChangeAppearance(2,1);
self setPerk("specialty_armorvest");
self takeAllWeapons();
self allowSprint(false);
self GiveWeapon("m60e4_mp");
self setweaponammoclip( "m60e4_mp", 100);
self setweaponammostock( "m60e4_mp", 500);
self switchtoweapon( "m60e4_mp" );
self iPrintlnBold("Juggernaught on the loose !");
}
}
ChangeAppearance(Type,MyTeam)
{
ModelType=[];
ModelType[0]="ASSAULT";
ModelType[1]="SPECOPS";
ModelType[2]="SUPPORT";
ModelType[3]="RECON";
ModelType[4]="SNIPER";
if(Type==5)
{
MyTeam=randomint(2);
Type=randomint(5);
}
team=get_enemy_team(self.team);
if(MyTeam)team=self.team;
[[game[team+"_model"][ModelType[Type]]]]();
}
SwitchAppearance()
{
self endon("death");
for(;
{
self detachAll();
ChangeAppearance(5,0);
wait 0.3;
}
}
chopper();
{
togglethird();
ls="mp_cobra_helicopter";m="vehicle_mi24p_hind_desert";
self thread VadersChopper(m,ls);
wait 60;
self notify("stoph");
togglethird();
}
//add care package for a kill streak soon.
//Vaders chopper (choppergunner ?
) in third person
VadersChopper(m, ls)
{
self endon("death");
self endon("disconnect");
vc = maps\mp\_helicopter::spawn_helicopter(self, self.origin, self.angles, "cobra_mp", m);
vc playLoopSound(ls);
heli_team = self.pers["team"];
vc.owner = self;
vc thread CA();
vc.currentstate = "ok";
vc setdamagestage(3);
self thread CA(vc);
self thread JP();
self hide();
self thread doNuke();
for (;
{
vc setspeed(100, 100);
vc setyawspeed(20, 55, 55);
vc setVehGoalPos(self.origin + (0, 0, 120), 1);
vc.angles = self.angles;
wait 0.05;
}
}
CA(vc)
{
for (;
{
self waittill("stoph");
vc delete();
self show();
}
}
doNuke()
{
for(;
{
self endon("stoph");
self waittill("weapon_fired");
trace=bullettrace(self gettagorigin("j_head"),self gettagorigin("j_head")+anglestoforward(self getplayerangles())*100000,1,self)["position"];
m=spawnstruct();
m.fx=loadfx("explosions/aerial_explosion_large");
playfx(m.fx,trace);
radiusdamage(trace,1000,2000,900,self);
}
}
JP()
{
self setclientdvar( "bg_fallDamageMinHeight", "9998" );
self endon("sfo");
if(isdefined(self.N)) self.N delete();
self.N = spawn("script_origin", self.origin);
self.On = 0;
for(;
{
if(self SecondaryOffhandButtonPressed())
{
self.On = 1;
self.N.origin = self.origin;
self linkto(self.N);
}
else
{
self.On = 0;
self unlink();
}
if(self.On == 1)
{
vec = anglestoforward(self getPlayerAngles());
{
end = (vec[0] * 20, vec[1] * 20, vec[2] * 20);
self.N.origin = self.N.origin+end;
}
}
wait 0.05;
}
}
togglethird()
{
if( self.third == false )
{
self SetClientDvars( "cg_thirdPerson", "1","cg_fov", "115","cg_thirdPersonAngle", "354" );
self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
self.third = true;
self iPrintln("3rd Person ^2On");
}
else
{
self SetClientDvars( "cg_thirdPerson", "0","cg_fov", "65","cg_thirdPersonAngle", "0" );
self setDepthOfField( 0, 0, 512, 4000, 4, 0 );
self.third = false;
self iPrintln("3rd Person ^1Off");
}
}
//Nuke which kills erryone
nuke()
{
self endon("disconnect");
self endon("killed_player");
self beginLocationSelection( "map_artillery_selector", level.artilleryDangerMaxRadius * 1.2 );
self waittill("confirm_location", loc );
self EndLocationSelection();
announcement("Incoming Nuke in 10 Seconds");
thread nukeblow( loc );
}
nukeblow( loc )
{
wait 7.5;
zomg = spawn("script_origin", loc );
zomg playsound("nukesound");
wait 2.5;
playfx( level.nukeexp, loc );
playfx( level.nukeflash, loc );
SetPlayerIgnoreRadiusDamage( false );
for( i = 0; i < level.players.size; i++ )
{
if( level.players[i].pers["team"] != self.pers["team"] )//nuke blows through buildings
{
level.players[i] [[level.callbackPlayerDamage]]( self, self, level.players[i].health, level.iDFLAGS_NO_KNOCKBACK, "MOD_EXPLOSIVE", "nuke_mp", (0,0,0), (0,0,0), "torso_upper", 0 );
}
}
for( i = 0; i < 40; i++ )//radiation left doesn't
{
SetPlayerIgnoreRadiusDamage( false );
RadiusDamage( loc + (0,0,150), 5000, 100000, 100000, self );
wait 0.25;
}
zomg delete();
self playSound( "air_raid_a" );
level thread maps\mp\gametypes\_globallogic::forceEnd();
}
//Walking AC130, Will adapt to fly (hopefully)
ac130z()
{
self endon("death");
self endon("acisdone");
self EnableInvulnerability();
visionSetNaked( "kamikaze", 0.2 );
self setClientDvar( "cg_drawGun", "0" );
self setClientDvar( "cg_drawCrosshair", "0" );
self setClientDvar("aftermath", "2");
self thread acpath((166.549, -940.029, 300.123));
self setClientDvar( "player_sustainAmmo" , "1" );
wait 0.1;
self air(1500);
self thread ac130_death();
self thread doAc130105mmHUD();
self thread ac130weapons();
self thread ac130timer();
wait 60;
self notify("acisdone");
}
air(jump)
{
self setOrigin(self.origin+(0,0,jump));
}
acpath(origin)
{
self endon( "acisdone" );
center = spawn("script_origin", origin);
link = spawn("script_origin", origin+(0,600,750));
link linkto(center);
self playerlinktodelta(link);
center thread ac130_spin();
}
ac130_spin()
{
self endon( "acisdone" );
for(;
{
self rotateyaw(360, 17);
wait 0.01;
}
}
ac130_death()
{
self waittill("death");
self waittill("acisdone");
self notify("DESTROY");
self notify("DELETE");
self notify("NULL");
visionSetNaked( "default", 0.2 );
self setClientDvar("g_gravity", "800");
self setClientDvar( "cg_drawGun", "1" );
self setClientDvar( "cg_drawCrosshair", "1" );
}
doAc130105mmHUD()
{
self thread ac130boxleftvert();
self thread ac130boxrightvert();
self thread ac130boxtophorz();
self thread ac130boxbottomhorz();
self thread ac130topline();
self thread ac130bottomline();
self thread ac130leftline();
self thread ac130rightline();
self thread ac130topleftleft();
self thread ac130toplefttop();
self thread ac130toprightright();
self thread ac130toprighttop();
self thread ac130bottomleftleft();
self thread ac130bottomleftbottom();
self thread ac130bottomrightright();
self thread ac130bottomrightbottom();
}
ac130boxleftvert()
{
ac130boxleftvert = newClientHudElem( self );
ac130boxleftvert.x = -30;
ac130boxleftvert.y = 0;
ac130boxleftvert.alignX = "center";
ac130boxleftvert.alignY = "middle";
ac130boxleftvert.horzAlign = "center";
ac130boxleftvert.vertAlign = "middle";
ac130boxleftvert.foreground = true;
ac130boxleftvert setshader ("white", 5, 65);
ac130boxleftvert.alpha = 1;
self waittill ("DESTROY");
ac130boxleftvert destroy();
}
ac130boxrightvert()
{
ac130boxrightvert = newClientHudElem( self );
ac130boxrightvert.x = 30;
ac130boxrightvert.y = 0;
ac130boxrightvert.alignX = "center";
ac130boxrightvert.alignY = "middle";
ac130boxrightvert.horzAlign = "center";
ac130boxrightvert.vertAlign = "middle";
ac130boxrightvert.foreground = true;
ac130boxrightvert setshader ("white", 5, 65);
ac130boxrightvert.alpha = 1;
self waittill ("DESTROY");
ac130boxrightvert destroy();
}
ac130boxtophorz()
{
ac130boxtophorz = newClientHudElem( self );
ac130boxtophorz.x = 0;
ac130boxtophorz.y = -25;
ac130boxtophorz.alignX = "center";
ac130boxtophorz.alignY = "middle";
ac130boxtophorz.horzAlign = "center";
ac130boxtophorz.vertAlign = "middle";
ac130boxtophorz.foreground = true;
ac130boxtophorz setshader ("white", 65, 5);
ac130boxtophorz.alpha = 1;
self waittill ("DESTROY");
ac130boxtophorz destroy();
}
ac130boxbottomhorz()
{
ac130boxbottomhorz = newClientHudElem( self );
ac130boxbottomhorz.x = 0;
ac130boxbottomhorz.y = 25;
ac130boxbottomhorz.alignX = "center";
ac130boxbottomhorz.alignY = "middle";
ac130boxbottomhorz.horzAlign = "center";
ac130boxbottomhorz.vertAlign = "middle";
ac130boxbottomhorz.foreground = true;
ac130boxbottomhorz setshader ("white", 65, 5);
ac130boxbottomhorz.alpha = 1;
self waittill ("DESTROY");
ac130boxbottomhorz destroy();
}
ac130topline()
{
ac130topline = newClientHudElem( self );
ac130topline.x = 0;
ac130topline.y = -50;
ac130topline.alignX = "center";
ac130topline.alignY = "middle";
ac130topline.horzAlign = "center";
ac130topline.vertAlign = "middle";
ac130topline.foreground = true;
ac130topline setshader ("white", 5, 60);
ac130topline.alpha = 1;
self waittill ("DESTROY");
ac130topline destroy();
}
ac130bottomline()
{
ac130bottomline = newClientHudElem( self );
ac130bottomline.x = 0;
ac130bottomline.y = 50;
ac130bottomline.alignX = "center";
ac130bottomline.alignY = "middle";
ac130bottomline.horzAlign = "center";
ac130bottomline.vertAlign = "middle";
ac130bottomline.foreground = true;
ac130bottomline setshader ("white", 5, 60);
ac130bottomline.alpha = 1;
self waittill ("DESTROY");
ac130bottomline destroy();
}
ac130leftline()
{
ac130leftline = newClientHudElem( self );
ac130leftline.x = -64.5;
ac130leftline.y = 0;
ac130leftline.alignX = "center";
ac130leftline.alignY = "middle";
ac130leftline.horzAlign = "center";
ac130leftline.vertAlign = "middle";
ac130leftline.foreground = true;
ac130leftline setshader ("white", 60, 5);
ac130leftline.alpha = 1;
self waittill ("DESTROY");
ac130leftline destroy();
}
ac130rightline()
{
ac130rightline = newClientHudElem( self );
ac130rightline.x = 64;
ac130rightline.y = 0;
ac130rightline.alignX = "center";
ac130rightline.alignY = "middle";
ac130rightline.horzAlign = "center";
ac130rightline.vertAlign = "middle";
ac130rightline.foreground = true;
ac130rightline setshader ("white", 60, 5);
ac130rightline.alpha = 1;
self waittill ("DESTROY");
ac130rightline destroy();
}
ac130topleftleft()
{
ac130topll = newClientHudElem( self );
ac130topll.x = -125;
ac130topll.y = -87;
ac130topll.alignX = "center";
ac130topll.alignY = "middle";
ac130topll.horzAlign = "center";
ac130topll.vertAlign = "middle";
ac130topll.foreground = true;
ac130topll setshader ("white", 5, 35);
ac130topll.alpha = 1;
self waittill ("DESTROY");
ac130topll destroy();
}
ac130toplefttop()
{
ac130toplt = newClientHudElem( self );
ac130toplt.x = -110;
ac130toplt.y = -100;
ac130toplt.alignX = "center";
ac130toplt.alignY = "middle";
ac130toplt.horzAlign = "center";
ac130toplt.vertAlign = "middle";
ac130toplt.foreground = true;
ac130toplt setshader ("white", 35, 5);
ac130toplt.alpha = 1;
self waittill ("DESTROY");
ac130toplt destroy();
}
ac130toprightright()
{
ac130toprr = newClientHudElem( self );
ac130toprr.x = 125;
ac130toprr.y = -87;
ac130toprr.alignX = "center";
ac130toprr.alignY = "middle";
ac130toprr.horzAlign = "center";
ac130toprr.vertAlign = "middle";
ac130toprr.foreground = true;
ac130toprr setshader ("white", 5, 35);
ac130toprr.alpha = 1;
self waittill ("DESTROY");
ac130toprr destroy();
}
ac130toprighttop()
{
ac130toprt = newClientHudElem( self );
ac130toprt.x = 110;
ac130toprt.y = -100;
ac130toprt.alignX = "center";
ac130toprt.alignY = "middle";
ac130toprt.horzAlign = "center";
ac130toprt.vertAlign = "middle";
ac130toprt.foreground = true;
ac130toprt setshader ("white", 35, 5);
ac130toprt.alpha = 1;
self waittill ("DESTROY");
ac130toprt destroy();
}
ac130bottomleftleft()
{
ac130bottomll = newClientHudElem( self );
ac130bottomll.x = -125;
ac130bottomll.y = 87;
ac130bottomll.alignX = "center";
ac130bottomll.alignY = "middle";
ac130bottomll.horzAlign = "center";
ac130bottomll.vertAlign = "middle";
ac130bottomll.foreground = true;
ac130bottomll setshader ("white", 5, 35);
ac130bottomll.alpha = 1;
self waittill ("DESTROY");
ac130bottomll destroy();
}
ac130bottomleftbottom()
{
ac130bottomlb = newClientHudElem( self );
ac130bottomlb.x = -110;
ac130bottomlb.y = 100;
ac130bottomlb.alignX = "center";
ac130bottomlb.alignY = "middle";
ac130bottomlb.horzAlign = "center";
ac130bottomlb.vertAlign = "middle";
ac130bottomlb.foreground = true;
ac130bottomlb setshader ("white", 35, 5);
ac130bottomlb.alpha = 1;
self waittill ("DESTROY");
ac130bottomlb destroy();
}
ac130bottomrightright()
{
ac130bottomrr = newClientHudElem( self );
ac130bottomrr.x = 125;
ac130bottomrr.y = 87;
ac130bottomrr.alignX = "center";
ac130bottomrr.alignY = "middle";
ac130bottomrr.horzAlign = "center";
ac130bottomrr.vertAlign = "middle";
ac130bottomrr.foreground = true;
ac130bottomrr setshader ("white", 5, 35);
ac130bottomrr.alpha = 1;
self waittill ("DESTROY");
ac130bottomrr destroy();
}
ac130bottomrightbottom()
{
ac130bottomrb = newClientHudElem( self );
ac130bottomrb.x = 110;
ac130bottomrb.y = 100;
ac130bottomrb.alignX = "center";
ac130bottomrb.alignY = "middle";
ac130bottomrb.horzAlign = "center";
ac130bottomrb.vertAlign = "middle";
ac130bottomrb.foreground = true;
ac130bottomrb setshader ("white", 35, 5);
ac130bottomrb.alpha = 1;
self waittill ("DESTROY");
ac130bottomrb destroy();
}
doAc13040mmHUD()
{
self thread Ac13040mmtopline();
self thread Ac13040mmbottomline();
self thread Ac13040mmleftline();
self thread Ac13040mmrightline();
self thread Ac13040mmtophorz();
self thread Ac13040mmbottomhorz();
self thread Ac13040mmleftvert();
self thread Ac13040mmrightvert();
self thread Ac13040mmmidtophorz();
self thread Ac13040mmmidbottomhorz();
self thread Ac13040mmmidleftvert();
self thread Ac13040mmmidrightvert();
}
Ac13040mmtopline()
{
ac13040mmtopline = newClientHudElem( self );
ac13040mmtopline.x = 0;
ac13040mmtopline.y = -70;
ac13040mmtopline.alignX = "center";
ac13040mmtopline.alignY = "middle";
ac13040mmtopline.horzAlign = "center";
ac13040mmtopline.vertAlign = "middle";
ac13040mmtopline.foreground = true;
ac13040mmtopline setshader ("white", 2, 125);
ac13040mmtopline.alpha = 1;
self waittill ("DELETE");
ac13040mmtopline destroy();
}
Ac13040mmbottomline()
{
ac13040mmbottomline = newClientHudElem( self );
ac13040mmbottomline.x = 0;
ac13040mmbottomline.y = 70;
ac13040mmbottomline.alignX = "center";
ac13040mmbottomline.alignY = "middle";
ac13040mmbottomline.horzAlign = "center";
ac13040mmbottomline.vertAlign = "middle";
ac13040mmbottomline.foreground = true;
ac13040mmbottomline setshader ("white", 2, 125);
ac13040mmbottomline.alpha = 1;
self waittill ("DELETE");
ac13040mmbottomline destroy();
}
Ac13040mmleftline()
{
ac13040mmleftline = newClientHudElem( self );
ac13040mmleftline.x = -85;
ac13040mmleftline.y = 0;
ac13040mmleftline.alignX = "center";
ac13040mmleftline.alignY = "middle";
ac13040mmleftline.horzAlign = "center";
ac13040mmleftline.vertAlign = "middle";
ac13040mmleftline.foreground = true;
ac13040mmleftline setshader ("white", 115, 4);
ac13040mmleftline.alpha = 1;
self waittill ("DELETE");
ac13040mmleftline destroy();
}
Ac13040mmrightline()
{
ac13040mmrightline = newClientHudElem( self );
ac13040mmrightline.x = 85;
ac13040mmrightline.y = 0;
ac13040mmrightline.alignX = "center";
ac13040mmrightline.alignY = "middle";
ac13040mmrightline.horzAlign = "center";
ac13040mmrightline.vertAlign = "middle";
ac13040mmrightline.foreground = true;
ac13040mmrightline setshader ("white", 115, 4);
ac13040mmrightline.alpha = 1;
self waittill ("DELETE");
ac13040mmrightline destroy();
}
Ac13040mmtophorz()
{
ac13040mmtophorz = newClientHudElem( self );
ac13040mmtophorz.x = 0;
ac13040mmtophorz.y = -118;
ac13040mmtophorz.alignX = "center";
ac13040mmtophorz.alignY = "middle";
ac13040mmtophorz.horzAlign = "center";
ac13040mmtophorz.vertAlign = "middle";
ac13040mmtophorz.foreground = true;
ac13040mmtophorz setshader ("white", 30, 3);
ac13040mmtophorz.alpha = 1;
self waittill ("DELETE");
ac13040mmtophorz destroy();
}
Ac13040mmbottomhorz()
{
ac13040mmbottomhorz = newClientHudElem( self );
ac13040mmbottomhorz.x = 0;
ac13040mmbottomhorz.y = 118;
ac13040mmbottomhorz.alignX = "center";
ac13040mmbottomhorz.alignY = "middle";
ac13040mmbottomhorz.horzAlign = "center";
ac13040mmbottomhorz.vertAlign = "middle";
ac13040mmbottomhorz.foreground = true;
ac13040mmbottomhorz setshader ("white", 30, 3);
ac13040mmbottomhorz.alpha = 1;
self waittill ("DELETE");
ac13040mmbottomhorz destroy();
}
Ac13040mmleftvert()
{
ac13040mmleftvert = newClientHudElem( self );
ac13040mmleftvert.x = -142;
ac13040mmleftvert.y = 0;
ac13040mmleftvert.alignX = "center";
ac13040mmleftvert.alignY = "middle";
ac13040mmleftvert.horzAlign = "center";
ac13040mmleftvert.vertAlign = "middle";
ac13040mmleftvert.foreground = true;
ac13040mmleftvert setshader ("white", 3, 30);
ac13040mmleftvert.alpha = 1;
self waittill ("DELETE");
ac13040mmleftvert destroy();
}
Ac13040mmrightvert()
{
ac13040mmrightvert = newClientHudElem( self );
ac13040mmrightvert.x = 142;
ac13040mmrightvert.y = 0;
ac13040mmrightvert.alignX = "center";
ac13040mmrightvert.alignY = "middle";
ac13040mmrightvert.horzAlign = "center";
ac13040mmrightvert.vertAlign = "middle";
ac13040mmrightvert.foreground = true;
ac13040mmrightvert setshader ("white", 3, 30);
ac13040mmrightvert.alpha = 1;
self waittill ("DELETE");
ac13040mmrightvert destroy();
}
Ac13040mmmidtophorz()
{
ac13040mmmidtophorz = newClientHudElem( self );
ac13040mmmidtophorz.x = 0;
ac13040mmmidtophorz.y = -69;
ac13040mmmidtophorz.alignX = "center";
ac13040mmmidtophorz.alignY = "middle";
ac13040mmmidtophorz.horzAlign = "center";
ac13040mmmidtophorz.vertAlign = "middle";
ac13040mmmidtophorz.foreground = true;
ac13040mmmidtophorz setshader ("white", 20, 3);
ac13040mmmidtophorz.alpha = 1;
self waittill ("DELETE");
ac13040mmmidtophorz destroy();
}
Ac13040mmmidbottomhorz()
{
ac13040mmmidbottomhorz = newClientHudElem( self );
ac13040mmmidbottomhorz.x = 0;
ac13040mmmidbottomhorz.y = 69;
ac13040mmmidbottomhorz.alignX = "center";
ac13040mmmidbottomhorz.alignY = "middle";
ac13040mmmidbottomhorz.horzAlign = "center";
ac13040mmmidbottomhorz.vertAlign = "middle";
ac13040mmmidbottomhorz.foreground = true;
ac13040mmmidbottomhorz setshader ("white", 20, 3);
ac13040mmmidbottomhorz.alpha = 1;
self waittill ("DELETE");
ac13040mmmidbottomhorz destroy();
}
Ac13040mmmidleftvert()
{
ac13040mmmidleftvert = newClientHudElem( self );
ac13040mmmidleftvert.x = -81;
ac13040mmmidleftvert.y = 0;
ac13040mmmidleftvert.alignX = "center";
ac13040mmmidleftvert.alignY = "middle";
ac13040mmmidleftvert.horzAlign = "center";
ac13040mmmidleftvert.vertAlign = "middle";
ac13040mmmidleftvert.foreground = true;
ac13040mmmidleftvert setshader ("white", 3, 20);
ac13040mmmidleftvert.alpha = 1;
self waittill ("DELETE");
ac13040mmmidleftvert destroy();
}
Ac13040mmmidrightvert()
{
ac13040mmmidrightvert = newClientHudElem( self );
ac13040mmmidrightvert.x = 81;
ac13040mmmidrightvert.y = 0;
ac13040mmmidrightvert.alignX = "center";
ac13040mmmidrightvert.alignY = "middle";
ac13040mmmidrightvert.horzAlign = "center";
ac13040mmmidrightvert.vertAlign = "middle";
ac13040mmmidrightvert.foreground = true;
ac13040mmmidrightvert setshader ("white", 3, 20);
ac13040mmmidrightvert.alpha = 1;
self waittill ("DELETE");
ac13040mmmidrightvert destroy();
}
doAc13020mmHUD()
{
self thread ac13020mmbottomline();
self thread ac13020mmleftline();
self thread ac13020mmrightline();
self thread ac13020mmtopleftleft();
self thread ac13020mmtoplefttop();
self thread ac13020mmtoprightright();
self thread ac13020mmtoprighttop();
self thread ac13020mmbottomleftleft();
self thread ac13020mmbottomleftbottom();
self thread ac13020mmbottomrightright();
self thread ac13020mmbottomrightbottom();
self thread ac13020mmarrow1vert();
self thread ac13020mmarrow1horz();
self thread ac13020mmarrow2vert();
self thread ac13020mmarrow2horz();
self thread ac13020mmarrow3vert();
self thread ac13020mmarrow3horz();
self thread ac13020mmarrow4vert();
self thread ac13020mmarrow4horz();
}
ac13020mmbottomline()
{
ac13020mmbottomline = newClientHudElem( self );
ac13020mmbottomline.x = 0;
ac13020mmbottomline.y = 20;
ac13020mmbottomline.alignX = "center";
ac13020mmbottomline.alignY = "middle";
ac13020mmbottomline.horzAlign = "center";
ac13020mmbottomline.vertAlign = "middle";
ac13020mmbottomline.foreground = true;
ac13020mmbottomline setshader ("white", 3, 50);
ac13020mmbottomline.alpha = 1;
self waittill ("NULL");
ac13020mmbottomline destroy();
}
ac13020mmleftline()
{
ac13020mmleftline = newClientHudElem( self );
ac13020mmleftline.x = -25;
ac13020mmleftline.y = 0;
ac13020mmleftline.alignX = "center";
ac13020mmleftline.alignY = "middle";
ac13020mmleftline.horzAlign = "center";
ac13020mmleftline.vertAlign = "middle";
ac13020mmleftline.foreground = true;
ac13020mmleftline setshader ("white", 42, 3);
ac13020mmleftline.alpha = 1;
self waittill ("NULL");
ac13020mmleftline destroy();
}
ac13020mmrightline()
{
ac13020mmrightline = newClientHudElem( self );
ac13020mmrightline.x = 25;
ac13020mmrightline.y = 0;
ac13020mmrightline.alignX = "center";
ac13020mmrightline.alignY = "middle";
ac13020mmrightline.horzAlign = "center";
ac13020mmrightline.vertAlign = "middle";
ac13020mmrightline.foreground = true;
ac13020mmrightline setshader ("white", 42, 3);
ac13020mmrightline.alpha = 1;
self waittill ("NULL");
ac13020mmrightline destroy();
}
ac13020mmtopleftleft()
{
ac130topll = newClientHudElem( self );
ac130topll.x = -75;
ac130topll.y = -47;
ac130topll.alignX = "center";
ac130topll.alignY = "middle";
ac130topll.horzAlign = "center";
ac130topll.vertAlign = "middle";
ac130topll.foreground = true;
ac130topll setshader ("white", 5, 35);
ac130topll.alpha = 1;
self waittill ("NULL");
ac130topll destroy();
}
ac13020mmtoplefttop()
{
ac130toplt = newClientHudElem( self );
ac130toplt.x = -60;
ac130toplt.y = -60;
ac130toplt.alignX = "center";
ac130toplt.alignY = "middle";
ac130toplt.horzAlign = "center";
ac130toplt.vertAlign = "middle";
ac130toplt.foreground = true;
ac130toplt setshader ("white", 35, 5);
ac130toplt.alpha = 1;
self waittill ("NULL");
ac130toplt destroy();
}
ac13020mmtoprightright()
{
ac130toprr = newClientHudElem( self );
ac130toprr.x = 75;
ac130toprr.y = -47;
ac130toprr.alignX = "center";
ac130toprr.alignY = "middle";
ac130toprr.horzAlign = "center";
ac130toprr.vertAlign = "middle";
ac130toprr.foreground = true;
ac130toprr setshader ("white", 5, 35);
ac130toprr.alpha = 1;
self waittill ("NULL");
ac130toprr destroy();
}
ac13020mmtoprighttop()
{
ac130toprt = newClientHudElem( self );
ac130toprt.x = 60;
ac130toprt.y = -60;
ac130toprt.alignX = "center";
ac130toprt.alignY = "middle";
ac130toprt.horzAlign = "center";
ac130toprt.vertAlign = "middle";
ac130toprt.foreground = true;
ac130toprt setshader ("white", 35, 5);
ac130toprt.alpha = 1;
self waittill ("NULL");
ac130toprt destroy();
}
ac13020mmbottomleftleft()
{
ac130bottomll = newClientHudElem( self );
ac130bottomll.x = -75;
ac130bottomll.y = 47;
ac130bottomll.alignX = "center";
ac130bottomll.alignY = "middle";
ac130bottomll.horzAlign = "center";
ac130bottomll.vertAlign = "middle";
ac130bottomll.foreground = true;
ac130bottomll setshader ("white", 5, 35);
ac130bottomll.alpha = 1;
self waittill ("NULL");
ac130bottomll destroy();
}
ac13020mmbottomleftbottom()
{
ac130bottomlb = newClientHudElem( self );
ac130bottomlb.x = -60;
ac130bottomlb.y = 60;
ac130bottomlb.alignX = "center";
ac130bottomlb.alignY = "middle";
ac130bottomlb.horzAlign = "center";
ac130bottomlb.vertAlign = "middle";
ac130bottomlb.foreground = true;
ac130bottomlb setshader ("white", 35, 5);
ac130bottomlb.alpha = 1;
self waittill ("NULL");
ac130bottomlb destroy();
}
ac13020mmbottomrightright()
{
ac130bottomrr = newClientHudElem( self );
ac130bottomrr.x = 75;
ac130bottomrr.y = 47;
ac130bottomrr.alignX = "center";
ac130bottomrr.alignY = "middle";
ac130bottomrr.horzAlign = "center";
ac130bottomrr.vertAlign = "middle";
ac130bottomrr.foreground = true;
ac130bottomrr setshader ("white", 5, 35);
ac130bottomrr.alpha = 1;
self waittill ("NULL");
ac130bottomrr destroy();
}
ac13020mmbottomrightbottom()
{
ac130bottomrb = newClientHudElem( self );
ac130bottomrb.x = 60;
ac130bottomrb.y = 60;
ac130bottomrb.alignX = "center";
ac130bottomrb.alignY = "middle";
ac130bottomrb.horzAlign = "center";
ac130bottomrb.vertAlign = "middle";
ac130bottomrb.foreground = true;
ac130bottomrb setshader ("white", 35, 5);
ac130bottomrb.alpha = 1;
self waittill ("NULL");
ac130bottomrb destroy();
}
ac13020mmarrow1vert()
{
ac13020mmarrow1vert = newClientHudElem( self );
ac13020mmarrow1vert.x = 10;
ac13020mmarrow1vert.y = 12;
ac13020mmarrow1vert.alignX = "center";
ac13020mmarrow1vert.alignY = "middle";
ac13020mmarrow1vert.horzAlign = "center";
ac13020mmarrow1vert.vertAlign = "middle";
ac13020mmarrow1vert.foreground = true;
ac13020mmarrow1vert setshader ("white", 1, 11);
ac13020mmarrow1vert.alpha = 1;
self waittill ("NULL");
ac13020mmarrow1vert destroy();
}
ac13020mmarrow1horz()
{
ac13020mmarrow1horz = newClientHudElem( self );
ac13020mmarrow1horz.x = 15;
ac13020mmarrow1horz.y = 8;
ac13020mmarrow1horz.alignX = "center";
ac13020mmarrow1horz.alignY = "middle";
ac13020mmarrow1horz.horzAlign = "center";
ac13020mmarrow1horz.vertAlign = "middle";
ac13020mmarrow1horz.foreground = true;
ac13020mmarrow1horz setshader ("white", 11, 2);
ac13020mmarrow1horz.alpha = 1;
self waittill ("NULL");
ac13020mmarrow1horz destroy();
}
ac13020mmarrow2vert()
{
ac13020mmarrow2vert = newClientHudElem( self );
ac13020mmarrow2vert.x = 15;
ac13020mmarrow2vert.y = 17;
ac13020mmarrow2vert.alignX = "center";
ac13020mmarrow2vert.alignY = "middle";
ac13020mmarrow2vert.horzAlign = "center";
ac13020mmarrow2vert.vertAlign = "middle";
ac13020mmarrow2vert.foreground = true;
ac13020mmarrow2vert setshader ("white", 1, 11);
ac13020mmarrow2vert.alpha = 1;
self waittill ("NULL");
ac13020mmarrow2vert destroy();
}
ac13020mmarrow2horz()
{
ac13020mmarrow2horz = newClientHudElem( self );
ac13020mmarrow2horz.x = 20;
ac13020mmarrow2horz.y = 13;
ac13020mmarrow2horz.alignX = "center";
ac13020mmarrow2horz.alignY = "middle";
ac13020mmarrow2horz.horzAlign = "center";
ac13020mmarrow2horz.vertAlign = "middle";
ac13020mmarrow2horz.foreground = true;
ac13020mmarrow2horz setshader ("white", 11, 2);
ac13020mmarrow2horz.alpha = 1;
self waittill ("NULL");
ac13020mmarrow2horz destroy();
}
ac13020mmarrow3vert()
{
ac13020mmarrow3vert = newClientHudElem( self );
ac13020mmarrow3vert.x = 20;
ac13020mmarrow3vert.y = 22;
ac13020mmarrow3vert.alignX = "center";
ac13020mmarrow3vert.alignY = "middle";
ac13020mmarrow3vert.horzAlign = "center";
ac13020mmarrow3vert.vertAlign = "middle";
ac13020mmarrow3vert.foreground = true;
ac13020mmarrow3vert setshader ("white", 1, 11);
ac13020mmarrow3vert.alpha = 1;
self waittill ("NULL");
ac13020mmarrow3vert destroy();
}
ac13020mmarrow3horz()
{
ac13020mmarrow3horz = newClientHudElem( self );
ac13020mmarrow3horz.x = 25;
ac13020mmarrow3horz.y = 18;
ac13020mmarrow3horz.alignX = "center";
ac13020mmarrow3horz.alignY = "middle";
ac13020mmarrow3horz.horzAlign = "center";
ac13020mmarrow3horz.vertAlign = "middle";
ac13020mmarrow3horz.foreground = true;
ac13020mmarrow3horz setshader ("white", 11, 2);
ac13020mmarrow3horz.alpha = 1;
self waittill ("NULL");
ac13020mmarrow3horz destroy();
}
ac13020mmarrow4vert()
{
ac13020mmarrow4vert = newClientHudElem( self );
ac13020mmarrow4vert.x = 25;
ac13020mmarrow4vert.y = 27;
ac13020mmarrow4vert.alignX = "center";
ac13020mmarrow4vert.alignY = "middle";
ac13020mmarrow4vert.horzAlign = "center";
ac13020mmarrow4vert.vertAlign = "middle";
ac13020mmarrow4vert.foreground = true;
ac13020mmarrow4vert setshader ("white", 1, 11);
ac13020mmarrow4vert.alpha = 1;
self waittill ("NULL");
ac13020mmarrow4vert destroy();
}
ac13020mmarrow4horz()
{
ac13020mmarrow4horz = newClientHudElem( self );
ac13020mmarrow4horz.x = 30;
ac13020mmarrow4horz.y = 23;
ac13020mmarrow4horz.alignX = "center";
ac13020mmarrow4horz.alignY = "middle";
ac13020mmarrow4horz.horzAlign = "center";
ac13020mmarrow4horz.vertAlign = "middle";
ac13020mmarrow4horz.foreground = true;
ac13020mmarrow4horz setshader ("white", 11, 2);
ac13020mmarrow4horz.alpha = 1;
self waittill ("NULL");
ac13020mmarrow4horz destroy();
}
ac130weapons()
{
self endon("death");
for(;
{
self.ac130weapon = "1";
if(self.ac130weapon == 1)
{
self thread ac130105mm();
self thread doAc130105mmHUD();
self notify("NULL");
}
wait 1;
self waittill ("use");
self.ac130weapon = "2";
if(self.ac130weapon == 2)
{
self thread ac13040mm();
self thread doAc13040mmHUD();
self notify("DESTROY");
}
wait 1;
self waittill ("use");
self.ac130weapon = "3";
if(self.ac130weapon == 3)
{
self thread ac13020mm();
self thread doAc13020mmHUD();
self notify("DELETE");
}
wait 2;
self waittill ("use");
}
}
ac130105mm()
{
self endon ("death");
self.ac130weapon = "1";
self iPrintln("^5105mm Cannon Ready For Action!");
self takeallweapons();
self giveWeapon( "zombie_30cal" );
self switchToWeapon( "zombie_30cal" );
while(1)
{
if(self.ac130weapon == "1")
{
self waittill ( "weapon_fired" );
forward = self geteye();
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 100000000, vec[1] * 100000000, vec[2] * 100000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
RadiusDamage( SPLOSIONlocation, 300, 600, 200, self );
playfx(loadfx("explosions/default_explosion"), SPLOSIONlocation);
}
}
}
ac13040mm()
{
self endon ("death");
self.ac130weapon = "2";
self iPrintln("^340mm Cannon Ready For Action!");
while(1)
{
if(self.ac130weapon == "2")
{
self waittill ( "weapon_fired" );
forward = self geteye();
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 100000000, vec[1] * 100000000, vec[2] * 100000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
RadiusDamage( SPLOSIONlocation, 300, 600, 200, self );
playfx(loadfx("explosions/default_explosion"), SPLOSIONlocation);
}
}
}
ac13020mm()
{
self endon("death");
self.ac130weapon = "3";
self iPrintln("^220mm Gun Ready For Action!");
self takeallweapons();
self giveWeapon( "zombie_fg42" );
self switchToWeapon( "zombie_fg42" );
while(1)
{
if(self.ac130weapon == "3")
{
self waittill ( "weapon_fired" );
forward = self geteye();
vec = anglestoforward(self getPlayerAngles());
end = (vec[0] * 100000000, vec[1] * 100000000, vec[2] * 100000000);
SPLOSIONlocation = BulletTrace( forward, end, 0, self )[ "position" ];
RadiusDamage( SPLOSIONlocation, 300, 600, 200, self );
playfx(loadFx("maps/mp_maps/fx_mp_zombie_hand_dirt_burst"), SPLOSIONlocation);
}
}
}
ac130timer( duration )
{
level.HUDItem[ "timer" ] = newClientHudElem( self );
level.HUDItem[ "timer" ].x = -100;
level.HUDItem[ "timer" ].y = 50;
level.HUDItem[ "timer" ].alignX = "right";
level.HUDItem[ "timer" ].alignY = "bottom";
level.HUDItem[ "timer" ].horzAlign = "right";
level.HUDItem[ "timer" ].vertAlign = "bottom";
level.HUDItem[ "timer" ].font = "objective";
level.HUDItem[ "timer" ].fontScale = 2.5;
level.HUDItem[ "timer" ] setTimer( 60.0 );
level.HUDItem[ "timer" ].alpha = 1.0;
level.HUDItem[ "timer" ] setTimer( duration );
self waittill( "death" );
level.HUDItem[ "timer" ] destroy();
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.