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;
|
- (IBAction) goFullscreen:(id) sender;
|
||||||
- (void) exitFullScreenMode;
|
- (void) exitFullScreenMode;
|
||||||
- (BOOL) inFullScreenMode;
|
- (BOOL) inFullScreenMode;
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
- (void) setFullScreenMode:(BOOL)fsm;
|
||||||
|
#endif
|
||||||
|
|
||||||
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target;
|
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target;
|
||||||
- (void) exitApp;
|
- (void) exitApp;
|
||||||
|
@ -327,7 +327,9 @@ static int _compareModes(id arg1, id arg2, void *context)
|
|||||||
// back there under GNUstep.
|
// back there under GNUstep.
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
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];
|
[gameView setGameController: self];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -773,6 +775,13 @@ static int _compareModes(id arg1, id arg2, void *context)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
- (void) setFullScreenMode:(BOOL)fsm
|
||||||
|
{
|
||||||
|
fullscreen = fsm;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target
|
- (void) pauseFullScreenModeToPerform:(SEL) selector onTarget:(id) target
|
||||||
{
|
{
|
||||||
|
@ -89,6 +89,7 @@ float char_widths[128] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// // init sprites
|
// // init sprites
|
||||||
|
#ifndef WIN32
|
||||||
compassSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:COMPASS_IMAGE inFolder:@"Images"]
|
compassSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:COMPASS_IMAGE inFolder:@"Images"]
|
||||||
cropRectangle:NSMakeRect(0, 0, COMPASS_SIZE, COMPASS_SIZE)
|
cropRectangle:NSMakeRect(0, 0, COMPASS_SIZE, COMPASS_SIZE)
|
||||||
size:NSMakeSize(COMPASS_HALF_SIZE, COMPASS_HALF_SIZE)]; // alloc retains
|
size:NSMakeSize(COMPASS_HALF_SIZE, COMPASS_HALF_SIZE)]; // alloc retains
|
||||||
@ -110,6 +111,29 @@ float char_widths[128] = {
|
|||||||
cropRectangle:NSMakeRect(w1*i, 0, w1, h1)
|
cropRectangle:NSMakeRect(w1*i, 0, w1, h1)
|
||||||
size:NSMakeSize(16, 16)]; // alloc retains
|
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
|
// init arrays
|
||||||
dialArray = [[NSMutableArray alloc] initWithCapacity:16]; // alloc retains
|
dialArray = [[NSMutableArray alloc] initWithCapacity:16]; // alloc retains
|
||||||
@ -175,6 +199,7 @@ GLuint ascii_texture_name;
|
|||||||
if ([info objectForKey:IMAGE_KEY])
|
if ([info objectForKey:IMAGE_KEY])
|
||||||
{
|
{
|
||||||
//NSLog(@"DEBUG adding Legend %@",[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"];
|
NSImage *legendImage = [ResourceManager imageNamed:(NSString *)[info objectForKey:IMAGE_KEY] inFolder:@"Images"];
|
||||||
NSSize imageSize = [legendImage size];
|
NSSize imageSize = [legendImage size];
|
||||||
NSSize spriteSize = imageSize;
|
NSSize spriteSize = imageSize;
|
||||||
@ -182,8 +207,21 @@ GLuint ascii_texture_name;
|
|||||||
spriteSize.width = [(NSNumber *)[info objectForKey:WIDTH_KEY] intValue];
|
spriteSize.width = [(NSNumber *)[info objectForKey:WIDTH_KEY] intValue];
|
||||||
if ([info objectForKey:HEIGHT_KEY])
|
if ([info objectForKey:HEIGHT_KEY])
|
||||||
spriteSize.height = [(NSNumber *)[info objectForKey:HEIGHT_KEY] intValue];
|
spriteSize.height = [(NSNumber *)[info objectForKey:HEIGHT_KEY] intValue];
|
||||||
|
|
||||||
OpenGLSprite *legendSprite = [[OpenGLSprite alloc] initWithImage:legendImage
|
OpenGLSprite *legendSprite = [[OpenGLSprite alloc] initWithImage:legendImage
|
||||||
cropRectangle:NSMakeRect(0, 0, imageSize.width, imageSize.height) size:spriteSize]; // retained
|
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];
|
NSMutableDictionary *legendDict = [NSMutableDictionary dictionaryWithDictionary:info];
|
||||||
[legendDict setObject:legendSprite forKey:SPRITE_KEY];
|
[legendDict setObject:legendSprite forKey:SPRITE_KEY];
|
||||||
[legendArray addObject:legendDict];
|
[legendArray addObject:legendDict];
|
||||||
|
@ -147,6 +147,9 @@ extern int debug;
|
|||||||
- (void) snapShot;
|
- (void) snapShot;
|
||||||
|
|
||||||
- (BOOL) inFullScreenMode;
|
- (BOOL) inFullScreenMode;
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
- (void) setFullScreenMode:(BOOL)fsm;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// These are standard methods in NSView.
|
// 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);
|
SDL_VERSION(&dpyInfo.version);
|
||||||
if(SDL_GetWMInfo(&dpyInfo))
|
if(SDL_GetWMInfo(&dpyInfo))
|
||||||
{
|
{
|
||||||
#ifdef LINUX
|
#if defined(LINUX) && ! defined (WIN32)
|
||||||
dpySize.width=DisplayWidth(dpyInfo.info.x11.display, 0);
|
dpySize.width=DisplayWidth(dpyInfo.info.x11.display, 0);
|
||||||
dpySize.height=DisplayHeight(dpyInfo.info.x11.display, 0);
|
dpySize.height=DisplayHeight(dpyInfo.info.x11.display, 0);
|
||||||
#else
|
#else
|
||||||
NSLog(@"Unknown architecture, defaulting to 1024x768");
|
NSLog(@"Unknown architecture, defaulting to 1024x768");
|
||||||
dpySize=NSMakeSize(1024,768);
|
dpySize=NSMakeSize(1024, 768);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
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[1] = NSMakeSize(800, 600);
|
||||||
screenSizes[2] = NSMakeSize(1024, 768);
|
screenSizes[2] = NSMakeSize(1024, 768);
|
||||||
currentSize = 0;
|
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.width = surface->w;
|
||||||
bounds.size.height = surface->h;
|
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;
|
return fullScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
- (void) setFullScreenMode:(BOOL)fsm
|
||||||
|
{
|
||||||
|
fullScreen = fsm;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
- (void) display
|
- (void) display
|
||||||
{
|
{
|
||||||
[self drawRect: NSMakeRect(0, 0, viewSize.width, viewSize.height)];
|
[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
|
#ifdef LINUX
|
||||||
#include "oolite-linux.h"
|
#include "oolite-linux.h"
|
||||||
|
#include "SDLImage.h"
|
||||||
#else
|
#else
|
||||||
#import <OpenGL/gl.h>
|
#import <OpenGL/gl.h>
|
||||||
#import <OpenGL/glu.h>
|
#import <OpenGL/glu.h>
|
||||||
@ -86,5 +87,10 @@ extern int debug;
|
|||||||
- (void)replaceTextureFromImage:(NSImage *)texImage cropRectangle:(NSRect)cropRect;
|
- (void)replaceTextureFromImage:(NSImage *)texImage cropRectangle:(NSRect)cropRect;
|
||||||
- (void)substituteTextureFromImage:(NSImage *)texImage;
|
- (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
|
@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"
|
#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
|
@implementation OpenGLSprite
|
||||||
|
|
||||||
@ -58,6 +73,7 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
- (id) initWithText:(NSString *)str
|
- (id) initWithText:(NSString *)str
|
||||||
{
|
{
|
||||||
|
#ifndef GNUSTEP
|
||||||
NSImage *image;
|
NSImage *image;
|
||||||
NSSize strsize;
|
NSSize strsize;
|
||||||
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
||||||
@ -82,11 +98,14 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
[image release];
|
[image release];
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
#else
|
||||||
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) initWithText:(NSString *)str ofColor:(NSColor *) textColor
|
- (id) initWithText:(NSString *)str ofColor:(NSColor *) textColor
|
||||||
{
|
{
|
||||||
|
#ifndef GNUSTEP
|
||||||
NSImage *image;
|
NSImage *image;
|
||||||
NSSize strsize;
|
NSSize strsize;
|
||||||
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
NSMutableDictionary *stringAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
|
||||||
@ -111,7 +130,9 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
[image release];
|
[image release];
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
#else
|
||||||
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
@ -168,6 +189,7 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
- (void) setText:(NSString *)str
|
- (void) setText:(NSString *)str
|
||||||
{
|
{
|
||||||
|
#ifndef GNUSTEP
|
||||||
NSImage *image;
|
NSImage *image;
|
||||||
NSSize strsize;
|
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);
|
//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];
|
[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
|
@end
|
||||||
|
|
||||||
|
@ -139,8 +139,13 @@ NSMutableDictionary* surface_cache;
|
|||||||
errors = nil;
|
errors = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
NSString *app_path = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Contents"] stringByAppendingPathComponent:@"Resources"];
|
NSString *app_path = [[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Contents"] stringByAppendingPathComponent:@"Resources"];
|
||||||
NSString *addon_path = [[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"AddOns"];
|
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];
|
NSMutableArray *file_paths = [NSMutableArray arrayWithCapacity:16];
|
||||||
[file_paths addObject:app_path];
|
[file_paths addObject:app_path];
|
||||||
if (include_addons)
|
if (include_addons)
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
{
|
{
|
||||||
GLOBAL = {
|
GLOBAL = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage);
|
ATTACKED = (
|
||||||
ENTER = (performIdle);
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
broadcastDistressMessage
|
||||||
UPDATE = ();
|
);
|
||||||
|
ENTER = (
|
||||||
|
performIdle
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,14 +1,39 @@
|
|||||||
{
|
{
|
||||||
LOOT = {
|
GLOBAL = {
|
||||||
ATTACKED = (exitAI);
|
ENTER = (
|
||||||
"COLLISION" = (exitAI);
|
"setStateTo: LOOT"
|
||||||
"CARGO_SCOOPED" = (exitAI);
|
);
|
||||||
ENTER = (performCollect);
|
EXIT = (
|
||||||
EXIT = ();
|
);
|
||||||
"HOLD_FULL" = (exitAI);
|
UPDATE = (
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, exitAI);
|
);
|
||||||
"TARGET_LOST" = (exitAI);
|
};
|
||||||
UPDATE = ();
|
LOOT = {
|
||||||
|
ATTACKED = (
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
CARGO_SCOOPED = (
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
COLLISION = (
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
ENTER = (
|
||||||
|
performCollect
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
HOLD_FULL = (
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
TARGET_LOST = (
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: LOOT"); EXIT = (); 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 = {
|
ABORT = {
|
||||||
ENTER = (abortDocking, "setSpeedFactorTo: 0.0", setDestinationToDockingAbort, "setDesiredRangeTo: 500.0", performFaceDestination);
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
"FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination);
|
performIdle,
|
||||||
EXIT = ();
|
"setStateTo: GLOBAL"
|
||||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
);
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
ENTER = (
|
||||||
"DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: GLOBAL");
|
abortDocking,
|
||||||
UPDATE = ();
|
"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 = {
|
GLOBAL = {
|
||||||
ENTER = ("setSpeedTo: 0.0", "setDesiredRangeTo: 5.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
ENTER = (
|
||||||
EXIT = ();
|
"setSpeedTo: 0.0",
|
||||||
UPDATE = ();
|
"setDesiredRangeTo: 5.0",
|
||||||
|
requestDockingCoordinates,
|
||||||
|
"setStateTo: AWAIT_COORDS"
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"GO_TO_WAYPOINT" = {
|
GO_TO_COORDS = {
|
||||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
COLLISION = (
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 0.85", performFlyToRangeFromDestination);
|
"setStateTo: ABORT"
|
||||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GO_TO_STATION");
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
EXIT = ();
|
requestDockingCoordinates,
|
||||||
UPDATE = ();
|
"setStateTo: AWAIT_COORDS"
|
||||||
};
|
);
|
||||||
"GO_TO_START" = {
|
DOCKING_ABORTED = (
|
||||||
ENTER = (
|
"setStateTo: ABORT"
|
||||||
"setSpeedFactorTo: 0.05",
|
);
|
||||||
setDestinationFromCoordinates,
|
ENTER = (
|
||||||
checkCourseToDestination
|
setDestinationFromCoordinates,
|
||||||
);
|
performFaceDestination
|
||||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
);
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 0.25", performFaceDestination);
|
EXIT = (
|
||||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 50.0", "setSpeedFactorTo: 0.85", performFlyToRangeFromDestination);
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
FACING_DESTINATION = (
|
||||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
"setDesiredRangeTo: 50.0",
|
||||||
"COLLISION" = ("setStateTo: ABORT");
|
"setSpeedTo: 100.0",
|
||||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
performFlyToRangeFromDestination
|
||||||
EXIT = ();
|
);
|
||||||
UPDATE = ();
|
FRUSTRATED = (
|
||||||
};
|
performIdle,
|
||||||
"GO_TO_COORDS" = {
|
"pauseAI: 5.0",
|
||||||
ENTER = (setDestinationFromCoordinates, performFaceDestination);
|
setDestinationFromCoordinates,
|
||||||
FRUSTRATED = (performIdle, "pauseAI: 5.0", setDestinationFromCoordinates, performFaceDestination);
|
performFaceDestination
|
||||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 50.0", "setSpeedTo: 100.0", performFlyToRangeFromDestination);
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
RESTART_DOCKING = (
|
||||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
"setStateTo: GLOBAL"
|
||||||
"COLLISION" = ("setStateTo: ABORT");
|
);
|
||||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
UPDATE = (
|
||||||
EXIT = ();
|
);
|
||||||
UPDATE = ();
|
};
|
||||||
};
|
GO_TO_START = {
|
||||||
"GO_TO_STATION" = {
|
COLLISION = (
|
||||||
ENTER = (
|
"setStateTo: ABORT"
|
||||||
setTargetToStation,
|
);
|
||||||
setDestinationFromCoordinates,
|
COURSE_OK = (
|
||||||
performFaceDestination
|
"setSpeedFactorTo: 0.25",
|
||||||
);
|
performFaceDestination
|
||||||
FRUSTRATED = (
|
);
|
||||||
setTargetToStation,
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
setDestinationFromCoordinates,
|
requestDockingCoordinates,
|
||||||
performFaceDestination
|
"setStateTo: AWAIT_COORDS"
|
||||||
);
|
);
|
||||||
"FACING_DESTINATION" = ("setDesiredRangeTo: 10.0", "setSpeedTo: 50.0", performFlyToRangeFromDestination);
|
DOCKING_ABORTED = (
|
||||||
"DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS");
|
"setStateTo: ABORT"
|
||||||
"DOCKING_ABORTED" = ("setStateTo: ABORT");
|
);
|
||||||
"RESTART_DOCKING" = ("setStateTo: GLOBAL");
|
ENTER = (
|
||||||
"COLLISION" = ("setStateTo: ABORT");
|
"setSpeedFactorTo: 0.05",
|
||||||
EXIT = ();
|
setDestinationFromCoordinates,
|
||||||
UPDATE = ();
|
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" = {
|
BEGIN_BUSINESS = {
|
||||||
ENTER = (performEscort);
|
ATTACKED = (
|
||||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
setTargetToPrimaryAggressor,
|
||||||
RESTARTED = ("setStateTo: BEGIN_BUSINESS");
|
"setAITo: interceptAI.plist"
|
||||||
ESCORTING = ("setDesiredRangeTo: 0.0", performEscort);
|
);
|
||||||
"INCOMING_MISSILE" = ("messageMother: INCOMING_MISSILE");
|
ENTER = (
|
||||||
"ATTACKED" = ("messageMother: ATTACKED");
|
escortCheckMother
|
||||||
"NOT_ESCORTING" = ("setStateTo: LOOK_FOR_BUSINESS");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_BUSINESS");
|
ESCORTING = (
|
||||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_BUSINESS");
|
"setDesiredRangeTo: 0.0",
|
||||||
EXIT = ();
|
performEscort
|
||||||
UPDATE = (escortCheckMother, "pauseAI: 15");
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
NOT_ESCORTING = (
|
||||||
|
"setStateTo: LOOK_FOR_BUSINESS"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"BEGIN_BUSINESS" = {
|
FLYING_ESCORT = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
ATTACKED = (
|
||||||
ENTER = (escortCheckMother);
|
"messageMother: ATTACKED"
|
||||||
EXIT = ();
|
);
|
||||||
ESCORTING = ("setDesiredRangeTo: 0.0", performEscort);
|
ENTER = (
|
||||||
"NOT_ESCORTING" = ("setStateTo: LOOK_FOR_BUSINESS");
|
performEscort
|
||||||
UPDATE = ();
|
);
|
||||||
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"LOOK_FOR_BUSINESS" = {
|
GLOBAL = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, "setAITo: interceptAI.plist");
|
ENTER = (
|
||||||
RESTARTED = ("setStateTo: BEGIN_BUSINESS");
|
"setStateTo: BEGIN_BUSINESS"
|
||||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
);
|
||||||
EXIT = ();
|
EXIT = (
|
||||||
ESCORTING = ("setDesiredRangeTo: 0.0", "setStateTo: FLYING_ESCORT");
|
);
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, suggestEscort);
|
UPDATE = (
|
||||||
UPDATE = (scanForFormationLeader, "pauseAI: 15.0");
|
);
|
||||||
|
};
|
||||||
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: BEGIN_BUSINESS"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -1,35 +1,118 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"ENERGY_LOW" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
ENERGY_LOW = (
|
||||||
ENTER = (performAttack);
|
"setSpeedFactorTo: 1.0",
|
||||||
EXIT = ();
|
"pauseAI: 15.0",
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
"setStateTo: EXIT_SYSTEM"
|
||||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
ENTER = (
|
||||||
UPDATE = ();
|
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
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"EXIT_SYSTEM" = {ENTER = (); EXIT = (); UPDATE = (performHyperSpaceExit); };
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
fightOrFleeHostiles
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
);
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
ENTER = (
|
||||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
"setDesiredRangeTo: 25600",
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
performFlee
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile);
|
EXIT = (
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
);
|
||||||
UPDATE = ();
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = (); };
|
|
||||||
}
|
}
|
@ -1,23 +1,73 @@
|
|||||||
{
|
{
|
||||||
"GO_TO_WAYPOINT" = {
|
FLY_HOME = {
|
||||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
ATTACKED = (
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
setTargetToPrimaryAggressor,
|
||||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
broadcastDistressMessage,
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: GLOBAL");
|
"setStateTo: FLEE"
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
COURSE_OK = (
|
||||||
EXIT = ();
|
"setSpeedFactorTo: 1.0",
|
||||||
UPDATE = ();
|
performFlyToRangeFromDestination
|
||||||
};
|
);
|
||||||
"FLY_HOME" = {
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
ENTER = (setCourseToPlanet, checkCourseToDestination);
|
landOnPlanet
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
|
);
|
||||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT");
|
ENTER = (
|
||||||
"DESIRED_RANGE_ACHIEVED" = (landOnPlanet);
|
setCourseToPlanet,
|
||||||
EXIT = ();
|
checkCourseToDestination
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
EXIT = (
|
||||||
UPDATE = (checkCourseToDestination, "pauseAI: 10.0");
|
);
|
||||||
};
|
INCOMING_MISSILE = (
|
||||||
GLOBAL = {ENTER = ("setSpeedFactorTo: 0.25", "setStateTo: FLY_HOME"); EXIT = (); UPDATE = (); };
|
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 = {
|
GLOBAL = {
|
||||||
"DESIRED_RANGE_ACHIEVED" = (landOnPlanet);
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
ENTER = (setCourseToPlanet, performFlyToRangeFromDestination);
|
landOnPlanet
|
||||||
EXIT = ();
|
);
|
||||||
UPDATE = ();
|
ENTER = (
|
||||||
|
setCourseToPlanet,
|
||||||
|
performFlyToRangeFromDestination
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,21 +1,61 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
ENERGY_LOW = (
|
||||||
ENTER = (performAttack);
|
"setStateTo: FLEE"
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
ENTER = (
|
||||||
"TARGET_DESTROYED" = (switchLightsOff, exitAI);
|
performAttack
|
||||||
"TARGET_LOST" = (switchLightsOff, exitAI);
|
);
|
||||||
UPDATE = ();
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
TARGET_DESTROYED = (
|
||||||
|
switchLightsOff,
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
TARGET_LOST = (
|
||||||
|
switchLightsOff,
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
FLEE = {
|
FLEE = {
|
||||||
"ENERGY_FULL" = ("setStateTo: ATTACK_SHIP");
|
ENERGY_FULL = (
|
||||||
"TARGET_LOST" = (switchLightsOff, exitAI);
|
"setStateTo: ATTACK_SHIP"
|
||||||
"TARGET_DESTROYED" = (switchLightsOff, exitAI);
|
);
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
ENTER = (
|
||||||
EXIT = ();
|
"setDesiredRangeTo: 25600",
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
performFlee
|
||||||
UPDATE = ();
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
TARGET_DESTROYED = (
|
||||||
|
switchLightsOff,
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
TARGET_LOST = (
|
||||||
|
switchLightsOff,
|
||||||
|
exitAI
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
|
};
|
||||||
|
GLOBAL = {
|
||||||
|
ENTER = (
|
||||||
|
switchLightsOn,
|
||||||
|
"setStateTo: ATTACK_SHIP"
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = (switchLightsOn, "setStateTo: ATTACK_SHIP"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -1,59 +1,173 @@
|
|||||||
{
|
{
|
||||||
"LOOK_FOR_ROCKS" = {
|
BREAK_ROCKS = {
|
||||||
ENTER = (performIdle);
|
ATTACKED = (
|
||||||
UPDATE = (scanForRocks, "pauseAI: 10.0");
|
setTargetToPrimaryAggressor,
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: BREAK_ROCKS");
|
broadcastDistressMessage,
|
||||||
"NOTHING_FOUND" = ("setStateTo: DOCK_WITH_STATION");
|
"setStateTo: FLEE"
|
||||||
EXIT = ();
|
);
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
ENTER = (
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
performMining
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
TARGET_DESTROYED = (
|
||||||
|
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||||
|
);
|
||||||
|
TARGET_LOST = (
|
||||||
|
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"BREAK_ROCKS" = {
|
COLLECT_STUFF = {
|
||||||
ENTER = (performMining);
|
ATTACKED = (
|
||||||
UPDATE = ();
|
setTargetToPrimaryAggressor,
|
||||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
broadcastDistressMessage,
|
||||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_SPLINTERS");
|
"setStateTo: FLEE"
|
||||||
EXIT = ();
|
);
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
CARGO_SCOOPED = (
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"LOOK_FOR_SPLINTERS" = {
|
DOCK_WITH_STATION = {
|
||||||
ENTER = (performIdle);
|
ATTACKED = (
|
||||||
UPDATE = (scanForRandomLoot, "pauseAI: 10.0");
|
setTargetToPrimaryAggressor,
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: COLLECT_STUFF");
|
broadcastDistressMessage,
|
||||||
"NOTHING_FOUND" = ("setStateTo: LOOK_FOR_ROCKS");
|
"setStateTo: ATTACK_SHIP"
|
||||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
);
|
||||||
EXIT = ();
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
"setAITo: dockingAI.plist"
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
|
ENTER = (
|
||||||
|
setTargetToStation,
|
||||||
|
"setDesiredRangeTo: 5000.0",
|
||||||
|
performIntercept
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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");
|
|
||||||
};
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
ENERGY_FULL = (
|
||||||
EXIT = ();
|
performIdle,
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
"setStateTo: LOOK_FOR_SPLINTERS"
|
||||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle);
|
);
|
||||||
"ENERGY_FULL" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
|
ENTER = (
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
|
"setDesiredRangeTo: 25600",
|
||||||
UPDATE = ();
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setSpeedFactorTo: 0.1", "setStateTo: LOOK_FOR_SPLINTERS"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -1,27 +1,61 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: DETONATE");
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
ENTER = ("setDesiredRangeTo: 25.0", performIntercept);
|
"setStateTo: DETONATE"
|
||||||
EXIT = ();
|
);
|
||||||
"TARGET_DESTROYED" = ("setStateTo: EXPLODE");
|
ECM = (
|
||||||
"TARGET_LOST" = ("setStateTo: EXPLODE");
|
"setStateTo: EXPLODE"
|
||||||
"ECM" = ("setStateTo: EXPLODE");
|
);
|
||||||
"GONE_BEYOND_RANGE" = ("setStateTo: EXPLODE");
|
ENTER = (
|
||||||
UPDATE = ("setDesiredRangeTo: 30000.0", checkDistanceTravelled, "setDesiredRangeTo: 25.0", "pauseAI: 5.0");
|
"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 = {
|
DETONATE = {
|
||||||
ENTER = ("setDesiredRangeTo: 250.0", dealEnergyDamageWithinDesiredRange, becomeExplosion);
|
ENTER = (
|
||||||
EXIT = ();
|
"setDesiredRangeTo: 250.0",
|
||||||
UPDATE = ();
|
dealEnergyDamageWithinDesiredRange,
|
||||||
|
becomeExplosion
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
EXPLODE = {
|
EXPLODE = {
|
||||||
ENTER = (becomeExplosion);
|
ENTER = (
|
||||||
EXIT = ();
|
becomeExplosion
|
||||||
UPDATE = ();
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {
|
GLOBAL = {
|
||||||
ENTER = ("setSpeedFactorTo: 1.0", "setStateTo: ATTACK_SHIP");
|
ENTER = (
|
||||||
EXIT = ();
|
"setSpeedFactorTo: 1.0",
|
||||||
UPDATE = ();
|
"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 = {
|
GLOBAL = {
|
||||||
ENTER = (setPlanetPatrolCoordinates, "setStateTo: AWAIT_COORDS");
|
ENTER = (
|
||||||
EXIT = ();
|
setPlanetPatrolCoordinates,
|
||||||
UPDATE = ();
|
"setStateTo: AWAIT_COORDS"
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"AWAIT_COORDS" = {
|
GO_TO_COORDS = {
|
||||||
"APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS");
|
ATTACKED = (
|
||||||
ENTER = ();
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
"setAITo: interceptAI.plist"
|
||||||
UPDATE = ();
|
);
|
||||||
|
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
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = (); };
|
|
||||||
}
|
}
|
@ -1,30 +1,84 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
ENERGY_LOW = (
|
||||||
ENTER = (performAttack);
|
"setStateTo: FLEE"
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
ENTER = (
|
||||||
"TARGET_DESTROYED" = ("setStateTo: DOCK_WITH_STATION");
|
performAttack
|
||||||
"TARGET_LOST" = ("setStateTo: DOCK_WITH_STATION");
|
);
|
||||||
UPDATE = ();
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = ();
|
|
||||||
};
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
"ENERGY_FULL" = ("setStateTo: ATTACK_SHIP");
|
ENERGY_FULL = (
|
||||||
"TARGET_LOST" = ("setStateTo: DOCK_WITH_STATION");
|
"setStateTo: ATTACK_SHIP"
|
||||||
"TARGET_DESTROYED" = ("setStateTo: DOCK_WITH_STATION");
|
);
|
||||||
ENTER = (performFlee);
|
ENTER = (
|
||||||
EXIT = ();
|
performFlee
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
UPDATE = ();
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
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 = {
|
FLEE = {
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
ENTER = (
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
"setDesiredRangeTo: 25600",
|
||||||
EXIT = ();
|
performFlee
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle, "pauseAI: 30.0");
|
EXIT = (
|
||||||
UPDATE = ();
|
);
|
||||||
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setSpeedTo: 0.0", "setStateTo: LIFT_OFF"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -1,43 +1,126 @@
|
|||||||
{
|
{
|
||||||
"DEFENSE_MODE" = {
|
CHECK_FOR_DEBRIS = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel);
|
ATTACKED = (
|
||||||
ENTER = ();
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
increaseAlertLevel,
|
||||||
"RED_ALERT" = (launchDefenseShip);
|
"setStateTo: DEFENSE_MODE"
|
||||||
"YELLOW_ALERT" = ("setStateTo: IDLE");
|
);
|
||||||
"CONDITION_YELLOW" = ("setStateTo: IDLE");
|
ENTER = (
|
||||||
"CONDITION_GREEN" = ("setStateTo: CHECK_FOR_DEBRIS");
|
);
|
||||||
"INCOMING_MISSILE" = (increaseAlertLevel);
|
EXIT = (
|
||||||
"ENERGY_FULL" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
);
|
||||||
"TARGET_DESTROYED" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
INCOMING_MISSILE = (
|
||||||
"TARGET_LOST" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
fireECM,
|
||||||
"NO_TARGET" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
increaseAlertLevel
|
||||||
UPDATE = ();
|
);
|
||||||
|
NOTHING_FOUND = (
|
||||||
|
"setStateTo: CHECK_FOR_ROCKS",
|
||||||
|
"pauseAI: 20.0"
|
||||||
|
);
|
||||||
|
TARGET_FOUND = (
|
||||||
|
launchScavenger,
|
||||||
|
"setStateTo: IDLE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
scanForLoot,
|
||||||
|
"pauseAI: 20.0"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"CHECK_FOR_DEBRIS" = {
|
CHECK_FOR_ROCKS = {
|
||||||
ENTER = ();
|
ATTACKED = (
|
||||||
UPDATE = (scanForLoot, "pauseAI: 20.0");
|
setTargetToPrimaryAggressor,
|
||||||
"TARGET_FOUND" = (launchScavenger, "setStateTo: IDLE");
|
increaseAlertLevel,
|
||||||
"NOTHING_FOUND" = ("setStateTo: CHECK_FOR_ROCKS", "pauseAI: 20.0");
|
"setStateTo: DEFENSE_MODE"
|
||||||
EXIT = ();
|
);
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
ENTER = (
|
||||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fireECM,
|
||||||
|
increaseAlertLevel
|
||||||
|
);
|
||||||
|
NOTHING_FOUND = (
|
||||||
|
"setStateTo: IDLE",
|
||||||
|
"pauseAI: 20.0"
|
||||||
|
);
|
||||||
|
TARGET_FOUND = (
|
||||||
|
launchMiner,
|
||||||
|
"setStateTo: IDLE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
scanForRocks,
|
||||||
|
"pauseAI: 20.0"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"CHECK_FOR_ROCKS" = {
|
DEFENSE_MODE = {
|
||||||
ENTER = ();
|
ATTACKED = (
|
||||||
UPDATE = (scanForRocks, "pauseAI: 20.0");
|
setTargetToPrimaryAggressor,
|
||||||
"TARGET_FOUND" = (launchMiner, "setStateTo: IDLE");
|
increaseAlertLevel
|
||||||
"NOTHING_FOUND" = ("setStateTo: IDLE", "pauseAI: 20.0");
|
);
|
||||||
EXIT = ();
|
CONDITION_GREEN = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
"setStateTo: CHECK_FOR_DEBRIS"
|
||||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
);
|
||||||
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: IDLE"); EXIT = (); UPDATE = (); };
|
|
||||||
IDLE = {
|
IDLE = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
ATTACKED = (
|
||||||
ENTER = ();
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
increaseAlertLevel,
|
||||||
"INCOMING_MISSILE" = (increaseAlertLevel);
|
"setStateTo: DEFENSE_MODE"
|
||||||
UPDATE = (decreaseAlertLevel, "setStateTo: CHECK_FOR_DEBRIS");
|
);
|
||||||
|
ENTER = (
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
increaseAlertLevel
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
decreaseAlertLevel,
|
||||||
|
"setStateTo: CHECK_FOR_DEBRIS"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,78 +1,276 @@
|
|||||||
{
|
{
|
||||||
"HEAD_FOR_PLANET" = {
|
GLOBAL = {
|
||||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination);
|
ENTER = (
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
"setStateTo: HEAD_FOR_WITCHPOINT"
|
||||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_WITCHPOINT");
|
EXIT = (
|
||||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
);
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
UPDATE = (
|
||||||
"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" = {
|
GO_TO_WAYPOINT1 = {
|
||||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
ACCEPT_DISTRESS_CALL = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
setTargetToFoundTarget,
|
||||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
deployEscorts,
|
||||||
EXIT = ();
|
groupAttackTarget
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
);
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
ATTACKED = (
|
||||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
|
setTargetToPrimaryAggressor,
|
||||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_WITCHPOINT"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -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 = {
|
FLEE = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
fightOrFleeHostiles
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
);
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
ENTER = (
|
||||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
"setDesiredRangeTo: 25600",
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
performFlee
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles);
|
EXIT = (
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
);
|
||||||
UPDATE = ();
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"ATTACK_SHIP" = {
|
GLOBAL = {
|
||||||
"ENERGY_LOW" = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
ENTER = (
|
||||||
ENTER = (broadcastDistressMessage, performAttack);
|
"setStateTo: HEAD_FOR_PLANET"
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, "setStateTo: FLEE");
|
EXIT = (
|
||||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_FOR_PLANET");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: HEAD_FOR_PLANET");
|
UPDATE = (
|
||||||
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = (); };
|
|
||||||
}
|
}
|
@ -1,78 +1,278 @@
|
|||||||
{
|
{
|
||||||
"HEAD_FOR_PLANET" = {
|
GLOBAL = {
|
||||||
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination);
|
ENTER = (
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
|
"setStateTo: HEAD_FOR_SUN"
|
||||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT_PLANET");
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
EXIT = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist");
|
UPDATE = (
|
||||||
"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" = {
|
GO_TO_WAYPOINT_PLANET = {
|
||||||
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
|
ACCEPT_DISTRESS_CALL = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
|
setTargetToFoundTarget,
|
||||||
ENTER = ("setSpeedTo: 0.0", performIdle);
|
deployEscorts,
|
||||||
EXIT = ();
|
groupAttackTarget
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
|
);
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
|
ATTACKED = (
|
||||||
"NOTHING_FOUND" = ("setStateTo: HEAD_FOR_PLANET");
|
setTargetToPrimaryAggressor,
|
||||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: HEAD_FOR_SUN"); EXIT = (); UPDATE = (); };
|
|
||||||
}
|
}
|
@ -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 = {
|
FLEE = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
fightOrFleeHostiles
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
);
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
ENTER = (
|
||||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
"setDesiredRangeTo: 25600",
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
performFlee
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, fightOrFleeHostiles);
|
EXIT = (
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
);
|
||||||
UPDATE = ();
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"ATTACK_SHIP" = {
|
GLOBAL = {
|
||||||
"ENERGY_LOW" = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
ENTER = (
|
||||||
ENTER = (broadcastDistressMessage, performAttack);
|
"setStateTo: HEAD_FOR_SUN"
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile, "setStateTo: FLEE");
|
EXIT = (
|
||||||
"TARGET_DESTROYED" = ("setStateTo: GLOBAL");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: GLOBAL");
|
UPDATE = (
|
||||||
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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); };
|
|
||||||
}
|
}
|
@ -1,42 +1,125 @@
|
|||||||
{
|
{
|
||||||
"LOOK_FOR_STUFF" = {
|
COLLECT_STUFF = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
ATTACKED = (
|
||||||
ENTER = (performIdle);
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
broadcastDistressMessage,
|
||||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
"setStateTo: FLEE"
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: COLLECT_STUFF");
|
CARGO_SCOOPED = (
|
||||||
"NOTHING_FOUND" = ("setStateTo: DOCK_WITH_STATION");
|
checkForFullHold,
|
||||||
UPDATE = (scanForRandomLoot, "pauseAI: 10.0");
|
"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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = ();
|
|
||||||
};
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
"ENERGY_FULL" = (performIdle, "setStateTo: LOOK_FOR_STUFF");
|
ENERGY_FULL = (
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: LOOK_FOR_STUFF");
|
performIdle,
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
"setStateTo: LOOK_FOR_STUFF"
|
||||||
EXIT = ();
|
);
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
ENTER = (
|
||||||
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle);
|
"setDesiredRangeTo: 25600",
|
||||||
UPDATE = ();
|
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 = (); };
|
GLOBAL = {
|
||||||
"COLLECT_STUFF" = {
|
ENTER = (
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, broadcastDistressMessage, "setStateTo: FLEE");
|
"setSpeedFactorTo: 1.0",
|
||||||
"CARGO_SCOOPED" = (checkForFullHold, "setStateTo: LOOK_FOR_STUFF");
|
"setStateTo: LOOK_FOR_STUFF"
|
||||||
FRUSTRATED = ("setStateTo: LOOK_FOR_STUFF");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_STUFF");
|
EXIT = (
|
||||||
"COLLISION" = ("setStateTo: LOOK_FOR_STUFF");
|
);
|
||||||
ENTER = (performCollect);
|
UPDATE = (
|
||||||
EXIT = ();
|
);
|
||||||
"HOLD_FULL" = ("setStateTo: DOCK_WITH_STATION");
|
};
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
LOOK_FOR_STUFF = {
|
||||||
UPDATE = ();
|
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" = {
|
DEFEND_SELF = {
|
||||||
"ENERGY_LOW" = ("setStateTo: FLEE");
|
ENERGY_LOW = (
|
||||||
ENTER = (performAttack);
|
"setStateTo: FLEE"
|
||||||
EXIT = ();
|
);
|
||||||
"TARGET_DESTROYED" = ("setStateTo: TRAVEL_TO_PLANET");
|
ENTER = (
|
||||||
UPDATE = ();
|
performAttack
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
TARGET_DESTROYED = (
|
||||||
|
"setStateTo: TRAVEL_TO_PLANET"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
|
};
|
||||||
|
EXIT_SYSTEM = {
|
||||||
|
ENTER = (
|
||||||
|
performLanding
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"EXIT_SYSTEM" = {ENTER = (performLanding); EXIT = (); UPDATE = (); };
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
ENTER = (performFlee);
|
ENTER = (
|
||||||
EXIT = ();
|
performFlee
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: TRAVEL_TO_PLANET");
|
);
|
||||||
UPDATE = ();
|
EXIT = (
|
||||||
|
);
|
||||||
|
REACHED_SAFETY = (
|
||||||
|
performIdle,
|
||||||
|
"setStateTo: TRAVEL_TO_PLANET"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: TRAVEL_TO_PLANET"); EXIT = (); UPDATE = (); };
|
GLOBAL = {
|
||||||
"TRAVEL_TO_PLANET" = {
|
ENTER = (
|
||||||
ATTACK = (setTargetToPrimaryAggressor, "setStateTo: DEFEND_SELF");
|
"setStateTo: TRAVEL_TO_PLANET"
|
||||||
ENTER = (performFlyToPlanet);
|
);
|
||||||
EXIT = ();
|
EXIT = (
|
||||||
"REACHED_SURFACE" = ("setStateTo: EXIT_SYSTEM");
|
);
|
||||||
UPDATE = ();
|
UPDATE = (
|
||||||
|
);
|
||||||
|
};
|
||||||
|
TRAVEL_TO_PLANET = {
|
||||||
|
ATTACK = (
|
||||||
|
setTargetToPrimaryAggressor,
|
||||||
|
"setStateTo: DEFEND_SELF"
|
||||||
|
);
|
||||||
|
ENTER = (
|
||||||
|
performFlyToPlanet
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
REACHED_SURFACE = (
|
||||||
|
"setStateTo: EXIT_SYSTEM"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,36 +1,108 @@
|
|||||||
{
|
{
|
||||||
"DEFENSE_MODE" = {
|
CHECK_FOR_DEBRIS = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel);
|
ATTACKED = (
|
||||||
ENTER = (checkTargetLegalStatus);
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
increaseAlertLevel,
|
||||||
"RED_ALERT" = (launchPolice);
|
"setStateTo: DEFENSE_MODE"
|
||||||
"YELLOW_ALERT" = ("setStateTo: IDLE");
|
);
|
||||||
"CONDITION_YELLOW" = ("setStateTo: IDLE");
|
ENTER = (
|
||||||
"CONDITION_GREEN" = ("setStateTo: CHECK_FOR_DEBRIS");
|
);
|
||||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
EXIT = (
|
||||||
"TARGET_OFFENDER" = (increaseAlertLevel);
|
);
|
||||||
"TARGET_FUGITIVE" = (increaseAlertLevel);
|
INCOMING_MISSILE = (
|
||||||
"ENERGY_FULL" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
fireECM,
|
||||||
"TARGET_DESTROYED" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
increaseAlertLevel
|
||||||
"TARGET_LOST" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
);
|
||||||
"NO_TARGET" = ("pauseAI: 20.0", "setStateTo: IDLE");
|
NOTHING_FOUND = (
|
||||||
UPDATE = ();
|
"setStateTo: IDLE",
|
||||||
|
"pauseAI: 20.0"
|
||||||
|
);
|
||||||
|
TARGET_FOUND = (
|
||||||
|
launchScavenger,
|
||||||
|
"setStateTo: IDLE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
scanForLoot,
|
||||||
|
"pauseAI: 10.0"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"CHECK_FOR_DEBRIS" = {
|
DEFENSE_MODE = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
ATTACKED = (
|
||||||
ENTER = ();
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
increaseAlertLevel
|
||||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
);
|
||||||
"TARGET_FOUND" = (launchScavenger, "setStateTo: IDLE");
|
CONDITION_GREEN = (
|
||||||
"NOTHING_FOUND" = ("setStateTo: IDLE", "pauseAI: 20.0");
|
"setStateTo: CHECK_FOR_DEBRIS"
|
||||||
UPDATE = (scanForLoot, "pauseAI: 10.0");
|
);
|
||||||
|
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 = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {ENTER = ("setStateTo: IDLE"); EXIT = (); UPDATE = (); };
|
|
||||||
IDLE = {
|
IDLE = {
|
||||||
ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE");
|
ATTACKED = (
|
||||||
ENTER = ();
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
increaseAlertLevel,
|
||||||
"INCOMING_MISSILE" = (fireECM, increaseAlertLevel);
|
"setStateTo: DEFENSE_MODE"
|
||||||
UPDATE = (decreaseAlertLevel, "setStateTo: CHECK_FOR_DEBRIS");
|
);
|
||||||
|
ENTER = (
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fireECM,
|
||||||
|
increaseAlertLevel
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
decreaseAlertLevel,
|
||||||
|
"setStateTo: CHECK_FOR_DEBRIS"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -1,94 +1,219 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"ENERGY_LOW" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: EXIT_SYSTEM");
|
ENERGY_LOW = (
|
||||||
ENTER = (performAttack);
|
"setSpeedFactorTo: 1.0",
|
||||||
EXIT = ();
|
"pauseAI: 15.0",
|
||||||
"INCOMING_MISSILE" = (
|
"setStateTo: EXIT_SYSTEM"
|
||||||
fightOrFleeMissile,
|
);
|
||||||
"setSpeedFactorTo: 1.0",
|
ENTER = (
|
||||||
"pauseAI: 15.0",
|
performAttack
|
||||||
"setStateTo: EXIT_SYSTEM"
|
);
|
||||||
);
|
EXIT = (
|
||||||
"TARGET_DESTROYED" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: HEAD_AWAY_FROM_PLANET");
|
INCOMING_MISSILE = (
|
||||||
UPDATE = ();
|
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
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"EXIT_SYSTEM" = {ENTER = (); EXIT = (); UPDATE = (performHyperSpaceExit); };
|
|
||||||
FLEE = {
|
FLEE = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
ENTER = ("setDesiredRangeTo: 25600", performFlee);
|
fightOrFleeHostiles
|
||||||
EXIT = ();
|
);
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
ENTER = (
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
"setDesiredRangeTo: 25600",
|
||||||
"INCOMING_MISSILE" = (setTargetToPrimaryAggressor, broadcastDistressMessage, fightOrFleeMissile);
|
performFlee
|
||||||
"REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL");
|
);
|
||||||
"TARGET_DESTROYED" = (performIdle, "setStateTo: GLOBAL");
|
EXIT = (
|
||||||
"TARGET_LOST" = (performIdle, "setStateTo: GLOBAL");
|
);
|
||||||
UPDATE = ();
|
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 = (); };
|
GLOBAL = {
|
||||||
"GO_TO_WAYPOINT1" = {
|
ENTER = (
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
"setStateTo: HEAD_FOR_SUN"
|
||||||
"COURSE_OK" = ("setSpeedFactorTo: 0.75", performFlyToRangeFromDestination);
|
);
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_SUN");
|
EXIT = (
|
||||||
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
);
|
||||||
EXIT = ();
|
UPDATE = (
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
);
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
|
||||||
UPDATE = ();
|
|
||||||
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
|
|
||||||
};
|
};
|
||||||
"HEAD_FOR_SUN" = {
|
GO_TO_WAYPOINT1 = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
"COURSE_OK" = (
|
fightOrFleeHostiles
|
||||||
"setDesiredRangeTo: 500.0",
|
);
|
||||||
"setSpeedFactorTo: 0.75",
|
COURSE_OK = (
|
||||||
performFlyToRangeFromDestination
|
"setSpeedFactorTo: 0.75",
|
||||||
);
|
performFlyToRangeFromDestination
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: SKIM_SUN");
|
);
|
||||||
ENTER = (
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
setSunSkimStartCoordinates,
|
"setStateTo: HEAD_FOR_SUN"
|
||||||
setDestinationFromCoordinates,
|
);
|
||||||
checkCourseToDestination
|
ENTER = (
|
||||||
);
|
"setDesiredRangeTo: 50.0",
|
||||||
EXIT = ();
|
checkCourseToDestination
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
);
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
EXIT = (
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
UPDATE = ();
|
FIGHTING = (
|
||||||
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
|
setTargetToPrimaryAggressor,
|
||||||
|
"setStateTo: ATTACK_SHIP"
|
||||||
|
);
|
||||||
|
FLEEING = (
|
||||||
|
setTargetToPrimaryAggressor,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
|
WAYPOINT_SET = (
|
||||||
|
"setDesiredRangeTo: 50.0",
|
||||||
|
checkCourseToDestination
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"LEAVE_SUN" = {
|
HEAD_FOR_SUN = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: EXIT_SYSTEM");
|
fightOrFleeHostiles
|
||||||
ENTER = (
|
);
|
||||||
setSunSkimExitCoordinates,
|
COURSE_OK = (
|
||||||
setDestinationFromCoordinates,
|
"setDesiredRangeTo: 500.0",
|
||||||
"setDesiredRangeTo: 250.0",
|
"setSpeedFactorTo: 0.75",
|
||||||
"setSpeedFactorTo: 1.0",
|
performFlyToRangeFromDestination
|
||||||
performFlyToRangeFromDestination
|
);
|
||||||
);
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
EXIT = ();
|
"setStateTo: SKIM_SUN"
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
);
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
ENTER = (
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
setSunSkimStartCoordinates,
|
||||||
UPDATE = ();
|
setDestinationFromCoordinates,
|
||||||
|
checkCourseToDestination
|
||||||
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
FIGHTING = (
|
||||||
|
setTargetToPrimaryAggressor,
|
||||||
|
"setStateTo: ATTACK_SHIP"
|
||||||
|
);
|
||||||
|
FLEEING = (
|
||||||
|
setTargetToPrimaryAggressor,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
INCOMING_MISSILE = (
|
||||||
|
fightOrFleeMissile,
|
||||||
|
"setStateTo: FLEE"
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
|
WAYPOINT_SET = (
|
||||||
|
"setStateTo: GO_TO_WAYPOINT1"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"SKIM_SUN" = {
|
LEAVE_SUN = {
|
||||||
ATTACKED = (fightOrFleeHostiles);
|
ATTACKED = (
|
||||||
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: LEAVE_SUN");
|
fightOrFleeHostiles
|
||||||
ENTER = (
|
);
|
||||||
setSunSkimEndCoordinates,
|
DESIRED_RANGE_ACHIEVED = (
|
||||||
setDestinationFromCoordinates,
|
"setStateTo: EXIT_SYSTEM"
|
||||||
"setDesiredRangeTo: 100.0",
|
);
|
||||||
"setSpeedFactorTo: 1.0",
|
ENTER = (
|
||||||
performFlyToRangeFromDestination
|
setSunSkimExitCoordinates,
|
||||||
);
|
setDestinationFromCoordinates,
|
||||||
EXIT = ();
|
"setDesiredRangeTo: 250.0",
|
||||||
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
"setSpeedFactorTo: 1.0",
|
||||||
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
|
performFlyToRangeFromDestination
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
|
);
|
||||||
UPDATE = ();
|
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" = {
|
ATTACK_SHIP = {
|
||||||
ENTER = (performAttack);
|
ENTER = (
|
||||||
"THARGOID_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
performAttack
|
||||||
"TARGET_DESTROYED" = ("setStateTo: CHECK_FOR_CONTROL");
|
);
|
||||||
"TARGET_LOST" = ("setStateTo: CHECK_FOR_CONTROL");
|
EXIT = (
|
||||||
UPDATE = (scanForThargoid, "pauseAI: 5.0");
|
);
|
||||||
"NOTHING_FOUND" = ("setStateTo: CHECK_FOR_CONTROL");
|
NOTHING_FOUND = (
|
||||||
EXIT = ();
|
"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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = (); };
|
|
||||||
}
|
}
|
@ -1,43 +1,139 @@
|
|||||||
{
|
{
|
||||||
"ATTACK_SHIP" = {
|
ATTACK_SHIP = {
|
||||||
"ATTACKED" = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
ATTACKED = (
|
||||||
ENTER = (performAttack);
|
setTargetToPrimaryAggressor,
|
||||||
EXIT = ();
|
"setStateTo: ATTACK_SHIP"
|
||||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
|
);
|
||||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
ENTER = (
|
||||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
performAttack
|
||||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
);
|
||||||
UPDATE = (scanForNonThargoid, "pauseAI: 15.0");
|
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"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
"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 = (); };
|
|
||||||
}
|
}
|
@ -1,12 +1,21 @@
|
|||||||
{
|
{
|
||||||
DETONATE = {
|
DETONATE = {
|
||||||
ENTER = (becomeEnergyBlast);
|
ENTER = (
|
||||||
EXIT = ();
|
becomeEnergyBlast
|
||||||
UPDATE = ();
|
);
|
||||||
|
EXIT = (
|
||||||
|
);
|
||||||
|
UPDATE = (
|
||||||
|
);
|
||||||
};
|
};
|
||||||
GLOBAL = {
|
GLOBAL = {
|
||||||
ENTER = ("pauseAI: 5.0");
|
ENTER = (
|
||||||
EXIT = ();
|
"pauseAI: 5.0"
|
||||||
UPDATE = ("setStateTo: DETONATE");
|
);
|
||||||
|
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">
|
Firearms = <*I1>;
|
||||||
<plist version="1.0">
|
Narcotics = <*I2>;
|
||||||
<dict>
|
Slaves = <*I1>;
|
||||||
<key>Firearms</key>
|
}
|
||||||
<integer>1</integer>
|
|
||||||
<key>Narcotics</key>
|
|
||||||
<integer>2</integer>
|
|
||||||
<key>Slaves</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
@ -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">
|
key_autodock = <*I68>;
|
||||||
<plist version="1.0">
|
key_autopilot = <*I99>;
|
||||||
<dict>
|
key_comms_log = <*I96>;
|
||||||
<key>key_roll_left</key>
|
key_decrease_speed = <*I115>;
|
||||||
<integer>253</integer>
|
key_docking_music = <*I115>;
|
||||||
<key>key_roll_right</key>
|
key_dump_cargo = <*I100>;
|
||||||
<integer>252</integer>
|
key_ecm = <*I101>;
|
||||||
<key>key_pitch_forward</key>
|
key_emergency_hyperdrive = <*I72>;
|
||||||
<integer>255</integer>
|
key_energy_bomb = <*I9>;
|
||||||
<key>key_pitch_back</key>
|
key_fire_lasers = <*I97>;
|
||||||
<integer>254</integer>
|
key_galactic_hyperspace = <*I103>;
|
||||||
<key>key_increase_speed</key>
|
key_hyperspace = <*I104>;
|
||||||
<integer>119</integer>
|
key_ident_system = <*I114>;
|
||||||
<key>key_inject_fuel</key>
|
key_increase_speed = <*I119>;
|
||||||
<integer>105</integer>
|
key_inject_fuel = <*I105>;
|
||||||
<key>key_decrease_speed</key>
|
key_jumpdrive = <*I106>;
|
||||||
<integer>115</integer>
|
key_launch_escapepod = <*I27>;
|
||||||
<key>key_fire_lasers</key>
|
key_launch_missile = <*I109>;
|
||||||
<integer>97</integer>
|
key_map_dump = <*I33>;
|
||||||
<key>key_target_missile</key>
|
key_map_home = <*I302>;
|
||||||
<integer>116</integer>
|
key_next_compass_mode = <*I92>;
|
||||||
<key>key_untarget_missile</key>
|
key_next_missile = <*I121>;
|
||||||
<integer>117</integer>
|
key_pitch_back = <*I254>;
|
||||||
<key>key_launch_missile</key>
|
key_pitch_forward = <*I255>;
|
||||||
<integer>109</integer>
|
key_roll_left = <*I253>;
|
||||||
<key>key_next_missile</key>
|
key_roll_right = <*I252>;
|
||||||
<integer>121</integer>
|
key_scanner_zoom = <*I122>;
|
||||||
<key>key_ident_system</key>
|
key_snapshot = <*I42>;
|
||||||
<integer>114</integer>
|
key_target_missile = <*I116>;
|
||||||
<key>key_ecm</key>
|
key_untarget_missile = <*I117>;
|
||||||
<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>
|
|
@ -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">
|
conhunt_short_desc1 = "Hunt for the constrictor stolen from Xeer.";
|
||||||
<plist version="1.0">
|
constrictor_hunt_0_150 = "\"The constrictor was last seen at Reesdice, Commander.\"";
|
||||||
<dict>
|
constrictor_hunt_0_28 = "\"Yep, an unusual new ship had a galactic hyperdrive fitted here, used it too.\"";
|
||||||
<key>constrictor_hunt_0_150</key>
|
constrictor_hunt_0_36 = "\"A strange looking ship left here a while back. Looked bound for Arexe.\"";
|
||||||
<string>"The constrictor was last seen at Reesdice, Commander."</string>
|
constrictor_hunt_1_118 = "\"You can tackle the vicious scoundrel if you like. He's at Orarra.\"";
|
||||||
<key>constrictor_hunt_0_28</key>
|
constrictor_hunt_1_193 = "\"There's a real deadly pirate out there.\"";
|
||||||
<string>"Yep, an unusual new ship had a galactic hyperdrive fitted here, used it too."</string>
|
constrictor_hunt_1_253 = "\"This strange ship dehyped here from nowhere, sun skimmed and jumped. I hear it went to Inbibe.\"";
|
||||||
<key>constrictor_hunt_0_36</key>
|
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.\"";
|
||||||
<string>"A strange looking ship left here a while back. Looked bound for Arexe."</string>
|
constrictor_hunt_1_79 = "\"Rogue ship went for me at Ausar. My lasers didn't even scratch its hull.\"";
|
||||||
<key>constrictor_hunt_1_118</key>
|
constrictor_hunt_1_A = "\"I hear a weird looking ship was seen at Errius.\"";
|
||||||
<string>"You can tackle the vicious scoundrel if you like. He's at Orarra."</string>
|
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";
|
||||||
<key>constrictor_hunt_1_193</key>
|
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.";
|
||||||
<string>"There's a real deadly pirate out there."</string>
|
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.";
|
||||||
<key>constrictor_hunt_1_253</key>
|
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.";
|
||||||
<string>"This strange ship dehyped here from nowhere, sun skimmed and jumped. I hear it went to Inbibe."</string>
|
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!";
|
||||||
<key>constrictor_hunt_1_53</key>
|
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!";
|
||||||
<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>
|
nova_missiondesc = "Get the refugees to safety.";
|
||||||
<key>constrictor_hunt_1_79</key>
|
nova_yesno = {
|
||||||
<string>"Rogue ship went for me at Ausar. My lasers didn't even scratch its hull."</string>
|
NO = "No, sorry.";
|
||||||
<key>constrictor_hunt_1_A</key>
|
YES = "Okay, I'll help.";
|
||||||
<string>"I hear a weird looking ship was seen at Errius."</string>
|
};
|
||||||
<key>constrictor_hunt_brief1</key>
|
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.";
|
||||||
<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>
|
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.";
|
||||||
<key>conhunt_short_desc1</key>
|
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.";
|
||||||
<string>Hunt for the constrictor stolen from Xeer.</string>
|
thargplans_short_desc1 = "Go to Ceerdi for a briefing.";
|
||||||
<key>constrictor_hunt_brief1a</key>
|
thargplans_short_desc2 = "Convey the secret plans to Birera.";
|
||||||
<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>
|
|
@ -1,340 +1,482 @@
|
|||||||
{
|
{
|
||||||
"thargoid_plans" = (
|
"cloaking-device" = (
|
||||||
{
|
{
|
||||||
conditions = (
|
conditions = (
|
||||||
"dockedAtMainStation_bool equal YES",
|
"galaxy_number equal 4",
|
||||||
"galaxy_number equal 2",
|
"status_string equal STATUS_EXITING_WITCHSPACE",
|
||||||
"mission_conhunt equal MISSION_COMPLETE",
|
"mission_cloak undefined"
|
||||||
"mission_thargplans undefined",
|
);
|
||||||
"score_number greaterthan 1280"
|
do = (
|
||||||
);
|
{
|
||||||
do = (
|
conditions = (
|
||||||
setGuiToMissionScreen,
|
"mission_cloakcounter undefined"
|
||||||
"addMissionText: thargoid_plans_intro_brief",
|
);
|
||||||
"set: mission_thargplans PRELUDE",
|
do = (
|
||||||
"setMissionDescription: thargplans_short_desc1"
|
"set: mission_cloakcounter 0"
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
{
|
"increment: mission_cloakcounter",
|
||||||
conditions = (
|
"checkForShips: asp-cloaked",
|
||||||
"status_string equal STATUS_DOCKED",
|
{
|
||||||
"galaxy_number equal 2",
|
conditions = (
|
||||||
"mission_thargplans equal PRELUDE",
|
"shipsFound_number equal 0",
|
||||||
"planet_number equal 83"
|
"mission_cloakcounter greaterthan 6"
|
||||||
);
|
);
|
||||||
do = (
|
do = (
|
||||||
setGuiToMissionScreen,
|
"addShips: asp-cloaked 1",
|
||||||
"showShipModel: thargoid",
|
"addShips: asp-pirate 2"
|
||||||
"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" = (
|
constrictor_hunt = (
|
||||||
{
|
{
|
||||||
conditions = (
|
conditions = (
|
||||||
"dockedAtMainStation_bool equal YES",
|
"dockedAtMainStation_bool equal YES",
|
||||||
"galaxy_number lessthan 2",
|
"galaxy_number lessthan 2",
|
||||||
"mission_conhunt undefined",
|
"mission_conhunt undefined",
|
||||||
"score_number greaterthan 255"
|
"score_number greaterthan 255"
|
||||||
);
|
);
|
||||||
do = (
|
do = (
|
||||||
setGuiToMissionScreen,
|
setGuiToMissionScreen,
|
||||||
"showShipModel: constrictor",
|
"showShipModel: constrictor",
|
||||||
"addMissionText: constrictor_hunt_brief1",
|
"addMissionText: constrictor_hunt_brief1",
|
||||||
{
|
{
|
||||||
conditions = ("galaxy_number equal 0");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_brief1a");
|
"galaxy_number equal 0"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("galaxy_number equal 1");
|
"addMissionText: constrictor_hunt_brief1a"
|
||||||
do = ("addMissionText: constrictor_hunt_brief1b");
|
);
|
||||||
},
|
},
|
||||||
"set: mission_conhunt STAGE_1",
|
{
|
||||||
"setMissionDescription: conhunt_short_desc1"
|
conditions = (
|
||||||
);
|
"galaxy_number equal 1"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = (
|
"addMissionText: constrictor_hunt_brief1b"
|
||||||
"mission_conhunt equal STAGE_1",
|
);
|
||||||
"gui_screen_string equal GUI_SCREEN_SYSTEM_DATA"
|
},
|
||||||
);
|
"set: mission_conhunt STAGE_1",
|
||||||
do = (
|
"setMissionDescription: conhunt_short_desc1"
|
||||||
{
|
);
|
||||||
conditions = ("galaxy_number equal 0");
|
},
|
||||||
do = (
|
{
|
||||||
{
|
conditions = (
|
||||||
conditions = ("planet_number equal 150");
|
"mission_conhunt equal STAGE_1",
|
||||||
do = ("addMissionText: constrictor_hunt_0_150");
|
"gui_screen_string equal GUI_SCREEN_SYSTEM_DATA"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 36");
|
{
|
||||||
do = ("addMissionText: constrictor_hunt_0_36");
|
conditions = (
|
||||||
},
|
"galaxy_number equal 0"
|
||||||
{
|
);
|
||||||
conditions = ("planet_number equal 28");
|
do = (
|
||||||
do = ("addMissionText: constrictor_hunt_0_28");
|
{
|
||||||
}
|
conditions = (
|
||||||
);
|
"planet_number equal 150"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("galaxy_number equal 1");
|
"addMissionText: constrictor_hunt_0_150"
|
||||||
do = (
|
);
|
||||||
{
|
},
|
||||||
conditions = ("planet_number equal 3");
|
{
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
conditions = (
|
||||||
},
|
"planet_number equal 36"
|
||||||
{
|
);
|
||||||
conditions = ("planet_number equal 5");
|
do = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"addMissionText: constrictor_hunt_0_36"
|
||||||
},
|
);
|
||||||
{
|
},
|
||||||
conditions = ("planet_number equal 16");
|
{
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
conditions = (
|
||||||
},
|
"planet_number equal 28"
|
||||||
{
|
);
|
||||||
conditions = ("planet_number equal 26");
|
do = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"addMissionText: constrictor_hunt_0_28"
|
||||||
},
|
);
|
||||||
{
|
}
|
||||||
conditions = ("planet_number equal 32");
|
);
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
},
|
||||||
},
|
{
|
||||||
{
|
conditions = (
|
||||||
conditions = ("planet_number equal 68");
|
"galaxy_number equal 1"
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
);
|
||||||
},
|
do = (
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 106");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"planet_number equal 3"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 107");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 162");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"planet_number equal 5"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 164");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 184");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"planet_number equal 16"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 192");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 220");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_A");
|
"planet_number equal 26"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 253");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_253");
|
);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 79");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_79");
|
"planet_number equal 32"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 53");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_53");
|
);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
conditions = ("planet_number equal 118");
|
conditions = (
|
||||||
do = ("addMissionText: constrictor_hunt_1_118");
|
"planet_number equal 68"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = ("planet_number equal 193");
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
do = ("addMissionText: constrictor_hunt_1_193");
|
);
|
||||||
}
|
},
|
||||||
);
|
{
|
||||||
}
|
conditions = (
|
||||||
);
|
"planet_number equal 106"
|
||||||
},
|
);
|
||||||
{
|
do = (
|
||||||
conditions = (
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
"mission_conhunt equal STAGE_1",
|
);
|
||||||
"status_string equal STATUS_IN_FLIGHT",
|
},
|
||||||
"galaxy_number equal 1",
|
{
|
||||||
"planet_number equal 193"
|
conditions = (
|
||||||
);
|
"planet_number equal 107"
|
||||||
do = (
|
);
|
||||||
"checkForShips: constrictor",
|
do = (
|
||||||
{
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
conditions = ("shipsFound_number equal 0");
|
);
|
||||||
do = ("addShips: constrictor 1");
|
},
|
||||||
}
|
{
|
||||||
);
|
conditions = (
|
||||||
},
|
"planet_number equal 162"
|
||||||
{
|
);
|
||||||
conditions = (
|
do = (
|
||||||
"dockedAtMainStation_bool equal YES",
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
"mission_conhunt equal CONSTRICTOR_DESTROYED"
|
);
|
||||||
);
|
},
|
||||||
do = (
|
{
|
||||||
setGuiToMissionScreen,
|
conditions = (
|
||||||
"showShipModel: constrictor",
|
"planet_number equal 164"
|
||||||
"awardCredits: 5000",
|
);
|
||||||
"setLegalStatus: 0",
|
do = (
|
||||||
"awardShipKills: 256",
|
"addMissionText: constrictor_hunt_1_A"
|
||||||
"addMissionText: constrictor_hunt_debrief",
|
);
|
||||||
"set: mission_conhunt MISSION_COMPLETE",
|
},
|
||||||
clearMissionDescription
|
{
|
||||||
);
|
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 = (
|
nova = (
|
||||||
{
|
{
|
||||||
conditions = ("galaxy_number equal 3", "mission_novacount undefined");
|
conditions = (
|
||||||
do = ("set: mission_novacount 0");
|
"galaxy_number equal 3",
|
||||||
},
|
"mission_novacount undefined"
|
||||||
{
|
);
|
||||||
conditions = ("galaxy_number equal 3", "status_string equal STATUS_EXITING_WITCHSPACE");
|
do = (
|
||||||
do = (
|
"set: mission_novacount 0"
|
||||||
"increment: mission_novacount",
|
);
|
||||||
"testForEquipment: EQ_GAL_DRIVE",
|
},
|
||||||
{
|
{
|
||||||
conditions = (
|
conditions = (
|
||||||
"foundEquipment_bool equal YES",
|
"galaxy_number equal 3",
|
||||||
"mission_novacount greaterthan 3",
|
"status_string equal STATUS_EXITING_WITCHSPACE"
|
||||||
"mission_nova undefined"
|
);
|
||||||
);
|
do = (
|
||||||
do = (
|
"increment: mission_novacount",
|
||||||
"set: mission_nova 2HRS_TO_ZERO",
|
"testForEquipment: EQ_GAL_DRIVE",
|
||||||
"setFuelLeak: 25",
|
{
|
||||||
"setSunNovaIn: 7200",
|
conditions = (
|
||||||
"setPlanetinfo: market = none",
|
"foundEquipment_bool equal YES",
|
||||||
"setPlanetinfo: sun_gone_nova = YES"
|
"mission_novacount greaterthan 3",
|
||||||
);
|
"mission_nova undefined"
|
||||||
}
|
);
|
||||||
);
|
do = (
|
||||||
},
|
"set: mission_nova 2HRS_TO_ZERO",
|
||||||
{
|
"setFuelLeak: 25",
|
||||||
conditions = ("mission_nova equal 2HRS_TO_ZERO", "status_string equal STATUS_IN_FLIGHT");
|
"setSunNovaIn: 7200",
|
||||||
do = (
|
"setPlanetinfo: market = none",
|
||||||
{conditions = ("sunWillGoNova_bool equal NO"); do = ("reset: mission_nova"); },
|
"setPlanetinfo: sun_gone_nova = YES"
|
||||||
{conditions = ("sunWillGoNova_bool equal YES"); do = (sendAllShipsAway); }
|
);
|
||||||
);
|
}
|
||||||
},
|
);
|
||||||
{
|
},
|
||||||
conditions = (
|
{
|
||||||
"mission_nova equal 2HRS_TO_ZERO",
|
conditions = (
|
||||||
"dockedAtMainStation_bool equal YES",
|
"mission_nova equal 2HRS_TO_ZERO",
|
||||||
"missionChoice_string undefined"
|
"status_string equal STATUS_IN_FLIGHT"
|
||||||
);
|
);
|
||||||
do = (
|
do = (
|
||||||
"setMissionImage: solar.png",
|
{
|
||||||
setGuiToMissionScreen,
|
conditions = (
|
||||||
"addMissionText: nova_1",
|
"sunWillGoNova_bool equal NO"
|
||||||
"setMissionChoices: nova_yesno"
|
);
|
||||||
);
|
do = (
|
||||||
},
|
"reset: mission_nova"
|
||||||
{
|
);
|
||||||
conditions = (
|
},
|
||||||
"mission_nova equal 2HRS_TO_ZERO",
|
{
|
||||||
"dockedAtMainStation_bool equal YES",
|
conditions = (
|
||||||
"missionChoice_string equal YES"
|
"sunWillGoNova_bool equal YES"
|
||||||
);
|
);
|
||||||
do = (
|
do = (
|
||||||
"useSpecialCargo: A hold full of %I refugees.",
|
sendAllShipsAway
|
||||||
"setMissionDescription: nova_missiondesc",
|
);
|
||||||
launchFromStation,
|
}
|
||||||
"set: mission_nova NOVA_ESCAPE_HERO",
|
);
|
||||||
"setSunNovaIn: 12"
|
},
|
||||||
);
|
{
|
||||||
},
|
conditions = (
|
||||||
{
|
"mission_nova equal 2HRS_TO_ZERO",
|
||||||
conditions = (
|
"dockedAtMainStation_bool equal YES",
|
||||||
"mission_nova equal 2HRS_TO_ZERO",
|
"missionChoice_string undefined"
|
||||||
"dockedAtMainStation_bool equal YES",
|
);
|
||||||
"missionChoice_string equal NO"
|
do = (
|
||||||
);
|
"setMissionImage: solar.png",
|
||||||
do = (
|
setGuiToMissionScreen,
|
||||||
launchFromStation,
|
"addMissionText: nova_1",
|
||||||
"set: mission_nova NOVA_ESCAPE_COWARD",
|
"setMissionChoices: nova_yesno"
|
||||||
"commsMessage: Coward! You chose not to help the refugees!",
|
);
|
||||||
"setSunNovaIn: 3"
|
},
|
||||||
);
|
{
|
||||||
},
|
conditions = (
|
||||||
{
|
"mission_nova equal 2HRS_TO_ZERO",
|
||||||
conditions = ("mission_nova equal NOVA_ESCAPE_HERO", "dockedAtMainStation_bool equal YES");
|
"dockedAtMainStation_bool equal YES",
|
||||||
do = (
|
"missionChoice_string equal YES"
|
||||||
removeAllCargo,
|
);
|
||||||
"awardCargo: 100 Gem-Stones",
|
do = (
|
||||||
"setMissionImage: solar.png",
|
"useSpecialCargo: A hold full of %I refugees.",
|
||||||
setGuiToMissionScreen,
|
"setMissionDescription: nova_missiondesc",
|
||||||
"addMissionText: nova_hero",
|
launchFromStation,
|
||||||
"set: mission_nova NOVA_HERO",
|
"set: mission_nova NOVA_ESCAPE_HERO",
|
||||||
clearMissionDescription
|
"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" = (
|
thargoid_plans = (
|
||||||
{
|
{
|
||||||
conditions = (
|
conditions = (
|
||||||
"galaxy_number equal 4",
|
"dockedAtMainStation_bool equal YES",
|
||||||
"status_string equal STATUS_EXITING_WITCHSPACE",
|
"galaxy_number equal 2",
|
||||||
"mission_cloak undefined"
|
"mission_conhunt equal MISSION_COMPLETE",
|
||||||
);
|
"mission_thargplans undefined",
|
||||||
do = (
|
"score_number greaterthan 1280"
|
||||||
{
|
);
|
||||||
conditions = ("mission_cloakcounter undefined");
|
do = (
|
||||||
do = ("set: mission_cloakcounter 0");
|
setGuiToMissionScreen,
|
||||||
},
|
"addMissionText: thargoid_plans_intro_brief",
|
||||||
"increment: mission_cloakcounter",
|
"set: mission_thargplans PRELUDE",
|
||||||
"checkForShips: asp-cloaked",
|
"setMissionDescription: thargplans_short_desc1"
|
||||||
{
|
);
|
||||||
conditions = ("shipsFound_number equal 0", "mission_cloakcounter greaterthan 6");
|
},
|
||||||
do = ("addShips: asp-cloaked 1", "addShips: asp-pirate 2");
|
{
|
||||||
}
|
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">
|
"adder-player" = {
|
||||||
<plist version="1.0">
|
chance = <*R0.25>;
|
||||||
<dict>
|
optional_equipment = (
|
||||||
<key>adder-player</key>
|
EQ_ECM,
|
||||||
<dict>
|
EQ_FUEL_SCOOPS,
|
||||||
<key>chance</key>
|
EQ_ESCAPE_POD,
|
||||||
<real>0.25</real>
|
EQ_ENERGY_BOMB,
|
||||||
<key>optional_equipment</key>
|
EQ_ENERGY_UNIT,
|
||||||
<array>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_ECM</string>
|
EQ_DOCK_COMP,
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_ESCAPE_POD</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
EQ_FUEL_INJECTION,
|
||||||
<string>EQ_DOCK_COMP</string>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
EQ_SHIELD_BOOSTER
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
);
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
price = <*I65000>;
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
standard_equipment = {
|
||||||
<string>EQ_MULTI_TARGET</string>
|
extras = (
|
||||||
<string>EQ_GAL_DRIVE</string>
|
);
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
</array>
|
missiles = <*I1>;
|
||||||
<key>price</key>
|
};
|
||||||
<integer>65000</integer>
|
techlevel = <*I4>;
|
||||||
<key>standard_equipment</key>
|
weapon_facings = <*I1>;
|
||||||
<dict>
|
};
|
||||||
<key>extras</key>
|
"anaconda-player" = {
|
||||||
<array/>
|
chance = <*R0.125>;
|
||||||
<key>forward_weapon_type</key>
|
optional_equipment = (
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_ECM,
|
||||||
<key>missiles</key>
|
EQ_FUEL_SCOOPS,
|
||||||
<integer>1</integer>
|
EQ_PASSENGER_BERTH,
|
||||||
</dict>
|
EQ_ESCAPE_POD,
|
||||||
<key>techlevel</key>
|
EQ_ENERGY_BOMB,
|
||||||
<integer>4</integer>
|
EQ_ENERGY_UNIT,
|
||||||
<key>weapon_facings</key>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<integer>1</integer>
|
EQ_DOCK_COMP,
|
||||||
</dict>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<key>anaconda-player</key>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<dict>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<key>chance</key>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<real>0.125</real>
|
EQ_FUEL_INJECTION,
|
||||||
<key>optional_equipment</key>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<array>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_ECM</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
EQ_ADVANCED_COMPASS,
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
EQ_SHIELD_BOOSTER
|
||||||
<string>EQ_ESCAPE_POD</string>
|
);
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
price = <*I650000>;
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
standard_equipment = {
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
extras = (
|
||||||
<string>EQ_DOCK_COMP</string>
|
);
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
missiles = <*I3>;
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
};
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
techlevel = <*I8>;
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
weapon_facings = <*I15>;
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
};
|
||||||
<string>EQ_MULTI_TARGET</string>
|
"asp-player" = {
|
||||||
<string>EQ_GAL_DRIVE</string>
|
chance = <*R0.5>;
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
optional_equipment = (
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
EQ_ECM,
|
||||||
</array>
|
EQ_ESCAPE_POD,
|
||||||
<key>price</key>
|
EQ_ENERGY_BOMB,
|
||||||
<integer>650000</integer>
|
EQ_ENERGY_UNIT,
|
||||||
<key>standard_equipment</key>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<dict>
|
EQ_DOCK_COMP,
|
||||||
<key>extras</key>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<array/>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<key>forward_weapon_type</key>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_FUEL_INJECTION,
|
||||||
<key>missiles</key>
|
EQ_GAL_DRIVE,
|
||||||
<integer>3</integer>
|
EQ_ADVANCED_COMPASS,
|
||||||
</dict>
|
EQ_SHIELD_BOOSTER,
|
||||||
<key>techlevel</key>
|
EQ_NAVAL_SHIELD_BOOSTER
|
||||||
<integer>8</integer>
|
);
|
||||||
<key>weapon_facings</key>
|
price = <*I375000>;
|
||||||
<integer>15</integer>
|
standard_equipment = {
|
||||||
</dict>
|
extras = (
|
||||||
<key>asp-player</key>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<dict>
|
EQ_MULTI_TARGET
|
||||||
<key>chance</key>
|
);
|
||||||
<real>0.5</real>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<key>optional_equipment</key>
|
missiles = <*I1>;
|
||||||
<array>
|
};
|
||||||
<string>EQ_ECM</string>
|
techlevel = <*I10>;
|
||||||
<string>EQ_ESCAPE_POD</string>
|
weapon_facings = <*I3>;
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
};
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
"boa-mk2-player" = {
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
chance = <*R0.325>;
|
||||||
<string>EQ_DOCK_COMP</string>
|
optional_equipment = (
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_ECM,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_FUEL_SCOOPS,
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
EQ_ESCAPE_POD,
|
||||||
<string>EQ_GAL_DRIVE</string>
|
EQ_ENERGY_BOMB,
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
EQ_ENERGY_UNIT,
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
EQ_DOCK_COMP,
|
||||||
</array>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<key>price</key>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<integer>375000</integer>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<key>standard_equipment</key>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<dict>
|
EQ_FUEL_INJECTION,
|
||||||
<key>extras</key>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<array>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_MULTI_TARGET</string>
|
EQ_ADVANCED_COMPASS,
|
||||||
</array>
|
EQ_SHIELD_BOOSTER,
|
||||||
<key>forward_weapon_type</key>
|
EQ_NAVAL_SHIELD_BOOSTER
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
);
|
||||||
<key>missiles</key>
|
price = <*I495000>;
|
||||||
<integer>1</integer>
|
standard_equipment = {
|
||||||
</dict>
|
extras = (
|
||||||
<key>techlevel</key>
|
);
|
||||||
<integer>10</integer>
|
forward_weapon_type = EQ_WEAPON_BEAM_LASER;
|
||||||
<key>weapon_facings</key>
|
missiles = <*I5>;
|
||||||
<integer>3</integer>
|
};
|
||||||
</dict>
|
techlevel = <*I7>;
|
||||||
<key>boa-player</key>
|
weapon_facings = <*I15>;
|
||||||
<dict>
|
};
|
||||||
<key>chance</key>
|
"boa-player" = {
|
||||||
<real>0.375</real>
|
chance = <*R0.375>;
|
||||||
<key>optional_equipment</key>
|
optional_equipment = (
|
||||||
<array>
|
EQ_ECM,
|
||||||
<string>EQ_ECM</string>
|
EQ_FUEL_SCOOPS,
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
EQ_ESCAPE_POD,
|
||||||
<string>EQ_ESCAPE_POD</string>
|
EQ_ENERGY_BOMB,
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
EQ_ENERGY_UNIT,
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
EQ_DOCK_COMP,
|
||||||
<string>EQ_DOCK_COMP</string>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
EQ_FUEL_INJECTION,
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_MULTI_TARGET</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_GAL_DRIVE</string>
|
EQ_ADVANCED_COMPASS,
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
EQ_SHIELD_BOOSTER
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
);
|
||||||
</array>
|
price = <*I450000>;
|
||||||
<key>price</key>
|
standard_equipment = {
|
||||||
<integer>450000</integer>
|
extras = (
|
||||||
<key>standard_equipment</key>
|
);
|
||||||
<dict>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<key>extras</key>
|
missiles = <*I3>;
|
||||||
<array/>
|
};
|
||||||
<key>forward_weapon_type</key>
|
techlevel = <*I6>;
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
weapon_facings = <*I15>;
|
||||||
<key>missiles</key>
|
};
|
||||||
<integer>3</integer>
|
"cobra3-player" = {
|
||||||
</dict>
|
chance = <*R0.5>;
|
||||||
<key>techlevel</key>
|
optional_equipment = (
|
||||||
<integer>6</integer>
|
EQ_CARGO_BAY,
|
||||||
<key>weapon_facings</key>
|
EQ_ECM,
|
||||||
<integer>15</integer>
|
EQ_FUEL_SCOOPS,
|
||||||
</dict>
|
EQ_PASSENGER_BERTH,
|
||||||
<key>boa-mk2-player</key>
|
EQ_ESCAPE_POD,
|
||||||
<dict>
|
EQ_ENERGY_BOMB,
|
||||||
<key>chance</key>
|
EQ_ENERGY_UNIT,
|
||||||
<real>0.325</real>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<key>optional_equipment</key>
|
EQ_DOCK_COMP,
|
||||||
<array>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_ECM</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<string>EQ_ESCAPE_POD</string>
|
EQ_FUEL_INJECTION,
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_DOCK_COMP</string>
|
EQ_ADVANCED_COMPASS,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_SHIELD_BOOSTER,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_NAVAL_SHIELD_BOOSTER
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
);
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
price = <*I150000>;
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
standard_equipment = {
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
extras = (
|
||||||
<string>EQ_MULTI_TARGET</string>
|
);
|
||||||
<string>EQ_GAL_DRIVE</string>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
missiles = <*I3>;
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
};
|
||||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
techlevel = <*I6>;
|
||||||
</array>
|
weapon_facings = <*I15>;
|
||||||
<key>price</key>
|
};
|
||||||
<integer>495000</integer>
|
"cobramk1-player" = {
|
||||||
<key>standard_equipment</key>
|
chance = <*R0.375>;
|
||||||
<dict>
|
optional_equipment = (
|
||||||
<key>extras</key>
|
EQ_ECM,
|
||||||
<array/>
|
EQ_FUEL_SCOOPS,
|
||||||
<key>forward_weapon_type</key>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_ESCAPE_POD,
|
||||||
<key>missiles</key>
|
EQ_ENERGY_BOMB,
|
||||||
<integer>5</integer>
|
EQ_ENERGY_UNIT,
|
||||||
</dict>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<key>techlevel</key>
|
EQ_DOCK_COMP,
|
||||||
<integer>7</integer>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<key>weapon_facings</key>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<integer>15</integer>
|
EQ_WEAPON_MINING_LASER,
|
||||||
</dict>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<key>cobra3-player</key>
|
EQ_FUEL_INJECTION,
|
||||||
<dict>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<key>chance</key>
|
EQ_MULTI_TARGET,
|
||||||
<real>0.5</real>
|
EQ_GAL_DRIVE,
|
||||||
<key>optional_equipment</key>
|
EQ_SHIELD_BOOSTER
|
||||||
<array>
|
);
|
||||||
<string>EQ_CARGO_BAY</string>
|
price = <*I100000>;
|
||||||
<string>EQ_ECM</string>
|
standard_equipment = {
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
extras = (
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
);
|
||||||
<string>EQ_ESCAPE_POD</string>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
missiles = <*I1>;
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
};
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
techlevel = <*I4>;
|
||||||
<string>EQ_DOCK_COMP</string>
|
weapon_facings = <*I3>;
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
};
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
"ferdelance-player" = {
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
chance = <*R0.25>;
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
optional_equipment = (
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
EQ_ENERGY_BOMB,
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
EQ_ENERGY_UNIT,
|
||||||
<string>EQ_MULTI_TARGET</string>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_GAL_DRIVE</string>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
</array>
|
EQ_GAL_DRIVE,
|
||||||
<key>price</key>
|
EQ_NAVAL_SHIELD_BOOSTER
|
||||||
<integer>150000</integer>
|
);
|
||||||
<key>standard_equipment</key>
|
price = <*I485000>;
|
||||||
<dict>
|
standard_equipment = {
|
||||||
<key>extras</key>
|
extras = (
|
||||||
<array/>
|
EQ_PASSENGER_BERTH,
|
||||||
<key>forward_weapon_type</key>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_FUEL_SCOOPS,
|
||||||
<key>missiles</key>
|
EQ_ECM,
|
||||||
<integer>3</integer>
|
EQ_ESCAPE_POD,
|
||||||
</dict>
|
EQ_ADVANCED_COMPASS,
|
||||||
<key>techlevel</key>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<integer>6</integer>
|
EQ_FUEL_INJECTION,
|
||||||
<key>weapon_facings</key>
|
EQ_MULTI_TARGET,
|
||||||
<integer>15</integer>
|
EQ_DOCK_COMP,
|
||||||
</dict>
|
EQ_SHIELD_BOOSTER
|
||||||
<key>cobramk1-player</key>
|
);
|
||||||
<dict>
|
forward_weapon_type = EQ_WEAPON_BEAM_LASER;
|
||||||
<key>chance</key>
|
missiles = <*I3>;
|
||||||
<real>0.375</real>
|
};
|
||||||
<key>optional_equipment</key>
|
techlevel = <*I8>;
|
||||||
<array>
|
weapon_facings = <*I15>;
|
||||||
<string>EQ_ECM</string>
|
};
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
"moray-player" = {
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
chance = <*R0.375>;
|
||||||
<string>EQ_ESCAPE_POD</string>
|
optional_equipment = (
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
EQ_ECM,
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
EQ_FUEL_SCOOPS,
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_DOCK_COMP</string>
|
EQ_ESCAPE_POD,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_ENERGY_BOMB,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_ENERGY_UNIT,
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
EQ_DOCK_COMP,
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_MULTI_TARGET</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<string>EQ_GAL_DRIVE</string>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
EQ_FUEL_INJECTION,
|
||||||
</array>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<key>price</key>
|
EQ_MULTI_TARGET,
|
||||||
<integer>100000</integer>
|
EQ_GAL_DRIVE,
|
||||||
<key>standard_equipment</key>
|
EQ_ADVANCED_COMPASS,
|
||||||
<dict>
|
EQ_SHIELD_BOOSTER,
|
||||||
<key>extras</key>
|
EQ_NAVAL_SHIELD_BOOSTER
|
||||||
<array/>
|
);
|
||||||
<key>forward_weapon_type</key>
|
price = <*I125000>;
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
standard_equipment = {
|
||||||
<key>missiles</key>
|
extras = (
|
||||||
<integer>1</integer>
|
);
|
||||||
</dict>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<key>techlevel</key>
|
missiles = <*I2>;
|
||||||
<integer>4</integer>
|
};
|
||||||
<key>weapon_facings</key>
|
techlevel = <*I5>;
|
||||||
<integer>3</integer>
|
weapon_facings = <*I15>;
|
||||||
</dict>
|
};
|
||||||
<key>ferdelance-player</key>
|
"morayMED-player" = {
|
||||||
<dict>
|
chance = <*R0.275>;
|
||||||
<key>chance</key>
|
optional_equipment = (
|
||||||
<real>0.25</real>
|
EQ_CARGO_BAY,
|
||||||
<key>optional_equipment</key>
|
EQ_ECM,
|
||||||
<array>
|
EQ_FUEL_SCOOPS,
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
EQ_PASSENGER_BERTH,
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
EQ_ESCAPE_POD,
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
EQ_ENERGY_BOMB,
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
EQ_ENERGY_UNIT,
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
EQ_DOCK_COMP,
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<string>EQ_GAL_DRIVE</string>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<string>EQ_NAVAL_SHIELD_BOOSTER</string>
|
EQ_WEAPON_MINING_LASER,
|
||||||
</array>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<key>price</key>
|
EQ_FUEL_INJECTION,
|
||||||
<integer>485000</integer>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<key>standard_equipment</key>
|
EQ_MULTI_TARGET,
|
||||||
<dict>
|
EQ_GAL_DRIVE,
|
||||||
<key>extras</key>
|
EQ_ADVANCED_COMPASS,
|
||||||
<array>
|
EQ_SHIELD_BOOSTER
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
);
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
price = <*I145000>;
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
standard_equipment = {
|
||||||
<string>EQ_ECM</string>
|
extras = (
|
||||||
<string>EQ_ESCAPE_POD</string>
|
);
|
||||||
<string>EQ_ADVANCED_COMPASS</string>
|
forward_weapon_type = EQ_WEAPON_NONE;
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
missiles = <*I0>;
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
};
|
||||||
<string>EQ_MULTI_TARGET</string>
|
techlevel = <*I6>;
|
||||||
<string>EQ_DOCK_COMP</string>
|
weapon_facings = <*I1>;
|
||||||
<string>EQ_SHIELD_BOOSTER</string>
|
};
|
||||||
</array>
|
"python-player" = {
|
||||||
<key>forward_weapon_type</key>
|
chance = <*R0.5>;
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
optional_equipment = (
|
||||||
<key>missiles</key>
|
EQ_CARGO_BAY,
|
||||||
<integer>3</integer>
|
EQ_ECM,
|
||||||
</dict>
|
EQ_FUEL_SCOOPS,
|
||||||
<key>techlevel</key>
|
EQ_PASSENGER_BERTH,
|
||||||
<integer>8</integer>
|
EQ_ESCAPE_POD,
|
||||||
<key>weapon_facings</key>
|
EQ_ENERGY_BOMB,
|
||||||
<integer>15</integer>
|
EQ_ENERGY_UNIT,
|
||||||
</dict>
|
EQ_NAVAL_ENERGY_UNIT,
|
||||||
<key>moray-player</key>
|
EQ_DOCK_COMP,
|
||||||
<dict>
|
EQ_WEAPON_PULSE_LASER,
|
||||||
<key>chance</key>
|
EQ_WEAPON_BEAM_LASER,
|
||||||
<real>0.375</real>
|
EQ_WEAPON_MINING_LASER,
|
||||||
<key>optional_equipment</key>
|
EQ_WEAPON_MILITARY_LASER,
|
||||||
<array>
|
EQ_FUEL_INJECTION,
|
||||||
<string>EQ_ECM</string>
|
EQ_SCANNER_SHOW_MISSILE_TARGET,
|
||||||
<string>EQ_FUEL_SCOOPS</string>
|
EQ_MULTI_TARGET,
|
||||||
<string>EQ_PASSENGER_BERTH</string>
|
EQ_GAL_DRIVE,
|
||||||
<string>EQ_ESCAPE_POD</string>
|
EQ_SHIELD_BOOSTER
|
||||||
<string>EQ_ENERGY_BOMB</string>
|
);
|
||||||
<string>EQ_ENERGY_UNIT</string>
|
price = <*I200000>;
|
||||||
<string>EQ_NAVAL_ENERGY_UNIT</string>
|
standard_equipment = {
|
||||||
<string>EQ_DOCK_COMP</string>
|
extras = (
|
||||||
<string>EQ_WEAPON_PULSE_LASER</string>
|
);
|
||||||
<string>EQ_WEAPON_BEAM_LASER</string>
|
forward_weapon_type = EQ_WEAPON_PULSE_LASER;
|
||||||
<string>EQ_WEAPON_MINING_LASER</string>
|
missiles = <*I1>;
|
||||||
<string>EQ_WEAPON_MILITARY_LASER</string>
|
};
|
||||||
<string>EQ_FUEL_INJECTION</string>
|
techlevel = <*I4>;
|
||||||
<string>EQ_SCANNER_SHOW_MISSILE_TARGET</string>
|
weapon_facings = <*I15>;
|
||||||
<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>
|
|
@ -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">
|
CFBundleDevelopmentRegion = English;
|
||||||
<plist version="1.0">
|
CFBundleDocumentTypes = (
|
||||||
<dict>
|
{
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
CFBundleTypeExtensions = (
|
||||||
<string>English</string>
|
"oolite-save"
|
||||||
<key>CFBundleDocumentTypes</key>
|
);
|
||||||
<array>
|
CFBundleTypeIconFile = "oolite-document";
|
||||||
<dict>
|
CFBundleTypeName = "Oolite Saved Game";
|
||||||
<key>CFBundleTypeExtensions</key>
|
CFBundleTypeRole = Editor;
|
||||||
<array>
|
},
|
||||||
<string>oolite-save</string>
|
{
|
||||||
</array>
|
CFBundleTypeExtensions = (
|
||||||
<key>CFBundleTypeIconFile</key>
|
oxp
|
||||||
<string>oolite-document</string>
|
);
|
||||||
<key>CFBundleTypeName</key>
|
CFBundleTypeIconFile = "oolite-expansion-document";
|
||||||
<string>Oolite Saved Game</string>
|
CFBundleTypeName = "Oolite Expansion Pack";
|
||||||
<key>CFBundleTypeRole</key>
|
CFBundleTypeRole = Editor;
|
||||||
<string>Editor</string>
|
LSTypeIsPackage = <*BY>
|
||||||
</dict>
|
;
|
||||||
<dict>
|
},
|
||||||
<key>CFBundleTypeExtensions</key>
|
{
|
||||||
<array>
|
CFBundleTypeExtensions = (
|
||||||
<string>oxp</string>
|
oolite_expansion_pack
|
||||||
</array>
|
);
|
||||||
<key>CFBundleTypeIconFile</key>
|
CFBundleTypeIconFile = "oolite-expansion-document";
|
||||||
<string>oolite-expansion-document</string>
|
CFBundleTypeName = "Oolite Expansion Pack";
|
||||||
<key>CFBundleTypeName</key>
|
CFBundleTypeRole = Editor;
|
||||||
<string>Oolite Expansion Pack</string>
|
LSTypeIsPackage = <*BY>
|
||||||
<key>CFBundleTypeRole</key>
|
;
|
||||||
<string>Editor</string>
|
},
|
||||||
<key>LSTypeIsPackage</key>
|
{
|
||||||
<true/>
|
}
|
||||||
</dict>
|
);
|
||||||
<dict>
|
CFBundleExecutable = Oolite;
|
||||||
<key>CFBundleTypeExtensions</key>
|
CFBundleIconFile = "oolite-icon";
|
||||||
<array>
|
CFBundleIdentifier = org.aegidian.oolite;
|
||||||
<string>oolite_expansion_pack</string>
|
CFBundleInfoDictionaryVersion = 6.0;
|
||||||
</array>
|
CFBundleName = Oolite;
|
||||||
<key>CFBundleTypeIconFile</key>
|
CFBundlePackageType = APPL;
|
||||||
<string>oolite-expansion-document</string>
|
CFBundleSignature = Ool8;
|
||||||
<key>CFBundleTypeName</key>
|
CFBundleVersion = 1.49;
|
||||||
<string>Oolite Expansion Pack</string>
|
NSMainNibFile = MainMenu;
|
||||||
<key>CFBundleTypeRole</key>
|
NSPrincipalClass = OoliteApp;
|
||||||
<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>
|
|
@ -15,10 +15,12 @@
|
|||||||
@interface SDLImage : NSObject
|
@interface SDLImage : NSObject
|
||||||
{
|
{
|
||||||
SDL_Surface *m_surface;
|
SDL_Surface *m_surface;
|
||||||
|
NSSize m_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) initWithSurface: (SDL_Surface *)surface;
|
- (id) initWithSurface: (SDL_Surface *)surface;
|
||||||
- (SDL_Surface *) surface;
|
- (SDL_Surface *) surface;
|
||||||
|
- (NSSize) size;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
m_surface = surface;
|
m_surface = surface;
|
||||||
|
m_size.width = surface->w;
|
||||||
|
m_size.height = surface->h;
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,4 +22,9 @@
|
|||||||
return m_surface;
|
return m_surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSSize) size
|
||||||
|
{
|
||||||
|
return m_size;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -39,7 +39,7 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
#ifdef GNUSTEP
|
#ifdef GNUSTEP
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <AppKit/AppKit.h>
|
//#import <AppKit/AppKit.h>
|
||||||
#else
|
#else
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -75,28 +75,39 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
- (GLuint) getTextureNameFor:(NSString *)filename
|
- (GLuint) getTextureNameFor:(NSString *)filename
|
||||||
{
|
{
|
||||||
|
#ifndef GNUSTEP
|
||||||
NSBitmapImageRep *bitmapImageRep;
|
NSBitmapImageRep *bitmapImageRep;
|
||||||
NSRect textureRect = NSMakeRect(0.0,0.0,4.0,4.0);
|
|
||||||
NSImage *texImage, *image;
|
NSImage *texImage, *image;
|
||||||
|
#else
|
||||||
|
SDLImage *texImage;
|
||||||
|
#endif
|
||||||
|
NSRect textureRect = NSMakeRect(0.0,0.0,4.0,4.0);
|
||||||
NSSize imageSize;
|
NSSize imageSize;
|
||||||
NSData *textureData;
|
NSData *textureData;
|
||||||
GLuint texName;
|
GLuint texName;
|
||||||
|
|
||||||
int n_planes;
|
int n_planes;
|
||||||
|
int n_bytes;
|
||||||
|
|
||||||
if (![textureDictionary objectForKey:filename])
|
if (![textureDictionary objectForKey:filename])
|
||||||
{
|
{
|
||||||
NSMutableDictionary* texProps = [NSMutableDictionary dictionaryWithCapacity:3]; // autoreleased
|
NSMutableDictionary* texProps = [NSMutableDictionary dictionaryWithCapacity:3]; // autoreleased
|
||||||
|
#ifndef GNUSTEP
|
||||||
texImage = [ResourceManager imageNamed:filename inFolder:@"Textures"];
|
texImage = [ResourceManager imageNamed:filename inFolder:@"Textures"];
|
||||||
|
#else
|
||||||
|
texImage = [ResourceManager surfaceNamed:filename inFolder:@"Textures"];
|
||||||
|
#endif
|
||||||
if (!texImage)
|
if (!texImage)
|
||||||
{
|
{
|
||||||
NSLog(@"***** Couldn't find texture : %@", filename);
|
NSLog(@"***** Couldn't find texture : %@", filename);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GNUSTEP
|
||||||
imageSize = [texImage size];
|
imageSize = [texImage size];
|
||||||
|
#else
|
||||||
|
imageSize = NSMakeSize([texImage surface]->w, [texImage surface]->h);
|
||||||
|
#endif
|
||||||
while (textureRect.size.width < imageSize.width)
|
while (textureRect.size.width < imageSize.width)
|
||||||
textureRect.size.width *= 2.0;
|
textureRect.size.width *= 2.0;
|
||||||
while (textureRect.size.height < imageSize.height)
|
while (textureRect.size.height < imageSize.height)
|
||||||
@ -104,8 +115,8 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
textureRect.origin= NSMakePoint(0.0,0.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
|
image = [[NSImage alloc] initWithSize:textureRect.size]; // is retained
|
||||||
|
|
||||||
// draw the texImage into an image of an appropriate size
|
// 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];
|
[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
|
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];
|
[image unlockFocus];
|
||||||
|
|
||||||
textureData = [[NSData dataWithBytes:[bitmapImageRep bitmapData] length:(int)(textureRect.size.width*textureRect.size.height*n_planes)] retain];
|
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);
|
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||||
glGenTextures(1, &texName); // get a new unique texture name
|
glGenTextures(1, &texName); // get a new unique texture name
|
||||||
@ -149,9 +179,11 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
|
|
||||||
[textureDictionary setObject:texProps forKey:filename];
|
[textureDictionary setObject:texProps forKey:filename];
|
||||||
|
|
||||||
|
#ifndef GNUSTEP
|
||||||
[image autorelease]; // is released
|
[image autorelease]; // is released
|
||||||
|
|
||||||
[bitmapImageRep autorelease];// is released
|
[bitmapImageRep autorelease];// is released
|
||||||
|
#endif
|
||||||
|
|
||||||
[textureData autorelease];// is released (retain count has been incremented by adding it to the texProps dictionary)
|
[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
|
@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
|
textureStore = [[TextureStore alloc] init]; // alloc retains
|
||||||
//
|
//
|
||||||
|
#ifndef WIN32
|
||||||
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
||||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||||
size:NSMakeSize(32, 32)]; // alloc retains
|
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
|
gui = [[GuiDisplayGen alloc] init]; // alloc retains
|
||||||
displayGUI = NO;
|
displayGUI = NO;
|
||||||
@ -363,9 +369,15 @@ Your fair use and other rights are in no way affected by the above.
|
|||||||
//
|
//
|
||||||
if (cursorSprite)
|
if (cursorSprite)
|
||||||
[cursorSprite release];
|
[cursorSprite release];
|
||||||
|
#ifndef WIN32
|
||||||
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
cursorSprite = [[OpenGLSprite alloc] initWithImage:[ResourceManager imageNamed:@"cursor.png" inFolder:@"Images"]
|
||||||
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
cropRectangle:NSMakeRect(0, 0, 128, 128)
|
||||||
size:NSMakeSize(32, 32)]; // alloc retains
|
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)
|
if (gui)
|
||||||
[gui release];
|
[gui release];
|
||||||
|
16
main.m
16
main.m
@ -14,6 +14,8 @@ int debug = NO;
|
|||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
#ifdef GNUSTEP
|
#ifdef GNUSTEP
|
||||||
|
int i;
|
||||||
|
|
||||||
// This is still necessary for NSFont calls.
|
// This is still necessary for NSFont calls.
|
||||||
[NSApplication sharedApplication];
|
[NSApplication sharedApplication];
|
||||||
|
|
||||||
@ -29,8 +31,18 @@ int main(int argc, const char *argv[])
|
|||||||
// is no longer required.
|
// is no longer required.
|
||||||
[pool release];
|
[pool release];
|
||||||
|
|
||||||
if (argc > 1)
|
for (i = 0; i < argc; i++)
|
||||||
[controller setPlayerFileToLoad: [NSString stringWithCString: argv[argc - 1]]];
|
{
|
||||||
|
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
|
// Call applicationDidFinishLaunching because NSApp is not running in
|
||||||
// GNUstep port.
|
// GNUstep port.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user