From df33f3a0fc22912e056c3f5d907185da915c5aeb Mon Sep 17 00:00:00 2001 From: HDanke Date: Sun, 8 Mar 2026 19:18:40 +0200 Subject: [PATCH 1/4] Update Enums.hpp Ported over my own enum findings. All of the enum names are for reference feel free to change them. Some of the enums look sketchy but i double checked them, i can't guarantee no mistakes so worth triple checking. --- bindings/include/Geode/Enums.hpp | 437 +++++++++++++++++++++++++++++++ 1 file changed, 437 insertions(+) diff --git a/bindings/include/Geode/Enums.hpp b/bindings/include/Geode/Enums.hpp index 161b1c400..d2e302d9c 100644 --- a/bindings/include/Geode/Enums.hpp +++ b/bindings/include/Geode/Enums.hpp @@ -1137,6 +1137,443 @@ enum class GameObjectClassType { Smart = 5, }; +// All of the enum names are for reference feel free to change them +// Some of the enums look sketchy but i double checked them, +// i can't guarantee no mistakes so worth triple checking + +// EffectGameObject.m_pulseMode +// property 48 +// Pulse trigger Color / HSV selector +enum class PulseTriggerColorType { + Color = 0, + HSV = 1 +}; + +// EffectGameObject.m_pulseTargetType +// property 52 +// Pulse trigger Channel / Group selector +enum class PulseTriggerTargetType { + Channel = 0, + Group = 1 +}; + +// CountTriggerGameObject.m_pickupTriggerMode +// property 88 +// Pickup trigger Add / Multiply / Divide selector +// Instant Count trigger Equal / Larger / Smaller selector +enum class CountTriggerMode { + AddEqual = 0, + MultiplyLarger = 1, + DivideSmaller = 2 +}; + +// CameraTriggerGameObject.m_edgeDirection +// property 164 +// Camera Edge trigger None / Left / Right / Up / Down selector +enum class CameraTriggerEdge { + None = 0, + Left = 1, + Right = 2, + Up = 3, + Down = 4 +}; + +// RotateGameplayGameObject.m_groundDirection +// RotateGameplayGameObject.m_moveDirection +// property 166 and 167 +// Rotate Gameplay trigger direction +// These are set automatically depending on the trigger's orientation +// From my testing 166 is ground direction but geode names it m_moveDirection, +// while 167 is move direction but geode names it m_groundDirection +// This enum is mapped based off my own testing +enum class RotateGameplayTriggerDirection { + Default = 0, // if p166 has value 2 and p167 has value 4 the game doesn't serialize them + Up = 1, + Down = 2, + Left = 3, + Right = 4 +}; + +// GradientTriggerObject.m_blendingMode +// property 174 +// Gradient trigger Normal / Additive / Multiply / Invert selector +enum class GradientTriggerBlending { + Normal = 0, + Additive = 1, + Multiply = 2, + Invert = 3 +}; + +// ShaderGameObject.m_zLayerMin +// property 196 +// ShaderGameObject.m_zLayerMax +// property 197 +// GradientTriggerObject.m_blendingLayer +// property 202 +// Shader / Gradient layer selector +enum class GradientShaderLayer { + BG = 1, + MG = 2, + B5 = 3, + B4 = 4, + B3 = 5, + B2 = 6, + B1 = 7, + P = 8, + T1 = 9, + T2 = 10, + T3 = 11, + T4 = 12, + G = 13, + UI = 14, + MAX = 15 +}; + +// EnterEffectObject.m_enterType +// property 217 +// Enter trigger Enter / Exit Only selector +enum class EffectTriggerEnterType { + Default = 0, + Enter = 1, + Exit = 2 +}; + +// TeleportPortalObject m_gravityMode +// property 354 +// Teleport portal / orb / trigger Gravity Normal / Flipped / Toggle selector +enum class TeleportGravityMode { + None = 0, + Normal = 1, + Flipped = 2, + Toggle = 3 +}; + +// AdvancedFollowTriggerObject.m_followMode +// property 367 +// Advanced Follow Mode 1/2/3 selector +enum class AdvancedFollowTriggerMode { + Mode1 = 0, + Mode2 = 1, + Mode3 = 2 +}; + +// KeyframeGameObject.m_timeMode +// property 379 +// Keyframe reference Time / Even / Dist selector +enum class KeyframePointTimeMode { + Time = 0, + Even = 1, + Dist = 2 +}; + +// UISettingsGameObject.m_xRef +// property 385 +// UISettingsGameObject.m_yRef +// property 386 +// UI trigger X reference Auto / Center / Left / Right selectors +// UI trigger Y reference Auto / Center / Top / Bottom selectors +// Yes they use the same enum +enum class UITriggerReference { + Default = 0, // for X is AutoX and for Y is AutoY + AutoX = 1, + CenterX = 2, + Left = 3, + Right = 4, + AutoY = 5, + CenterY = 6, + Bottom = 7, + Top = 8 +}; + +// LabelGameObject.m_shownSpecial +// property 390 +// Counter Label MainTime / Points / Attempts selector +// The values are correct, if value is Default then the label's own value is used +// If you put -1, -2 or -3 in the label's ItemID it will reference the same items +enum class CounterLabelSpecialItem { + Default = 0, + MainTime = -1, + Points = -2, + Attempts = -3 +}; + +// LabelGameObject.m_alignment +// property 391 +// Counter Label Center / Left / Right alignment selector +enum class CounterLabelAlignment { + Center = 0, + Left = 1, + Right = 2 +}; + +// SequenceTriggerGameObject.m_sequenceMode +// property 436 +// Sequence trigger Mode Stop / Loop / Last selector +enum class SequenceTriggerStopMode { + Stop = 0, + Loop = 1, + Last = 2 +}; + +// SequenceTriggerGameObject.m_resetMode +// property 439 +// Sequence trigger Reset Full / Step selector +enum class SequenceTriggerResetMode { + Full = 0, + Step = 1 +}; + +// SFXTriggerGameObject.m_proximityMode +// property 458 +// SFX trigger volume proximity selectors +// The properties aren't named they have visual selectors +enum class SFXTriggerProximityMode { + Radial = 0, + Horizontal = 1, + Leftwise = 2, + Rightwise = 3, + Vertical = 4, + Downwards = 5, + Upwards = 6 +}; + +// TimerTriggerGameObject.m_controlType +// property 472 +// Time Control trigger Start / Stop selector +enum class TimerTriggerControlType { + Start = 0, + Stop = 1 +}; + +// ItemTriggerGameObject.m_item1Mode +// property 477 +// ItemTriggerGameObject.m_item2Mode +// property 478 +// ItemTriggerGameObject.m_targetItemMode +// property 480 +// Item Edit & Item Compare Item / Timer / Points / Time / Att selectors +// Target ItemID does not use Time and Att +enum class ItemTriggerItemType { + Default = 0, // m_item1Mode on Item Compare maps this to Item + Item = 1, + Timer = 2, + Points = 3, + MainTime = 4, // renamed from Time for clarity + Attempts = 5 // renamed from Att for clarity +}; + +// ItemTriggerGameObject.m_resultType1 +// property 480 +// ItemTriggerGameObject.m_resultType2 +// property 481 +// ItemTriggerGameObject.m_resultType3 +// property 482 +// Item Edit & Item Compare Equal / Add / Subtract / Multiply / Divide selectors +// m_resultType1 uses Equal, Add, Subtract, Multiply and divide for Item Edit but does not use Equal for Item Compare +// m_resultType2 uses Add, Subtract, Multiply and Divide +// m_resultType3 uses arithmetic operations for Item Edit (Multiply, Divide), +// and comparison operations for Item Compare (Equal, Greater Than, Greater or Equal, Lower Than, Lower or Equal, Not Equal) +enum class ItemTriggerResultType { + Equal = 0, + AddGT = 1, + SubtractGE = 2, + MultiplyLT = 3, + DivideLE = 4, + NotEqual = 5 +}; + +// ItemTriggerGameObject.m_roundType1 +// property 485 +// ItemTriggerGameObject.m_roundType2 +// property 486 +// Item Edit & Item Compare Round / Floor / Ceil selectors +enum class ItemTriggerRoundType { + None = 0, + Round = 1, + Floor = 2, + Ceiling = 3 +}; + +// GameObject.m_customColorType +// property 497 +// Single color Default / Base / Detail selectors +enum class CustomSingleColorType { + Default = 0, + Base = 1, + Detail = 2 +}; + +// EventLinkTrigger m_extraID2 +// property 525 +// Event trigger Extra ID 2 player selector +enum class EventTriggerPlayer { + All = 0, + Player1 = 1, + Player2 = 2 +}; + +// KeyframeGameObject.m_direction +// property 536 +// Keyframe object CCW / CW selectors +enum class KeyframePointRotateDir { + Nearest = 0, // none selected + Clockwise = 1, // CW + CounterClockwise = 2 // CCW +}; + +// EnterEffectObject.m_specialTarget +// property 538 +// Area trigger P1 / P2 / C / BL / CL / TL / BC / TC / BR / CR / TR selectors +enum class EnterEffectSpecialTarget { + P1 = -1, // Player1 + P2 = -2, // Player2 + C = -3, // Center + BL = -4, // BottomLeft + CL = -5, // CenterLeft + TL = -6, // TopLeft + BC = -7, // BottomCenter + TC = -8, // TopCenter + BR = -9, // BottomRight + CR = -10, // CenterRight + TR = -11 // TopRight +}; + +// AdvancedFollowTriggerObject.m_startMode +// property 572 +// Advanced Follow Init / Set / Add selectors +enum class AdvancedFollowTriggerStartMode { + Init = 0, + Set = 1, + Add = 2 +}; + +// ItemTriggerGameObject.m_signType1 +// property 578 +// ItemTriggerGameObject.m_signType2 +// property 579 +// Item Edit & Item Compare NA / ABS / NEG selectors +enum class ItemTriggerSignType { + None = 0, // NA + Absolute = 1, // ABS + Negation = 2 // NEG +}; + +// LevelSettingsObject.m_startMode +// property kA2 +// Gamemode selector +enum class PlayerGamemode { + Cube = 0, + Ship = 1, + Ball = 2, + Ufo = 3, + Wave = 4, + Robot = 5, + Spider = 6, + Swing = 7 +}; + +// GJGameLevel.m_audioTrack +// property k8 +// Normal song selector +// Includes alt game songs, remove if irrelevant +enum class DefaultSongs { + StayInsideMe = -1, + StereoMadness = 0, + BackOnTrack = 1, + Polargeist = 2, + DryOut = 3, + BaseAfterBase = 4, + CantLetGo = 5, + Jumper = 6, + TimeMachine = 7, + Cycles = 8, + Xstep = 9, + Clutterfunk = 10, + TheoryOfEverything = 11, + ElectromanAdventures = 12, + Clubstep = 13, + Electrodynamix = 14, + HexagonForce = 15, + BlastProcessing = 16, + TheoryOfEverything2 = 17, + GeometricalDominator = 18, + Deadlocked = 19, + Fingerdash = 20, + Dash = 21, + Explorers = 22, + TheSevenSeas = 23, + VikingArena = 24, + AirborneRobots = 25, + Secret = 26, + Payload = 27, + BeastMode = 28, + Machina = 29, + Years = 30, + Frontlines = 31, + SpacePirates = 32, + Striker = 33, + Embers = 34, + Round1 = 35, + MonsterDanceOff = 36, + PressStart = 37, + NockEm = 38, + PowerTrip = 39 +}; + +// GJGameLevel.m_levelLength +// property k23 +// Level length display +enum class LevelLength { + Tiny = 0, + Short = 1, + Medium = 2, + Long = 3, + XL = 4, + Platformer = 5 // Plat +}; + +// GJGameLevel.m_isEpic +// property k75 +// Level epic rating +enum class LevelEpicType { + None = 0, + Epic = 1, + Legendary 2, + Mythic = 3 +}; + +// GJGameLevel.m_demonDifficulty +// property k76 +// Level demon difficulty +enum class LevelDemonRating { + Hard = 0, + PreRating = 1, // old is_demon flag from early 2.1 + Easy = 3, + Medium = 4, + Insane = 5, + Extreme = 6 +}; + +// GJLevelList.m_difficulty +// property k7 +// Level List difficulty selector +// Yes this is really a different enum from GJDifficulty +// The only difference is how demon difficulties are ordered +enum class LevelListDifficulty { + NA = -1, + Auto = 0, + Easy = 1, + Normal = 2, + Hard = 3, + Harder = 4, + Insane = 5, + DemonEasy = 6, + DemonMedium = 7, + DemonHard = 8, + DemonInsane = 9, + DemonExtreme = 10 +}; + namespace GameVar { constexpr auto FollowPlayer = "0001"; constexpr auto PlaytestMusic = "0002"; From 1bb48fdd415cec8dc938be9dfa33c176141f7628 Mon Sep 17 00:00:00 2001 From: HDanke Date: Sun, 8 Mar 2026 20:55:48 +0200 Subject: [PATCH 2/4] Update Enums.hpp Fixed syntax and removed duplicates. --- bindings/include/Geode/Enums.hpp | 140 ++++++++++--------------------- 1 file changed, 45 insertions(+), 95 deletions(-) diff --git a/bindings/include/Geode/Enums.hpp b/bindings/include/Geode/Enums.hpp index d2e302d9c..1141c47f9 100644 --- a/bindings/include/Geode/Enums.hpp +++ b/bindings/include/Geode/Enums.hpp @@ -377,8 +377,10 @@ enum class FMODReverbPreset { SewerPipe = 0x15, Underwater = 0x16 }; +// GJGameLevel.m_demonDifficulty / property k76 enum class DemonDifficultyType { HardDemon = 0, + Unknown = 1, // old is_demon flag from early 2.1, may still show up on old levels that have not been loaded EasyDemon = 3, MediumDemon = 4, InsaneDemon = 5, @@ -1141,24 +1143,22 @@ enum class GameObjectClassType { // Some of the enums look sketchy but i double checked them, // i can't guarantee no mistakes so worth triple checking -// EffectGameObject.m_pulseMode -// property 48 +// EffectGameObject.m_pulseMode / property 48 // Pulse trigger Color / HSV selector +// Different from PulseEffectType enum class PulseTriggerColorType { Color = 0, HSV = 1 }; -// EffectGameObject.m_pulseTargetType -// property 52 +// EffectGameObject.m_pulseTargetType / property 52 // Pulse trigger Channel / Group selector enum class PulseTriggerTargetType { Channel = 0, Group = 1 }; -// CountTriggerGameObject.m_pickupTriggerMode -// property 88 +// CountTriggerGameObject.m_pickupTriggerMode / property 88 // Pickup trigger Add / Multiply / Divide selector // Instant Count trigger Equal / Larger / Smaller selector enum class CountTriggerMode { @@ -1167,8 +1167,7 @@ enum class CountTriggerMode { DivideSmaller = 2 }; -// CameraTriggerGameObject.m_edgeDirection -// property 164 +// CameraTriggerGameObject.m_edgeDirection / property 164 // Camera Edge trigger None / Left / Right / Up / Down selector enum class CameraTriggerEdge { None = 0, @@ -1194,8 +1193,7 @@ enum class RotateGameplayTriggerDirection { Right = 4 }; -// GradientTriggerObject.m_blendingMode -// property 174 +// GradientTriggerObject.m_blendingMode / property 174 // Gradient trigger Normal / Additive / Multiply / Invert selector enum class GradientTriggerBlending { Normal = 0, @@ -1204,12 +1202,9 @@ enum class GradientTriggerBlending { Invert = 3 }; -// ShaderGameObject.m_zLayerMin -// property 196 -// ShaderGameObject.m_zLayerMax -// property 197 -// GradientTriggerObject.m_blendingLayer -// property 202 +// ShaderGameObject.m_zLayerMin / property 196 +// ShaderGameObject.m_zLayerMax / property 197 +// GradientTriggerObject.m_blendingLayer / property 202 // Shader / Gradient layer selector enum class GradientShaderLayer { BG = 1, @@ -1229,8 +1224,7 @@ enum class GradientShaderLayer { MAX = 15 }; -// EnterEffectObject.m_enterType -// property 217 +// EnterEffectObject.m_enterType / property 217 // Enter trigger Enter / Exit Only selector enum class EffectTriggerEnterType { Default = 0, @@ -1238,8 +1232,7 @@ enum class EffectTriggerEnterType { Exit = 2 }; -// TeleportPortalObject m_gravityMode -// property 354 +// TeleportPortalObject m_gravityMode / property 354 // Teleport portal / orb / trigger Gravity Normal / Flipped / Toggle selector enum class TeleportGravityMode { None = 0, @@ -1248,8 +1241,7 @@ enum class TeleportGravityMode { Toggle = 3 }; -// AdvancedFollowTriggerObject.m_followMode -// property 367 +// AdvancedFollowTriggerObject.m_followMode / property 367 // Advanced Follow Mode 1/2/3 selector enum class AdvancedFollowTriggerMode { Mode1 = 0, @@ -1257,8 +1249,7 @@ enum class AdvancedFollowTriggerMode { Mode3 = 2 }; -// KeyframeGameObject.m_timeMode -// property 379 +// KeyframeGameObject.m_timeMode / property 379 // Keyframe reference Time / Even / Dist selector enum class KeyframePointTimeMode { Time = 0, @@ -1266,10 +1257,8 @@ enum class KeyframePointTimeMode { Dist = 2 }; -// UISettingsGameObject.m_xRef -// property 385 -// UISettingsGameObject.m_yRef -// property 386 +// UISettingsGameObject.m_xRef / property 385 +// UISettingsGameObject.m_yRef / property 386 // UI trigger X reference Auto / Center / Left / Right selectors // UI trigger Y reference Auto / Center / Top / Bottom selectors // Yes they use the same enum @@ -1285,8 +1274,7 @@ enum class UITriggerReference { Top = 8 }; -// LabelGameObject.m_shownSpecial -// property 390 +// LabelGameObject.m_shownSpecial / property 390 // Counter Label MainTime / Points / Attempts selector // The values are correct, if value is Default then the label's own value is used // If you put -1, -2 or -3 in the label's ItemID it will reference the same items @@ -1297,8 +1285,7 @@ enum class CounterLabelSpecialItem { Attempts = -3 }; -// LabelGameObject.m_alignment -// property 391 +// LabelGameObject.m_alignment / property 391 // Counter Label Center / Left / Right alignment selector enum class CounterLabelAlignment { Center = 0, @@ -1306,8 +1293,7 @@ enum class CounterLabelAlignment { Right = 2 }; -// SequenceTriggerGameObject.m_sequenceMode -// property 436 +// SequenceTriggerGameObject.m_sequenceMode / property 436 // Sequence trigger Mode Stop / Loop / Last selector enum class SequenceTriggerStopMode { Stop = 0, @@ -1315,16 +1301,14 @@ enum class SequenceTriggerStopMode { Last = 2 }; -// SequenceTriggerGameObject.m_resetMode -// property 439 +// SequenceTriggerGameObject.m_resetMode / property 439 // Sequence trigger Reset Full / Step selector enum class SequenceTriggerResetMode { Full = 0, Step = 1 }; -// SFXTriggerGameObject.m_proximityMode -// property 458 +// SFXTriggerGameObject.m_proximityMode / property 458 // SFX trigger volume proximity selectors // The properties aren't named they have visual selectors enum class SFXTriggerProximityMode { @@ -1337,20 +1321,16 @@ enum class SFXTriggerProximityMode { Upwards = 6 }; -// TimerTriggerGameObject.m_controlType -// property 472 +// TimerTriggerGameObject.m_controlType / property 472 // Time Control trigger Start / Stop selector enum class TimerTriggerControlType { Start = 0, Stop = 1 }; -// ItemTriggerGameObject.m_item1Mode -// property 477 -// ItemTriggerGameObject.m_item2Mode -// property 478 -// ItemTriggerGameObject.m_targetItemMode -// property 480 +// ItemTriggerGameObject.m_item1Mode / property 477 +// ItemTriggerGameObject.m_item2Mode / property 478 +// ItemTriggerGameObject.m_targetItemMode / property 480 // Item Edit & Item Compare Item / Timer / Points / Time / Att selectors // Target ItemID does not use Time and Att enum class ItemTriggerItemType { @@ -1362,12 +1342,9 @@ enum class ItemTriggerItemType { Attempts = 5 // renamed from Att for clarity }; -// ItemTriggerGameObject.m_resultType1 -// property 480 -// ItemTriggerGameObject.m_resultType2 -// property 481 -// ItemTriggerGameObject.m_resultType3 -// property 482 +// ItemTriggerGameObject.m_resultType1 / property 480 +// ItemTriggerGameObject.m_resultType2 / property 481 +// ItemTriggerGameObject.m_resultType3 / property 482 // Item Edit & Item Compare Equal / Add / Subtract / Multiply / Divide selectors // m_resultType1 uses Equal, Add, Subtract, Multiply and divide for Item Edit but does not use Equal for Item Compare // m_resultType2 uses Add, Subtract, Multiply and Divide @@ -1382,10 +1359,8 @@ enum class ItemTriggerResultType { NotEqual = 5 }; -// ItemTriggerGameObject.m_roundType1 -// property 485 -// ItemTriggerGameObject.m_roundType2 -// property 486 +// ItemTriggerGameObject.m_roundType1 / property 485 +// ItemTriggerGameObject.m_roundType2 / property 486 // Item Edit & Item Compare Round / Floor / Ceil selectors enum class ItemTriggerRoundType { None = 0, @@ -1394,8 +1369,7 @@ enum class ItemTriggerRoundType { Ceiling = 3 }; -// GameObject.m_customColorType -// property 497 +// GameObject.m_customColorType / property 497 // Single color Default / Base / Detail selectors enum class CustomSingleColorType { Default = 0, @@ -1403,8 +1377,7 @@ enum class CustomSingleColorType { Detail = 2 }; -// EventLinkTrigger m_extraID2 -// property 525 +// EventLinkTrigger m_extraID2 / property 525 // Event trigger Extra ID 2 player selector enum class EventTriggerPlayer { All = 0, @@ -1412,8 +1385,7 @@ enum class EventTriggerPlayer { Player2 = 2 }; -// KeyframeGameObject.m_direction -// property 536 +// KeyframeGameObject.m_direction / property 536 // Keyframe object CCW / CW selectors enum class KeyframePointRotateDir { Nearest = 0, // none selected @@ -1421,8 +1393,7 @@ enum class KeyframePointRotateDir { CounterClockwise = 2 // CCW }; -// EnterEffectObject.m_specialTarget -// property 538 +// EnterEffectObject.m_specialTarget / property 538 // Area trigger P1 / P2 / C / BL / CL / TL / BC / TC / BR / CR / TR selectors enum class EnterEffectSpecialTarget { P1 = -1, // Player1 @@ -1438,8 +1409,7 @@ enum class EnterEffectSpecialTarget { TR = -11 // TopRight }; -// AdvancedFollowTriggerObject.m_startMode -// property 572 +// AdvancedFollowTriggerObject.m_startMode / property 572 // Advanced Follow Init / Set / Add selectors enum class AdvancedFollowTriggerStartMode { Init = 0, @@ -1447,10 +1417,8 @@ enum class AdvancedFollowTriggerStartMode { Add = 2 }; -// ItemTriggerGameObject.m_signType1 -// property 578 -// ItemTriggerGameObject.m_signType2 -// property 579 +// ItemTriggerGameObject.m_signType1 / property 578 +// ItemTriggerGameObject.m_signType2 / property 579 // Item Edit & Item Compare NA / ABS / NEG selectors enum class ItemTriggerSignType { None = 0, // NA @@ -1458,8 +1426,7 @@ enum class ItemTriggerSignType { Negation = 2 // NEG }; -// LevelSettingsObject.m_startMode -// property kA2 +// LevelSettingsObject.m_startMode / property kA2 // Gamemode selector enum class PlayerGamemode { Cube = 0, @@ -1472,8 +1439,7 @@ enum class PlayerGamemode { Swing = 7 }; -// GJGameLevel.m_audioTrack -// property k8 +// GJGameLevel.m_audioTrack / property k8 // Normal song selector // Includes alt game songs, remove if irrelevant enum class DefaultSongs { @@ -1520,8 +1486,7 @@ enum class DefaultSongs { PowerTrip = 39 }; -// GJGameLevel.m_levelLength -// property k23 +// GJGameLevel.m_levelLength / property k23 // Level length display enum class LevelLength { Tiny = 0, @@ -1532,33 +1497,18 @@ enum class LevelLength { Platformer = 5 // Plat }; -// GJGameLevel.m_isEpic -// property k75 +// GJGameLevel.m_isEpic / property k75 // Level epic rating enum class LevelEpicType { None = 0, Epic = 1, - Legendary 2, + Legendary = 2, Mythic = 3 }; -// GJGameLevel.m_demonDifficulty -// property k76 -// Level demon difficulty -enum class LevelDemonRating { - Hard = 0, - PreRating = 1, // old is_demon flag from early 2.1 - Easy = 3, - Medium = 4, - Insane = 5, - Extreme = 6 -}; - -// GJLevelList.m_difficulty -// property k7 +// GJLevelList.m_difficulty / property k7 // Level List difficulty selector -// Yes this is really a different enum from GJDifficulty -// The only difference is how demon difficulties are ordered +// Yes this is really a different enum from GJDifficulty, the only difference is how demon difficulties are ordered enum class LevelListDifficulty { NA = -1, Auto = 0, From e6dfc1776767407d07160afcd7dbf5d95f78510b Mon Sep 17 00:00:00 2001 From: HDanke Date: Sun, 8 Mar 2026 23:45:26 +0200 Subject: [PATCH 3/4] Update Enums.hpp Added EnterEffectDirectionType. --- bindings/include/Geode/Enums.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bindings/include/Geode/Enums.hpp b/bindings/include/Geode/Enums.hpp index 1141c47f9..4c8ffaa03 100644 --- a/bindings/include/Geode/Enums.hpp +++ b/bindings/include/Geode/Enums.hpp @@ -1232,6 +1232,14 @@ enum class EffectTriggerEnterType { Exit = 2 }; +// EnterEffectObject.m_directionType / property 262 +// Set alongside p276 (m_inbound) and p283 (m_twoDirections) when you select an Area trigger proximity option +enum class EnterEffectDirectionType { + Radial = 0, + Horizontal = 1, + Vertical = 2 +}; + // TeleportPortalObject m_gravityMode / property 354 // Teleport portal / orb / trigger Gravity Normal / Flipped / Toggle selector enum class TeleportGravityMode { From 2437e469e01328bbcace9a5c6225747420046fd2 Mon Sep 17 00:00:00 2001 From: HDanke Date: Mon, 9 Mar 2026 00:05:19 +0200 Subject: [PATCH 4/4] Update Enums.hpp Collapsed EventID2 enum into TouchTriggerControl --- bindings/include/Geode/Enums.hpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/bindings/include/Geode/Enums.hpp b/bindings/include/Geode/Enums.hpp index 4c8ffaa03..eb2c60774 100644 --- a/bindings/include/Geode/Enums.hpp +++ b/bindings/include/Geode/Enums.hpp @@ -184,8 +184,10 @@ enum class PulseEffectType { Hsv = 1, Color = 2, }; +// EffectGameObject.m_touchToggleMode / property 82 +// Touch trigger toggle selector enum class TouchTriggerType { - Normal = 0, + Normal = 0, // switches current toggle ToggleOn = 1, ToggleOff = 2, }; @@ -446,6 +448,11 @@ enum class SmartBlockType { WideSlope15 = 0x4B, WideSlope16 = 0x4C }; +// EffectGameObject.m_touchPlayerMode / property 198 +// Touch trigger player selectors +// EventLinkTrigger.m_extraID2 / property 525 +// Event trigger ExtraID2 player selector +// The mappings are pretty generic so it might be a better idea to rename this. enum class TouchTriggerControl { Both = 0, Player1 = 1, @@ -1385,14 +1392,6 @@ enum class CustomSingleColorType { Detail = 2 }; -// EventLinkTrigger m_extraID2 / property 525 -// Event trigger Extra ID 2 player selector -enum class EventTriggerPlayer { - All = 0, - Player1 = 1, - Player2 = 2 -}; - // KeyframeGameObject.m_direction / property 536 // Keyframe object CCW / CW selectors enum class KeyframePointRotateDir {