artemis-nerds / protocol-docs

Unofficial documentation for the Artemis network and file protocols, written by the Artemis community
https://artemis-nerds.github.io/protocol-docs/
MIT License
8 stars 5 forks source link

missing / unidentified creature fields #142

Open StarryWisdom opened 6 years ago

StarryWisdom commented 6 years ago

there seems to be a few missing fields in creature which should be easy to prove with some time single scan (2.1 - confirm I guess?) however tagging is done with double scans however tagging dates and ships are done creature age

NoseyNick commented 6 years ago

Certainly LOOKS scan-related:

# STAT:   13291   Creature.Unknown21 (min 0 max 4294967295)
# STAT:    3848     Creature.Unknown21 = 0 (0x0)
# STAT:     584     Creature.Unknown21 = 1073741824 (0x40000000)
# STAT:     390     Creature.Unknown21 = 1073741826 (0x40000002)
# STAT:     644     Creature.Unknown21 = 1073741828 (0x40000004)
# STAT:     648     Creature.Unknown21 = 1073741830 (0x40000006)
# STAT:     692     Creature.Unknown21 = 2 (0x2)
# STAT:    1347     Creature.Unknown21 = 4 (0x4)
# STAT:    4485     Creature.Unknown21 = 4294967295 (0xffffffff)
# STAT:     653     Creature.Unknown21 = 6 (0x6)

Should probably be able to find one being scanned in my logs. Tagging seems to be done with 0xf754c8fe:0x1d Tag - see #108 Age... Unknown31 (byte, new in v2.6.3) seems to go from 1..3 which matches what the mission-file-docs.txt says. Needs confirmation though

   ATTRIBUTE: age
      VALID: 1-3 (young, mature, ancient)
NoseyNick commented 6 years ago

Confirming a few things (tested by adding various ObjCreatures to my disco server):

Creature 3.2 seems to be "ShowOnMaps" side-shifted-bitmask thing akin to PlayerShip 5.7 or NPCShip 4.3. 0 makes it invisible, 4 or -1 makes it visible.

Creature 2.1 value 0 shows "Unknown" "ZZ" on Science Screen. value 4 or -1 shows Age, Scientific Name, etc etc, so presumably "SingleScan" side-shifted-bitmask thing.

Assuming science is able to show you "Age" as above, bit 3.1 is that age. 1=Young 2=Mature, 3=Ancient (and 0=REPEL, oops :grinning: )

NoseyNick commented 6 years ago

Still have no idea what bit2.2 is (ALMOST always 0, but value of 4 has been observed occasionally)

bit2.3 to 2.6 are also still confusing as heck - horribly messy, many many values appear, typically looking like "Very negative ints". Some of the most popular values:

   27892     Creature.Unknown26 = 4291001636 (0xffc37d24)
   47384     Creature.Unknown26 = 4291442178 (0xffca3602)
  143051     Creature.Unknown26 = 4291974693 (0xffd25625)
  144932     Creature.Unknown26 = 4294967295 (0xffffffff)
NoseyNick commented 6 years ago

Mucking with the values of Creature.Unknown26, for a dragon, seems to affect the size of the dragon on 3D views, but also frequently makes it invisible. I'm wondering if it's got a bunch of values compacted into a 32-bit field including size and visibility or something... surreal?

NoseyNick commented 6 years ago

... and/or bit2.3 to 2.6 are floats, like I suspected many moons ago... Except floats that often contain rubbish values, like stupidly negative, stupidly positive, or stupidly tiny, or straight NaNs. Suspect we'll get to a point where we can say things like "If CreatureType=Dragon, bit 2.6=Something, may contain undefined / random data otherwise"

Suspect it's OK to update Creature bit 2.1=SingleScan, 3.1=Age, 3.2=ShowOnMaps, those look pretty convincing.