Object Flags Layout

From Meridian 59 - Open Source Wiki
Jump to: navigation, search

Note: Update18 on 103 contained a complete refactoring of Object flags, so this information is again outdated. See: https://github.com/Daenks/Meridian59_103/pull/833

Most Recent: TABLE IS OUTDATED CLICK HERE

NOTES:

 * Blakserv is using 28-Bit (but 32-Bit are shown here, so upper 4 bits are always 0)
 * Sections marked with ENUM: Must interpret all bits together as type value
 * Sections marked with BOOLS: Must interpret each bit as boolean
 * See official manual pages 92-93 (is a bit outdated)
 * Definitions for C in 'include\proto.h'
 * Definitions for KOD in 'kod\include\blakston.khd'
proto.h name blakston.khd name HEX Notes
BITS: 0-1 ENUM (MoveOn Type)
OF_NOMOVEON_MASK 0x00000003 0000 0000 0000 000 000 000000000000 11
OF_MOVEON_YES 0x00000000 0000 0000 0000 000 000 000000000000 00 0
OF_MOVEON_NO 0x00000001 0000 0000 0000 000 000 000000000000 01 1 Can never move on object
OF_MOVEON_TELEPORTER 0x00000002 0000 0000 0000 000 000 000000000000 10 2 Can move on object, but then kod will move you elsewhere
OF_MOVEON_NOTIFY 0x00000003 0000 0000 0000 000 000 000000000000 11 3
BITS: 2-13 BOOLS
OF_PLAYER 0x00000004 0000 0000 0000 000 000 000000000001 00 - Set if object is a player
OF_ATTACKABLE 0x00000008 0000 0000 0000 000 000 000000000010 00 - Set if object is legal target for an attack
OF_GETTABLE 0x00000010 0000 0000 0000 000 000 000000000100 00 - Set if player can try to pick up object
OF_CONTAINER 0x00000020 0000 0000 0000 000 000 000000001000 00 - Set if player can put objects inside this one
OF_NOEXAMINE 0x00000040 0000 0000 0000 000 000 000000010000 00 -
OF_ITEM_MAGIC [103!] 0x00000080 0000 0000 0000 000 000 000000100000 00 - Set for magic item to color in lists
OF_HANGING 0x00000100 0000 0000 0000 000 000 000001000000 00 -
OF_OFFERABLE 0x00000200 0000 0000 0000 000 000 000010000000 00 - Set if object can be offered to
OF_BUYABLE 0x00000400 0000 0000 0000 000 000 000100000000 00 - Set if object can be bought from
OF_ACTIVATABLE 0x00000800 0000 0000 0000 000 000 001000000000 00 - Set if object can be activated
OF_APPLYABLE 0x00001000 0000 0000 0000 000 000 010000000000 00 - Set if object can be applied to another object
OF_SAFETY 0x00002000 0000 0000 0000 000 000 100000000000 00 - Set if player has safety on (self only)
BITS: 14-16 ENUM (Player Type)
OF_PLAYER_MASK 0x0001C000 0000 0000 0000 000 111 000000000000 00 Mask to get player flag bits
PLAYER_NO 0x00000000 0000 0000 0000 000 000 000000000000 00 0
PF_KILLER 0x00004000 0000 0000 0000 000 001 000000000000 00 1 Set if object is a killer (must also have OF_PLAYER)
PF_OUTLAW 0x00008000 0000 0000 0000 000 010 000000000000 00 2 -|-OF_PLAYER)
PF_DM 0x0000C000 0000 0000 0000 000 011 000000000000 00 3 Set if object is a DM player
PF_CREATOR 0x00010000 0000 0000 0000 000 100 000000000000 00 4 Set if object is a creator player
PF_SUPER 0x00014000 0000 0000 0000 000 101 000000000000 00 5 Set if object is a "super DM"
PF_MODERATOR [103!] 0x00018000 0000 0000 0000 000 110 000000000000 00 6
PF_EVENTCHAR 0x0001C000 0000 0000 0000 000 111 000000000000 00 7 Set if object is an event character
BITS: 17-19 BOOLS
OF_FLICKERING 0x00020000 0000 0000 0000 001 000 000000000000 00 1 For players or objects if holding a flickering light.
OF_FLASHING 0x00040000 0000 0000 0000 010 000 000000000000 00 2 For players or objects if flashing with light.
OF_BOUNCING 0x00060000 0000 0000 0000 011 000 000000000000 00 3 If both flags on then object is bouncing
OF_PHASING 0x00080000 0000 0000 0000 100 000 000000000000 00 4 For players or objects if phasing translucent/solid.
BITS: 20-23 ENUM (Drawing Type)
OF_EFFECT_MASK 0x01F00000 0000 0000 1111 000 000 000000000000 00 Mask to get object drawing effect bits
OF_DRAW_PLAIN 0x00000000 0000 0000 0000 000 000 000000000000 00 0 No special drawing effects
OF_TRANSLUCENT25 0x00100000 0000 0000 0001 000 000 000000000000 00 1 Set if object should be drawn at 25% opacity
OF_TRANSLUCENT50 0x00200000 0000 0000 0010 000 000 000000000000 00 2 Set if object should be drawn at 50% opacity
OF_TRANSLUCENT75 0x00300000 0000 0000 0011 000 000 000000000000 00 3 Set if object should be drawn at 75% opacity
OF_BLACK 0x00400000 0000 0000 0100 000 000 000000000000 00 4 Set if object should be drawn all black
OF_INVISIBLE 0x00500000 0000 0000 0101 000 000 000000000000 00 5 Set if object should be drawn with invisibility effect
OF_TRANSLATE 0x00600000 0000 0000 0110 000 000 000000000000 00 6 Reserved (used internally by client)
OF_DITHERINVIS 0x00700000 0000 0000 0111 000 000 000000000000 00 7 Haze (dither with transparency) 50% of pixels
OF_DITHERTRANS 0x00800000 0000 0000 1000 000 000 000000000000 00 8 Dither (with two translates) 50% of pixels
OF_DOUBLETRANS 0x00900000 0000 0000 1001 000 000 000000000000 00 9 Translate twice each pixel, plus lighting
OF_SECONDTRANS 0x00A00000 0000 0000 1010 000 000 000000000000 00 10 Ignore per-overlay xlat and use only secondary xlat
BITS: 24-27 BOOLS
OF_MINIMAP_MASK 0x0F000000 0000 1111 0000 000 000 000000000000 00
OF_ENEMY 0x01000000 0000 0001 0000 000 000 000000000000 00 - Enemy player
OF_FRIEND 0x02000000 0000 0010 0000 000 000 000000000000 00 - Friendly player
OF_GUILDMATE 0x04000000 0000 0100 0000 000 000 000000000000 00 - Guildmate player
OF_MINION 0x08000000 0000 1000 0000 000 000 001000000000 00 - Overlaps with OF_ACTIVATABLE.
OF_MINION_OTHER 0x09000000 0000 1001 0000 000 000 010000000000 00 - Overlaps with OF_APPLYABLE.
OF_MINION_SELF 0x0A000000 0000 1010 0000 000 000 100000000000 00 - Overlaps with OF_SAFETY