home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
games
/
volume18
/
xmpb
/
part07
/
rad2.npc
< prev
next >
Wrap
Text File
|
1993-07-12
|
2KB
|
221 lines
NPC
Name = rad2npc
Ship = Oldsmobile
EnergyMax = 10000
LShieldMax = 1200
RShieldMax = 1200
BShieldMax = 800
Solar = 9
ShortRange = 1
Engine = 2
Repair = 9
LongRange = 1
Jammer = 1
TC = 1
Weapons
Pulse
var
u
d
l
r
angto
aa1
aa2
end
Proc dir
{
if (r && u)
{
angto=225;
set TurnTo = 225;
return;
}
if (r && d)
{
angto=315;
set TurnTo = 315;
return;
}
if (l && u)
{
angto=135;
set TurnTo = 135;
return;
}
if (l && d)
{
angto=45;
set TurnTo = 45;
return;
}
if (r)
{
angto=270;
set TurnTo = 270;
return;
}
if (l)
{
angto=90;
set TurnTo = 90;
return;
}
if (d)
{
angto=0;
set TurnTo = 0;
return;
}
if (u)
{
angto=180;
set TurnTo = 180;
return;
}
return;
}
Proc attack
{
var
num
a1
a2
end
set B1 = 1;
set B3 = 1;
a2 = EnemyAngle;
while(EnemyDist < 1000)
{
num=NumEnemies;
set SelectEnemy = 0;
set RepairToggle = 1;
set Balance = 1;
if(! EnemyAvail)
{
set B1 = 0;
set B3 = 0;
return;
}
a1 = a2;
a2 = EnemyAngle;
set TurnTo = EnemyAngle + (a2 - a1) * 4;
}
set B1 = 0;
set B3 = 0;
return;
}
Proc aim
{
var
num
end
num = NumEnemies;
set SelectEnemy = 0;
aa1 = aa2;
aa2 = EnemyAngle;
set TurnTo = EnemyAngle + (aa2 - aa1) * 4;
if(EnemyDist < 1000)
attack();
return;
}
Proc thrust
{
var
num
i
thrustTime
end
num = NumEnemies;
set SelectEnemy = 0;
set B3 = 1;
aa2 = EnemyAngle;
if(EnemyDist < 2000)
thrustTime = 10;
else
thrustTime = EnemyDist / 600;
i = 0;
while (i < thrustTime)
{
aim();
i = i + 1;
}
set B3 = 0;
return;
}
Proc drift
{
var
i
end
set B3 = 0;
i = 0;
while (i < 4)
{
aim();
i = i + 1;
}
return;
}
Proc seek
{
if(NumEnemies > 0)
thrust();
drift();
return;
}
State loop
{
r = 0;
l = 0;
u = 0;
d = 0;
set RepairToggle = 1;
set Balance= 1;
if (XPos*XVel > 50000 && XVel > 0) r = 1;
if (XPos*XVel > 50000 && XVel < 0) l = 1;
if (YPos*YVel > 50000 && YVel > 0) u = 1;
if (YPos*YVel > 50000 && YVel < 0) d = 1;
if (r || l || u || d)
{
dir();
set B1 =0;
if (angto == Angle)
{
set B3 = 1;
}
}
else
seek();
}
State main
{
set B2 = 1;
angto = -500;
1 -> loop;
}
Start main