Files
IL-GSC/MW3/PC/SP/maps/_vehicledrive.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

403 lines
6.9 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\_vehicledrive.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 14
* Decompile Time: 194 ms
* Timestamp: 10/27/2023 2:20:30 AM
*******************************************************************/
//Function Number: 1
main()
{
setdvarifuninitialized("debug_vehiclegod","off");
setdvarifuninitialized("debug_vehicleplayerhealth","off");
setdvarifuninitialized("player_vehicle_dismountable","off");
precacheshader("tank_shell");
level.playeronvehicle = 0;
}
//Function Number: 2
vehicle_wait(param_00)
{
if(!isdefined(param_00))
{
param_00 = 0;
}
else if(param_00)
{
if(getdvar("player_vehicle_dismountable") == "off")
{
self makeunusable();
}
}
self endon("death");
self endon("stop_vehicle_wait");
while(self.health > 0)
{
if(!param_00)
{
self waittill("trigger");
}
else
{
param_00 = 0;
self useby(level.player);
}
var_01 = self getvehicleowner();
if(isdefined(var_01) && isplayer(var_01))
{
thread vehicle_enter();
}
else
{
thread vehicle_exit();
}
if(param_00)
{
break;
}
wait 0.05;
}
}
//Function Number: 3
vehicle_exit()
{
level.playeronvehicle = 0;
level.playervehicle = level.playervehiclenone;
level notify("player exited vehicle");
if(isdefined(level.player.oldthreatbias))
{
level.player.threatbias = level.player.oldthreatbias;
level.player.oldthreatbias = undefined;
}
if(isdefined(level.vehiclehud))
{
level.vehiclehud destroy();
}
if(isdefined(level.vehiclehud2))
{
level.vehiclehud2 destroy();
}
if(isdefined(level.vehiclefireicon))
{
level.vehiclefireicon destroy();
}
}
//Function Number: 4
vehicle_enter()
{
level.playeronvehicle = 1;
level.playervehicle = self;
thread vehicle_ridehandle();
}
//Function Number: 5
setup_vehicle_tank()
{
vehicle_givehealth();
}
//Function Number: 6
setup_vehicle_other()
{
vehicle_givehealth();
}
//Function Number: 7
vehicle_givehealth()
{
var_00 = maps\_utility::getdifficulty();
if(var_00 == "easy")
{
self.health = 3000;
}
else if(var_00 == "medium")
{
self.health = 2500;
}
else if(var_00 == "hard")
{
self.health = 2000;
}
else if(var_00 == "fu")
{
self.health = 1300;
}
else
{
self.health = 2000;
}
if(isdefined(self.healthbuffer))
{
self.health = self.health + self.healthbuffer;
self.currenthealth = self.health;
self.maxhealth = self.health;
}
}
//Function Number: 8
protect_player()
{
level endon("player exited vehicle");
self endon("death");
var_00 = level.player.health;
while(isalive(level.player))
{
level.player waittill("damage",var_01);
if(self.health <= 0)
{
level.player kill((0,0,0));
}
level.player.health = level.player.health + int(var_01 * 0.2);
}
}
//Function Number: 9
vehicle_ridehandle()
{
level endon("player exited vehicle");
self endon("no_regen_health");
self endon("death");
thread vehicle_kill_player_ondeath();
self.maximumhealth = self.health;
switch(maps\_utility::getdifficulty())
{
case "gimp":
var_00 = 100;
var_01 = 2700;
break;
case "easy":
var_00 = 75;
var_01 = 2700;
break;
case "medium":
var_00 = 50;
var_01 = 2700;
break;
case "hard":
var_00 = 30;
var_01 = 3700;
break;
case "fu":
var_00 = 20;
var_01 = 4700;
break;
default:
var_00 = 50;
var_01 = 2700;
break;
}
if(self.vehicletype == "crusader_player")
{
self setmodel("vehicle_crusader2_viewmodel");
}
var_02 = gettime();
if(getdvar("debug_vehiclegod") != "off")
{
for(;;)
{
self waittill("damage");
self.health = self.maxhealth;
}
}
thread vehicle_damageset();
var_03 = gettime();
for(;;)
{
if(self.damaged)
{
if(getdvar("debug_vehicleplayerhealth") != "off")
{
iprintlnbold("playervehicles health: ",self.health - self.healthbuffer);
}
self.damaged = 0;
var_02 = gettime() + var_01;
}
var_04 = gettime();
if(self.health < self.maximumhealth && var_04 > var_02 && var_04 > var_03)
{
if(self.health + var_00 > self.maximumhealth)
{
self.health = self.maximumhealth;
}
else
{
self.health = self.health + var_00;
}
var_03 = gettime() + 250;
if(getdvar("debug_vehicleplayerhealth") != "off")
{
iprintlnbold("playervehicles health: ",self.health - self.healthbuffer);
}
}
wait 0.05;
}
}
//Function Number: 10
vehicle_kill_player_ondeath()
{
level endon("player exited vehicle");
self waittill("death");
level.player enablehealthshield(0);
for(;;)
{
level.player kill();
wait 0.1;
}
wait 0.5;
level.player enablehealthshield(1);
}
//Function Number: 11
vehicle_damageset()
{
self.damaged = 0;
self endon("death");
for(;;)
{
self waittill("damage",var_00);
self.damaged = 1;
}
}
//Function Number: 12
vehicle_reloadsound()
{
for(;;)
{
self waittill("turret_fire");
wait 0.5;
self playsound("tank_reload");
}
}
//Function Number: 13
vehicle_hud_tank_fireicon()
{
if(getdvar("player_vehicle_dismountable") != "off")
{
return;
}
level endon("player exited vehicle");
level.player endon("death");
self endon("death");
if(isdefined(level.vehiclefireicon))
{
level.vehiclefireicon destroy();
}
level.vehiclefireicon = newhudelem();
level.vehiclefireicon.x = -32;
level.vehiclefireicon.y = -64;
level.vehiclefireicon.alignx = "center";
level.vehiclefireicon.aligny = "middle";
level.vehiclefireicon.horzalign = "right";
level.vehiclefireicon.vertalign = "bottom";
level.vehiclefireicon setshader("tank_shell",64,64);
var_00 = 1;
level.vehiclefireicon.alpha = var_00;
for(;;)
{
if(var_00)
{
if(!self isturretready())
{
var_00 = 0;
level.vehiclefireicon.alpha = var_00;
}
}
else if(self isturretready())
{
var_00 = 1;
level.vehiclefireicon.alpha = var_00;
}
wait 0.05;
}
}
//Function Number: 14
healthoverlay()
{
self endon("death");
var_00 = newhudelem();
var_00.x = 0;
var_00.y = 0;
var_00 setshader("splatter_alt_sp",640,480);
var_00.alignx = "left";
var_00.aligny = "top";
var_00.horzalign = "fullscreen";
var_00.vertalign = "fullscreen";
var_00.alpha = 0;
var_01 = self.health - self.healthbuffer;
var_02 = 0;
var_03 = 0.3;
for(;;)
{
var_04 = self.health - self.healthbuffer / var_01;
var_05 = 0.5 + 0.5 * var_04;
if(var_04 < 0.75 || var_02)
{
if(!var_02)
{
var_02 = 1;
}
var_06 = 1 - var_04 + var_03;
var_00 fadeovertime(0.05);
var_00.alpha = var_06;
wait 0.1;
var_00 fadeovertime(var_05 * 0.2);
var_00.alpha = var_06 * 0.5;
wait var_05 * 0.2;
var_00 fadeovertime(var_05 * 0.3);
var_00.alpha = var_06 * 0.3;
wait var_05 * 0.3;
var_04 = self.health - self.healthbuffer / var_01;
var_05 = 0.3 + 0.7 * var_04;
if(var_04 > 0.9)
{
var_02 = 0;
var_00 fadeovertime(0.5);
var_00.alpha = 0;
wait var_05 * 0.5 - 0.1;
}
else
{
wait var_05 * 0.5 - 0.1;
}
continue;
}
wait 0.05;
}
}