Merge branch 'maintenance/1.77'

Various bugfixes
This commit is contained in:
cim 2013-06-17 20:40:59 +01:00
commit 42967920d8
4 changed files with 31 additions and 15 deletions

View File

@ -29,6 +29,14 @@ Changes between Oolite 1.77 and Oolite 1.77.1:
* Fix calculation of heat damage to subentities * Fix calculation of heat damage to subentities
* Fix updates of energy, laser temp, alert condition related to autopilot * Fix updates of energy, laser temp, alert condition related to autopilot
* Fix for crash when pressing up on long manifest screen * Fix for crash when pressing up on long manifest screen
* Fix conflict between "pilot" and "unpiloted" shipdata keys
* Fix equipment condition check in player.replaceShip()
* Fix flasher scaling in visual effects
* Add fuel scoop icon to small HUD
* Lighten mouse cursor cross color
* Sort save-game list alphabetically
* Slightly lengthen deadlines on parcel contracts to avoid impossible ones
* Prevent docking with dead stations
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

View File

@ -485,7 +485,7 @@ MA 02110-1301, USA.
{ {
// rescale subentities // rescale subentities
Entity<OOSubEntity> *se = nil; Entity<OOSubEntity> *se = nil;
GLfloat flasher_factor = pow(factor/scaleX,1.0/3.0); GLfloat flasher_factor = pow(factor/scaleY,1.0/3.0);
foreach (se, [self subEntities]) foreach (se, [self subEntities])
{ {
Vector move = [se position]; Vector move = [se position];
@ -516,7 +516,7 @@ MA 02110-1301, USA.
{ {
// rescale subentities // rescale subentities
Entity<OOSubEntity> *se = nil; Entity<OOSubEntity> *se = nil;
GLfloat flasher_factor = pow(factor/scaleX,1.0/3.0); GLfloat flasher_factor = pow(factor/scaleZ,1.0/3.0);
foreach (se, [self subEntities]) foreach (se, [self subEntities])
{ {
Vector move = [se position]; Vector move = [se position];

View File

@ -2038,6 +2038,10 @@ static NSMutableDictionary *currentShipyard = nil;
[self newShipCommonSetup:shipKey yardInfo:ship_info baseInfo:ship_base_dict]; [self newShipCommonSetup:shipKey yardInfo:ship_info baseInfo:ship_base_dict];
// perform the transformation
NSDictionary* cmdr_dict = [self commanderDataDictionary]; // gather up all the info
if (![self setCommanderDataFromDictionary:cmdr_dict]) return NO;
// refill from ship_info // refill from ship_info
NSArray* extras = [NSMutableArray arrayWithArray:[[ship_info oo_dictionaryForKey:KEY_STANDARD_EQUIPMENT] oo_arrayForKey:KEY_EQUIPMENT_EXTRAS]]; NSArray* extras = [NSMutableArray arrayWithArray:[[ship_info oo_dictionaryForKey:KEY_STANDARD_EQUIPMENT] oo_arrayForKey:KEY_EQUIPMENT_EXTRAS]];
for (unsigned i = 0; i < [extras count]; i++) for (unsigned i = 0; i < [extras count]; i++)
@ -2054,10 +2058,6 @@ static NSMutableDictionary *currentShipyard = nil;
} }
} }
// perform the transformation
NSDictionary* cmdr_dict = [self commanderDataDictionary]; // gather up all the info
if (![self setCommanderDataFromDictionary:cmdr_dict]) return NO;
[self setEntityPersonalityInt:[ship_info oo_unsignedShortForKey:SHIPYARD_KEY_PERSONALITY]]; [self setEntityPersonalityInt:[ship_info oo_unsignedShortForKey:SHIPYARD_KEY_PERSONALITY]];
return YES; return YES;

View File

@ -612,6 +612,13 @@ static ShipEntity *doOctreesCollide(ShipEntity *prime, ShipEntity *other);
// ship skin insulation factor (1.0 is normal) // ship skin insulation factor (1.0 is normal)
[self setHeatInsulation:[shipDict oo_floatForKey:@"heat_insulation" defaultValue:[self hasHeatShield] ? 2.0 : 1.0]]; [self setHeatInsulation:[shipDict oo_floatForKey:@"heat_insulation" defaultValue:[self hasHeatShield] ? 2.0 : 1.0]];
// unpiloted (like missiles asteroids etc.)
if ((isUnpiloted = [shipDict oo_fuzzyBooleanForKey:@"unpiloted"]))
{
[self setCrew:nil];
}
else
{
// crew and passengers // crew and passengers
NSDictionary* cdict = [[UNIVERSE characters] objectForKey:[shipDict oo_stringForKey:@"pilot"]]; NSDictionary* cdict = [[UNIVERSE characters] objectForKey:[shipDict oo_stringForKey:@"pilot"]];
if (cdict != nil) if (cdict != nil)
@ -619,9 +626,7 @@ static ShipEntity *doOctreesCollide(ShipEntity *prime, ShipEntity *other);
OOCharacter *pilot = [OOCharacter characterWithDictionary:cdict]; OOCharacter *pilot = [OOCharacter characterWithDictionary:cdict];
[self setCrew:[NSArray arrayWithObject:pilot]]; [self setCrew:[NSArray arrayWithObject:pilot]];
} }
}
// unpiloted (like missiles asteroids etc.)
if ((isUnpiloted = [shipDict oo_fuzzyBooleanForKey:@"unpiloted"])) [self setCrew:nil];
[self setShipScript:[shipDict oo_stringForKey:@"script"]]; [self setShipScript:[shipDict oo_stringForKey:@"script"]];
@ -6926,6 +6931,9 @@ NSComparisonResult ComparePlanetsBySurfaceDistance(id i1, id i2, void* context)
if (isUnpiloted) if (isUnpiloted)
{ {
//unpiloted ships cannot have crew //unpiloted ships cannot have crew
// but may have crew before isUnpiloted set, so force *that* to clear too
[crew autorelease];
crew = nil;
return; return;
} }
//do not set to hulk here when crew is nill (or 0). Some things like missiles have no crew. //do not set to hulk here when crew is nill (or 0). Some things like missiles have no crew.