Win32 changes, TextureStore uses SDL.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@76 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
1d83748d8f
commit
2a3ece755c
@ -134,6 +134,9 @@ extern int debug;
|
||||
- (IBAction) goFullscreen:(id) sender;
|
||||
- (void) exitFullScreenMode;
|
||||
- (BOOL) inFullScreenMode;
|
||||
#ifdef GNUSTEP
|
||||
- (void) setFullScreenMode:(BOOL)fsm;
|
||||
#endif
|
||||
|
||||
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target;
|
||||
- (void) exitApp;
|
||||
|
@ -327,7 +327,9 @@ static int _compareModes(id arg1, id arg2, void *context)
|
||||
// back there under GNUstep.
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
gameView = [[MyOpenGLView alloc] initWithFrame: NSMakeRect(0, 0, DISPLAY_MIN_WIDTH, DISPLAY_MIN_HEIGHT)];
|
||||
gameView = [MyOpenGLView alloc];
|
||||
[gameView setFullScreenMode: fullscreen];
|
||||
[gameView initWithFrame: NSMakeRect(0, 0, DISPLAY_MIN_WIDTH, DISPLAY_MIN_HEIGHT)];
|
||||
[gameView setGameController: self];
|
||||
#endif
|
||||
|
||||
@ -773,6 +775,13 @@ static int _compareModes(id arg1, id arg2, void *context)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GNUSTEP
|
||||
- (void) setFullScreenMode:(BOOL)fsm
|
||||
{
|
||||
fullscreen = fsm;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target
|
||||
{
|
||||
|
@ -89,6 +89,7 @@ float char_widths[128] = {
|
||||
}
|
||||
|
||||
// // init sprites
|
||||
#ifndef WIN32
|
||||
compassSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:COMPASS_IMAGE inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, COMPASS_SIZE, COMPASS_SIZE)
|
||||
size:NSMakeSize(COMPASS_HALF_SIZE, COMPASS_HALF_SIZE)]; // alloc retains
|
||||
@ -110,7 +111,30 @@ float char_widths[128] = {
|
||||
cropRectangle:NSMakeRect(w1*i, 0, w1, h1)
|
||||
size:NSMakeSize(16, 16)]; // alloc retains
|
||||
}
|
||||
|
||||
#else
|
||||
compassSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:COMPASS_IMAGE inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, COMPASS_SIZE, COMPASS_SIZE)
|
||||
size:NSMakeSize(COMPASS_HALF_SIZE, COMPASS_HALF_SIZE)]; // alloc retains
|
||||
reddotSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:COMPASS_REDDOT_IMAGE inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, COMPASS_DOT_SIZE, COMPASS_DOT_SIZE)
|
||||
size:NSMakeSize(COMPASS_HALF_DOT_SIZE, COMPASS_HALF_DOT_SIZE)]; // alloc retains
|
||||
greendotSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:COMPASS_GREENDOT_IMAGE inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, COMPASS_DOT_SIZE, COMPASS_DOT_SIZE)
|
||||
size:NSMakeSize(COMPASS_HALF_DOT_SIZE, COMPASS_HALF_DOT_SIZE)]; // alloc retains
|
||||
aegisSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:AEGIS_IMAGE inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, 32, 32)
|
||||
size:NSMakeSize(32, 32)]; // alloc retains
|
||||
SDLImage *zoomLevelImage = [ResourceManager surfaceNamed:ZOOM_LEVELS_IMAGE inFolder:@"Images"];
|
||||
int w1 = [zoomLevelImage size].width / SCANNER_ZOOM_LEVELS;
|
||||
int h1 = [zoomLevelImage size].height;
|
||||
for (i = 0; i < SCANNER_ZOOM_LEVELS; i++)
|
||||
{
|
||||
zoomLevelSprite[i] = [[OpenGLSprite alloc] initWithSurface:zoomLevelImage
|
||||
cropRectangle:NSMakeRect(w1*i, 0, w1, h1)
|
||||
size:NSMakeSize(16, 16)]; // alloc retains
|
||||
}
|
||||
#endif
|
||||
|
||||
// init arrays
|
||||
dialArray = [[NSMutableArray alloc] initWithCapacity:16]; // alloc retains
|
||||
legendArray = [[NSMutableArray alloc] initWithCapacity:16]; // alloc retains
|
||||
@ -175,6 +199,7 @@ GLuint ascii_texture_name;
|
||||
if ([info objectForKey:IMAGE_KEY])
|
||||
{
|
||||
//NSLog(@"DEBUG adding Legend %@",[info objectForKey:IMAGE_KEY]);
|
||||
#ifndef WIN32
|
||||
NSImage *legendImage = [ResourceManager imageNamed:(NSString *)[info objectForKey:IMAGE_KEY] inFolder:@"Images"];
|
||||
NSSize imageSize = [legendImage size];
|
||||
NSSize spriteSize = imageSize;
|
||||
@ -182,8 +207,21 @@ GLuint ascii_texture_name;
|
||||
spriteSize.width = [(NSNumber *)[info objectForKey:WIDTH_KEY] intValue];
|
||||
if ([info objectForKey:HEIGHT_KEY])
|
||||
spriteSize.height = [(NSNumber *)[info objectForKey:HEIGHT_KEY] intValue];
|
||||
|
||||
OpenGLSprite *legendSprite = [[OpenGLSprite alloc] initWithImage:legendImage
|
||||
cropRectangle:NSMakeRect(0, 0, imageSize.width, imageSize.height) size:spriteSize]; // retained
|
||||
#else
|
||||
SDLImage *legendImage = [ResourceManager surfaceNamed:(NSString *)[info objectForKey:IMAGE_KEY] inFolder:@"Images"];
|
||||
NSSize imageSize = [legendImage size];
|
||||
NSSize spriteSize = imageSize;
|
||||
if ([info objectForKey:WIDTH_KEY])
|
||||
spriteSize.width = [(NSNumber *)[info objectForKey:WIDTH_KEY] intValue];
|
||||
if ([info objectForKey:HEIGHT_KEY])
|
||||
spriteSize.height = [(NSNumber *)[info objectForKey:HEIGHT_KEY] intValue];
|
||||
|
||||
OpenGLSprite *legendSprite = [[OpenGLSprite alloc] initWithSurface:legendImage
|
||||
cropRectangle:NSMakeRect(0, 0, imageSize.width, imageSize.height) size:spriteSize]; // retained
|
||||
#endif
|
||||
NSMutableDictionary *legendDict = [NSMutableDictionary dictionaryWithDictionary:info];
|
||||
[legendDict setObject:legendSprite forKey:SPRITE_KEY];
|
||||
[legendArray addObject:legendDict];
|
||||
|
@ -147,6 +147,9 @@ extern int debug;
|
||||
- (void) snapShot;
|
||||
|
||||
- (BOOL) inFullScreenMode;
|
||||
#ifdef GNUSTEP
|
||||
- (void) setFullScreenMode:(BOOL)fsm;
|
||||
#endif
|
||||
|
||||
/*
|
||||
// These are standard methods in NSView.
|
||||
|
@ -50,12 +50,12 @@ Your fair use and other rights are in no way affected by the above.
|
||||
SDL_VERSION(&dpyInfo.version);
|
||||
if(SDL_GetWMInfo(&dpyInfo))
|
||||
{
|
||||
#ifdef LINUX
|
||||
#if defined(LINUX) && ! defined (WIN32)
|
||||
dpySize.width=DisplayWidth(dpyInfo.info.x11.display, 0);
|
||||
dpySize.height=DisplayHeight(dpyInfo.info.x11.display, 0);
|
||||
#else
|
||||
NSLog(@"Unknown architecture, defaulting to 1024x768");
|
||||
dpySize=NSMakeSize(1024,768);
|
||||
dpySize=NSMakeSize(1024, 768);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@ -97,9 +97,12 @@ Your fair use and other rights are in no way affected by the above.
|
||||
screenSizes[1] = NSMakeSize(800, 600);
|
||||
screenSizes[2] = NSMakeSize(1024, 768);
|
||||
currentSize = 0;
|
||||
fullScreen = NO;
|
||||
|
||||
surface = SDL_SetVideoMode((int)frameRect.size.width, (int)frameRect.size.height, 32, SDL_HWSURFACE | SDL_OPENGL);
|
||||
int videoModeFlags = SDL_HWSURFACE | SDL_OPENGL;
|
||||
if (fullScreen)
|
||||
videoModeFlags |= SDL_FULLSCREEN;
|
||||
|
||||
surface = SDL_SetVideoMode((int)frameRect.size.width, (int)frameRect.size.height, 32, videoModeFlags);
|
||||
bounds.size.width = surface->w;
|
||||
bounds.size.height = surface->h;
|
||||
|
||||
@ -187,6 +190,13 @@ Your fair use and other rights are in no way affected by the above.
|
||||
return fullScreen;
|
||||
}
|
||||
|
||||
#ifdef GNUSTEP
|
||||
- (void) setFullScreenMode:(BOOL)fsm
|
||||
{
|
||||
fullScreen = fsm;
|
||||
}
|
||||
#endif
|
||||
|
||||
- (void) display
|
||||
{
|
||||
[self drawRect: NSMakeRect(0, 0, viewSize.width, viewSize.height)];
|
||||
|
@ -47,6 +47,7 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
#ifdef LINUX
|
||||
#include "oolite-linux.h"
|
||||
#include "SDLImage.h"
|
||||
#else
|
||||
#import <OpenGL/gl.h>
|
||||
#import <OpenGL/glu.h>
|
||||
@ -86,5 +87,10 @@ extern int debug;
|
||||
- (void)replaceTextureFromImage:(NSImage *)texImage cropRectangle:(NSRect)cropRect;
|
||||
- (void)substituteTextureFromImage:(NSImage *)texImage;
|
||||
|
||||
#ifdef GNUSTEP
|
||||
- (id) initWithSurface:(SDLImage *)textureImage cropRectangle:(NSRect)cropRect size:(NSSize) spriteSize;
|
||||
- (void)makeTextureFromSurface:(SDLImage *)texImage cropRectangle:(NSRect)cropRect size:(NSSize)spriteSize;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
|
121
OpenGLSprite.m
121
OpenGLSprite.m
@ -39,6 +39,21 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
#import "OpenGLSprite.h"
|
||||
|
||||
#ifdef GNUSTEP
|
||||
/* SDL interprets each pixel as a 32-bit number, so our masks must depend
|
||||
on the endianness (byte order) of the machine */
|
||||
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
|
||||
Uint32 rmask = 0xff000000;
|
||||
Uint32 gmask = 0x00ff0000;
|
||||
Uint32 bmask = 0x0000ff00;
|
||||
Uint32 amask = 0x000000ff;
|
||||
#else
|
||||
Uint32 rmask = 0x000000ff;
|
||||
Uint32 gmask = 0x0000ff00;
|
||||
Uint32 bmask = 0x00ff0000;
|
||||
Uint32 amask = 0xff000000;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@implementation OpenGLSprite
|
||||
|
||||
@ -58,6 +73,7 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
- (id) initWithText:(NSString *)str
|
||||
{
|
||||
#ifndef GNUSTEP
|
||||
NSImage *image;
|
||||
NSSize strsize;
|
||||
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
||||
@ -82,11 +98,14 @@ Your fair use and other rights are in no way affected by the above.
|
||||
[image release];
|
||||
|
||||
return self;
|
||||
|
||||
#else
|
||||
return nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
- (id) initWithText:(NSString *)str ofColor:(NSColor *) textColor
|
||||
{
|
||||
#ifndef GNUSTEP
|
||||
NSImage *image;
|
||||
NSSize strsize;
|
||||
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
||||
@ -111,7 +130,9 @@ Your fair use and other rights are in no way affected by the above.
|
||||
[image release];
|
||||
|
||||
return self;
|
||||
|
||||
#else
|
||||
return nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
@ -168,6 +189,7 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
- (void) setText:(NSString *)str
|
||||
{
|
||||
#ifndef GNUSTEP
|
||||
NSImage *image;
|
||||
NSSize strsize;
|
||||
|
||||
@ -195,6 +217,7 @@ Your fair use and other rights are in no way affected by the above.
|
||||
//
|
||||
//NSLog(@"%@ message sprite [ %f, %f ]", str, [image size].width, [image size].height);
|
||||
//
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -360,5 +383,99 @@ Your fair use and other rights are in no way affected by the above.
|
||||
[bitmapImageRep release];
|
||||
}
|
||||
|
||||
#ifdef GNUSTEP
|
||||
- (id) initWithSurface:(SDLImage *)textureImage cropRectangle:(NSRect)cropRect size:(NSSize) spriteSize
|
||||
{
|
||||
self = [super init];
|
||||
[self makeTextureFromSurface:textureImage cropRectangle:cropRect size:spriteSize];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)makeTextureFromSurface:(SDLImage *)texImage cropRectangle:(NSRect)cropRect size:(NSSize)spriteSize
|
||||
{
|
||||
//NSBitmapImageRep *bitmapImageRep;
|
||||
NSRect textureRect = NSMakeRect(0.0,0.0,OPEN_GL_SPRITE_MIN_WIDTH,OPEN_GL_SPRITE_MIN_HEIGHT);
|
||||
SDL_Surface *surface;
|
||||
|
||||
if (!texImage)
|
||||
return;
|
||||
|
||||
SDL_Surface *texSurface = [texImage surface];
|
||||
SDL_SetAlpha(texSurface, 0, SDL_ALPHA_OPAQUE);
|
||||
//NSLog(@"makeTextureFromSurface: texImage dimensions: %d x %d", texSurface->w, texSurface->h);
|
||||
|
||||
size = spriteSize;
|
||||
textureCropRect = cropRect;
|
||||
|
||||
while (textureRect.size.width < cropRect.size.width)
|
||||
textureRect.size.width *= 2;
|
||||
while (textureRect.size.height < cropRect.size.height)
|
||||
textureRect.size.height *= 2;
|
||||
|
||||
textureRect.origin= NSMakePoint(0,0);
|
||||
textureCropRect.origin= NSMakePoint(0,0);
|
||||
|
||||
textureSize = textureRect.size;
|
||||
|
||||
//image = [[NSImage alloc] initWithSize:textureRect.size]; // retained
|
||||
//NSLog(@"makeTextureFromSurface: texture surface dimensions: %d x %d", (int)textureRect.size.width, (int)textureRect.size.height);
|
||||
surface = SDL_CreateRGBSurface(SDL_SWSURFACE, (int)textureRect.size.width, (int)textureRect.size.height, 32, rmask, gmask, bmask, amask);
|
||||
|
||||
//[image lockFocus];
|
||||
//[[NSColor clearColor] set];
|
||||
//NSRectFill(textureRect);
|
||||
SDL_FillRect(surface, (SDL_Rect *)0x00, SDL_MapRGBA(surface->format, 0, 0, 0, SDL_ALPHA_TRANSPARENT));
|
||||
|
||||
//[texImage drawInRect:textureCropRect fromRect:cropRect operation:NSCompositeSourceOver fraction:1.0];
|
||||
//bitmapImageRep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:textureRect]; // retained
|
||||
//[image unlockFocus];
|
||||
|
||||
SDL_Rect srcRect, destRect;
|
||||
srcRect.x = (int)cropRect.origin.x; srcRect.y = (int)cropRect.origin.y; srcRect.w = (int)cropRect.size.width; srcRect.h = (int)cropRect.size.height;
|
||||
destRect.x = 0; destRect.y = 0;
|
||||
SDL_BlitSurface(texSurface, &srcRect, surface, &destRect);
|
||||
//NSLog(@"destRect x: %d, y: %d, w: %d, h: %d", destRect.x, destRect.y, destRect.w, destRect.h);
|
||||
|
||||
//[image release]; // released
|
||||
|
||||
// normalise textureCropRect size to 0.0 -> 1.0
|
||||
textureCropRect.size.width /= textureRect.size.width;
|
||||
textureCropRect.size.height /= textureRect.size.height;
|
||||
|
||||
int n_bytes = surface->format->BytesPerPixel * surface->w * surface->h;
|
||||
//unsigned char *buffer = malloc(n_bytes);
|
||||
SDL_LockSurface(surface);
|
||||
//memcpy(buffer, surface->pixels, n_bytes);
|
||||
|
||||
if (textureData)
|
||||
[textureData release];
|
||||
//textureData = [[NSData dataWithBytes:[bitmapImageRep bitmapData] length:n_bytes] retain];
|
||||
//[bitmapImageRep release]; // released
|
||||
//textureData = [[NSData dataWithBytesNoCopy: buffer length: n_bytes] retain];
|
||||
textureData = [[NSData dataWithBytes:surface->pixels length:surface->w * surface->h * surface->format->BytesPerPixel] retain];
|
||||
|
||||
SDL_UnlockSurface(surface);
|
||||
SDL_FreeSurface(surface);
|
||||
|
||||
if (texName !=0)
|
||||
{
|
||||
const GLuint delTextures[1] = { texName };
|
||||
glDeleteTextures(1, delTextures);
|
||||
texName = 0; // clean up the texture from the 3d card's memory
|
||||
}
|
||||
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glGenTextures(1, &texName); // get a new unique texture name
|
||||
glBindTexture(GL_TEXTURE_2D, texName); // initialise it
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureRect.size.width, textureRect.size.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, [textureData bytes]);
|
||||
}
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
|
@ -138,9 +138,14 @@ NSMutableDictionary* surface_cache;
|
||||
[errors release];
|
||||
errors = nil;
|
||||
}
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
NSString *app_path = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Contents"] stringByAppendingPathComponent:@"Resources"];
|
||||
NSString *addon_path = [[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"AddOns"];
|
||||
#else
|
||||
NSString *app_path = @"oolite.app/Contents/Resources";
|
||||
NSString *addon_path = @"AddOns";
|
||||
#endif
|
||||
NSMutableArray *file_paths = [NSMutableArray arrayWithCapacity:16];
|
||||
[file_paths addObject:app_path];
|
||||
if (include_addons)
|
||||
|
@ -1,8 +1,15 @@
|
||||
{
|
||||
GLOBAL = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage);
|
||||
ENTER = (performIdle);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage
|
||||
);
|
||||
ENTER = (
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,14 +1,39 @@
|
||||
{
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: LOOT"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
LOOT = {
|
||||
ATTACKED = (exitAI);
|
||||
"COLLISION" = (exitAI);
|
||||
"CARGO_SCOOPED" = (exitAI);
|
||||
ENTER = (performCollect);
|
||||
EXIT = ();
|
||||
"HOLD_FULL" = (exitAI);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, exitAI);
|
||||
"TARGET_LOST" = (exitAI);
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: LOOT"); EXIT = (); UPDATE = (); };
|
||||
ATTACKED = (
|
||||
exitAI
|
||||
);
|
||||
CARGO_SCOOPED = (
|
||||
exitAI
|
||||
);
|
||||
COLLISION = (
|
||||
exitAI
|
||||
);
|
||||
ENTER = (
|
||||
performCollect
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
HOLD_FULL = (
|
||||
exitAI
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
exitAI
|
||||
);
|
||||
TARGET_LOST = (
|
||||
exitAI
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,85 +1,216 @@
|
||||
{
|
||||
"AWAIT_COORDS" = {
|
||||
"APPROACH_START" = ("setStateTo: GO_TO_START");
|
||||
"APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS");
|
||||
"APPROACH_STATION" = ("setStateTo: GO_TO_STATION");
|
||||
"HOLD_POSITION" = (performIdle, "pauseAI: 10.0", "setStateTo: GLOBAL");
|
||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
||||
"TRY_AGAIN_LATER" = ("pauseAI: 30.0", "setStateTo: ABORT");
|
||||
"COLLISION" = ("setStateTo: ABORT");
|
||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
||||
DOCKED = ("setStateTo: EXIT_SYSTEM");
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (performDocking, exitAI); EXIT = (); UPDATE = (); };
|
||||
ABORT = {
|
||||
ENTER = (abortDocking, "setSpeedFactorTo: 0.0", setDestinationToDockingAbort, "setDesiredRangeTo: 500.0", performFaceDestination);
|
||||
"FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination);
|
||||
EXIT = ();
|
||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
||||
"DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
ENTER = (
|
||||
abortDocking,
|
||||
"setSpeedFactorTo: 0.0",
|
||||
setDestinationToDockingAbort,
|
||||
"setDesiredRangeTo: 500.0",
|
||||
performFaceDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FACING_DESTINATION = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"setDesiredRangeTo: 500.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
RESTART_DOCKING = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
AWAIT_COORDS = {
|
||||
APPROACH_COORDINATES = (
|
||||
"setStateTo: GO_TO_COORDS"
|
||||
);
|
||||
APPROACH_START = (
|
||||
"setStateTo: GO_TO_START"
|
||||
);
|
||||
APPROACH_STATION = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
COLLISION = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
DOCKED = (
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
DOCKING_ABORTED = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
HOLD_POSITION = (
|
||||
performIdle,
|
||||
"pauseAI: 10.0",
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
RESTART_DOCKING = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TRY_AGAIN_LATER = (
|
||||
"pauseAI: 30.0",
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
performDocking,
|
||||
exitAI
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = ("setSpeedTo: 0.0", "setDesiredRangeTo: 5.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_WAYPOINT" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.85", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_START" = {
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 0.05",
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.25", performFaceDestination);
|
||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 50.0", "setSpeedFactorTo: 0.85", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
||||
"COLLISION" = ("setStateTo: ABORT");
|
||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_COORDS" = {
|
||||
ENTER = (setDestinationFromCoordinates, performFaceDestination);
|
||||
FRUSTRATED = (performIdle, "pauseAI: 5.0", setDestinationFromCoordinates, performFaceDestination);
|
||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 50.0", "setSpeedTo: 100.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
||||
"COLLISION" = ("setStateTo: ABORT");
|
||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_STATION" = {
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
FRUSTRATED = (
|
||||
setTargetToStation,
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 10.0", "setSpeedTo: 50.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
||||
"COLLISION" = ("setStateTo: ABORT");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
}
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
"setDesiredRangeTo: 5.0",
|
||||
requestDockingCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_COORDS = {
|
||||
COLLISION = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
requestDockingCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
DOCKING_ABORTED = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
ENTER = (
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FACING_DESTINATION = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
"setSpeedTo: 100.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
FRUSTRATED = (
|
||||
performIdle,
|
||||
"pauseAI: 5.0",
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
RESTART_DOCKING = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_START = {
|
||||
COLLISION = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.25",
|
||||
performFaceDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
requestDockingCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
DOCKING_ABORTED = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 0.05",
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FACING_DESTINATION = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
"setSpeedFactorTo: 0.85",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
RESTART_DOCKING = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT"
|
||||
);
|
||||
};
|
||||
GO_TO_STATION = {
|
||||
COLLISION = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
requestDockingCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
DOCKING_ABORTED = (
|
||||
"setStateTo: ABORT"
|
||||
);
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FACING_DESTINATION = (
|
||||
"setDesiredRangeTo: 10.0",
|
||||
"setSpeedTo: 50.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
FRUSTRATED = (
|
||||
setTargetToStation,
|
||||
setDestinationFromCoordinates,
|
||||
performFaceDestination
|
||||
);
|
||||
RESTART_DOCKING = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT = {
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.85",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
}
|
@ -1,3 +1,11 @@
|
||||
{
|
||||
GLOBAL = {ENTER = ("performTumble"); EXIT = (); UPDATE = (); };
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
performTumble
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,33 +1,95 @@
|
||||
{
|
||||
"FLYING_ESCORT" = {
|
||||
ENTER = (performEscort);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
RESTARTED = ("setStateTo: BEGIN_BUSINESS");
|
||||
ESCORTING = ("setDesiredRangeTo: 0.0", performEscort);
|
||||
"INCOMING_MISSILE" = ("messageMother: INCOMING_MISSILE");
|
||||
"ATTACKED" = ("messageMother: ATTACKED");
|
||||
"NOT_ESCORTING" = ("setStateTo: LOOK_FOR_BUSINESS");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_BUSINESS");
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_BUSINESS");
|
||||
EXIT = ();
|
||||
UPDATE = (escortCheckMother, "pauseAI: 15");
|
||||
};
|
||||
"BEGIN_BUSINESS" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
||||
ENTER = (escortCheckMother);
|
||||
EXIT = ();
|
||||
ESCORTING = ("setDesiredRangeTo: 0.0", performEscort);
|
||||
"NOT_ESCORTING" = ("setStateTo: LOOK_FOR_BUSINESS");
|
||||
UPDATE = ();
|
||||
};
|
||||
"LOOK_FOR_BUSINESS" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
||||
RESTARTED = ("setStateTo: BEGIN_BUSINESS");
|
||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
||||
EXIT = ();
|
||||
ESCORTING = ("setDesiredRangeTo: 0.0", "setStateTo: FLYING_ESCORT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, suggestEscort);
|
||||
UPDATE = (scanForFormationLeader, "pauseAI: 15.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: BEGIN_BUSINESS"); EXIT = (); UPDATE = (); };
|
||||
BEGIN_BUSINESS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
escortCheckMother
|
||||
);
|
||||
ESCORTING = (
|
||||
"setDesiredRangeTo: 0.0",
|
||||
performEscort
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
NOT_ESCORTING = (
|
||||
"setStateTo: LOOK_FOR_BUSINESS"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLYING_ESCORT = {
|
||||
ATTACKED = (
|
||||
"messageMother: ATTACKED"
|
||||
);
|
||||
ENTER = (
|
||||
performEscort
|
||||
);
|
||||
ESCORTING = (
|
||||
"setDesiredRangeTo: 0.0",
|
||||
performEscort
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
"messageMother: INCOMING_MISSILE"
|
||||
);
|
||||
NOT_ESCORTING = (
|
||||
"setStateTo: LOOK_FOR_BUSINESS"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: BEGIN_BUSINESS"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: LOOK_FOR_BUSINESS"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: LOOK_FOR_BUSINESS"
|
||||
);
|
||||
UPDATE = (
|
||||
escortCheckMother,
|
||||
"pauseAI: 15"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: BEGIN_BUSINESS"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
LOOK_FOR_BUSINESS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
ESCORTING = (
|
||||
"setDesiredRangeTo: 0.0",
|
||||
"setStateTo: FLYING_ESCORT"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: BEGIN_BUSINESS"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
suggestEscort
|
||||
);
|
||||
UPDATE = (
|
||||
scanForFormationLeader,
|
||||
"pauseAI: 15.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,35 +1,118 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
||||
"TARGET_LOST" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
||||
UPDATE = ();
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (); EXIT = (); UPDATE = (performHyperSpaceExit); };
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: HEAD_AWAY_FROM_PLANET"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: HEAD_AWAY_FROM_PLANET"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
performHyperSpaceExit
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile);
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
"HEAD_AWAY_FROM_PLANET" = {
|
||||
ENTER = (getWitchspaceEntryCoordinates, setDestinationFromCoordinates, "setDesiredRangeTo: 100.0", "setSpeedFactorTo: 0.75", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = (dockEscorts, "setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_AWAY_FROM_PLANET"); EXIT = (); UPDATE = (); };
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_AWAY_FROM_PLANET"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
HEAD_AWAY_FROM_PLANET = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
dockEscorts,
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
ENTER = (
|
||||
getWitchspaceEntryCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 100.0",
|
||||
"setSpeedFactorTo: 0.75",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,23 +1,73 @@
|
||||
{
|
||||
"GO_TO_WAYPOINT" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GLOBAL");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"FLY_HOME" = {
|
||||
ENTER = (setCourseToPlanet, checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
||||
"DESIRED_RANGE_ACHIEVED" = (landOnPlanet);
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = (checkCourseToDestination, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setSpeedFactorTo: 0.25", "setStateTo: FLY_HOME"); EXIT = (); UPDATE = (); };
|
||||
FLY_HOME = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
landOnPlanet
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
checkCourseToDestination,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 0.25",
|
||||
"setStateTo: FLY_HOME"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
}
|
@ -1,8 +1,15 @@
|
||||
{
|
||||
GLOBAL = {
|
||||
"DESIRED_RANGE_ACHIEVED" = (landOnPlanet);
|
||||
ENTER = (setCourseToPlanet, performFlyToRangeFromDestination);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
landOnPlanet
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,21 +1,61 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"TARGET_DESTROYED" = (switchLightsOff, exitAI);
|
||||
"TARGET_LOST" = (switchLightsOff, exitAI);
|
||||
UPDATE = ();
|
||||
};
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
switchLightsOff,
|
||||
exitAI
|
||||
);
|
||||
TARGET_LOST = (
|
||||
switchLightsOff,
|
||||
exitAI
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
"ENERGY_FULL" = ("setStateTo: ATTACK_SHIP");
|
||||
"TARGET_LOST" = (switchLightsOff, exitAI);
|
||||
"TARGET_DESTROYED" = (switchLightsOff, exitAI);
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = (switchLightsOn, "setStateTo: ATTACK_SHIP"); EXIT = (); UPDATE = (); };
|
||||
ENERGY_FULL = (
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
switchLightsOff,
|
||||
exitAI
|
||||
);
|
||||
TARGET_LOST = (
|
||||
switchLightsOff,
|
||||
exitAI
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
switchLightsOn,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,59 +1,173 @@
|
||||
{
|
||||
"LOOK_FOR_ROCKS" = {
|
||||
ENTER = (performIdle);
|
||||
UPDATE = (scanForRocks, "pauseAI: 10.0");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: BREAK_ROCKS");
|
||||
"NOTHING_FOUND" = ("setStateTo: DOCK_WITH_STATION");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
};
|
||||
"BREAK_ROCKS" = {
|
||||
ENTER = (performMining);
|
||||
UPDATE = ();
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
};
|
||||
"LOOK_FOR_SPLINTERS" = {
|
||||
ENTER = (performIdle);
|
||||
UPDATE = (scanForRandomLoot, "pauseAI: 10.0");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: COLLECT_STUFF");
|
||||
"NOTHING_FOUND" = ("setStateTo: LOOK_FOR_ROCKS");
|
||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
};
|
||||
"COLLECT_STUFF" = {
|
||||
ENTER = (performCollect);
|
||||
UPDATE = ();
|
||||
FRUSTRATED = ("setStateTo: LOOK_FOR_SPLINTERS");
|
||||
"CARGO_SCOOPED" = (checkForFullHold, "setStateTo: LOOK_FOR_SPLINTERS");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
||||
"COLLISION" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
};
|
||||
"DOCK_WITH_STATION" = {
|
||||
ENTER = (setTargetToStation, "setDesiredRangeTo: 5000.0", performIntercept);
|
||||
UPDATE = ();
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setAITo: dockingAI.plist");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: ATTACK_SHIP");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
};
|
||||
BREAK_ROCKS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performMining
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
COLLECT_STUFF = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
CARGO_SCOOPED = (
|
||||
checkForFullHold,
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
COLLISION = (
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
ENTER = (
|
||||
performCollect
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FRUSTRATED = (
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
DOCK_WITH_STATION = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
"setDesiredRangeTo: 5000.0",
|
||||
performIntercept
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle);
|
||||
"ENERGY_FULL" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setSpeedFactorTo: 0.1", "setStateTo: LOOK_FOR_SPLINTERS"); EXIT = (); UPDATE = (); };
|
||||
}
|
||||
ENERGY_FULL = (
|
||||
performIdle,
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 0.1",
|
||||
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
LOOK_FOR_ROCKS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: BREAK_ROCKS"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForRocks,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
LOOK_FOR_SPLINTERS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
HOLD_FULL = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: LOOK_FOR_ROCKS"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: COLLECT_STUFF"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForRandomLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,27 +1,61 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: DETONATE");
|
||||
ENTER = ("setDesiredRangeTo: 25.0", performIntercept);
|
||||
EXIT = ();
|
||||
"TARGET_DESTROYED" = ("setStateTo: EXPLODE");
|
||||
"TARGET_LOST" = ("setStateTo: EXPLODE");
|
||||
"ECM" = ("setStateTo: EXPLODE");
|
||||
"GONE_BEYOND_RANGE" = ("setStateTo: EXPLODE");
|
||||
UPDATE = ("setDesiredRangeTo: 30000.0", checkDistanceTravelled, "setDesiredRangeTo: 25.0", "pauseAI: 5.0");
|
||||
};
|
||||
ATTACK_SHIP = {
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: DETONATE"
|
||||
);
|
||||
ECM = (
|
||||
"setStateTo: EXPLODE"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25.0",
|
||||
performIntercept
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GONE_BEYOND_RANGE = (
|
||||
"setStateTo: EXPLODE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: EXPLODE"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: EXPLODE"
|
||||
);
|
||||
UPDATE = (
|
||||
"setDesiredRangeTo: 30000.0",
|
||||
checkDistanceTravelled,
|
||||
"setDesiredRangeTo: 25.0",
|
||||
"pauseAI: 5.0"
|
||||
);
|
||||
};
|
||||
DETONATE = {
|
||||
ENTER = ("setDesiredRangeTo: 250.0", dealEnergyDamageWithinDesiredRange, becomeExplosion);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 250.0",
|
||||
dealEnergyDamageWithinDesiredRange,
|
||||
becomeExplosion
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXPLODE = {
|
||||
ENTER = (becomeExplosion);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
ENTER = (
|
||||
becomeExplosion
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = ("setSpeedFactorTo: 1.0", "setStateTo: ATTACK_SHIP");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,3 +1,10 @@
|
||||
{
|
||||
GLOBAL = {ENTER = (); EXIT = (); UPDATE = (); };
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,42 +1,104 @@
|
||||
{
|
||||
AWAIT_COORDS = {
|
||||
APPROACH_COORDINATES = (
|
||||
"setStateTo: GO_TO_COORDS"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
performDocking,
|
||||
exitAI
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (setPlanetPatrolCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"AWAIT_COORDS" = {
|
||||
"APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS");
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_WAYPOINT" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.4", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_COORDS");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
||||
};
|
||||
"GO_TO_COORDS" = {
|
||||
ENTER = (
|
||||
patrolReportIn,
|
||||
"setSpeedFactorTo: 0.0",
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.5", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = (setPlanetPatrolCoordinates, "setStateTo: AWAIT_COORDS");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForOffenders, "pauseAI: 7.5");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, checkTargetLegalStatus);
|
||||
"TARGET_MINOR_OFFENDER" = (markTargetForFines);
|
||||
"TARGET_MARKED" = ("sendTargetCommsMessage: [police-warning]");
|
||||
"TARGET_OFFENDER" = ("sendTargetCommsMessage: [police-attack-warning]", "setAITo: interceptAI.plist");
|
||||
"TARGET_FUGITIVE" = ("setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (performDocking, exitAI); EXIT = (); UPDATE = (); };
|
||||
ENTER = (
|
||||
setPlanetPatrolCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_COORDS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.5",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
setPlanetPatrolCoordinates,
|
||||
"setStateTo: AWAIT_COORDS"
|
||||
);
|
||||
ENTER = (
|
||||
patrolReportIn,
|
||||
"setSpeedFactorTo: 0.0",
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
checkTargetLegalStatus
|
||||
);
|
||||
TARGET_FUGITIVE = (
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
TARGET_MARKED = (
|
||||
"sendTargetCommsMessage: [police-warning]"
|
||||
);
|
||||
TARGET_MINOR_OFFENDER = (
|
||||
markTargetForFines
|
||||
);
|
||||
TARGET_OFFENDER = (
|
||||
"sendTargetCommsMessage: [police-attack-warning]",
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForOffenders,
|
||||
"pauseAI: 7.5"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT"
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.4",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_COORDS"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
}
|
@ -1,30 +1,84 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"TARGET_DESTROYED" = ("setStateTo: DOCK_WITH_STATION");
|
||||
"TARGET_LOST" = ("setStateTo: DOCK_WITH_STATION");
|
||||
UPDATE = ();
|
||||
};
|
||||
"DOCK_WITH_STATION" = {
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (switchLightsOn, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
ENTER = (switchLightsOff, setTargetToStation, "setDesiredRangeTo: 5000.0", performIntercept);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setAITo: dockingAI.plist");
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
DOCK_WITH_STATION = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
ATTACKED = (
|
||||
switchLightsOn,
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
switchLightsOff,
|
||||
setTargetToStation,
|
||||
"setDesiredRangeTo: 5000.0",
|
||||
performIntercept
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
"ENERGY_FULL" = ("setStateTo: ATTACK_SHIP");
|
||||
"TARGET_LOST" = ("setStateTo: DOCK_WITH_STATION");
|
||||
"TARGET_DESTROYED" = ("setStateTo: DOCK_WITH_STATION");
|
||||
ENTER = (performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = (switchLightsOn, "setStateTo: ATTACK_SHIP"); EXIT = (); UPDATE = (); };
|
||||
ENERGY_FULL = (
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
ENTER = (
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
switchLightsOn,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,39 +1,119 @@
|
||||
{
|
||||
"GO_TO_WAYPOINT" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_STATION" = {
|
||||
ENTER = (setTargetToStation, "setDesiredRangeTo: 5000.0", setDestinationToTarget, checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setAITo: dockingAI.plist");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
"LIFT_OFF" = {
|
||||
ENTER = (setTakeOffFromPlanet, "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
FLEE = {
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle, "pauseAI: 30.0");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setSpeedTo: 0.0", "setStateTo: LIFT_OFF"); EXIT = (); UPDATE = (); };
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle,
|
||||
"pauseAI: 30.0"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
"setStateTo: LIFT_OFF"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_STATION = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
"setDesiredRangeTo: 5000.0",
|
||||
setDestinationToTarget,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT"
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
LIFT_OFF = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ENTER = (
|
||||
setTakeOffFromPlanet,
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,43 +1,126 @@
|
||||
{
|
||||
"DEFENSE_MODE" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel);
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
"RED_ALERT" = (launchDefenseShip);
|
||||
"YELLOW_ALERT" = ("setStateTo: IDLE");
|
||||
"CONDITION_YELLOW" = ("setStateTo: IDLE");
|
||||
"CONDITION_GREEN" = ("setStateTo: CHECK_FOR_DEBRIS");
|
||||
"INCOMING_MISSILE" = (increaseAlertLevel);
|
||||
"ENERGY_FULL" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"TARGET_DESTROYED" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"TARGET_LOST" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"NO_TARGET" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
UPDATE = ();
|
||||
};
|
||||
"CHECK_FOR_DEBRIS" = {
|
||||
ENTER = ();
|
||||
UPDATE = (scanForLoot, "pauseAI: 20.0");
|
||||
"TARGET_FOUND" = (launchScavenger, "setStateTo: IDLE");
|
||||
"NOTHING_FOUND" = ("setStateTo: CHECK_FOR_ROCKS", "pauseAI: 20.0");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
||||
};
|
||||
"CHECK_FOR_ROCKS" = {
|
||||
ENTER = ();
|
||||
UPDATE = (scanForRocks, "pauseAI: 20.0");
|
||||
"TARGET_FOUND" = (launchMiner, "setStateTo: IDLE");
|
||||
"NOTHING_FOUND" = ("setStateTo: IDLE", "pauseAI: 20.0");
|
||||
EXIT = ();
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: IDLE"); EXIT = (); UPDATE = (); };
|
||||
CHECK_FOR_DEBRIS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel,
|
||||
"setStateTo: DEFENSE_MODE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fireECM,
|
||||
increaseAlertLevel
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: CHECK_FOR_ROCKS",
|
||||
"pauseAI: 20.0"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
launchScavenger,
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 20.0"
|
||||
);
|
||||
};
|
||||
CHECK_FOR_ROCKS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel,
|
||||
"setStateTo: DEFENSE_MODE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fireECM,
|
||||
increaseAlertLevel
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: IDLE",
|
||||
"pauseAI: 20.0"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
launchMiner,
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForRocks,
|
||||
"pauseAI: 20.0"
|
||||
);
|
||||
};
|
||||
DEFENSE_MODE = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel
|
||||
);
|
||||
CONDITION_GREEN = (
|
||||
"setStateTo: CHECK_FOR_DEBRIS"
|
||||
);
|
||||
CONDITION_YELLOW = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
ENERGY_FULL = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
increaseAlertLevel
|
||||
);
|
||||
NO_TARGET = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
RED_ALERT = (
|
||||
launchDefenseShip
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
YELLOW_ALERT = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
IDLE = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (increaseAlertLevel);
|
||||
UPDATE = (decreaseAlertLevel, "setStateTo: CHECK_FOR_DEBRIS");
|
||||
};
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel,
|
||||
"setStateTo: DEFENSE_MODE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
increaseAlertLevel
|
||||
);
|
||||
UPDATE = (
|
||||
decreaseAlertLevel,
|
||||
"setStateTo: CHECK_FOR_DEBRIS"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,78 +1,276 @@
|
||||
{
|
||||
"HEAD_FOR_PLANET" = {
|
||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_WITCHPOINT");
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
EXIT = ();
|
||||
UPDATE = (scanForOffenders, "pauseAI: 10.0");
|
||||
RESTARTED = ("setStateTo: INBOUND_LOOT");
|
||||
};
|
||||
"GO_TO_WAYPOINT1" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
RESTARTED = ("setStateTo: INBOUND_LOOT");
|
||||
};
|
||||
"HEAD_FOR_WITCHPOINT" = {
|
||||
ENTER = (setCourseToWitchpoint, checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT2");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
FRUSTRATED = ("setStateTo: HEAD_FOR_WITCHPOINT");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForOffenders, "pauseAI: 10.0");
|
||||
RESTARTED = ("setStateTo: OUTBOUND_LOOT");
|
||||
};
|
||||
"GO_TO_WAYPOINT2" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_WITCHPOINT");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
RESTARTED = ("setStateTo: OUTBOUND_LOOT");
|
||||
};
|
||||
"OUTBOUND_LOOT" = {
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_WITCHPOINT");
|
||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
||||
};
|
||||
"INBOUND_LOOT" = {
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_WITCHPOINT"); EXIT = (); UPDATE = (); };
|
||||
}
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT1 = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT2 = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_PLANET = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
"setDesiredRangeTo: 50000.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
UPDATE = (
|
||||
scanForOffenders,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT1"
|
||||
);
|
||||
};
|
||||
HEAD_FOR_WITCHPOINT = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToWitchpoint,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FRUSTRATED = (
|
||||
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
UPDATE = (
|
||||
scanForOffenders,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT2"
|
||||
);
|
||||
};
|
||||
INBOUND_LOOT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: collectLootAI.plist"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
OUTBOUND_LOOT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: collectLootAI.plist"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,64 +1,216 @@
|
||||
{
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
broadcastDistressMessage,
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles);
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
ENTER = (broadcastDistressMessage, performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
"TARGET_LOST" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_WAYPOINT" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.5", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
"TARGET_FOUND" = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
UPDATE = (scanForHostiles, "pauseAI: 10.0");
|
||||
};
|
||||
"GO_TO_STATION" = {
|
||||
ENTER = (setTargetToStation, "setDesiredRangeTo: 5000.0", setDestinationToTarget, checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.5", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
||||
"DESIRED_RANGE_ACHIEVED" = (dockEscorts, "setAITo: dockingAI.plist");
|
||||
"AEGIS_IN_DOCKING_RANGE" = (dockEscorts, "setAITo: dockingAI.plist");
|
||||
EXIT = ();
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles, "setStateTo: FLEE");
|
||||
"TARGET_FOUND" = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
UPDATE = (scanForHostiles, "pauseAI: 10.0");
|
||||
};
|
||||
"HEAD_FOR_PLANET" = {
|
||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 30000.0", "setSpeedFactorTo: 0.5", performFlyToRangeFromDestination);
|
||||
"AEGIS_CLOSE_TO_PLANET" = ("setStateTo: GO_TO_STATION");
|
||||
"AEGIS_IN_DOCKING_RANGE" = (dockEscorts, "setStateTo: GO_TO_STATION");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles, "setStateTo: FLEE");
|
||||
EXIT = ();
|
||||
"TARGET_FOUND" = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
UPDATE = (scanForHostiles, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_PLANET"); EXIT = (); UPDATE = (); };
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_STATION = {
|
||||
AEGIS_IN_DOCKING_RANGE = (
|
||||
dockEscorts,
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.5",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
dockEscorts,
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
"setDesiredRangeTo: 5000.0",
|
||||
setDestinationToTarget,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
UPDATE = (
|
||||
scanForHostiles,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT"
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.5",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
UPDATE = (
|
||||
scanForHostiles,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_PLANET = {
|
||||
AEGIS_CLOSE_TO_PLANET = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
AEGIS_IN_DOCKING_RANGE = (
|
||||
dockEscorts,
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: GO_TO_STATION"
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
"setDesiredRangeTo: 30000.0",
|
||||
"setSpeedFactorTo: 0.5",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
UPDATE = (
|
||||
scanForHostiles,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,78 +1,278 @@
|
||||
{
|
||||
"HEAD_FOR_PLANET" = {
|
||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT_PLANET");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
EXIT = ();
|
||||
UPDATE = (scanForOffenders, "pauseAI: 10.0");
|
||||
RESTARTED = ("setStateTo: INBOUND_LOOT");
|
||||
};
|
||||
"GO_TO_WAYPOINT_PLANET" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
RESTARTED = ("setStateTo: INBOUND_LOOT");
|
||||
};
|
||||
"HEAD_FOR_SUN" = {
|
||||
ENTER = (setSunSkimStartCoordinates);
|
||||
"WAIT_FOR_SUN" = ("pauseAI: 10.0", setSunSkimStartCoordinates);
|
||||
"APPROACH_COORDINATES" = (setDestinationFromCoordinates, "setDesiredRangeTo: 25000", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.80", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT_SUN");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
EXIT = ();
|
||||
UPDATE = (scanForOffenders, "pauseAI: 10.0");
|
||||
RESTARTED = ("setStateTo: OUTBOUND_LOOT");
|
||||
};
|
||||
"GO_TO_WAYPOINT_SUN" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
||||
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
RESTARTED = ("setStateTo: OUTBOUND_LOOT");
|
||||
};
|
||||
"OUTBOUND_LOOT" = {
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_SUN");
|
||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
||||
};
|
||||
"INBOUND_LOOT" = {
|
||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_SUN"); EXIT = (); UPDATE = (); };
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT_PLANET = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT_SUN = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_PLANET = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.8",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
"setDesiredRangeTo: 50000.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
UPDATE = (
|
||||
scanForOffenders,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT_PLANET"
|
||||
);
|
||||
};
|
||||
HEAD_FOR_SUN = {
|
||||
ACCEPT_DISTRESS_CALL = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
APPROACH_COORDINATES = (
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 25000",
|
||||
checkCourseToDestination
|
||||
);
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.80",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimStartCoordinates
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
RESTARTED = (
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
deployEscorts,
|
||||
groupAttackTarget
|
||||
);
|
||||
UPDATE = (
|
||||
scanForOffenders,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAIT_FOR_SUN = (
|
||||
"pauseAI: 10.0",
|
||||
setSunSkimStartCoordinates
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT_SUN"
|
||||
);
|
||||
};
|
||||
INBOUND_LOOT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: INBOUND_LOOT"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: collectLootAI.plist"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
OUTBOUND_LOOT = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
groupAttackTarget
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
GROUP_ATTACK_TARGET = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: interceptAI.plist"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
deployEscorts,
|
||||
groupAttackTarget,
|
||||
"setAITo: interceptAI.plist",
|
||||
"setStateTo: OUTBOUND_LOOT"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setAITo: collectLootAI.plist"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,69 +1,220 @@
|
||||
{
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_SUN"); EXIT = (); UPDATE = (); };
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
broadcastDistressMessage,
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
performHyperSpaceExit
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles);
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
ENTER = (broadcastDistressMessage, performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"TARGET_DESTROYED" = ("setStateTo: GLOBAL");
|
||||
"TARGET_LOST" = ("setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
"GO_TO_WAYPOINT_SUN" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.5", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles, "setStateTo: FLEE");
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
};
|
||||
"HEAD_FOR_SUN" = {
|
||||
ENTER = (setSunSkimStartCoordinates);
|
||||
"WAIT_FOR_SUN" = ("pauseAI: 10.0", setSunSkimStartCoordinates);
|
||||
"APPROACH_COORDINATES" = (setDestinationFromCoordinates, "setDesiredRangeTo: 50000", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.80", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT_SUN");
|
||||
"DESIRED_RANGE_ACHIEVED" = (dockEscorts, "setStateTo: GO_TO_SKIM");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles, "setStateTo: FLEE");
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
};
|
||||
"GO_TO_SKIM" = {
|
||||
ENTER = (setSunSkimStartCoordinates, setDestinationFromCoordinates, "setDesiredRangeTo: 100", "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: SKIM_SUN");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"SKIM_SUN" = {
|
||||
ENTER = (setSunSkimEndCoordinates, setDestinationFromCoordinates, "setDesiredRangeTo: 50", "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: LEAVE_SUN");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"LEAVE_SUN" = {
|
||||
ENTER = (setSunSkimExitCoordinates, setDestinationFromCoordinates, "setDesiredRangeTo: 250", "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: EXIT_SYSTEM");
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (); EXIT = (); UPDATE = (performHyperSpaceExit); };
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_SKIM = {
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: SKIM_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimStartCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 100",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT_SUN = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.5",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_SUN = {
|
||||
APPROACH_COORDINATES = (
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 50000",
|
||||
checkCourseToDestination
|
||||
);
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.80",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
dockEscorts,
|
||||
"setStateTo: GO_TO_SKIM"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimStartCoordinates
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile,
|
||||
fightOrFleeHostiles,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAIT_FOR_SUN = (
|
||||
"pauseAI: 10.0",
|
||||
setSunSkimStartCoordinates
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT_SUN"
|
||||
);
|
||||
};
|
||||
LEAVE_SUN = {
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimExitCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 250",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
SKIM_SUN = {
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: LEAVE_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimEndCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 50",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,42 +1,125 @@
|
||||
{
|
||||
"LOOK_FOR_STUFF" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
ENTER = (performIdle);
|
||||
EXIT = ();
|
||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: COLLECT_STUFF");
|
||||
"NOTHING_FOUND" = ("setStateTo: DOCK_WITH_STATION");
|
||||
UPDATE = (scanForRandomLoot, "pauseAI: 10.0");
|
||||
};
|
||||
"DOCK_WITH_STATION" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: ATTACK_SHIP");
|
||||
ENTER = (setTargetToStation, "setDesiredRangeTo: 5000.0", performIntercept);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setAITo: dockingAI.plist");
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
COLLECT_STUFF = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
CARGO_SCOOPED = (
|
||||
checkForFullHold,
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
COLLISION = (
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
ENTER = (
|
||||
performCollect
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FRUSTRATED = (
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
HOLD_FULL = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
DOCK_WITH_STATION = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setAITo: dockingAI.plist"
|
||||
);
|
||||
ENTER = (
|
||||
setTargetToStation,
|
||||
"setDesiredRangeTo: 5000.0",
|
||||
performIntercept
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
"ENERGY_FULL" = (performIdle, "setStateTo: LOOK_FOR_STUFF");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: LOOK_FOR_STUFF");
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle);
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setSpeedFactorTo: 1.0", "setStateTo: LOOK_FOR_STUFF"); EXIT = (); UPDATE = (); };
|
||||
"COLLECT_STUFF" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
||||
"CARGO_SCOOPED" = (checkForFullHold, "setStateTo: LOOK_FOR_STUFF");
|
||||
FRUSTRATED = ("setStateTo: LOOK_FOR_STUFF");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_STUFF");
|
||||
"COLLISION" = ("setStateTo: LOOK_FOR_STUFF");
|
||||
ENTER = (performCollect);
|
||||
EXIT = ();
|
||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
}
|
||||
ENERGY_FULL = (
|
||||
performIdle,
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
"setSpeedTo: 0.0",
|
||||
performIdle
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"setStateTo: LOOK_FOR_STUFF"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
LOOK_FOR_STUFF = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performIdle
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
HOLD_FULL = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: DOCK_WITH_STATION"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: COLLECT_STUFF"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForRandomLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,24 +1,64 @@
|
||||
{
|
||||
"DEFEND_SELF" = {
|
||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"TARGET_DESTROYED" = ("setStateTo: TRAVEL_TO_PLANET");
|
||||
UPDATE = ();
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (performLanding); EXIT = (); UPDATE = (); };
|
||||
DEFEND_SELF = {
|
||||
ENERGY_LOW = (
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: TRAVEL_TO_PLANET"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
performLanding
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ENTER = (performFlee);
|
||||
EXIT = ();
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: TRAVEL_TO_PLANET");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: TRAVEL_TO_PLANET"); EXIT = (); UPDATE = (); };
|
||||
"TRAVEL_TO_PLANET" = {
|
||||
ATTACK = (setTargetToPrimaryAggressor, "setStateTo: DEFEND_SELF");
|
||||
ENTER = (performFlyToPlanet);
|
||||
EXIT = ();
|
||||
"REACHED_SURFACE" = ("setStateTo: EXIT_SYSTEM");
|
||||
UPDATE = ();
|
||||
};
|
||||
ENTER = (
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: TRAVEL_TO_PLANET"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: TRAVEL_TO_PLANET"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
TRAVEL_TO_PLANET = {
|
||||
ATTACK = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: DEFEND_SELF"
|
||||
);
|
||||
ENTER = (
|
||||
performFlyToPlanet
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
REACHED_SURFACE = (
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,36 +1,108 @@
|
||||
{
|
||||
"DEFENSE_MODE" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel);
|
||||
ENTER = (checkTargetLegalStatus);
|
||||
EXIT = ();
|
||||
"RED_ALERT" = (launchPolice);
|
||||
"YELLOW_ALERT" = ("setStateTo: IDLE");
|
||||
"CONDITION_YELLOW" = ("setStateTo: IDLE");
|
||||
"CONDITION_GREEN" = ("setStateTo: CHECK_FOR_DEBRIS");
|
||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
||||
"TARGET_OFFENDER" = (increaseAlertLevel);
|
||||
"TARGET_FUGITIVE" = (increaseAlertLevel);
|
||||
"ENERGY_FULL" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"TARGET_DESTROYED" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"TARGET_LOST" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
"NO_TARGET" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
||||
UPDATE = ();
|
||||
};
|
||||
"CHECK_FOR_DEBRIS" = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
||||
"TARGET_FOUND" = (launchScavenger, "setStateTo: IDLE");
|
||||
"NOTHING_FOUND" = ("setStateTo: IDLE", "pauseAI: 20.0");
|
||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: IDLE"); EXIT = (); UPDATE = (); };
|
||||
CHECK_FOR_DEBRIS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel,
|
||||
"setStateTo: DEFENSE_MODE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fireECM,
|
||||
increaseAlertLevel
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: IDLE",
|
||||
"pauseAI: 20.0"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
launchScavenger,
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForLoot,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
DEFENSE_MODE = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel
|
||||
);
|
||||
CONDITION_GREEN = (
|
||||
"setStateTo: CHECK_FOR_DEBRIS"
|
||||
);
|
||||
CONDITION_YELLOW = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
ENERGY_FULL = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
ENTER = (
|
||||
checkTargetLegalStatus
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fireECM,
|
||||
increaseAlertLevel
|
||||
);
|
||||
NO_TARGET = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
RED_ALERT = (
|
||||
launchPolice
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
TARGET_FUGITIVE = (
|
||||
increaseAlertLevel
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"pauseAI: 20.0",
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
TARGET_OFFENDER = (
|
||||
increaseAlertLevel
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
YELLOW_ALERT = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: IDLE"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
IDLE = {
|
||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
||||
ENTER = ();
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
||||
UPDATE = (decreaseAlertLevel, "setStateTo: CHECK_FOR_DEBRIS");
|
||||
};
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
increaseAlertLevel,
|
||||
"setStateTo: DEFENSE_MODE"
|
||||
);
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fireECM,
|
||||
increaseAlertLevel
|
||||
);
|
||||
UPDATE = (
|
||||
decreaseAlertLevel,
|
||||
"setStateTo: CHECK_FOR_DEBRIS"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,94 +1,219 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"ENERGY_LOW" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (
|
||||
fightOrFleeMissile,
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
||||
"TARGET_LOST" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
||||
UPDATE = ();
|
||||
};
|
||||
"EXIT_SYSTEM" = {ENTER = (); EXIT = (); UPDATE = (performHyperSpaceExit); };
|
||||
ATTACK_SHIP = {
|
||||
ENERGY_LOW = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setSpeedFactorTo: 1.0",
|
||||
"pauseAI: 15.0",
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: HEAD_AWAY_FROM_PLANET"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: HEAD_AWAY_FROM_PLANET"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
EXIT_SYSTEM = {
|
||||
ENTER = (
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
performHyperSpaceExit
|
||||
);
|
||||
};
|
||||
FLEE = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
||||
EXIT = ();
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile);
|
||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
||||
UPDATE = ();
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_SUN"); EXIT = (); UPDATE = (); };
|
||||
"GO_TO_WAYPOINT1" = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 0.75", performFlyToRangeFromDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
EXIT = ();
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
};
|
||||
"HEAD_FOR_SUN" = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"COURSE_OK" = (
|
||||
"setDesiredRangeTo: 500.0",
|
||||
"setSpeedFactorTo: 0.75",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: SKIM_SUN");
|
||||
ENTER = (
|
||||
setSunSkimStartCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = ();
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
|
||||
};
|
||||
"LEAVE_SUN" = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: EXIT_SYSTEM");
|
||||
ENTER = (
|
||||
setSunSkimExitCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 250.0",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = ();
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
"SKIM_SUN" = {
|
||||
ATTACKED = (fightOrFleeHostiles);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: LEAVE_SUN");
|
||||
ENTER = (
|
||||
setSunSkimEndCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 100.0",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = ();
|
||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
||||
UPDATE = ();
|
||||
};
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 25600",
|
||||
performFlee
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
setTargetToPrimaryAggressor,
|
||||
broadcastDistressMessage,
|
||||
fightOrFleeMissile
|
||||
);
|
||||
REACHED_SAFETY = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
performIdle,
|
||||
"setStateTo: GLOBAL"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT1 = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 0.75",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_SUN = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setDesiredRangeTo: 500.0",
|
||||
"setSpeedFactorTo: 0.75",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: SKIM_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimStartCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT1"
|
||||
);
|
||||
};
|
||||
LEAVE_SUN = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: EXIT_SYSTEM"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimExitCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 250.0",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
SKIM_SUN = {
|
||||
ATTACKED = (
|
||||
fightOrFleeHostiles
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: LEAVE_SUN"
|
||||
);
|
||||
ENTER = (
|
||||
setSunSkimEndCoordinates,
|
||||
setDestinationFromCoordinates,
|
||||
"setDesiredRangeTo: 100.0",
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
FIGHTING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
FLEEING = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
"setStateTo: FLEE"
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
}
|
@ -1,26 +1,71 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
ENTER = (performAttack);
|
||||
"THARGOID_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
"TARGET_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
"TARGET_LOST" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
UPDATE = (scanForThargoid, "pauseAI: 5.0");
|
||||
"NOTHING_FOUND" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
EXIT = ();
|
||||
};
|
||||
"CHECK_FOR_CONTROL" = {
|
||||
"THARGOID_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
"TARGET_FOUND" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
ENTER = ("setSpeedTo: 0.0", performTumble);
|
||||
EXIT = ();
|
||||
UPDATE = (scanForThargoid, "pauseAI: 1.0");
|
||||
};
|
||||
"LOOK_FOR_TARGETS" = {
|
||||
"THARGOID_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
||||
ENTER = (scanForNonThargoid, "pauseAI: 1.0");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: ATTACK_SHIP"); EXIT = (); UPDATE = (); };
|
||||
ATTACK_SHIP = {
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
THARGOID_DESTROYED = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForThargoid,
|
||||
"pauseAI: 5.0"
|
||||
);
|
||||
};
|
||||
CHECK_FOR_CONTROL = {
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performTumble
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
"setStateTo: LOOK_FOR_TARGETS"
|
||||
);
|
||||
THARGOID_DESTROYED = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForThargoid,
|
||||
"pauseAI: 1.0"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
LOOK_FOR_TARGETS = {
|
||||
ENTER = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 1.0"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
THARGOID_DESTROYED = (
|
||||
"setStateTo: CHECK_FOR_CONTROL"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,43 +1,139 @@
|
||||
{
|
||||
"ATTACK_SHIP" = {
|
||||
"ATTACKED" = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
ENTER = (performAttack);
|
||||
EXIT = ();
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 15.0");
|
||||
};
|
||||
"LOOK_FOR_TARGETS" = {
|
||||
"ATTACKED" = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
ENTER = ("setSpeedTo: 0.0", performTumble, scanForNonThargoid, "pauseAI: 5.0");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 5.0");
|
||||
};
|
||||
"HEAD_FOR_PLANET" = {
|
||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 80000.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 10.0");
|
||||
};
|
||||
"GO_TO_WAYPOINT1" = {
|
||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
|
||||
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
||||
EXIT = ();
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 10.0");
|
||||
};
|
||||
GLOBAL = {ENTER = ("setStateTo: LOOK_FOR_TARGETS"); EXIT = (); UPDATE = (); };
|
||||
ATTACK_SHIP = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
ENTER = (
|
||||
performAttack
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
TARGET_DESTROYED = (
|
||||
"setStateTo: LOOK_FOR_TARGETS"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
TARGET_LOST = (
|
||||
"setStateTo: LOOK_FOR_TARGETS"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 15.0"
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = (
|
||||
"setStateTo: LOOK_FOR_TARGETS"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GO_TO_WAYPOINT1 = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
ENTER = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setDesiredRangeTo: 50.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
};
|
||||
HEAD_FOR_PLANET = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
COURSE_OK = (
|
||||
"setSpeedFactorTo: 1.0",
|
||||
performFlyToRangeFromDestination
|
||||
);
|
||||
DESIRED_RANGE_ACHIEVED = (
|
||||
"setStateTo: LOOK_FOR_TARGETS"
|
||||
);
|
||||
ENTER = (
|
||||
setCourseToPlanet,
|
||||
"setDesiredRangeTo: 80000.0",
|
||||
checkCourseToDestination
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 10.0"
|
||||
);
|
||||
WAYPOINT_SET = (
|
||||
"setStateTo: GO_TO_WAYPOINT1"
|
||||
);
|
||||
};
|
||||
LOOK_FOR_TARGETS = {
|
||||
ATTACKED = (
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
ENTER = (
|
||||
"setSpeedTo: 0.0",
|
||||
performTumble,
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 5.0"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
INCOMING_MISSILE = (
|
||||
fightOrFleeMissile,
|
||||
setTargetToPrimaryAggressor,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
NOTHING_FOUND = (
|
||||
"setStateTo: HEAD_FOR_PLANET"
|
||||
);
|
||||
TARGET_FOUND = (
|
||||
setTargetToFoundTarget,
|
||||
"setStateTo: ATTACK_SHIP"
|
||||
);
|
||||
UPDATE = (
|
||||
scanForNonThargoid,
|
||||
"pauseAI: 5.0"
|
||||
);
|
||||
};
|
||||
}
|
@ -1,12 +1,21 @@
|
||||
{
|
||||
DETONATE = {
|
||||
ENTER = (becomeEnergyBlast);
|
||||
EXIT = ();
|
||||
UPDATE = ();
|
||||
};
|
||||
ENTER = (
|
||||
becomeEnergyBlast
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
);
|
||||
};
|
||||
GLOBAL = {
|
||||
ENTER = ("pauseAI: 5.0");
|
||||
EXIT = ();
|
||||
UPDATE = ("setStateTo: DETONATE");
|
||||
};
|
||||
ENTER = (
|
||||
"pauseAI: 5.0"
|
||||
);
|
||||
EXIT = (
|
||||
);
|
||||
UPDATE = (
|
||||
"setStateTo: DETONATE"
|
||||
);
|
||||
};
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Firearms</key>
|
||||
<integer>1</integer>
|
||||
<key>Narcotics</key>
|
||||
<integer>2</integer>
|
||||
<key>Slaves</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</plist>
|
||||
{
|
||||
Firearms = <*I1>;
|
||||
Narcotics = <*I2>;
|
||||
Slaves = <*I1>;
|
||||
}
|
@ -1,66 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>key_roll_left</key>
|
||||
<integer>253</integer>
|
||||
<key>key_roll_right</key>
|
||||
<integer>252</integer>
|
||||
<key>key_pitch_forward</key>
|
||||
<integer>255</integer>
|
||||
<key>key_pitch_back</key>
|
||||
<integer>254</integer>
|
||||
<key>key_increase_speed</key>
|
||||
<integer>119</integer>
|
||||
<key>key_inject_fuel</key>
|
||||
<integer>105</integer>
|
||||
<key>key_decrease_speed</key>
|
||||
<integer>115</integer>
|
||||
<key>key_fire_lasers</key>
|
||||
<integer>97</integer>
|
||||
<key>key_target_missile</key>
|
||||
<integer>116</integer>
|
||||
<key>key_untarget_missile</key>
|
||||
<integer>117</integer>
|
||||
<key>key_launch_missile</key>
|
||||
<integer>109</integer>
|
||||
<key>key_next_missile</key>
|
||||
<integer>121</integer>
|
||||
<key>key_ident_system</key>
|
||||
<integer>114</integer>
|
||||
<key>key_ecm</key>
|
||||
<integer>101</integer>
|
||||
<key>key_launch_escapepod</key>
|
||||
<integer>27</integer>
|
||||
<key>key_energy_bomb</key>
|
||||
<integer>9</integer>
|
||||
<key>key_galactic_hyperspace</key>
|
||||
<integer>103</integer>
|
||||
<key>key_emergency_hyperdrive</key>
|
||||
<integer>72</integer>
|
||||
<key>key_hyperspace</key>
|
||||
<integer>104</integer>
|
||||
<key>key_jumpdrive</key>
|
||||
<integer>106</integer>
|
||||
<key>key_dump_cargo</key>
|
||||
<integer>100</integer>
|
||||
<key>key_autopilot</key>
|
||||
<integer>99</integer>
|
||||
<key>key_autodock</key>
|
||||
<integer>68</integer>
|
||||
<key>key_snapshot</key>
|
||||
<integer>42</integer>
|
||||
<key>key_docking_music</key>
|
||||
<integer>115</integer>
|
||||
<key>key_scanner_zoom</key>
|
||||
<integer>122</integer>
|
||||
<key>key_map_dump</key>
|
||||
<integer>33</integer>
|
||||
<key>key_map_home</key>
|
||||
<integer>302</integer>
|
||||
<key>key_comms_log</key>
|
||||
<integer>96</integer>
|
||||
<key>key_next_compass_mode</key>
|
||||
<integer>92</integer>
|
||||
</dict>
|
||||
</plist>
|
||||
{
|
||||
key_autodock = <*I68>;
|
||||
key_autopilot = <*I99>;
|
||||
key_comms_log = <*I96>;
|
||||
key_decrease_speed = <*I115>;
|
||||
key_docking_music = <*I115>;
|
||||
key_dump_cargo = <*I100>;
|
||||
key_ecm = <*I101>;
|
||||
key_emergency_hyperdrive = <*I72>;
|
||||
key_energy_bomb = <*I9>;
|
||||
key_fire_lasers = <*I97>;
|
||||
key_galactic_hyperspace = <*I103>;
|
||||
key_hyperspace = <*I104>;
|
||||
key_ident_system = <*I114>;
|
||||
key_increase_speed = <*I119>;
|
||||
key_inject_fuel = <*I105>;
|
||||
key_jumpdrive = <*I106>;
|
||||
key_launch_escapepod = <*I27>;
|
||||
key_launch_missile = <*I109>;
|
||||
key_map_dump = <*I33>;
|
||||
key_map_home = <*I302>;
|
||||
key_next_compass_mode = <*I92>;
|
||||
key_next_missile = <*I121>;
|
||||
key_pitch_back = <*I254>;
|
||||
key_pitch_forward = <*I255>;
|
||||
key_roll_left = <*I253>;
|
||||
key_roll_right = <*I252>;
|
||||
key_scanner_zoom = <*I122>;
|
||||
key_snapshot = <*I42>;
|
||||
key_target_missile = <*I116>;
|
||||
key_untarget_missile = <*I117>;
|
||||
}
|
@ -1,60 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>constrictor_hunt_0_150</key>
|
||||
<string>"The constrictor was last seen at Reesdice, Commander."</string>
|
||||
<key>constrictor_hunt_0_28</key>
|
||||
<string>"Yep, an unusual new ship had a galactic hyperdrive fitted here, used it too."</string>
|
||||
<key>constrictor_hunt_0_36</key>
|
||||
<string>"A strange looking ship left here a while back. Looked bound for Arexe."</string>
|
||||
<key>constrictor_hunt_1_118</key>
|
||||
<string>"You can tackle the vicious scoundrel if you like. He's at Orarra."</string>
|
||||
<key>constrictor_hunt_1_193</key>
|
||||
<string>"There's a real deadly pirate out there."</string>
|
||||
<key>constrictor_hunt_1_253</key>
|
||||
<string>"This strange ship dehyped here from nowhere, sun skimmed and jumped. I hear it went to Inbibe."</string>
|
||||
<key>constrictor_hunt_1_53</key>
|
||||
<string>"Oh dear me yes. A frightful rogue with what I believe you people call a lead posterior shot up lots of beastly pirates and went to Usleri."</string>
|
||||
<key>constrictor_hunt_1_79</key>
|
||||
<string>"Rogue ship went for me at Ausar. My lasers didn't even scratch its hull."</string>
|
||||
<key>constrictor_hunt_1_A</key>
|
||||
<string>"I hear a weird looking ship was seen at Errius."</string>
|
||||
<key>constrictor_hunt_brief1</key>
|
||||
<string>---INCOMING MESSAGE\n\nGreetings Commander,\n\nI am Captain Curruthers of Her Imperial Majesty's Space Navy and I beg a moment of your valuable time. We would like you to do a little job for us.\nThe ship you see here is a new model, the Constrictor, equipped with a top secret new shield generator.\n\nUnfortunately it's been stolen.\n</string>
|
||||
<key>conhunt_short_desc1</key>
|
||||
<string>Hunt for the constrictor stolen from Xeer.</string>
|
||||
<key>constrictor_hunt_brief1a</key>
|
||||
<string>It went missing from our ship yard on Xeer five months ago and was last seen at Reesdice. Your mission should you decide to accept it, is to seek and destroy this ship. You are cautioned that only Military Lasers will get through the new shields and that the Constrictor is fitted with an E.C.M. System.\n\nGood Luck, Commander.\n\n---MESSAGE ENDS.</string>
|
||||
<key>constrictor_hunt_brief1b</key>
|
||||
<string>It went missing from our ship yard on Xeer five months ago and is believed to have jumped to this galaxy. Your mission should you decide to accept it, is to seek and destroy this ship. You are cautioned that only Military Lasers will get through the new shields and that the Constrictor is fitted with an E.C.M. System.\n\nGood Luck, Commander.\n\n---MESSAGE ENDS.</string>
|
||||
<key>constrictor_hunt_debrief</key>
|
||||
<string>---INCOMING MESSAGE\n\nCongratulations Commander!\n\nThere will always be a place for you in Her Imperial Majesty's Space Navy.\n\nAnd maybe sooner than you think...\n\n---MESSAGE ENDS.</string>
|
||||
<key>thargoid_plans_debrief</key>
|
||||
<string>---INCOMING MESSAGE\n\nYou have served us well and we shall remember.\n\nWe did not expect the Thargoids to find out about you.\n\nFor the moment please accept this Navy Extra Energy Unit as payment.\n\n---MESSAGE ENDS.</string>
|
||||
<key>thargoid_plans_intro_brief</key>
|
||||
<string>---INCOMING MESSAGE\n\nAttention Commander, I am Captain Fortesque of Her Imperial Majesty's Space Navy.\n\nWe have need of your services again.\n\nIf you would be so good as to go to Ceerdi you will be briefed.\n\nIf successful, you will be rewarded.\n\n---MESSAGE ENDS.</string>
|
||||
<key>thargplans_short_desc1</key>
|
||||
<string>Go to Ceerdi for a briefing.</string>
|
||||
<key>thargoid_plans_main_brief</key>
|
||||
<string>---INCOMING MESSAGE\n\nGood Day Commander.\n\nI am Agent Blake of Naval Intelligence.\nAs you know, the Navy have been keeping the Thargoids off your ass out in deep space for many years now.\nWell the situation has changed. Our boys are ready for a push right to the home system of those murderers.\n\nI have obtained the defence plans for their Hive Worlds. The beetles know we've got something but not what. If I transmit the plans to our base on Birera they'll intercept the transmission. I need a ship to make the run. You're elected.\n\nThe plans are unipulse coded within this transmission. You will be paid.\n\nGood luck Commander.\n\n---MESSAGE ENDS.</string>
|
||||
<key>thargplans_short_desc2</key>
|
||||
<string>Convey the secret plans to Birera.</string>
|
||||
<!-- Nova mission -->
|
||||
<key>nova_missiondesc</key>
|
||||
<string>Get the refugees to safety.</string>
|
||||
<key>nova_1</key>
|
||||
<string>You've arrived at an unfortunate time, Commander.\n\nOur sun has become unstable and is due to go nova at any moment. All our ships are evacuating the system, the last few refugees have come here to find a ship to take them to safety.\n\nPlease, please help us to escape!</string>
|
||||
<key>nova_hero</key>
|
||||
<string>Commander, we thank you.\n\nYou've bought us all to safety but we have no money with which we can reward you\n- our last credits were taken by those who took us to the space station.\n\nInstead we offer you undying gratitude... and what few valuable possessions we can spare.\n\nYou are our hero!</string>
|
||||
<!-- test follows -->
|
||||
<key>nova_yesno</key>
|
||||
<dict>
|
||||
<key>YES</key>
|
||||
<string>Okay, I'll help.</string>
|
||||
<key>NO</key>
|
||||
<string>No, sorry.</string>
|
||||
</dict>
|
||||
<!-- end test -->
|
||||
</dict>
|
||||
</plist>
|
||||
{
|
||||
conhunt_short_desc1 = "Hunt for the constrictor stolen from Xeer.";
|
||||
constrictor_hunt_0_150 = "\"The constrictor was last seen at Reesdice, Commander.\"";
|
||||
constrictor_hunt_0_28 = "\"Yep, an unusual new ship had a galactic hyperdrive fitted here, used it too.\"";
|
||||
constrictor_hunt_0_36 = "\"A strange looking ship left here a while back. Looked bound for Arexe.\"";
|
||||
constrictor_hunt_1_118 = "\"You can tackle the vicious scoundrel if you like. He's at Orarra.\"";
|
||||
constrictor_hunt_1_193 = "\"There's a real deadly pirate out there.\"";
|
||||
constrictor_hunt_1_253 = "\"This strange ship dehyped here from nowhere, sun skimmed and jumped. I hear it went to Inbibe.\"";
|
||||
constrictor_hunt_1_53 = "\"Oh dear me yes. A frightful rogue with what I believe you people call a lead posterior shot up lots of beastly pirates and went to Usleri.\"";
|
||||
constrictor_hunt_1_79 = "\"Rogue ship went for me at Ausar. My lasers didn't even scratch its hull.\"";
|
||||
constrictor_hunt_1_A = "\"I hear a weird looking ship was seen at Errius.\"";
|
||||
constrictor_hunt_brief1 = "---INCOMING MESSAGE\\n\\nGreetings Commander,\\n\\nI am Captain Curruthers of Her Imperial Majesty's Space Navy and I beg a moment of your valuable time. We would like you to do a little job for us.\\nThe ship you see here is a new model, the Constrictor, equipped with a top secret new shield generator.\\n\\nUnfortunately it's been stolen.\\n";
|
||||
constrictor_hunt_brief1a = "It went missing from our ship yard on Xeer five months ago and was last seen at Reesdice. Your mission should you decide to accept it, is to seek and destroy this ship. You are cautioned that only Military Lasers will get through the new shields and that the Constrictor is fitted with an E.C.M. System.\\n\\nGood Luck, Commander.\\n\\n---MESSAGE ENDS.";
|
||||
constrictor_hunt_brief1b = "It went missing from our ship yard on Xeer five months ago and is believed to have jumped to this galaxy. Your mission should you decide to accept it, is to seek and destroy this ship. You are cautioned that only Military Lasers will get through the new shields and that the Constrictor is fitted with an E.C.M. System.\\n\\nGood Luck, Commander.\\n\\n---MESSAGE ENDS.";
|
||||
constrictor_hunt_debrief = "---INCOMING MESSAGE\\n\\nCongratulations Commander!\\n\\nThere will always be a place for you in Her Imperial Majesty's Space Navy.\\n\\nAnd maybe sooner than you think...\\n\\n---MESSAGE ENDS.";
|
||||
nova_1 = "You've arrived at an unfortunate time, Commander.\\n\\nOur sun has become unstable and is due to go nova at any moment. All our ships are evacuating the system, the last few refugees have come here to find a ship to take them to safety.\\n\\nPlease, please help us to escape!";
|
||||
nova_hero = "Commander, we thank you.\\n\\nYou've bought us all to safety but we have no money with which we can reward you\\n- our last credits were taken by those who took us to the space station.\\n\\nInstead we offer you undying gratitude... and what few valuable possessions we can spare.\\n\\nYou are our hero!";
|
||||
nova_missiondesc = "Get the refugees to safety.";
|
||||
nova_yesno = {
|
||||
NO = "No, sorry.";
|
||||
YES = "Okay, I'll help.";
|
||||
};
|
||||
thargoid_plans_debrief = "---INCOMING MESSAGE\\n\\nYou have served us well and we shall remember.\\n\\nWe did not expect the Thargoids to find out about you.\\n\\nFor the moment please accept this Navy Extra Energy Unit as payment.\\n\\n---MESSAGE ENDS.";
|
||||
thargoid_plans_intro_brief = "---INCOMING MESSAGE\\n\\nAttention Commander, I am Captain Fortesque of Her Imperial Majesty's Space Navy.\\n\\nWe have need of your services again.\\n\\nIf you would be so good as to go to Ceerdi you will be briefed.\\n\\nIf successful, you will be rewarded.\\n\\n---MESSAGE ENDS.";
|
||||
thargoid_plans_main_brief = "---INCOMING MESSAGE\\n\\nGood Day Commander.\\n\\nI am Agent Blake of Naval Intelligence.\\nAs you know, the Navy have been keeping the Thargoids off your ass out in deep space for many years now.\\nWell the situation has changed. Our boys are ready for a push right to the home system of those murderers.\\n\\nI have obtained the defence plans for their Hive Worlds. The beetles know we've got something but not what. If I transmit the plans to our base on Birera they'll intercept the transmission. I need a ship to make the run. You're elected.\\n\\nThe plans are unipulse coded within this transmission. You will be paid.\\n\\nGood luck Commander.\\n\\n---MESSAGE ENDS.";
|
||||
thargplans_short_desc1 = "Go to Ceerdi for a briefing.";
|
||||
thargplans_short_desc2 = "Convey the secret plans to Birera.";
|
||||
}
|
@ -1,340 +1,482 @@
|
||||
{
|
||||
"thargoid_plans" = (
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number equal 2",
|
||||
"mission_conhunt equal MISSION_COMPLETE",
|
||||
"mission_thargplans undefined",
|
||||
"score_number greaterthan 1280"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: thargoid_plans_intro_brief",
|
||||
"set: mission_thargplans PRELUDE",
|
||||
"setMissionDescription: thargplans_short_desc1"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"status_string equal STATUS_DOCKED",
|
||||
"galaxy_number equal 2",
|
||||
"mission_thargplans equal PRELUDE",
|
||||
"planet_number equal 83"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: thargoid",
|
||||
"addMissionText: thargoid_plans_main_brief",
|
||||
"set: mission_thargplans RUNNING",
|
||||
"setMissionDescription: thargplans_short_desc2"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_thargplans equal RUNNING",
|
||||
"status_string equal STATUS_IN_FLIGHT",
|
||||
"scriptTimer_number lessthan 60"
|
||||
);
|
||||
do = (
|
||||
"checkForShips: thargoid",
|
||||
{
|
||||
conditions = ("shipsFound_number lessthan 2");
|
||||
do = (
|
||||
"addSystemShips: thargoid 1 0.66",
|
||||
"addSystemShips: thargoid 1 0.33"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"shipsFound_number lessthan 5",
|
||||
"d100_number lessthan 50"
|
||||
);
|
||||
do = ("addShips: thargoid 1");
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number equal 2",
|
||||
"mission_thargplans equal RUNNING",
|
||||
"planet_number equal 36"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: thargoid",
|
||||
"addMissionText: thargoid_plans_debrief",
|
||||
"set: mission_thargplans MISSION_COMPLETE",
|
||||
"awardShipKills: 256",
|
||||
"awardEquipment: EQ_NAVAL_ENERGY_UNIT",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
"constrictor_hunt" = (
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number lessthan 2",
|
||||
"mission_conhunt undefined",
|
||||
"score_number greaterthan 255"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: constrictor",
|
||||
"addMissionText: constrictor_hunt_brief1",
|
||||
{
|
||||
conditions = ("galaxy_number equal 0");
|
||||
do = ("addMissionText: constrictor_hunt_brief1a");
|
||||
},
|
||||
{
|
||||
conditions = ("galaxy_number equal 1");
|
||||
do = ("addMissionText: constrictor_hunt_brief1b");
|
||||
},
|
||||
"set: mission_conhunt STAGE_1",
|
||||
"setMissionDescription: conhunt_short_desc1"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_conhunt equal STAGE_1",
|
||||
"gui_screen_string equal GUI_SCREEN_SYSTEM_DATA"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = ("galaxy_number equal 0");
|
||||
do = (
|
||||
{
|
||||
conditions = ("planet_number equal 150");
|
||||
do = ("addMissionText: constrictor_hunt_0_150");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 36");
|
||||
do = ("addMissionText: constrictor_hunt_0_36");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 28");
|
||||
do = ("addMissionText: constrictor_hunt_0_28");
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = ("galaxy_number equal 1");
|
||||
do = (
|
||||
{
|
||||
conditions = ("planet_number equal 3");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 5");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 16");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 26");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 32");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 68");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 106");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 107");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 162");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 164");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 184");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 192");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 220");
|
||||
do = ("addMissionText: constrictor_hunt_1_A");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 253");
|
||||
do = ("addMissionText: constrictor_hunt_1_253");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 79");
|
||||
do = ("addMissionText: constrictor_hunt_1_79");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 53");
|
||||
do = ("addMissionText: constrictor_hunt_1_53");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 118");
|
||||
do = ("addMissionText: constrictor_hunt_1_118");
|
||||
},
|
||||
{
|
||||
conditions = ("planet_number equal 193");
|
||||
do = ("addMissionText: constrictor_hunt_1_193");
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_conhunt equal STAGE_1",
|
||||
"status_string equal STATUS_IN_FLIGHT",
|
||||
"galaxy_number equal 1",
|
||||
"planet_number equal 193"
|
||||
);
|
||||
do = (
|
||||
"checkForShips: constrictor",
|
||||
{
|
||||
conditions = ("shipsFound_number equal 0");
|
||||
do = ("addShips: constrictor 1");
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"mission_conhunt equal CONSTRICTOR_DESTROYED"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: constrictor",
|
||||
"awardCredits: 5000",
|
||||
"setLegalStatus: 0",
|
||||
"awardShipKills: 256",
|
||||
"addMissionText: constrictor_hunt_debrief",
|
||||
"set: mission_conhunt MISSION_COMPLETE",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
nova = (
|
||||
{
|
||||
conditions = ("galaxy_number equal 3", "mission_novacount undefined");
|
||||
do = ("set: mission_novacount 0");
|
||||
},
|
||||
{
|
||||
conditions = ("galaxy_number equal 3", "status_string equal STATUS_EXITING_WITCHSPACE");
|
||||
do = (
|
||||
"increment: mission_novacount",
|
||||
"testForEquipment: EQ_GAL_DRIVE",
|
||||
{
|
||||
conditions = (
|
||||
"foundEquipment_bool equal YES",
|
||||
"mission_novacount greaterthan 3",
|
||||
"mission_nova undefined"
|
||||
);
|
||||
do = (
|
||||
"set: mission_nova 2HRS_TO_ZERO",
|
||||
"setFuelLeak: 25",
|
||||
"setSunNovaIn: 7200",
|
||||
"setPlanetinfo: market = none",
|
||||
"setPlanetinfo: sun_gone_nova = YES"
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = ("mission_nova equal 2HRS_TO_ZERO", "status_string equal STATUS_IN_FLIGHT");
|
||||
do = (
|
||||
{conditions = ("sunWillGoNova_bool equal NO"); do = ("reset: mission_nova"); },
|
||||
{conditions = ("sunWillGoNova_bool equal YES"); do = (sendAllShipsAway); }
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string undefined"
|
||||
);
|
||||
do = (
|
||||
"setMissionImage: solar.png",
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: nova_1",
|
||||
"setMissionChoices: nova_yesno"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string equal YES"
|
||||
);
|
||||
do = (
|
||||
"useSpecialCargo: A hold full of %I refugees.",
|
||||
"setMissionDescription: nova_missiondesc",
|
||||
launchFromStation,
|
||||
"set: mission_nova NOVA_ESCAPE_HERO",
|
||||
"setSunNovaIn: 12"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string equal NO"
|
||||
);
|
||||
do = (
|
||||
launchFromStation,
|
||||
"set: mission_nova NOVA_ESCAPE_COWARD",
|
||||
"commsMessage: Coward! You chose not to help the refugees!",
|
||||
"setSunNovaIn: 3"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = ("mission_nova equal NOVA_ESCAPE_HERO", "dockedAtMainStation_bool equal YES");
|
||||
do = (
|
||||
removeAllCargo,
|
||||
"awardCargo: 100 Gem-Stones",
|
||||
"setMissionImage: solar.png",
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: nova_hero",
|
||||
"set: mission_nova NOVA_HERO",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
"cloaking-device" = (
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 4",
|
||||
"status_string equal STATUS_EXITING_WITCHSPACE",
|
||||
"mission_cloak undefined"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = ("mission_cloakcounter undefined");
|
||||
do = ("set: mission_cloakcounter 0");
|
||||
},
|
||||
"increment: mission_cloakcounter",
|
||||
"checkForShips: asp-cloaked",
|
||||
{
|
||||
conditions = ("shipsFound_number equal 0", "mission_cloakcounter greaterthan 6");
|
||||
do = ("addShips: asp-cloaked 1", "addShips: asp-pirate 2");
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 4",
|
||||
"status_string equal STATUS_EXITING_WITCHSPACE",
|
||||
"mission_cloak undefined"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = (
|
||||
"mission_cloakcounter undefined"
|
||||
);
|
||||
do = (
|
||||
"set: mission_cloakcounter 0"
|
||||
);
|
||||
},
|
||||
"increment: mission_cloakcounter",
|
||||
"checkForShips: asp-cloaked",
|
||||
{
|
||||
conditions = (
|
||||
"shipsFound_number equal 0",
|
||||
"mission_cloakcounter greaterthan 6"
|
||||
);
|
||||
do = (
|
||||
"addShips: asp-cloaked 1",
|
||||
"addShips: asp-pirate 2"
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
constrictor_hunt = (
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number lessthan 2",
|
||||
"mission_conhunt undefined",
|
||||
"score_number greaterthan 255"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: constrictor",
|
||||
"addMissionText: constrictor_hunt_brief1",
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 0"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_brief1a"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 1"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_brief1b"
|
||||
);
|
||||
},
|
||||
"set: mission_conhunt STAGE_1",
|
||||
"setMissionDescription: conhunt_short_desc1"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_conhunt equal STAGE_1",
|
||||
"gui_screen_string equal GUI_SCREEN_SYSTEM_DATA"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 0"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 150"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_0_150"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 36"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_0_36"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 28"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_0_28"
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 1"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 3"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 5"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 16"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 26"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 32"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 68"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 106"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 107"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 162"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 164"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 184"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 192"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 220"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_A"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 253"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_253"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 79"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_79"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 53"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_53"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 118"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_118"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"planet_number equal 193"
|
||||
);
|
||||
do = (
|
||||
"addMissionText: constrictor_hunt_1_193"
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_conhunt equal STAGE_1",
|
||||
"status_string equal STATUS_IN_FLIGHT",
|
||||
"galaxy_number equal 1",
|
||||
"planet_number equal 193"
|
||||
);
|
||||
do = (
|
||||
"checkForShips: constrictor",
|
||||
{
|
||||
conditions = (
|
||||
"shipsFound_number equal 0"
|
||||
);
|
||||
do = (
|
||||
"addShips: constrictor 1"
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"mission_conhunt equal CONSTRICTOR_DESTROYED"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: constrictor",
|
||||
"awardCredits: 5000",
|
||||
"setLegalStatus: 0",
|
||||
"awardShipKills: 256",
|
||||
"addMissionText: constrictor_hunt_debrief",
|
||||
"set: mission_conhunt MISSION_COMPLETE",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
nova = (
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 3",
|
||||
"mission_novacount undefined"
|
||||
);
|
||||
do = (
|
||||
"set: mission_novacount 0"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"galaxy_number equal 3",
|
||||
"status_string equal STATUS_EXITING_WITCHSPACE"
|
||||
);
|
||||
do = (
|
||||
"increment: mission_novacount",
|
||||
"testForEquipment: EQ_GAL_DRIVE",
|
||||
{
|
||||
conditions = (
|
||||
"foundEquipment_bool equal YES",
|
||||
"mission_novacount greaterthan 3",
|
||||
"mission_nova undefined"
|
||||
);
|
||||
do = (
|
||||
"set: mission_nova 2HRS_TO_ZERO",
|
||||
"setFuelLeak: 25",
|
||||
"setSunNovaIn: 7200",
|
||||
"setPlanetinfo: market = none",
|
||||
"setPlanetinfo: sun_gone_nova = YES"
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"status_string equal STATUS_IN_FLIGHT"
|
||||
);
|
||||
do = (
|
||||
{
|
||||
conditions = (
|
||||
"sunWillGoNova_bool equal NO"
|
||||
);
|
||||
do = (
|
||||
"reset: mission_nova"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"sunWillGoNova_bool equal YES"
|
||||
);
|
||||
do = (
|
||||
sendAllShipsAway
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string undefined"
|
||||
);
|
||||
do = (
|
||||
"setMissionImage: solar.png",
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: nova_1",
|
||||
"setMissionChoices: nova_yesno"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string equal YES"
|
||||
);
|
||||
do = (
|
||||
"useSpecialCargo: A hold full of %I refugees.",
|
||||
"setMissionDescription: nova_missiondesc",
|
||||
launchFromStation,
|
||||
"set: mission_nova NOVA_ESCAPE_HERO",
|
||||
"setSunNovaIn: 12"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal 2HRS_TO_ZERO",
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"missionChoice_string equal NO"
|
||||
);
|
||||
do = (
|
||||
launchFromStation,
|
||||
"set: mission_nova NOVA_ESCAPE_COWARD",
|
||||
"commsMessage: Coward! You chose not to help the refugees!",
|
||||
"setSunNovaIn: 3"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_nova equal NOVA_ESCAPE_HERO",
|
||||
"dockedAtMainStation_bool equal YES"
|
||||
);
|
||||
do = (
|
||||
removeAllCargo,
|
||||
"awardCargo: 100 Gem-Stones",
|
||||
"setMissionImage: solar.png",
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: nova_hero",
|
||||
"set: mission_nova NOVA_HERO",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
thargoid_plans = (
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number equal 2",
|
||||
"mission_conhunt equal MISSION_COMPLETE",
|
||||
"mission_thargplans undefined",
|
||||
"score_number greaterthan 1280"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"addMissionText: thargoid_plans_intro_brief",
|
||||
"set: mission_thargplans PRELUDE",
|
||||
"setMissionDescription: thargplans_short_desc1"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"status_string equal STATUS_DOCKED",
|
||||
"galaxy_number equal 2",
|
||||
"mission_thargplans equal PRELUDE",
|
||||
"planet_number equal 83"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: thargoid",
|
||||
"addMissionText: thargoid_plans_main_brief",
|
||||
"set: mission_thargplans RUNNING",
|
||||
"setMissionDescription: thargplans_short_desc2"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"mission_thargplans equal RUNNING",
|
||||
"status_string equal STATUS_IN_FLIGHT",
|
||||
"scriptTimer_number lessthan 60"
|
||||
);
|
||||
do = (
|
||||
"checkForShips: thargoid",
|
||||
{
|
||||
conditions = (
|
||||
"shipsFound_number lessthan 2"
|
||||
);
|
||||
do = (
|
||||
"addSystemShips: thargoid 1 0.66",
|
||||
"addSystemShips: thargoid 1 0.33"
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"shipsFound_number lessthan 5",
|
||||
"d100_number lessthan 50"
|
||||
);
|
||||
do = (
|
||||
"addShips: thargoid 1"
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
{
|
||||
conditions = (
|
||||
"dockedAtMainStation_bool equal YES",
|
||||
"galaxy_number equal 2",
|
||||
"mission_thargplans equal RUNNING",
|
||||
"planet_number equal 36"
|
||||
);
|
||||
do = (
|
||||
setGuiToMissionScreen,
|
||||
"showShipModel: thargoid",
|
||||
"addMissionText: thargoid_plans_debrief",
|
||||
"set: mission_thargplans MISSION_COMPLETE",
|
||||
"awardShipKills: 256",
|
||||
"awardEquipment: EQ_NAVAL_ENERGY_UNIT",
|
||||
clearMissionDescription
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,461 +1,356 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>adder-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.25</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>65000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>4</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>anaconda-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.125</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>650000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>8</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>asp-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.5</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>375000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
</array>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>10</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>boa-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.375</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>450000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>6</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>boa-mk2-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.325</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>495000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>5</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>7</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>cobra3-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.5</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_CARGO_BAY</string>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>150000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>6</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>cobramk1-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.375</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>100000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>4</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>ferdelance-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.25</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>485000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>8</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>moray-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.375</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>125000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>5</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
<key>morayMED-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.275</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_CARGO_BAY</string>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_ADVANCED_COMPASS</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>145000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_NONE</string>
|
||||
<key>missiles</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>6</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>python-player</key>
|
||||
<dict>
|
||||
<key>chance</key>
|
||||
<real>0.5</real>
|
||||
<key>optional_equipment</key>
|
||||
<array>
|
||||
<string>EQ_CARGO_BAY</string>
|
||||
<string>EQ_ECM</string>
|
||||
<string>EQ_FUEL_SCOOPS</string>
|
||||
<string>EQ_PASSENGER_BERTH</string>
|
||||
<string>EQ_ESCAPE_POD</string>
|
||||
<string>EQ_ENERGY_BOMB</string>
|
||||
<string>EQ_ENERGY_UNIT</string>
|
||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
||||
<string>EQ_DOCK_COMP</string>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
||||
<string>EQ_WEAPON_MINING_LASER</string>
|
||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
||||
<string>EQ_FUEL_INJECTION</string>
|
||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
||||
<string>EQ_MULTI_TARGET</string>
|
||||
<string>EQ_GAL_DRIVE</string>
|
||||
<string>EQ_SHIELD_BOOSTER</string>
|
||||
</array>
|
||||
<key>price</key>
|
||||
<integer>200000</integer>
|
||||
<key>standard_equipment</key>
|
||||
<dict>
|
||||
<key>extras</key>
|
||||
<array/>
|
||||
<key>forward_weapon_type</key>
|
||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
||||
<key>missiles</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>techlevel</key>
|
||||
<integer>4</integer>
|
||||
<key>weapon_facings</key>
|
||||
<integer>15</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
{
|
||||
"adder-player" = {
|
||||
chance = <*R0.25>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I65000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I1>;
|
||||
};
|
||||
techlevel = <*I4>;
|
||||
weapon_facings = <*I1>;
|
||||
};
|
||||
"anaconda-player" = {
|
||||
chance = <*R0.125>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I650000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I3>;
|
||||
};
|
||||
techlevel = <*I8>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"asp-player" = {
|
||||
chance = <*R0.5>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER,
|
||||
EQ_NAVAL_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I375000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I1>;
|
||||
};
|
||||
techlevel = <*I10>;
|
||||
weapon_facings = <*I3>;
|
||||
};
|
||||
"boa-mk2-player" = {
|
||||
chance = <*R0.325>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER,
|
||||
EQ_NAVAL_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I495000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_BEAM_LASER;
|
||||
missiles = <*I5>;
|
||||
};
|
||||
techlevel = <*I7>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"boa-player" = {
|
||||
chance = <*R0.375>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I450000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I3>;
|
||||
};
|
||||
techlevel = <*I6>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"cobra3-player" = {
|
||||
chance = <*R0.5>;
|
||||
optional_equipment = (
|
||||
EQ_CARGO_BAY,
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER,
|
||||
EQ_NAVAL_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I150000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I3>;
|
||||
};
|
||||
techlevel = <*I6>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"cobramk1-player" = {
|
||||
chance = <*R0.375>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I100000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I1>;
|
||||
};
|
||||
techlevel = <*I4>;
|
||||
weapon_facings = <*I3>;
|
||||
};
|
||||
"ferdelance-player" = {
|
||||
chance = <*R0.25>;
|
||||
optional_equipment = (
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_NAVAL_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I485000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_ECM,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_BEAM_LASER;
|
||||
missiles = <*I3>;
|
||||
};
|
||||
techlevel = <*I8>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"moray-player" = {
|
||||
chance = <*R0.375>;
|
||||
optional_equipment = (
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER,
|
||||
EQ_NAVAL_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I125000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I2>;
|
||||
};
|
||||
techlevel = <*I5>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
"morayMED-player" = {
|
||||
chance = <*R0.275>;
|
||||
optional_equipment = (
|
||||
EQ_CARGO_BAY,
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_ADVANCED_COMPASS,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I145000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_NONE;
|
||||
missiles = <*I0>;
|
||||
};
|
||||
techlevel = <*I6>;
|
||||
weapon_facings = <*I1>;
|
||||
};
|
||||
"python-player" = {
|
||||
chance = <*R0.5>;
|
||||
optional_equipment = (
|
||||
EQ_CARGO_BAY,
|
||||
EQ_ECM,
|
||||
EQ_FUEL_SCOOPS,
|
||||
EQ_PASSENGER_BERTH,
|
||||
EQ_ESCAPE_POD,
|
||||
EQ_ENERGY_BOMB,
|
||||
EQ_ENERGY_UNIT,
|
||||
EQ_NAVAL_ENERGY_UNIT,
|
||||
EQ_DOCK_COMP,
|
||||
EQ_WEAPON_PULSE_LASER,
|
||||
EQ_WEAPON_BEAM_LASER,
|
||||
EQ_WEAPON_MINING_LASER,
|
||||
EQ_WEAPON_MILITARY_LASER,
|
||||
EQ_FUEL_INJECTION,
|
||||
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||
EQ_MULTI_TARGET,
|
||||
EQ_GAL_DRIVE,
|
||||
EQ_SHIELD_BOOSTER
|
||||
);
|
||||
price = <*I200000>;
|
||||
standard_equipment = {
|
||||
extras = (
|
||||
);
|
||||
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||
missiles = <*I1>;
|
||||
};
|
||||
techlevel = <*I4>;
|
||||
weapon_facings = <*I15>;
|
||||
};
|
||||
}
|
@ -1,72 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>oolite-save</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>oolite-document</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Oolite Saved Game</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>oxp</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>oolite-expansion-document</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Oolite Expansion Pack</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>LSTypeIsPackage</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>oolite_expansion_pack</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>oolite-expansion-document</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Oolite Expansion Pack</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>LSTypeIsPackage</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict/>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Oolite</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>oolite-icon</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.aegidian.oolite</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Oolite</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>Ool8</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.49</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>OoliteApp</string>
|
||||
</dict>
|
||||
</plist>
|
||||
{
|
||||
CFBundleDevelopmentRegion = English;
|
||||
CFBundleDocumentTypes = (
|
||||
{
|
||||
CFBundleTypeExtensions = (
|
||||
"oolite-save"
|
||||
);
|
||||
CFBundleTypeIconFile = "oolite-document";
|
||||
CFBundleTypeName = "Oolite Saved Game";
|
||||
CFBundleTypeRole = Editor;
|
||||
},
|
||||
{
|
||||
CFBundleTypeExtensions = (
|
||||
oxp
|
||||
);
|
||||
CFBundleTypeIconFile = "oolite-expansion-document";
|
||||
CFBundleTypeName = "Oolite Expansion Pack";
|
||||
CFBundleTypeRole = Editor;
|
||||
LSTypeIsPackage = <*BY>
|
||||
;
|
||||
},
|
||||
{
|
||||
CFBundleTypeExtensions = (
|
||||
oolite_expansion_pack
|
||||
);
|
||||
CFBundleTypeIconFile = "oolite-expansion-document";
|
||||
CFBundleTypeName = "Oolite Expansion Pack";
|
||||
CFBundleTypeRole = Editor;
|
||||
LSTypeIsPackage = <*BY>
|
||||
;
|
||||
},
|
||||
{
|
||||
}
|
||||
);
|
||||
CFBundleExecutable = Oolite;
|
||||
CFBundleIconFile = "oolite-icon";
|
||||
CFBundleIdentifier = org.aegidian.oolite;
|
||||
CFBundleInfoDictionaryVersion = 6.0;
|
||||
CFBundleName = Oolite;
|
||||
CFBundlePackageType = APPL;
|
||||
CFBundleSignature = Ool8;
|
||||
CFBundleVersion = 1.49;
|
||||
NSMainNibFile = MainMenu;
|
||||
NSPrincipalClass = OoliteApp;
|
||||
}
|
@ -15,10 +15,12 @@
|
||||
@interface SDLImage : NSObject
|
||||
{
|
||||
SDL_Surface *m_surface;
|
||||
NSSize m_size;
|
||||
}
|
||||
|
||||
- (id) initWithSurface: (SDL_Surface *)surface;
|
||||
- (SDL_Surface *) surface;
|
||||
- (NSSize) size;
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
@ -12,6 +12,8 @@
|
||||
{
|
||||
self = [super init];
|
||||
m_surface = surface;
|
||||
m_size.width = surface->w;
|
||||
m_size.height = surface->h;
|
||||
return self;
|
||||
}
|
||||
|
||||
@ -20,4 +22,9 @@
|
||||
return m_surface;
|
||||
}
|
||||
|
||||
- (NSSize) size
|
||||
{
|
||||
return m_size;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -39,7 +39,7 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
#ifdef GNUSTEP
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AppKit/AppKit.h>
|
||||
//#import <AppKit/AppKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
|
@ -75,37 +75,48 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
- (GLuint) getTextureNameFor:(NSString *)filename
|
||||
{
|
||||
#ifndef GNUSTEP
|
||||
NSBitmapImageRep *bitmapImageRep;
|
||||
NSRect textureRect = NSMakeRect(0.0,0.0,4.0,4.0);
|
||||
NSImage *texImage, *image;
|
||||
#else
|
||||
SDLImage *texImage;
|
||||
#endif
|
||||
NSRect textureRect = NSMakeRect(0.0,0.0,4.0,4.0);
|
||||
NSSize imageSize;
|
||||
NSData *textureData;
|
||||
GLuint texName;
|
||||
|
||||
int n_planes;
|
||||
int n_bytes;
|
||||
|
||||
if (![textureDictionary objectForKey:filename])
|
||||
{
|
||||
NSMutableDictionary* texProps = [NSMutableDictionary dictionaryWithCapacity:3]; // autoreleased
|
||||
|
||||
#ifndef GNUSTEP
|
||||
texImage = [ResourceManager imageNamed:filename inFolder:@"Textures"];
|
||||
#else
|
||||
texImage = [ResourceManager surfaceNamed:filename inFolder:@"Textures"];
|
||||
#endif
|
||||
if (!texImage)
|
||||
{
|
||||
NSLog(@"***** Couldn't find texture : %@", filename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#ifndef GNUSTEP
|
||||
imageSize = [texImage size];
|
||||
|
||||
#else
|
||||
imageSize = NSMakeSize([texImage surface]->w, [texImage surface]->h);
|
||||
#endif
|
||||
while (textureRect.size.width < imageSize.width)
|
||||
textureRect.size.width *= 2.0;
|
||||
while (textureRect.size.height < imageSize.height)
|
||||
textureRect.size.height *= 2.0;
|
||||
|
||||
|
||||
textureRect.origin= NSMakePoint(0.0,0.0);
|
||||
|
||||
// NSLog(@"DEBUG %@ imageSize = (%.0f, %.0f) textureSize = (%.0f, %.0f)", filename, imageSize.width, imageSize.height, textureRect.size.width,textureRect.size.height);
|
||||
|
||||
|
||||
// NSLog(@"textureSize = %f %f",textureRect.size.width,textureRect.size.height);
|
||||
#ifndef GNUSTEP
|
||||
image = [[NSImage alloc] initWithSize:textureRect.size]; // is retained
|
||||
|
||||
// draw the texImage into an image of an appropriate size
|
||||
@ -118,13 +129,32 @@ Your fair use and other rights are in no way affected by the above.
|
||||
[texImage drawAtPoint:NSMakePoint(0.0,0.0) fromRect:NSMakeRect(0.0,0.0,imageSize.width,imageSize.height) operation:NSCompositeSourceOver fraction:1.0];
|
||||
bitmapImageRep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:textureRect];// is retained
|
||||
|
||||
// NSLog(@"TextureStore bitMapImageRep for %@: has %d numberOfPlanes, %d samplesPerPixel", filename, [bitmapImageRep numberOfPlanes], [bitmapImageRep samplesPerPixel]);
|
||||
// NSLog(@"TextureStore %@ texture has %d planes, %d bytes per plane", filename, [bitmapImageRep numberOfPlanes], [bitmapImageRep bytesPerPlane]);
|
||||
|
||||
n_planes = [bitmapImageRep samplesPerPixel];
|
||||
n_bytes = [bitmapImageRep bytesPerPlane];
|
||||
n_planes = 3;
|
||||
if (n_bytes > textureRect.size.width*textureRect.size.height*3)
|
||||
n_planes = 4;
|
||||
|
||||
[image unlockFocus];
|
||||
|
||||
textureData = [[NSData dataWithBytes:[bitmapImageRep bitmapData] length:(int)(textureRect.size.width*textureRect.size.height*n_planes)] retain];
|
||||
#else
|
||||
double zoomx = textureRect.size.width / imageSize.width;
|
||||
double zoomy = textureRect.size.height / imageSize.height;
|
||||
#ifdef WIN32
|
||||
SDL_Surface* scaledImage = [texImage surface];
|
||||
#else
|
||||
SDL_Surface* scaledImage = zoomSurface([texImage surface], zoomx, zoomy, SMOOTHING_OFF);
|
||||
#endif
|
||||
SDL_LockSurface(scaledImage);
|
||||
textureData = [[NSData dataWithBytes:scaledImage->pixels length:scaledImage->w * scaledImage->h * scaledImage->format->BytesPerPixel] retain];
|
||||
|
||||
n_planes = scaledImage->format->BytesPerPixel;
|
||||
|
||||
SDL_UnlockSurface(scaledImage);
|
||||
SDL_FreeSurface(scaledImage);
|
||||
#endif
|
||||
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glGenTextures(1, &texName); // get a new unique texture name
|
||||
@ -149,10 +179,12 @@ Your fair use and other rights are in no way affected by the above.
|
||||
|
||||
[textureDictionary setObject:texProps forKey:filename];
|
||||
|
||||
#ifndef GNUSTEP
|
||||
[image autorelease]; // is released
|
||||
|
||||
|
||||
[bitmapImageRep autorelease];// is released
|
||||
|
||||
#endif
|
||||
|
||||
[textureData autorelease];// is released (retain count has been incremented by adding it to the texProps dictionary)
|
||||
|
||||
}
|
||||
@ -181,3 +213,4 @@ Your fair use and other rights are in no way affected by the above.
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
12
Universe.m
12
Universe.m
@ -126,9 +126,15 @@ Your fair use and other rights are in no way affected by the above.
|
||||
//
|
||||
textureStore = [[TextureStore alloc] init]; // alloc retains
|
||||
//
|
||||
#ifndef WIN32
|
||||
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||
size:NSMakeSize(32, 32)]; // alloc retains
|
||||
#else
|
||||
cursorSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:@"cursor.png" inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||
size:NSMakeSize(32, 32)]; // alloc retains
|
||||
#endif
|
||||
//
|
||||
gui = [[GuiDisplayGen alloc] init]; // alloc retains
|
||||
displayGUI = NO;
|
||||
@ -363,9 +369,15 @@ Your fair use and other rights are in no way affected by the above.
|
||||
//
|
||||
if (cursorSprite)
|
||||
[cursorSprite release];
|
||||
#ifndef WIN32
|
||||
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||
size:NSMakeSize(32, 32)]; // alloc retains
|
||||
#else
|
||||
cursorSprite = [[OpenGLSprite alloc] initWithSurface:[ResourceManager surfaceNamed:@"cursor.png" inFolder:@"Images"]
|
||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||
size:NSMakeSize(32, 32)]; // alloc retains
|
||||
#endif
|
||||
//
|
||||
if (gui)
|
||||
[gui release];
|
||||
|
16
main.m
16
main.m
@ -14,6 +14,8 @@ int debug = NO;
|
||||
int main(int argc, const char *argv[])
|
||||
{
|
||||
#ifdef GNUSTEP
|
||||
int i;
|
||||
|
||||
// This is still necessary for NSFont calls.
|
||||
[NSApplication sharedApplication];
|
||||
|
||||
@ -29,8 +31,18 @@ int main(int argc, const char *argv[])
|
||||
// is no longer required.
|
||||
[pool release];
|
||||
|
||||
if (argc > 1)
|
||||
[controller setPlayerFileToLoad: [NSString stringWithCString: argv[argc - 1]]];
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
if (strcmp("-fullscreen", argv[i]) == 0)
|
||||
[controller setFullScreenMode: YES];
|
||||
|
||||
if (strcmp("-load", argv[i]) == 0)
|
||||
{
|
||||
i++;
|
||||
if (i < argc)
|
||||
[controller setPlayerFileToLoad: [NSString stringWithCString: argv[i]]];
|
||||
}
|
||||
}
|
||||
|
||||
// Call applicationDidFinishLaunching because NSApp is not running in
|
||||
// GNUstep port.
|
||||
|
Loading…
x
Reference in New Issue
Block a user