Unit crashing spring
Posted: 11 Mar 2007, 23:19
NOTE: This is for use in the latest dev version of Spring! (r3467 at time of writing)
Considering how complex the unit script is, this is probably what's causing Spring to crash when the unit is created
So this is the script. It contains a lot of comments to help people:
This is the unit's fbi file
The relevant weapon files
Unit explosions
Me and Nemo's attempts to fix it:
Considering how complex the unit script is, this is probably what's causing Spring to crash when the unit is created
So this is the script. It contains a lot of comments to help people:
Code: Select all
// Thank's be to 'Argh' for his script repository.
#include "STANDARD_COMMANDS_GPL.h"
#include "FC_SFX.h"
//defines pieces in the unit's s3o or 3do model file
piece base, hullp1, hullp2, hullp3, eng;
piece sfx1, sfx2, sfx3;
piece turret, barrel, fp;
piece explo_base, explo_y, explo_point;
static-var restore_delay, healthlevel;
static-var d3, d6, d12;
static-var armour, heat;
static-var hitby;
static-var hitanglex, hitangley;
static-var wepstr; //weapon strength
static-var PR; //penetration roll
static-var defspeed;
#define SIG_AIM1 2
#define SIG_MOVE 4
//Scripted Effects
//WARNING! sfx types 1-3 are already used by FC_SFX.h!
#define NOVAFX 1027 //sfx type 4
//scripted weapons
//WARNING! weapons 13-16 are already used by FC_SFX.h!
#define NOVACANNON 2049 //weapon2 - will actually fire this, rather than detonate it
VarReduce() //this is a custom function put in before Create() because Scriptor compiles things downwards.
//As Create calls this function, it needs to exist before Create() or compile errors will occur
//this applies to all functions you want to call anywhere - they need to be included before the caller
{
if(heat > 0)
{
heat = heat - 1;
}
sleep 1000; //once per second
}
ConstantFX() //used for engine effects
{
emit-sfx ENGFX from sfx1;
emit-sfx ENGFX from sfx2;
emit-sfx ENGFX from sfx3;
sleep 100; //the above effects all occur every 10th of a second
}
DamageFX() //damage effects, obviously
{
while( get BUILD_PERCENT_LEFT ) //this stops the unit spurting fire and smoke whilst being built
{ //BUILD_PERCENT_LEFT gives a percentage of how much unit there is left to build
sleep 1000; //When it reaches 0, the unit is complete, and the while function ends
} //While functions run until the variable in brackets is 0, hence why this works
get HEALTH; //gets the unit's health - is returned as a percentage
healthlevel = HEALTH;
if(healthlevel < 50) //below 50% health
{
emit-sfx SMOKEFX from explo_point;
}
if(healthlevel < 25) //below 25% health
{
emit-sfx FIREFX from explo_point;
}
sleep 1000;
}
Create() //run when the unit is created (as in: when building begins)
{
spin explo_base around x-axis speed <300>;
spin explo_y around y-axis speed <300>;
start-script VarReduce();
start-script ConstantFX();
start-script DamageFX();
set MAX_SPEED to 5;
defspeed=5;
restore_delay = 2000;
armour=10;
heat=0;
wepstr=0;
PR=0;
}
CrewStunned()
{
set MAX_SPEED to 0;
sleep 5000; //five seconds
set MAX_SPEED to defspeed; //default speed
}
CrewShaken()
{
set MAX_SPEED to 1;
sleep 5000; //five seconds
set MAX_SPEED to defspeed; //default speed
}
PenetratingHit()
{
emit-sfx FIREFX from explo_point; //visual clue to show weapon penetration
d6 = RAND(1,6);
if(heat>50)
{
d6 = d6 + 1;
}
if(heat>100)
{
d6 = d6 + 2;
}
if(d6==1)
{
call-script CrewStunned();
}
if(d6==2)
{
call-script CrewShaken();
}
if(d6==3)
{
emit-sfx SMALLEXPLO from explo_point;
}
if(d6==4)
{
set MAX_SPEED to 0;
defspeed=0;
}
if(d6==5)
{
armour = armour - 1;
}
if(d6==6)
{
emit-sfx MEDEXPLO from explo_point;
}
if(d6==7)
{
armour = armour - 2;
}
if(d6==8)
{
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
emit-sfx LARGEEXPLO from explo_point;
//will destroy the unit entirely
}
}
HitResults()
{
d6 = RAND(1,6);
if(heat>50)
{
d6 = d6 + 1;
}
if(heat>100)
{
d6 = d6 + 2;
}
PR = wepstr + d6;
if(PR > armour)
{
call-script PenetratingHit();
}
}
/*hitby tags
Curse the fact that Scriptor won't support strings!
0 = Plasma weapon
1 = Laser weapon
2 = Missile weapon
3 = Torpedo
4 = Slug
5 = Nova cannon
6 = Mines
7 = Cutting Beam
8 = (standin for another 'Special' weapon I haven't thought up yet)
*/
/*index of Weapon IDs
0 = plasma cannon
001 = light plasma gun
002 = Anti-Ship Cannon
100 = Anti-FigB Laser
101 = Anti-Ship Laser
102 = Heavy Anti-Ship Laser
200 = Seeker Missile
201 = Heavy Missile
202 = Dumb Rocket
203 = Tac-Nuke
300 = Torpedo
301 = Swarm Torpedo
302 = Shotgun Torpedo
400 = SCannon
401 = RailCannon
500 = Nova Cannon
600 = Mine
601 = Anti-Matter mine (nasty bastards)
700 = Cutting beam
*/
HitByWeapID(x, y, id, damage) //run when the unit is hit. ID gives the ID of the weapon - most useful!
{
hitanglex=x;
hitangley=y;
if(id==0) //plasma cannon
{
hitby=0;
armour = armour - 0.1;
}
if(id==001) //light plasma
{
hitby=0;
}
if(id==002) //Anti-Ship (plasma) Cannon
{
hitby=0;
armour = armour - 1;
}
if(id==100) //AFL
{
hitby=1;
heat = heat + 1;
}
if(id==101) //ASL
{
hitby=1;
heat = heat + 10;
}
if(id==200) //seeker missile
{
hitby=2;
wepstr=6;
call-script HitResults();
}
if(id==201 || id==202) //heavy missile and dumb missile
{
hitby=2;
wepstr=7;
call-script HitResults();
}
if(id==300) //torpedo
{
hitby=3;
wepstr=9;
call-script HitResults();
}
if(id==301) //swarm torpedo
{
hitby=3;
wepstr=5;
call-script HitResults();
}
if(id==302) //shotgun torpedo
{
hitby=3;
wepstr=6;
call-script HitResults();
}
if(id==400) //slug
{
hitby=4;
wepstr=6;
call-script HitResults();
}
if(id==401) //rail cannon
{
hitby=4;
wepstr=10;
call-script HitResults();
}
if(id==500) //nova
{
hitby=5;
armour = armour - 1;
heat = heat + 50;
}
if(id==600) //mines
{
hitby=6;
}
if(id==700) //cutter beam
{
hitby=7;
armour = armour - 0.01;
heat = heat + 1;
}
return(100); //here, return tells the engine how much damage to do to the unit (as a percentage)
}
SetMaxReloadTime(time) //I can't remember what this does
{
restore_delay = time * 2;
}
RestoreAfterDelay() //restores turrets to default positions
{
sleep restore_delay;
turn turret to y-axis <0> speed <10>;
turn barrel to x-axis <0> speed <10>;
return 0;
}
SweetSpot (piecenum) //where enemies shoot at - not used by Spring (Spring units will aim for the centre of the unit)
{
piecenum = base;
}
QueryWeapon1 (piecenum) //the piece the weapon is fired from
{
piecenum = fp;
}
AimFromWeapon1 (piecenum) //the point around which the weapon aims
{
piecenum = barrel;
}
AimWeapon1(heading, pitch) //aiming anims for weapon1
{
signal SIG_AIM1;
set-signal-mask SIG_AIM1;
turn turret to y-axis heading speed <10>;
turn barrel to x-axis (0 - pitch) speed <10>;
return(TRUE);
}
FireWeapon1() //called when the weapon fires
{
//here, you should be able to see that weapon1 is infact a dummy
//as Nova weapons are supposed to charge up before firing,
//I set it up so that weapon1 will tell scriptor when to fire...
emit-sfx NOVAFX from fp; //charging effects
heat = heat + 30;
sleep 1000; //The script will then wait a second of 'warm-up time'
emit-sfx NOVACANNON from fp; //Fire the *real* Nova cannon
return(0);
}
/*hitby tags
Curse the fact that Scriptor won't support strings!
0 = Plasma weapon
1 = Laser weapon
2 = Missile weapon
3 = Torpedo
4 = Slug
5 = Nova cannon
6 = Mines
7 = Cutting Beam
8 = (standin for another 'Special' weapon I haven't thought up yet)
*/
/*AimWeapon2(heading, pitch) //aiming anims for weapon2 (the real Nova Cannon that isn't meant to shoot on it's own)
{
sleep 99999999;
}*/
Killed(severity, corpsetype) //Called when the unit dies
{
//Between here and return(0);, you can put a death anim. As I have here
if(hitby==2 || hitby==3 || hitby==4 || hitby==6) //death caused by Slug, Torp, Mine or missile. || = OR
{
turn base to y-axis hitangley NOW;
turn base to x-axis hitanglex NOW;
move hullp1 to x-axis [10000] speed [1];
spin hullp1 around z-axis speed <5>;
sleep 1000;
emit-sfx SMALLEXPLO from explo_point;
sleep 750;
emit-sfx SMALLEXPLO from explo_point;
sleep 500;
emit-sfx SMALLEXPLO from explo_point;
sleep 100;
emit-sfx MEDEXPLO from explo_point;
sleep 80;
emit-sfx MEDEXPLO from explo_point;
sleep 50;
emit-sfx MEDEXPLO from explo_point;
sleep 30;
emit-sfx LARGEEXPLO from explo_point;
}
if(hitby==0 || hitby==1) //death caused by Laser or Plasma
{
spin hullp1 around z-axis speed <5>;
sleep 1000;
emit-sfx SMALLEXPLO from explo_point;
sleep 750;
emit-sfx SMALLEXPLO from explo_point;
sleep 500;
emit-sfx SMALLEXPLO from explo_point;
sleep 100;
emit-sfx SMALLEXPLO from explo_point;
sleep 80;
emit-sfx SMALLEXPLO from explo_point;
sleep 50;
emit-sfx MEDEXPLO from explo_point;
sleep 30;
emit-sfx LARGEEXPLO from explo_point;
}
if(hitby==5 || hitby==7) //death caused by Nova or Cutting Beam
{
emit-sfx LARGEEXPLO from explo_point;
emit-sfx MEDEXPLO from sfx1;
emit-sfx MEDEXPLO from sfx2;
emit-sfx MEDEXPLO from sfx3;
}
return(0);
}
Code: Select all
[UNITINFO]
{
UnitName=CASD_attf_Nova;
Name=Nova Attack Frigate;
Buildpic=missingbp.jpg;
// Required Tags
BuildCostEnergy=500;
BuildCostMetal=0;
BuildTime=1500;
Category=CASD ATTF NOTSTRIKE;
Description=Crew Size: 15. Nova Cannon;
FootprintX=2;
FootprintZ=2;
MaxDamage=4000;
MovementClass=Escort;
ObjectName=CASD_attf_Nova;
Side=CASD;
SoundCategory=CASD_Ships;
TEDClass=VTOL;
// Movement
BrakeRate=0.01;
Acceleration=0.01;
CanMove=1;
MaxVelocity=5;
MaxSlope=10;
TurnRate=900;
// Buildings
// Construction
Builder=0;
WorkerTime=0;
// Resources
EnergyMake=100;
EnergyStorage=0;
EnergyUse=10;
MetalStorage=-15;
// Abilities
CanAttack=1;
CanFly=1;
CanGuard=1;
CanPatrol=1;
CanStop=1;
// Sight/Radar
SightDistance=600;
// Misc
CruiseAlt=70;
ExplodeAs=LARGE_BOOM;
dontland=1;
MaxWaterDepth=0;
NoChaseCategory=NOTSTRIKE;
SelfDestructAs=LARGE_BOOM;
SmoothAnim=0;
AirStrafe=0;
bmcode=1;
noautofire=0;
firestandorders=1;
standingfireorder=2;
mobilestandorders=1;
standingmoveorder=1;
idleAutoHeal=15;
idleTime=1800;
defaultmissiontype=VTOL_standby;
steeringmode=1;
scale=1;
maneuverleashlength=1280;
bankscale=1;
seismicsignature=0;
shownanoframe=0;
//Weapons
Weapon1=Novadummy;
WeaponMainDir1=0 1 0; //xyz
MaxAngleDif1=180;
Weapon2=Novacannon;
Weapon14=SMALL_BOOM;
Weapon15=MED_BOOM;
Weapon16=LARGE_BOOM;
[SFXTypes]
{
explosiongenerator0=custom:whitetail; //Remember to thank Smoth
explosiongenerator1=custom:FIRE_FX;
explosiongenerator2=custom:SMOKE_FX;
explosiongenerator3=custom:NOVAFX;
}
}
Code: Select all
[Novadummy]
{
ID=1000; //dummy / not-really-weapons weapons have id=1000
name=dummy;
rendertype=0; /* 2D bitmap */
lineofsight=1;
turret=1;
beamweapon=1;
beamlaser=1;
beamtime=0.01;
thickness=2;
corethickness=0.4;
intensity=1;
laserflaresize=0;
rgbcolor=0 0.5 1; //RGB
rgbcolor2=1 1 1;
range=500;
reloadtime=0.01;
//weapontimer=1;
weaponvelocity=500;
areaofeffect=15;
soundstart=Meltagun;
soundhit=Explosion5;
soundtrigger=1;
//tolerance=6000;
//pitchtolerance=3500;
energypershot=0;
accuracy=0;
impulsefactor=0;
CollideFriendly=0;
AvoidFriendly=0;
NoSelfDamage=1;
craterMult=0;
craterBoost=0;
[DAMAGE]
{
default=0.000000001;
}
}
[Novacannon]
{
ID=500; //IDs are organised by weapon strength
name=Nova;
rendertype=1;
lineofsight=1;
turret=1;
model=plasmashot_ltblue.s3o;
range=500;
reloadtime=3;
weapontimer=5;
weaponvelocity=500;
startvelocity=500;
weaponacceleration=150;
turnrate=0;
areaofeffect=40;
metalpershot=0;
energypershot=60;
soundstart=Plasmacannon;
soundhit=Explosion5;
firestarter=70;
tolerance=8000;
accuracy=500;
explosiongenerator=custom:NOVA_BOOM;
impulsefactor=0;
impulseBoost=0;
CollideFriendly=0;
AvoidFriendly=0;
NoSelfDamage=1;
craterMult=0;
craterBoost=0;
[DAMAGE]
{
default=0.000000001;
EscF=3000;
AttF=3000;
FigB=5000;
}
}
Code: Select all
[SMALL_BOOM]
{
ID=1000;
name=vehicles;
rendertype=4;
ballistic=1;
turret=1;
range=0;
reloadtime=3.6;
weaponvelocity=250;
areaofeffect=64;
edgeeffectiveness=0.5;
soundstart=largegun;
soundhit=xplolrg4;
explosiongenerator=custom:SMALL_BOOM;
impulsefactor=0;
[DAMAGE]
{
default=250;
}
}
[MED_BOOM]
{
ID=1000;
name=vehicles;
rendertype=4;
ballistic=1;
turret=1;
range=0;
reloadtime=3.6;
weaponvelocity=250;
areaofeffect=128;
edgeeffectiveness=0.5;
soundstart=largegun;
soundhit=xplolrg4;
explosiongenerator=custom:MED_BOOM;
impulsefactor=0;
[DAMAGE]
{
default=500;
}
}
[LARGE_BOOM]
{
ID=1000;
name=vehicles;
rendertype=4;
ballistic=1;
turret=1;
range=0;
reloadtime=3.6;
weaponvelocity=250;
areaofeffect=256;
edgeeffectiveness=0.5;
soundstart=largegun;
soundhit=xplolrg4;
explosiongenerator=custom:LARGE_BOOM;
impulsefactor=0;
[DAMAGE]
{
default=1000;
}
}
[21:36:11] <[LEGIONS]Guessmyname> http://cs.selu.edu/~ssmith/BB/viewtopic.php?t=1178
[21:36:24] <[LEGIONS]Guessmyname> that's the script, unit fbi and weapon file
[21:37:10] <[LEGIONS]Guessmyname> the unit crashes Spring when created
[21:38:47] <[LEGIONS]Guessmyname> it's a bit complex
[21:39:34] <[S44]Nemo> #define NOVACANNON 2049 //weapon2 should be 2050
[21:39:43] <[S44]Nemo> if it starts a 2048
[21:39:51] <[S44]Nemo> starts at*
[21:40:37] <[LEGIONS]Guessmyname> ta!
[21:40:55] <[LEGIONS]Guessmyname> are the comments useful?
[21:41:29] <[LEGIONS]Guessmyname> wait - why would it be 2050 rather than 2049?
[21:41:41] <[LEGIONS]Guessmyname> weapon 1 would be 2048, wouldn't it?
[21:41:45] <[S44]Nemo> because you don't have a weapon0
[21:41:48] <[S44]Nemo> it doesn't happen
[21:41:54] <[LEGIONS]Guessmyname> oh
[21:42:08] <[LEGIONS]Guessmyname> that happen with sfx types too?
[21:42:10] <[S44]Nemo> I could be wrong, but I seem to remember it working like that when I played with emit-sfx last
[21:42:55] <[LEGIONS]Guessmyname> I'll have to twiddle that include as well...
[21:43:15] <[S44]Nemo> man, this mod is going to be impossible for non-epic players, isn't it :P
[21:43:28] <[LEGIONS]Guessmyname> this isn't Epic :P
[21:43:56] <[S44]Nemo> even worse then, since you won't have people who have an idea of what should be happening
[21:44:07] <[LEGIONS]Guessmyname> It'll be explained
[21:44:22] <[LEGIONS]Guessmyname> I have a readme already written
[21:44:30] <[LEGIONS]Guessmyname> but we have a more important issue
[21:44:33] <[LEGIONS]Guessmyname> ie the crashing
[21:44:42] <[LEGIONS]Guessmyname> the emit-sfx changes didn't do anything
[21:45:04] <[LEGIONS]Guessmyname> besides
[21:45:17] <[LEGIONS]Guessmyname> You could say the same about Gundam and S44
[21:46:41] <[S44]Nemo> hence their lack of players
[21:47:00] <[LEGIONS]Guessmyname> not really
[21:47:04] <[LEGIONS]Guessmyname> they're not BA
[21:47:12] <[LEGIONS]Guessmyname> that's the root of the lack of player
[21:47:13] <[LEGIONS]Guessmyname> s
[21:47:52] <[S44]Nemo> at least S44 and gundam have a group that should have a sense of what things can and can't do
[21:48:07] <[S44]Nemo> and in 44..most of it makes sense. units get shot at, they dive to the ground.
[21:48:27] <[S44]Nemo> we'll have to see how this project plays, I guess :P
[21:48:31] <[LEGIONS]Guessmyname> yeah
[21:48:39] <[LEGIONS]Guessmyname> If we can get past the crashing
[21:49:25] <[LEGIONS]Guessmyname> It shouldn't be too hard to work out what's happening, and if you don't read the readme, you deserve to get raped ingame
[21:49:57] <[LEGIONS]Guessmyname> (the readme applies to all mods)
[21:50:06] <[LEGIONS]Guessmyname> *readme thing
[21:50:30] <[LEGIONS]Guessmyname> Well, I'm off to bed
[21:50:34] <[LEGIONS]Guessmyname> gnight all
[21:50:37] <[S44]Nemo> wait!
[21:50:40] <[LEGIONS]Guessmyname> *g'night
[21:50:43] * [LEGIONS]Guessmyname waits
[21:50:48] <[S44]Nemo> post your explosions
[21:50:59] <[LEGIONS]Guessmyname> the scripts or the weapon files?
[21:51:02] <[LEGIONS]Guessmyname> Or both?
[21:51:06] <[S44]Nemo> but it crashes, instead of not just loading..er, nevermind
[21:51:15] <[LEGIONS]Guessmyname> ...
[21:51:25] <[S44]Nemo> oh
[21:51:28] <[S44]Nemo> commander=1?
[21:51:38] <[LEGIONS]Guessmyname> that was me trying to fix things
[21:51:42] <[S44]Nemo> its a commander, right?
[21:51:46] <[LEGIONS]Guessmyname> no
[21:51:48] <[S44]Nemo> oh
[21:51:56] <[S44]Nemo> is there a commander for that side?
[21:52:02] <[S44]Nemo> does that commander have commander=1?
[21:52:04] <[LEGIONS]Guessmyname> not yet
[21:52:13] <[S44]Nemo> there's your problem...?
[21:52:34] <[LEGIONS]Guessmyname> Sidedata is set to spawn the Nova Frigate as the starting unit
[21:52:50] <[LEGIONS]Guessmyname> the Nova Frigate is the unit that is crashing
[21:53:03] <[LEGIONS]Guessmyname> it's the only unit that is actually at an ingame stage
[21:53:06] <[S44]Nemo> yes, then it needs commander=1
[21:53:19] <[LEGIONS]Guessmyname> oh
[21:53:26] <[S44]Nemo> or else it'll just explode on spawning
[21:53:30] <[LEGIONS]Guessmyname> I thought I'd added that tag earlier...
[21:53:56] <[LEGIONS]Guessmyname> also
[21:54:02] <[LEGIONS]Guessmyname> still crashes :(
[21:54:15] <[LEGIONS]Guessmyname> oh, oops
[21:54:15] <[S44]Nemo> hrmph.
[21:54:19] <[LEGIONS]Guessmyname> missed commander
[21:54:22] <[S44]Nemo> <_<
[21:54:23] <[LEGIONS]Guessmyname> *misspelled
[21:54:34] <[S44]Nemo> http://phish.no-ip.info/LUA.zip there's the LUA stuff, btw
[21:54:46] <[LEGIONS]Guessmyname> thanks
[21:54:49] <[S44]Nemo> if you don't have any widgets, you can just unzip that in your spring directory
[21:55:01] <[S44]Nemo> if you have widgets, rename your LuaUI folder to anything else
[21:55:03] <[S44]Nemo> then unzip that
[21:55:13] <[LEGIONS]Guessmyname> 1: I have the widgets that come with spring
[21:55:13] <[S44]Nemo> then paste your old LuaUI folder into LuaUI-version number
[21:55:23] <[S44]Nemo> that's all? then you're fine
[21:55:42] <[LEGIONS]Guessmyname> 2: I'm using a seperate, clean spring installation + latest dev exe
[21:55:51] <[S44]Nemo> alrighty
[21:56:17] <[S44]Nemo> oh, also..if you're testing by starting spring.exe
[21:56:27] <[S44]Nemo> you need a team0 and team1 in sidedata
[21:56:34] <[S44]Nemo> just make the nova commander of both
[21:56:44] <[LEGIONS]Guessmyname> I have
[21:56:47] <[S44]Nemo> okay
[21:56:50] <[LEGIONS]Guessmyname> I know about that one :P
[21:59:03] <[LEGIONS]Guessmyname> hmm
[21:59:07] <[LEGIONS]Guessmyname> still crashin'
[21:59:20] <[S44]Nemo> odd.
[21:59:25] <[LEGIONS]Guessmyname> I'll post up the explosions etc anyway
[21:59:38] <[S44]Nemo> tried commenting out all the potentially crashy stuff in the script?
[21:59:45] <[S44]Nemo> various bits of Create()
[21:59:51] <[LEGIONS]Guessmyname> such as?
[22:00:07] <[LEGIONS]Guessmyname> all the script calls?
[22:01:18] * lurker[] has left #aata (Quit: timeout)
[22:01:34] * lurker[] has joined #aata
[22:02:06] * []AF has left #aata (Quit)
[22:02:07] <[S44]Nemo> eh, none of those look crashy
[22:02:22] <[LEGIONS]Guessmyname> well, I just tried it with those commented out
[22:02:28] <[LEGIONS]Guessmyname> still crashed
[22:02:34] <[S44]Nemo> right
[22:02:56] <[LEGIONS]Guessmyname> damnit, all my complicated scripts cause Spring to crash inexplicably...
[22:03:14] <[S44]Nemo> its not the script
[22:03:45] <[LEGIONS]Guessmyname> oh
[22:03:46] <[S44]Nemo> TEDCLASS=COMMANDER;
[22:03:51] <[S44]Nemo> tried it?
[22:04:28] <[LEGIONS]Guessmyname> will that stop it being an aircraft?
[22:04:33] <[LEGIONS]Guessmyname> it shouldn't...
[22:04:45] <[LEGIONS]Guessmyname> but knowing Spring...
[22:05:01] <[S44]Nemo> it wont
[22:05:05] <[S44]Nemo> the FF commanders have that
[22:05:12] <[LEGIONS]Guessmyname> and it still crashes :/
[22:05:38] <[LEGIONS]Guessmyname> this would be so much easier if Spring would actually say what was going wrong!
[22:05:50] <[S44]Nemo> add COMMANDER to category
[22:06:17] <[LEGIONS]Guessmyname> still crashes
[22:07:07] <[S44]Nemo> hm.
[22:07:21] <[S44]Nemo> does spring count down?
[22:07:24] <[S44]Nemo> 3-2-1 go?
[22:07:31] <[S44]Nemo> or do the 'press return to start'?
[22:07:56] <[LEGIONS]Guessmyname> press return
[22:08:06] <[LEGIONS]Guessmyname> I'm running it through Spring.exe
[22:08:11] <[LEGIONS]Guessmyname> I have to
[22:08:15] <[S44]Nemo> just makign sure it gets that far
[22:08:16] <[S44]Nemo> oh
[22:08:24] <[S44]Nemo> you don't have a start or stopmoving function
[22:08:31] <[LEGIONS]Guessmyname> should I?
[22:08:47] <[S44]Nemo> can't hurt. just return (0); or sleep 100 or something
[22:10:23] <[LEGIONS]Guessmyname> still crashes
[22:11:20] <[S44]Nemo> hm.
[22:11:37] <[S44]Nemo> missing any brackets anywhere? <_<
[22:12:04] <[S44]Nemo> there is a movementclass called Escort?
[22:12:43] <[LEGIONS]Guessmyname> yes to movement class
[22:12:47] <[LEGIONS]Guessmyname> no to the brackets
[22:14:33] <[S44]Nemo> hm. I don't see anything else missing right away..
[22:14:40] <[S44]Nemo> er, potentially missing
[22:15:02] <[LEGIONS]Guessmyname> its always something stupidly simple that causes these things
[22:15:13] <[S44]Nemo> yep >_>
[22:15:26] <[S44]Nemo> and its always impossible to find right away
[22:15:37] <[LEGIONS]Guessmyname> and as it's quarter past ten
[22:15:43] <[LEGIONS]Guessmyname> and I have school tomorrow
[22:15:45] <[LEGIONS]Guessmyname> goodnight
[22:15:48] <[LEGIONS]Guessmyname> and thanks
[22:15:54] <[S44]Nemo> alright, later