// Flags for A_PainAttack const int PAF_NOSKULLATTACK = 1; const int PAF_AIMFACING = 2; const int PAF_NOTARGET = 4; // Flags for A_VileAttack const int VAF_DMGTYPEAPPLYTODIRECT = 1; // Flags for A_Saw const int SF_NORANDOM = 1; const int SF_RANDOMLIGHTMISS = 2; const int SF_RANDOMLIGHTHIT = 4; const int SF_RANDOMLIGHTBOTH = 6; const int SF_NOUSEAMMOMISS = 8; const int SF_NOUSEAMMO = 16; const int SF_NOPULLIN = 32; const int SF_NOTURN = 64; const int SF_STEALARMOR = 128; // Flags for A_BFGSpray const int BFGF_HURTSOURCE = 1; const int BFGF_MISSILEORIGIN = 2; // Flags for A_CustomMissile const int CMF_AIMOFFSET = 1; const int CMF_AIMDIRECTION = 2; const int CMF_TRACKOWNER = 4; const int CMF_CHECKTARGETDEAD = 8; const int CMF_ABSOLUTEPITCH = 16; const int CMF_OFFSETPITCH = 32; const int CMF_SAVEPITCH = 64; const int CMF_ABSOLUTEANGLE = 128; // Flags for A_CustomBulletAttack const int CBAF_AIMFACING = 1; const int CBAF_NORANDOM = 2; const int CBAF_EXPLICITANGLE = 4; const int CBAF_NOPITCH = 8; const int CBAF_NORANDOMPUFFZ = 16; const int CBAF_PUFFTARGET = 32; const int CBAF_PUFFMASTER = 64; const int CBAF_PUFFTRACER = 128; // Flags for A_GunFlash const int GFF_NOEXTCHANGE = 1; // Flags for A_FireBullets const int FBF_USEAMMO = 1; const int FBF_NORANDOM = 2; const int FBF_EXPLICITANGLE = 4; const int FBF_NOPITCH = 8; const int FBF_NOFLASH = 16; const int FBF_NORANDOMPUFFZ = 32; // Flags for A_SpawnItemEx const int SXF_TRANSFERTRANSLATION = 1 << 0; const int SXF_ABSOLUTEPOSITION = 1 << 1; const int SXF_ABSOLUTEANGLE = 1 << 2; const int SXF_ABSOLUTEMOMENTUM = 1 << 3; //Since "momentum" is declared to be deprecated in the expressions, for compatibility const int SXF_ABSOLUTEVELOCITY = 1 << 3; //purposes, this was made. It does the same thing though. Do not change the value. const int SXF_SETMASTER = 1 << 4; const int SXF_NOCHECKPOSITION = 1 << 5; const int SXF_TELEFRAG = 1 << 6; const int SXF_CLIENTSIDE = 1 << 7; // only used by Skulltag const int SXF_TRANSFERAMBUSHFLAG = 1 << 8; const int SXF_TRANSFERPITCH = 1 << 9; const int SXF_TRANSFERPOINTERS = 1 << 10; const int SXF_USEBLOODCOLOR = 1 << 11; const int SXF_CLEARCALLERTID = 1 << 12; const int SXF_MULTIPLYSPEED = 1 << 13; const int SXF_TRANSFERSCALE = 1 << 14; const int SXF_TRANSFERSPECIAL = 1 << 15; const int SXF_CLEARCALLERSPECIAL = 1 << 16; const int SXF_TRANSFERSTENCILCOL = 1 << 17; const int SXF_TRANSFERALPHA = 1 << 18; const int SXF_TRANSFERRENDERSTYLE = 1 << 19; const int SXF_SETTARGET = 1 << 20; const int SXF_SETTRACER = 1 << 21; const int SXF_NOPOINTERS = 1 << 22; const int SXF_ORIGINATOR = 1 << 23; const int SXF_TRANSFERSPRITEFRAME = 1 << 24; const int SXF_TRANSFERROLL = 1 << 25; const int SXF_ISTARGET = 1 << 26; const int SXF_ISMASTER = 1 << 27; const int SXF_ISTRACER = 1 << 28; // Flags for A_Chase enum { CHF_FASTCHASE = 1, CHF_NOPLAYACTIVE = 2, CHF_NIGHTMAREFAST = 4, CHF_RESURRECT = 8, CHF_DONTMOVE = 16, CHF_NORANDOMTURN = 32, CHF_NODIRECTIONTURN = 64, CHF_NOPOSTATTACKTURN = 128, CHF_STOPIFBLOCKED = 256, CHF_DONTTURN = CHF_NORANDOMTURN | CHF_NOPOSTATTACKTURN | CHF_STOPIFBLOCKED }; // Flags for A_LookEx const int LOF_NOSIGHTCHECK = 1; const int LOF_NOSOUNDCHECK = 2; const int LOF_DONTCHASEGOAL = 4; const int LOF_NOSEESOUND = 8; const int LOF_FULLVOLSEESOUND = 16; const int LOF_NOJUMP = 32; // Flags for A_Respawn const int RSF_FOG = 1; const int RSF_KEEPTARGET = 2; const int RSF_TELEFRAG = 4; // Flags for A_JumpIfTargetInLOS and A_JumpIfInTargetLOS enum { JLOSF_PROJECTILE = 1, JLOSF_NOSIGHT = 1 << 1, JLOSF_CLOSENOFOV = 1 << 2, JLOSF_CLOSENOSIGHT = 1 << 3, JLOSF_CLOSENOJUMP = 1 << 4, JLOSF_DEADNOJUMP = 1 << 5, JLOSF_CHECKMASTER = 1 << 6, JLOSF_TARGETLOS = 1 << 7, JLOSF_FLIPFOV = 1 << 8, JLOSF_ALLYNOJUMP = 1 << 9, JLOSF_COMBATANTONLY = 1 << 10, JLOSF_NOAUTOAIM = 1 << 11, JLOSF_CHECKTRACER = 1 << 12, }; // Flags for A_ChangeVelocity const int CVF_RELATIVE = 1; const int CVF_REPLACE = 2; // Flags for A_WeaponReady const int WRF_NOBOB = 1; const int WRF_NOSWITCH = 2; const int WRF_NOPRIMARY = 4; const int WRF_NOSECONDARY = 8; const int WRF_NOFIRE = WRF_NOPRIMARY | WRF_NOSECONDARY; const int WRF_ALLOWRELOAD = 16; const int WRF_ALLOWZOOM = 32; const int WRF_DISABLESWITCH = 64; const int WRF_ALLOWUSER1 = 128; const int WRF_ALLOWUSER2 = 256; const int WRF_ALLOWUSER3 = 512; const int WRF_ALLOWUSER4 = 1024; // Morph constants const int MRF_ADDSTAMINA = 1; const int MRF_FULLHEALTH = 2; const int MRF_UNDOBYTOMEOFPOWER = 4; const int MRF_UNDOBYCHAOSDEVICE = 8; const int MRF_FAILNOTELEFRAG = 16; const int MRF_FAILNOLAUGH = 32; const int MRF_WHENINVULNERABLE = 64; const int MRF_LOSEACTUALWEAPON = 128; const int MRF_NEWTIDBEHAVIOUR = 256; const int MRF_UNDOBYDEATH = 512; const int MRF_UNDOBYDEATHFORCED = 1024; const int MRF_UNDOBYDEATHSAVES = 2048; const int MRF_UNDOALWAYS = 4096; // Flags for A_RailAttack and A_CustomRailgun const int RGF_SILENT = 1; const int RGF_NOPIERCING = 2; const int RGF_EXPLICITANGLE = 4; const int RGF_FULLBRIGHT = 8; const int RGF_CENTERZ = 16; // Flags for A_Mushroom const int MSF_Standard = 0; const int MSF_Classic = 1; const int MSF_DontHurt = 2; // Flags for A_Explode const int XF_HURTSOURCE = 1; const int XF_NOTMISSILE = 4; // Flags for A_RadiusThrust const int RTF_AFFECTSOURCE = 1; const int RTF_NOIMPACTDAMAGE = 2; const int RTF_NOTMISSILE = 4; const int RTF_THRUSTZ = 16; // Flags for A_RadiusDamageSelf const int RDSF_BFGDAMAGE = 1; // Flags for A_Blast const int BF_USEAMMO = 1; const int BF_DONTWARN = 2; const int BF_AFFECTBOSSES = 4; const int BF_NOIMPACTDAMAGE = 8; // Flags for A_SeekerMissile const int SMF_LOOK = 1; const int SMF_PRECISE = 2; const int SMF_CURSPEED = 4; // Flags for A_CustomPunch const int CPF_USEAMMO = 1; const int CPF_DAGGER = 2; const int CPF_PULLIN = 4; const int CPF_NORANDOMPUFFZ = 8; const int CPF_NOTURN = 16; const int CPF_STEALARMOR = 32; // Flags for A_CustomMissile const int FPF_AIMATANGLE = 1; const int FPF_TRANSFERTRANSLATION = 2; const int FPF_NOAUTOAIM = 4; const int FBF_PUFFTARGET = 64; const int FBF_PUFFMASTER = 128; const int FBF_PUFFTRACER = 256; // Flags for A_Teleport enum { TF_TELEFRAG = 0x00000001, // Allow telefrag in order to teleport. TF_RANDOMDECIDE = 0x00000002, // Randomly fail based on health. (A_Srcr2Decide) TF_FORCED = 0x00000004, // Forget what's in the way. TF_Telefrag takes precedence though. TF_KEEPVELOCITY = 0x00000008, // Preserve velocity. TF_KEEPANGLE = 0x00000010, // Keep angle. TF_USESPOTZ = 0x00000020, // Set the z to the spot's z, instead of the floor. TF_NOSRCFOG = 0x00000040, // Don't leave any fog behind when teleporting. TF_NODESTFOG = 0x00000080, // Don't spawn any fog at the arrival position. TF_USEACTORFOG = 0x00000100, // Use the actor's TeleFogSourceType and TeleFogDestType fogs. TF_NOJUMP = 0x00000200, // Don't jump after teleporting. TF_OVERRIDE = 0x00000400, // Ignore NOTELEPORT. TF_SENSITIVEZ = 0x00000800, // Fail if the actor wouldn't fit in the position (for Z). TF_KEEPORIENTATION = TF_KEEPVELOCITY|TF_KEEPANGLE, TF_NOFOG = TF_NOSRCFOG|TF_NODESTFOG, }; // Flags for A_WolfAttack const int WAF_NORANDOM = 1; const int WAF_USEPUFF = 2; // Flags for A_RadiusGive enum { RGF_GIVESELF = 1, RGF_PLAYERS = 1 << 1, RGF_MONSTERS = 1 << 2, RGF_OBJECTS = 1 << 3, RGF_VOODOO = 1 << 4, RGF_CORPSES = 1 << 5, RGF_NOTARGET = 1 << 6, RGF_NOTRACER = 1 << 7, RGF_NOMASTER = 1 << 8, RGF_CUBE = 1 << 9, RGF_NOSIGHT = 1 << 10, RGF_MISSILES = 1 << 11, RGF_INCLUSIVE = 1 << 12, RGF_ITEMS = 1 << 13, RGF_KILLED = 1 << 14, RGF_EXFILTER = 1 << 15, RGF_EXSPECIES = 1 << 16, RGF_EITHER = 1 << 17, }; // Activation flags enum { THINGSPEC_Default = 0, THINGSPEC_ThingActs = 1, THINGSPEC_ThingTargets = 2, THINGSPEC_TriggerTargets = 4, THINGSPEC_MonsterTrigger = 8, THINGSPEC_MissileTrigger = 16, THINGSPEC_ClearSpecial = 32, THINGSPEC_NoDeathSpecial = 64, THINGSPEC_TriggerActs = 128, }; // Shorter aliases for same const int AF_Default = 0; const int AF_ThingActs = 1; const int AF_ThingTargets = 2; const int AF_TriggerTargets = 4; const int AF_MonsterTrigger = 8; const int AF_MissileTrigger = 16; const int AF_ClearSpecial = 32; const int AF_NoDeathSpecial = 64; const int AF_TriggerActs = 128; // Flags for A_TakeInventory and A_TakeFromTarget const int TIF_NOTAKEINFINITE = 1; // constants for A_PlaySound enum { CHAN_AUTO = 0, CHAN_WEAPON = 1, CHAN_VOICE = 2, CHAN_ITEM = 3, CHAN_BODY = 4, CHAN_5 = 5, CHAN_6 = 6, CHAN_7 = 7, // modifier flags CHAN_LISTENERZ = 8, CHAN_MAYBE_LOCAL = 16, CHAN_UI = 32, CHAN_NOPAUSE = 64 }; // sound attenuation values const float ATTN_NONE = 0; const float ATTN_NORM = 1; const float ATTN_IDLE = 1.001; const float ATTN_STATIC = 3; // For SetPlayerProprty action special Const Int PROP_FROZEN = 0; Const Int PROP_NOTARGET = 1; Const Int PROP_INSTANTWEAPONSWITCH = 2; Const Int PROP_FLY = 3; Const Int PROP_TOTALLYFROZEN = 4; Const Int PROP_INVULNERABILITY = 5; // (Deprecated) Const Int PROP_STRENGTH = 6; // (Deprecated) Const Int PROP_INVISIBILITY = 7; // (Deprecated) Const Int PROP_RADIATIONSUIT = 8; // (Deprecated) Const Int PROP_ALLMAP = 9; // (Deprecated) Const Int PROP_INFRARED = 10; // (Deprecated) Const Int PROP_WEAPONLEVEL2 = 11; // (Deprecated) Const Int PROP_FLIGHT = 12; // (Deprecated) Const Int PROP_SPEED = 15; // (Deprecated) Const Int PROP_BUDDHA = 16; // Line_SetBlocking Const Int BLOCKF_CREATURES = 1; Const Int BLOCKF_MONSTERS = 2; Const Int BLOCKF_PLAYERS = 4; Const Int BLOCKF_FLOATERS = 8; Const Int BLOCKF_PROJECTILES = 16; Const Int BLOCKF_EVERYTHING = 32; Const Int BLOCKF_RAILING = 64; Const Int BLOCKF_USE = 128; // Pointer constants, bitfield-enabled Const Int AAPTR_DEFAULT = 0; Const Int AAPTR_NULL = 0x1; Const Int AAPTR_TARGET = 0x2; Const Int AAPTR_MASTER = 0x4; Const Int AAPTR_TRACER = 0x8; Const Int AAPTR_PLAYER_GETTARGET = 0x10; Const Int AAPTR_PLAYER_GETCONVERSATION = 0x20; Const Int AAPTR_PLAYER1 = 0x40; Const Int AAPTR_PLAYER2 = 0x80; Const Int AAPTR_PLAYER3 = 0x100; Const Int AAPTR_PLAYER4 = 0x200; Const Int AAPTR_PLAYER5 = 0x400; Const Int AAPTR_PLAYER6 = 0x800; Const Int AAPTR_PLAYER7 = 0x1000; Const Int AAPTR_PLAYER8 = 0x2000; Const Int AAPTR_FRIENDPLAYER = 0x4000; Const Int AAPTR_LINETARGET = 0x8000; // Pointer operation flags Const Int PTROP_UNSAFETARGET = 1; Const Int PTROP_UNSAFEMASTER = 2; Const Int PTROP_NOSAFEGUARDS = PTROP_UNSAFETARGET|PTROP_UNSAFEMASTER; // Flags for A_Warp Const Int WARPF_ABSOLUTEOFFSET = 0x1; Const Int WARPF_ABSOLUTEANGLE = 0x2; Const Int WARPF_USECALLERANGLE = 0x4; Const Int WARPF_NOCHECKPOSITION = 0x8; Const Int WARPF_INTERPOLATE = 0x10; Const Int WARPF_WARPINTERPOLATION = 0x20; Const Int WARPF_COPYINTERPOLATION = 0x40; Const Int WARPF_STOP = 0x80; Const Int WARPF_TOFLOOR = 0x100; Const Int WARPF_TESTONLY = 0x200; Const Int WAPRF_ABSOLUTEPOSITION = 0x400; Const Int WARPF_ABSOLUTEPOSITION = 0x400; Const Int WARPF_BOB = 0x800; Const Int WARPF_MOVEPTR = 0x1000; Const Int WARPF_USETID = 0x2000; Const Int WARPF_COPYVELOCITY = 0x4000; Const Int WARPF_COPYPITCH = 0x8000; // flags for A_SetPitch/SetAngle/SetRoll const int SPF_FORCECLAMP = 1; const int SPF_INTERPOLATE = 2; // flags for A_CheckLOF enum { CLOFF_NOAIM_VERT = 0x1, CLOFF_NOAIM_HORZ = 0x2, CLOFF_JUMPENEMY = 0x4, CLOFF_JUMPFRIEND = 0x8, CLOFF_JUMPOBJECT = 0x10, CLOFF_JUMPNONHOSTILE = 0x20, CLOFF_SKIPENEMY = 0x40, CLOFF_SKIPFRIEND = 0x80, CLOFF_SKIPOBJECT = 0x100, CLOFF_SKIPNONHOSTILE = 0x200, CLOFF_MUSTBESHOOTABLE = 0x400, CLOFF_SKIPTARGET = 0x800, CLOFF_ALLOWNULL = 0x1000, CLOFF_CHECKPARTIAL = 0x2000, CLOFF_MUSTBEGHOST = 0x4000, CLOFF_IGNOREGHOST = 0x8000, CLOFF_MUSTBESOLID = 0x10000, CLOFF_BEYONDTARGET = 0x20000, CLOFF_FROMBASE = 0x40000, CLOFF_MUL_HEIGHT = 0x80000, CLOFF_MUL_WIDTH = 0x100000, CLOFF_JUMP_ON_MISS = 0x200000, CLOFF_AIM_VERT_NOOFFSET = 0x400000, CLOFF_SETTARGET = 0x800000, CLOFF_SETMASTER = 0x1000000, CLOFF_SETTRACER = 0x2000000, CLOFF_SKIPOBSTACLES = CLOFF_SKIPENEMY|CLOFF_SKIPFRIEND|CLOFF_SKIPOBJECT|CLOFF_SKIPNONHOSTILE, CLOFF_NOAIM = CLOFF_NOAIM_VERT|CLOFF_NOAIM_HORZ }; // Flags for A_Kill (Master/Target/Tracer/Children/Siblings) series enum { KILS_FOILINVUL = 0x00000001, KILS_KILLMISSILES = 0x00000002, KILS_NOMONSTERS = 0x00000004, KILS_FOILBUDDHA = 0x00000008, KILS_EXFILTER = 0x00000010, KILS_EXSPECIES = 0x00000020, KILS_EITHER = 0x00000040, }; // Flags for A_Damage (Master/Target/Tracer/Children/Siblings/Self) series enum { DMSS_FOILINVUL = 0x00000001, DMSS_AFFECTARMOR = 0x00000002, DMSS_KILL = 0x00000004, DMSS_NOFACTOR = 0x00000008, DMSS_FOILBUDDHA = 0x00000010, DMSS_NOPROTECT = 0x00000020, DMSS_EXFILTER = 0x00000040, DMSS_EXSPECIES = 0x00000080, DMSS_EITHER = 0x00000100, }; // Flags for A_AlertMonsters const int AMF_TARGETEMITTER = 1; const int AMF_TARGETNONPLAYER = 2; const int AMF_EMITFROMTARGET = 4; // Flags for A_Remove* enum { RMVF_MISSILES = 0x00000001, RMVF_NOMONSTERS = 0x00000002, RMVF_MISC = 0x00000004, RMVF_EVERYTHING = 0x00000008, RMVF_EXFILTER = 0x00000010, RMVF_EXSPECIES = 0x00000020, RMVF_EITHER = 0x00000040, }; // Flags for A_Fade* enum { FTF_REMOVE = 1 << 0, FTF_CLAMP = 1 << 1, }; // Flags for A_Face* enum { FAF_BOTTOM = 1, FAF_MIDDLE = 2, FAF_TOP = 4, FAF_NODISTFACTOR = 8, }; // Flags for A_QuakeEx enum { QF_RELATIVE = 1, QF_SCALEDOWN = 1 << 1, QF_SCALEUP = 1 << 2, QF_MAX = 1 << 3, QF_FULLINTENSITY = 1 << 4, QF_WAVE = 1 << 5, }; // A_CheckProximity flags enum { CPXF_ANCESTOR = 1, CPXF_LESSOREQUAL = 1 << 1, CPXF_NOZ = 1 << 2, CPXF_COUNTDEAD = 1 << 3, CPXF_DEADONLY = 1 << 4, CPXF_EXACT = 1 << 5, CPXF_SETTARGET = 1 << 6, CPXF_SETMASTER = 1 << 7, CPXF_SETTRACER = 1 << 8, CPXF_FARTHEST = 1 << 9, CPXF_CLOSEST = 1 << 10, CPXF_SETONPTR = 1 << 11, CPXF_CHECKSIGHT = 1 << 12, }; // Flags for A_CheckBlock // These flags only affect the calling actor('s pointer), not the ones being searched. enum { CBF_NOLINES = 1 << 0, //Don't check actors. CBF_SETTARGET = 1 << 1, //Sets the caller/pointer's target to the actor blocking it. Actors only. CBF_SETMASTER = 1 << 2, //^ but with master. CBF_SETTRACER = 1 << 3, //^ but with tracer. CBF_SETONPTR = 1 << 4, //Sets the pointer change on the actor doing the checking instead of self. CBF_DROPOFF = 1 << 5, //Check for dropoffs. CBF_NOACTORS = 1 << 6, //Don't check actors. CBF_ABSOLUTEPOS = 1 << 7, //Absolute position for offsets. CBF_ABSOLUTEANGLE = 1 << 8, //Absolute angle for offsets. }; enum { SPF_FULLBRIGHT = 1, SPF_RELPOS = 1 << 1, SPF_RELVEL = 1 << 2, SPF_RELACCEL = 1 << 3, SPF_RELANG = 1 << 4, SPF_NOTIMEFREEZE = 1 << 5, SPF_RELATIVE = SPF_RELPOS|SPF_RELVEL|SPF_RELACCEL|SPF_RELANG }; //Flags for A_FaceMovementDirection enum { FMDF_NOPITCH = 1 << 0, FMDF_INTERPOLATE = 1 << 1, FMDF_NOANGLE = 1 << 2, }; // Flags for GetZAt enum { GZF_ABSOLUTEPOS = 1, // Use the absolute position instead of an offsetted one. GZF_ABSOLUTEANG = 1 << 1, // Don't add the actor's angle to the parameter. GZF_CEILING = 1 << 2, // Check the ceiling instead of the floor. GZF_3DRESTRICT = 1 << 3, // Ignore midtextures and 3D floors above the pointer's z. GZF_NOPORTALS = 1 << 4, // Don't pass through any portals. GZF_NO3DFLOOR = 1 << 5, // Pass all 3D floors. }; // Flags for A_WeaponOffset enum { WOF_KEEPX = 1, WOF_KEEPY = 1 << 1, WOF_ADD = 1 << 2, }; // Flags for psprite layers enum { PSPF_ADDWEAPON = 1 << 0, PSPF_ADDBOB = 1 << 1, PSPF_POWDOUBLE = 1 << 2, PSPF_CVARFAST = 1 << 3, }; // Default psprite layers enum { PSP_WEAPON = 1, PSP_FLASH = 1000, }; enum { // These are the original inputs sent by the player. INPUT_OLDBUTTONS, INPUT_BUTTONS, INPUT_PITCH, INPUT_YAW, INPUT_ROLL, INPUT_FORWARDMOVE, INPUT_SIDEMOVE, INPUT_UPMOVE, // These are the inputs, as modified by P_PlayerThink(). // Most of the time, these will match the original inputs, but // they can be different if a player is frozen or using a // chainsaw. MODINPUT_OLDBUTTONS, MODINPUT_BUTTONS, MODINPUT_PITCH, MODINPUT_YAW, MODINPUT_ROLL, MODINPUT_FORWARDMOVE, MODINPUT_SIDEMOVE, MODINPUT_UPMOVE }; enum { BT_ATTACK = 1<<0, // Press "Fire". BT_USE = 1<<1, // Use button, to open doors, activate switches. BT_JUMP = 1<<2, BT_CROUCH = 1<<3, BT_TURN180 = 1<<4, BT_ALTATTACK = 1<<5, // Press your other "Fire". BT_RELOAD = 1<<6, // [XA] Reload key. Causes state jump in A_WeaponReady. BT_ZOOM = 1<<7, // [XA] Zoom key. Ditto. // The rest are all ignored by the play simulation and are for scripts. BT_SPEED = 1<<8, BT_STRAFE = 1<<9, BT_MOVERIGHT = 1<<10, BT_MOVELEFT = 1<<11, BT_BACK = 1<<12, BT_FORWARD = 1<<13, BT_RIGHT = 1<<14, BT_LEFT = 1<<15, BT_LOOKUP = 1<<16, BT_LOOKDOWN = 1<<17, BT_MOVEUP = 1<<18, BT_MOVEDOWN = 1<<19, BT_SHOWSCORES = 1<<20, BT_USER1 = 1<<21, BT_USER2 = 1<<22, BT_USER3 = 1<<23, BT_USER4 = 1<<24, }; // Flags for GetAngle enum { GAF_RELATIVE = 1, GAF_SWITCH = 1 << 1, };