Check through the script. It should work. But it doesn't - nothing aims, and because of the wait-for-turns to prevent pre-aim firing, nothing shoots.
Code: Select all
piece base, body, bolter1, b1flare, lascannon, lflare, turret, barrelp1, barrelp2, cflare, bolter2, b2flare;
static-var restore_delay;
#define SIG_AIM1 2
#define SIG_AIM2 4
#define SIG_AIM3 8
#define SMOKEPIECE1 base
#include "smokeunit.h"
#include "exptype.h"
#include "rockunit.h"
#include "hitweap.h"
Create()
{
restore_delay = 2000;
hide cflare;
hide lflare;
hide b1flare;
hide b2flare;
start-script SmokeUnit();
}
SetMaxReloadTime(time)
{
restore_delay = time * 2;
}
RestoreAfterDelay()
{
sleep restore_delay;
turn turret to y-axis <0> speed <20>;
turn barrelp1 to x-axis <0> speed <20>;
turn lascannon to y-axis <0> speed <40>;
turn lascannon to x-axis <0> speed <40>;
turn bolter1 to y-axis <0> speed <50>;
turn bolter1 to x-axis <0> speed <50>;
turn bolter2 to y-axis <0> speed <50>;
turn bolter2 to x-axis <0> speed <50>;
return 0;
}
SweetSpot (piecenum)
{
piecenum = base;
}
QueryWeapon1 (piecenum)
{
piecenum = cflare;
}
AimFromWeapon1 (piecenum)
{
piecenum = turret;
}
AimWeapon1(heading, pitch)
{
signal SIG_AIM1;
set-signal-mask SIG_AIM1;
turn turret to y-axis heading speed <50>;
turn barrelp1 to x-axis (0-pitch) speed <30>;
wait-for-turn turret around y-axis;
wait-for-turn barrelp1 around x-axis;
start-script RestoreAfterDelay();
return(TRUE);
}
FireWeapon1()
{
show cflare;
move barrelp2 to z-axis [-2] speed [100];
sleep 150;
hide cflare;
move barrelp2 to z-axis [0] speed [20];
return(0);
}
QueryWeapon2(piecenum)
{
piecenum = lflare;
}
AimFromWeapon2(piecenum)
{
piecenum = lascannon;
}
AimWeapon2(heading, pitch)
{
signal SIG_AIM2;
set-signal-mask SIG_AIM2;
turn lascannon to y-axis heading speed <40>;
turn lascannon to x-axis (0-pitch) speed <30>;
wait-for-turn lascannon around y-axis;
wait-for-turn lascannon around x-axis;
start-script RestoreAfterDelay();
return(TRUE);
}
FireWeapon2()
{
show lflare;
move lascannon to z-axis [-1] speed [100];
sleep 150;
hide lflare;
move lascannon to z-axis [0] speed [30];
return(0);
}
QueryWeapon3(piecenum)
{
piecenum = b1flare;
}
AimFromWeapon3(piecenum)
{
piecenum = bolter1;
}
AimWeapon3(heading, pitch)
{
signal SIG_AIM3;
set-signal-mask SIG_AIM3;
turn bolter1 to y-axis heading speed <50>;
turn bolter1 to x-axis (0-pitch) speed <30>;
wait-for-turn bolter1 around y-axis;
wait-for-turn bolter1 around x-axis;
start-script RestoreAfterDelay();
return(TRUE);
}
FireWeapon3()
{
show b1flare;
sleep 150;
hide b1flare;
return(0);
}
QueryWeapon4(piecenum)
{
piecenum = b1flare;
}
AimFromWeapon4(piecenum)
{
piecenum = bolter1;
}
AimWeapon4(heading, pitch)
{
signal SIG_AIM3;
set-signal-mask SIG_AIM3;
turn bolter2 to y-axis heading speed <50>;
turn bolter2 to x-axis (0-pitch) speed <30>;
wait-for-turn bolter2 around y-axis;
wait-for-turn bolter2 around x-axis;
start-script RestoreAfterDelay();
return(TRUE);
}
FireWeapon4()
{
show b2flare;
sleep 150;
hide b2flare;
return(0);
}
Killed(severity, corpsetype)
{
if (severity <= 25)
{
corpsetype = 1;
explode body type BITMAPONLY | BITMAP1;
explode bolter1 type BITMAPONLY | BITMAP1;
explode lascannon type BITMAPONLY | BITMAP1;
explode turret type BITMAPONLY | BITMAP1;
explode barrelp1 type BITMAPONLY | BITMAP1;
explode barrelp2 type BITMAPONLY | BITMAP1;
explode bolter2 type BITMAPONLY | BITMAP1;
return(0);
}
if (severity <= 50)
{
corpsetype = 2;
explode body type SHATTER | BITMAP4;
explode bolter1 type SHATTER | BITMAP4;
explode lascannon type SHATTER | BITMAP4;
explode turret type SHATTER | BITMAP4;
explode barrelp1 type SHATTER | BITMAP4;
explode barrelp2 type SHATTER | BITMAP4;
explode bolter2 type SHATTER | BITMAP4;
return(0);
}
corpsetype = 3;
explode body type SHATTER | BITMAP4;
explode bolter1 type FALL | SMOKE | FIRE | EXPLODE_ON_HIT | BITMAP2;
explode lascannon type FALL | SMOKE | FIRE | EXPLODE_ON_HIT | BITMAP2;
explode turret type FALL | SMOKE | FIRE | EXPLODE_ON_HIT | BITMAP2;
explode barrelp1 type SHATTER | BITMAP4;
explode barrelp2 type SHATTER | BITMAP4;
explode bolter2 type FALL | SMOKE | FIRE | EXPLODE_ON_HIT | BITMAP2;
return(0);
}