Below are the units FBI and Script code respectivly. Also for good measure the weapon TDF.
Code: Select all
[UNITINFO]
{
//Internal settings
unitname=AGOSEED;
version=1;
side=AGONY;
objectname=AgoSeed.S3O;
TEDClass=Seed;
category=HOVER SEED AGONY BUILDER ALL;
//unit limitations and properties
ActiveWhenBuilt=1;
WorkerTime=50;
builddistance=90;
BuildTime=1;
//SoundCategory=ARM_kbot;
SightDistance=600;
radardistance=1200;
MaxDamage=300;
name=Agony Seed;
description=:Creates Agony;
//energy and metal related
BuildCostEnergy=200;
BuildCostMetal=400;
EnergyMake=10;
MetalMake=5;
//Pathfinding and related
FootPrintX=3;
FootPrintZ=3;
MaxWaterDepth=0;
MovementClass=AgonySeed;
mobilestandorders=1;
standingmoveorder=1;
ovradjust=1;
smoothanim=1;
//Abilities
Builder=1;
CanMove=1;
CanPatrol=1;
CanStop=1;
canguard=1;
maxvelocity=3;
brakerate=0.5;
acceleration=0.5;
turnrate=1000;
steeringmode=1;
shootme=1;
canreclamate=1;
defaultmissiontype=Standby;
maneuverleashlength=300;
armourtype=Seed;
canattack=1;
canfly=1;
cruisealt=30;
autoheal=2;
commander=1;
DontLand=1;
ExplodeAs=;
SelfDestructAs=;
canhover=1;
AirHoverFactor=0;
//Weapons and related
weapon1=SeedZap;
wpri_badtargetcategory=VTOL;
nochasecategory=VTOL;
maxangledif1=10;
HoverAttack=1;
}
Code: Select all
#define TA // This is a TA script
#include "sfxtype.h"
#include "exptype.h"
piece base, arm1, arm2, arm3, arm4, point1, point2, point3, point4, point5, point6, point7, point8;
static-var nano_changer, zap_changer, is_building;
SmokeUnit(healthpercent, sleeptime, smoketype)
{
while( get BUILD_PERCENT_LEFT )
{
sleep 400;
}
while( TRUE )
{
healthpercent = get HEALTH;
if( healthpercent < 66 )
{
smoketype = 256 | 2;
if( Rand( 1, 66 ) < healthpercent )
{
smoketype = 256 | 1;
}
emit-sfx smoketype from base;
}
sleeptime = healthpercent * 50;
if( sleeptime < 200 )
{
sleeptime = 200;
}
sleep sleeptime;
}
}
MotionControl(moving, aiming, justmoved)
{
}
Create()
{
nano_changer = 0;
zap_changer = 0;
is_building = 0;
start-script SmokeUnit();
}
SetMaxReloadTime()
{
}
StartMoving()
{
}
StopMoving()
{
}
WhenBuilding()
{
While(is_building == 1)
{
sleep 10;
}
}
SweetSpot(piecenum)
{
piecenum = base;
}
RestoreAfterDelay()
{
}
AimFromPrimary(piecenum)
{
piecenum = base;
}
QueryPrimary(piecenum)
{
if(zap_changer == 0)
{
piecenum = point5;
}
if(zap_changer == 1)
{
piecenum = point6;
}
if(zap_changer == 2)
{
piecenum = point7;
}
if(zap_changer == 3)
{
piecenum = point8;
}
zap_changer = zap_changer + 1;
if(zap_changer == 4)
{
zap_changer = 0;
}
}
AimPrimary(heading, pitch)
{
signal 4;
set-signal-mask 4;
start-script WhenBuilding();
turn base to y-axis heading speed <20>;
turn base to x-axis pitch speed <20>;
return (1);
}
FirePrimary()
{
}
QueryNanoPiece(piecenum)
{
if( nano_changer == 0 )
{
piecenum = point1;
}
if( nano_changer == 1 )
{
piecenum = point2;
}
if( nano_changer == 2 )
{
piecenum = point3;
}
if( nano_changer == 3 )
{
piecenum = point4;
}
nano_changer = nano_changer + 1;
if(nano_changer == 4)
{
nano_changer = 0;
}
}
StartBuilding(heading, pitch)
{
is_building = 1;
turn base to y-axis heading speed <200>;
turn base to X-axis pitch speed <200>;
wait-for-turn base around y-axis;
set INBUILDSTANCE to 1;
}
StopBuilding()
{
set INBUILDSTANCE to 0;
turn base to y-axis <0> speed <200>;
turn base to X-axis <0> speed <200>;
is_building = 0;
signal 8;
set-signal-mask 8;
}
Killed(severity, corpsetype)
{
if( severity <= 25 )
{
corpsetype = 1;
explode base type BITMAPONLY | BITMAP1;
explode arm1 type SHATTER;
explode arm3 type SHATTER;
explode arm4 type SHATTER;
explode arm2 type SHATTER;
return (0);
}
if( severity <= 50 )
{
corpsetype = 2;
explode base type BITMAPONLY | BITMAP1;
explode arm1 type SHATTER;
explode arm3 type SHATTER;
explode arm4 type SHATTER;
explode arm2 type SHATTER;
return (0);
}
if( severity <= 99 )
{
corpsetype = 3;
explode base type BITMAPONLY | BITMAP1;
explode arm1 type SHATTER;
explode arm3 type SHATTER;
explode arm4 type SHATTER;
explode arm2 type SHATTER;
return (0);
}
corpsetype = 3;
explode base type BITMAPONLY | BITMAP1;
}
Code: Select all
[SeedZap]
{
name=LightningGun;
rendertype=7;
lineofsight=1;
turret=0;
range=600;
reloadtime=.4;
weaponvelocity=400;
targetMoveError=0.3;
areaofeffect=8;
duration=10;
soundtrigger=1;
energypershot=5;
tolerance=600;
//soundstart=lghthvy1;
//soundhit=lashit;
firestarter=90;
beamweapon=1;
rbgcolor=.9 .4 .4;
explosiongaf=fx;
explosionart=explode5;
waterexplosiongaf=fx;
waterexplosionart=h2oboom1;
startsmoke=1;
[DAMAGE]
{
default=10;
}
}