- attempted to get a slightly more challenging thargoid AI
- added js function clock.addSeconds(time offset) - code cleanup: another tweak to coastlines, some ship functions now return more meaningful values. git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@2843 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
8f8605804c
commit
0556a1e091
@ -11,7 +11,32 @@
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 15.0");
|
||||
UPDATE = ("pauseAI: 15.0", "setStateTo: THARGON_COUNTDOWN1");
|
||||
};
|
||||
"THARGON_COUNTDOWN1" =
|
||||
{
|
||||
"ATTACKED" = (setTargetToPrimaryAggressor, performAttack, "setStateTo: THARGON_COUNTDOWN2");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: THARGON_COUNTDOWN2");
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
UPDATE = (scanForNonThargoid, "pauseAI: 15.0", "setStateTo: THARGON_COUNTDOWN2");
|
||||
};
|
||||
"THARGON_COUNTDOWN2" =
|
||||
{
|
||||
"ATTACKED" = (setTargetToPrimaryAggressor, performAttack, "setStateTo: THARGON_COUNTDOWN3");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, "setStateTo: THARGON_COUNTDOWN3");
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
"TARGET_FOUND" = (setTargetToFoundTarget, performAttack);
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
UPDATE = ("pauseAI: 15.0", "setStateTo: THARGON_COUNTDOWN3");
|
||||
};
|
||||
"THARGON_COUNTDOWN3" =
|
||||
{
|
||||
"ATTACKED" = (setTargetToPrimaryAggressor, fireMissile, "setStateTo: ATTACK_SHIP");
|
||||
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, fireMissile, "setStateTo: ATTACK_SHIP");
|
||||
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
"TARGET_LOST" = ("setStateTo: LOOK_FOR_TARGETS");
|
||||
UPDATE = (fireMissile, scanForNonThargoid, "pauseAI: 15.0", "setStateTo: ATTACK_SHIP");
|
||||
};
|
||||
"LOOK_FOR_TARGETS" =
|
||||
{
|
||||
|
@ -585,6 +585,7 @@ typedef enum
|
||||
- (double) clockTime; // Note that this is not an OOTimeAbsolute
|
||||
- (double) clockTimeAdjusted; // Note that this is not an OOTimeAbsolute
|
||||
- (BOOL) clockAdjusting;
|
||||
- (void) AddToAdjustTime:(double) seconds ;
|
||||
|
||||
- (NSString *) dial_clock;
|
||||
- (NSString *) dial_clock_adjusted;
|
||||
|
@ -2486,6 +2486,12 @@ static PlayerEntity *sSharedPlayer = nil;
|
||||
}
|
||||
|
||||
|
||||
- (void) AddToAdjustTime:(double) seconds ;
|
||||
{
|
||||
ship_clock_adjust += seconds;
|
||||
}
|
||||
|
||||
|
||||
- (NSString*) dial_clock
|
||||
{
|
||||
return ClockToString(ship_clock, ship_clock_adjust > 0);
|
||||
|
@ -7179,6 +7179,8 @@ BOOL class_masslocks(int some_class)
|
||||
|
||||
- (ShipEntity *) fireMissileWithIdentifier:(NSString *) identifier andTarget:(Entity *) target
|
||||
{
|
||||
// both players and NPCs!
|
||||
//
|
||||
ShipEntity *missile = nil;
|
||||
ShipEntity *target_ship = nil;
|
||||
|
||||
|
@ -284,7 +284,7 @@ static FloatRGBA PlanetMix(float q, float maxQ, FloatRGB landColor, FloatRGB sea
|
||||
|
||||
#define RECIP_COASTLINE_PORTION (160.0f)
|
||||
#define COASTLINE_PORTION (1.0f / RECIP_COASTLINE_PORTION)
|
||||
#define SHALLOWS (1.6f * COASTLINE_PORTION) // increased shallows area.
|
||||
#define SHALLOWS (1.9f * COASTLINE_PORTION) // increased shallows area.
|
||||
#define RECIP_SHALLOWS (1.0f / SHALLOWS)
|
||||
#define BEACH_SPECULAR_FACTOR (0.6f) // Portion of specular transition that occurs in paleSeaColor/landColor transition (rest is in paleSeaColor/seaColor transition)
|
||||
#define SHALLOWS_SPECULAR_FACTOR (1.0f - BEACH_SPECULAR_FACTOR)
|
||||
|
@ -41,6 +41,7 @@ static JSBool ClockGetProperty(JSContext *context, JSObject *this, jsval name, j
|
||||
// Methods
|
||||
static JSBool JSClockToString(JSContext *context, JSObject *this, uintN argc, jsval *argv, jsval *outResult);
|
||||
static JSBool ClockClockStringForTime(JSContext *context, JSObject *this, uintN argc, jsval *argv, jsval *outResult);
|
||||
static JSBool ClockAddSeconds(JSContext *context, JSObject *this, uintN argc, jsval *argv, jsval *outResult);
|
||||
|
||||
|
||||
static JSClass sClockClass =
|
||||
@ -99,9 +100,10 @@ static JSPropertySpec sClockProperties[] =
|
||||
|
||||
static JSFunctionSpec sClockMethods[] =
|
||||
{
|
||||
// JS name Function min args
|
||||
// JS name Function min args
|
||||
{ "toString", JSClockToString, 0 },
|
||||
{ "clockStringForTime", ClockClockStringForTime, 1 },
|
||||
{ "addSeconds", ClockAddSeconds, 1 },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
@ -204,3 +206,24 @@ static JSBool ClockClockStringForTime(JSContext *context, JSObject *this, uintN
|
||||
*outResult = [ClockToString(time, NO) javaScriptValueInContext:context];
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
// clockAddSeconds(seconds : Number) : String
|
||||
static JSBool ClockAddSeconds(JSContext *context, JSObject *this, uintN argc, jsval *argv, jsval *outResult)
|
||||
{
|
||||
double time;
|
||||
|
||||
if (EXPECT_NOT(!JS_ValueToNumber(context, argv[0], &time))) return YES; // no-op
|
||||
if (time > 2592000.0f || time < 1.0f) // 30 * 24 * 3600
|
||||
{
|
||||
OOReportJSWarning(context, @"Clock.addSeconds: use a value between 1 and 2592000 (30 days).");
|
||||
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
|
||||
[OOPlayerForScripting() AddToAdjustTime:time];
|
||||
|
||||
*outResult = BOOLToJSVal(YES);
|
||||
return YES;
|
||||
}
|
||||
|
@ -1192,13 +1192,16 @@ static JSBool ShipCommsMessage(JSContext *context, JSObject *this, uintN argc, j
|
||||
static JSBool ShipFireECM(JSContext *context, JSObject *this, uintN argc, jsval *argv, jsval *outResult)
|
||||
{
|
||||
ShipEntity *thisEnt = nil;
|
||||
BOOL OK;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
if (![thisEnt fireECM])
|
||||
OK = [thisEnt fireECM];
|
||||
if (!OK)
|
||||
{
|
||||
OOReportJSWarning(context, @"Ship %@ was requested to fire ECM burst but does not carry ECM equipment.", thisEnt);
|
||||
}
|
||||
*outResult = BOOLToJSVal(OK);
|
||||
return YES;
|
||||
}
|
||||
|
||||
@ -1211,11 +1214,7 @@ static JSBool ShipHasEquipment(JSContext *context, JSObject *this, uintN argc, j
|
||||
JSBool includeWeapons = YES;
|
||||
BOOL OK = YES;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
key = JSValToNSString(context, argv[0]);
|
||||
if (EXPECT_NOT(key == nil))
|
||||
@ -1266,11 +1265,7 @@ static JSBool ShipAbandonShip(JSContext *context, JSObject *this, uintN argc, js
|
||||
{
|
||||
ShipEntity *thisEnt = nil;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
BOOL hasPod = [thisEnt hasEscapePod];
|
||||
|
||||
@ -1290,11 +1285,7 @@ static JSBool ShipAddPassenger(JSContext *context, JSObject *this, uintN argc, j
|
||||
ShipEntity *thisEnt = nil;
|
||||
BOOL OK = YES;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
NSString *name = nil;
|
||||
|
||||
@ -1341,11 +1332,7 @@ static JSBool ShipAwardContract(JSContext *context, JSObject *this, uintN argc,
|
||||
BOOL OK = JSVAL_IS_INT(argv[0]);
|
||||
NSString *key = nil;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
if (OK && argc == 6)
|
||||
{
|
||||
@ -1426,11 +1413,7 @@ static JSBool ShipAwardEquipment(JSContext *context, JSObject *this, uintN argc,
|
||||
BOOL OK = YES;
|
||||
BOOL berth;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
key = JSValToNSString(context, argv[0]);
|
||||
if (EXPECT_NOT(key == nil))
|
||||
@ -1476,11 +1459,7 @@ static JSBool ShipRemoveEquipment(JSContext *context, JSObject *this, uintN argc
|
||||
NSString *key = nil;
|
||||
BOOL OK = YES;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
key = JSValToNSString(context, argv[0]);
|
||||
if (EXPECT_NOT(key == nil))
|
||||
@ -1533,11 +1512,7 @@ static JSBool ShipSetEquipmentStatus(JSContext *context, JSObject *this, uintN a
|
||||
NSString *status = JSValToNSString(context, argv[1]);
|
||||
BOOL hasOK = NO, hasDamaged = NO;
|
||||
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) // stale reference, no-op.
|
||||
{
|
||||
*outResult = BOOLToJSVal(NO);
|
||||
return YES;
|
||||
}
|
||||
if (!JSShipGetShipEntity(context, this, &thisEnt)) return YES; // stale reference, no-op.
|
||||
|
||||
if (EXPECT_NOT([UNIVERSE strict]))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user