[conquest] invisible sun / much to visible sun, final fix (damn it I hope!)

Jon Trulson jon at radscan.com
Mon Oct 17 18:33:53 MDT 2005


On Mon, 17 Oct 2005, Almighty Tallest Cataboligne wrote:

> Jon
>
> Dude :-0
>
> (complimentary reference to baskeballs)
>

 	heh

 	CC'd to conquest list.

> I've gone back to 8.1.1 source and I cant get the damn visibility to toggle.
>>
>
> Dont try it out, I found it...broke the client code indeed.
> Except you were doing the "breaking". (rather not fixing completely!)
>

 	I never make mistakes, only my computers do. :)

> diff -b conquest-8.1.1-0/client.c conquest-8.1.1/client.c
> 387c387
> < if (primary <= 0 || primary > NUMPLANETS)
> ---
>> if (primary < 0 || primary > NUMPLANETS)
>
> /* in protocol 6, we 'forgot' planet realness. To avoid breaking
> protocol again, and allow unpatched clients and/or servers to
> work we check to see if SPPLANETINFO_FLAGS_FVALID is set. If so,
> _then_ we pay attn to any other flags present. Else we ignore
> them. */


 	Ahh... the original authors did this (well not the protocol, but): 
planet/primary == 0 is invalid, but they did it anyway for Mur's case it 
seems.

 	This is a consequence of the original developers (ab)using int to 
differentiate between a ship and a planet (mainly for messaging) by 
'sign'.  Also, ratfor apparently did not index arrays starting at 0, they 
used 1, and the code assumes that.  So they must have figured a 0 primary 
was impossible, and therefor irrelevant.  The protocol didn't even 
consider this. Those bastards. :)

 	So the end result is that server changes to Mur will never be 
propagated to a client.

 	Was thinking about getting away from that anyway and going with an 
'object type/id number' method of identifying objects. 'Ship 4', 'Planet 
27', or 'stargate 5' rather than the current <0 == planet, >0 == ship, 
etc...

 	Another reason to do these changes I guess.

>
> yes, and 0 is a valid value for primary.
>

 	Yes, and no.  It can be represented as a '0' in the code (now), 
but the game code itself would never have been able to access it (ratfor 
limitation I guess).  Of course we're in C now.  0 does exist! :)

 	I had considered fixing this during the original ratfor -> C port, 
but the assumption was so ingrained in all the code, I kept it.  Time to 
change it I guess.  What fun that will be! :)

> the client was setting murisak to visible, and it never got updated from the
> server.
> my new changes left it not visible for the client because...well I'm
> assuming it was the dostand = TRUE, but since it seems to work ok, I'm not
> going to find out.
>

 	I'll need to address this in the next major version (and what a 
major version it's looking to be (common block/protocol wise):).  That's 
why I mentioned that the New Version (NV) would hardcode a ghost0 planet 
at 0,0 on which to afix the universe.  At that point, we will have to 
allow planet == 0 as well (but it will be special - immutable).


-- 
Jon Trulson    mailto:jon at radscan.com
ID: 1A9A2B09, FP: C23F328A721264E7 B6188192EC733962
PGP keys at http://radscan.com/~jon/PGPKeys.txt
#include <std/disclaimer.h>
"I am Nomad." -Nomad




More information about the Conquest mailing list