Join us at the Oolite Anniversary Party -- London, 7th July 2024, 1pm
More details in this thread.

Oolite 1.72 svn - mass lock broken?

For test results, bug reports, announcements of new builds etc.

Moderators: winston, another_commander, Getafix

Post Reply
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Oolite 1.72 svn - mass lock broken?

Post by Micha »

Hi,

I'm running my own compiled-from-svn-but-otherwise-unhacked copy of Oolite 1.72 (Compiled/running under Ubuntu) and quite often the Mass-lock won't disengage. Haven't found a magic formula as to when it 'sticks'.

Has anybody else seen this? Any suggestions of where I should look to fix this?

Combined with no fuel (for fuel injectors) and it's impossible to scoop fuel (at large suns).

[Off-topic, but something I've wanted to raise anyways]
I must say while it may be more realistic it's just about impossible to scoop fuel as per the original (C64) Elite. In C64 Elite the heat was essentially the altimeter for Stars - the closer you got the hotter you got, but as soon as you turned around you started cooling again. Fuel started getting scooped from a particular temperature.
In Oolite to successfully scoop without Hyperspacing you pretty much need Fuel Scoops, Heat Shielding, and Fuel Injectors - which is much too high an outlay for scooping fuel which only costs a few Credits (but a few Credits too much for a miser like me!).
The upshot is that IMHO this reduces the fun factor. YMMV.
[/offtopic]
User avatar
Cmdr James
Commodore
Commodore
Posts: 1357
Joined: Tue Jun 05, 2007 10:43 pm
Location: Berlin

Post by Cmdr James »

I have seen it. I think it was caused by a change in version 1644 in HeadUpDisplay.m

Code: Select all

				//mass lock no closer than 25 km from the surface
				if (dist< rad*rad +50000*rad+625000000 || dist < rad*rad*factor) 
				{
					mass_locked = YES;
				}
I dont realy understand this change, I think it could be as simple as

Code: Select all

				//mass lock no closer than 25 km from the surface
				if (dist< (rad + 25000000) || dist < rad*rad*factor) 
				{
					mass_locked = YES;
				}
I think there might be some kind of problem that could be solved by adding some brackets or something. Right now I cant see it, maybe it will be clearer in the morning :)
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Post by Micha »

Thanks - I'd gone through a whole bunch of diffs of various versions of eadupDisplay but didn't find this particular change.
Furthermore, shouldn't Asteroids (or at least large ones if one has the Asteroids OXP installed) cause mass-lock as well? Perhaps anything which has a collision-radius above a certain threshold.
User avatar
LittleBear
---- E L I T E ----
---- E L I T E ----
Posts: 2869
Joined: Tue Apr 04, 2006 7:02 pm
Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.

Post by LittleBear »

Unpowered objects (white on the scanner) don't mass lock you. However, large objects including the Large Asteroids do stop you making a H jump if you are too near them.
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Post by Micha »

I realise that's the current implementation - however I was asking whether that should be the case. After all, planets and stars are also 'unpowered' yet mass-lock you :) And IIRC, C64 Elite also mass-locked on asteroids (might have to dig out the emulator to double-check that though)
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Post by Micha »

Ok, I implemented Cmdr James' suggested fix and it's appeared to have done the trick until just now - in a Communist System (with the Commies OXP) and I got the mass-lock bug again against a Commie Factory after launching from it. Considering the alert status changed from Yellow to Green once I was out of range of the station the code -should- have also cleared the mass-lock flag. I'll put in some debug to see exactly why the mass-lock flag isn't being cleared.


Also, I've played around a bit and implemented the following:
* Mass-lock against largish Asteroids
* Modify Alert Status to Yellow only when in the vicinity of potential hostiles - that is, Planets, Suns, and Asteroids don't change the Alert Status even though they mass-lock you.

It's personal preference for me, but is anybody else interested in these changes?
The glass is twice as big as it needs to be.
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Post by Micha »

Ok, using a debugger I got the bug and found that the zero_distance to the planet was (a) within the mass-lock limits (it shouldn't have been) and (b) wasn'tt being updated.

[edit]In fact, the zero_distance always seems to get stuck at 430400 - couldn't find this value as a hard-coded magic number anywhere, does it ring any bells with anybody?[/edit]

Unfortunately I can't reproduce it between runs using the same binary, and the same save-file - sometimes it happens, usually it doesn't.
The glass is twice as big as it needs to be.
User avatar
Micha
Commodore
Commodore
Posts: 815
Joined: Tue Sep 02, 2008 2:01 pm
Location: London, UK
Contact:

Post by Micha »

Haven't gotten this bug for ages, and it's reared its ugly head again tonight.

Discovered that whenever it occurs, there's a PLANET_TYPE_MINIATURE in the system:

Code: Select all

 [universe.objectDump]: -> Ent:2		<PlanetEntity 0x12b55780>{ID: 446 position: (120, 80, 640) type: PLANET_TYPE_MINIATURE radius: 0.111km} mass 1000000000.00 (nil)
It is always at zero_distance 430400 and hence mass-locks the ship. Its SCAN_CLASS is CLASS_NO_DRAW.

Anybody know where these entities are generated and why?

<edit>AHA!! They get created when one looks at the System Info page. The (hackish?) fix is quite simple, here's the patch:
<snipped in edit2>

Perhaps a better patch would be to figure out why the miniature planet doesn't always get destroyed when leaving the System Info screen and ensuring it does..</edit>

<edit2>Bug 014618 raised and patch removed from here to reduce spamming.</edit2>
The glass is twice as big as it needs to be.
Post Reply