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 updates of energy, laser temp, alert condition related to autopilot
* 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
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])
{
Vector move = [se position];
@ -516,7 +516,7 @@ MA 02110-1301, USA.
{
// rescale subentities
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])
{
Vector move = [se position];

View File

@ -2038,6 +2038,10 @@ static NSMutableDictionary *currentShipyard = nil;
[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
NSArray* extras = [NSMutableArray arrayWithArray:[[ship_info oo_dictionaryForKey:KEY_STANDARD_EQUIPMENT] oo_arrayForKey:KEY_EQUIPMENT_EXTRAS]];
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]];
return YES;

View File

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