#pragma once #include <string_view> namespace metaforce { enum class EScriptObjectType { Actor = 0x00, Waypoint = 0x02, Door = 0x03, Trigger = 0x04, Timer = 0x05, Counter = 0x06, Effect = 0x07, Platform = 0x08, Sound = 0x09, Generator = 0x0A, Dock = 0x0B, Camera = 0x0C, CameraWaypoint = 0x0D, NewIntroBoss = 0x0E, SpawnPoint = 0x0F, CameraHint = 0x10, Pickup = 0x11, MemoryRelay = 0x13, RandomRelay = 0x14, Relay = 0x15, Beetle = 0x16, HUDMemo = 0x17, CameraFilterKeyframe = 0x18, CameraBlurKeyframe = 0x19, DamageableTrigger = 0x1A, Debris = 0x1B, CameraShaker = 0x1C, ActorKeyframe = 0x1D, Water = 0x20, Warwasp = 0x21, SpacePirate = 0x24, FlyingPirate = 0x25, ElitePirate = 0x26, MetroidBeta = 0x27, ChozoGhost = 0x28, CoverPoint = 0x2A, SpiderBallWaypoint = 0x2C, BloodFlower = 0x2D, FlickerBat = 0x2E, PathCamera = 0x2F, GrapplePoint = 0x30, PuddleSpore = 0x31, DebugCameraWaypoint = 0x32, SpiderBallAttractionSurface = 0x33, PuddleToadGamma = 0x34, DistanceFog = 0x35, FireFlea = 0x36, Metaree = 0x37, DockAreaChange = 0x38, ActorRotate = 0x39, SpecialFunction = 0x3A, SpankWeed = 0x3B, Parasite = 0x3D, PlayerHint = 0x3E, Ripper = 0x3F, PickupGenerator = 0x40, AIKeyframe = 0x41, PointOfInterest = 0x42, Drone = 0x43, Metroid = 0x44, DebrisExtended = 0x45, Steam = 0x46, Ripple = 0x47, BallTrigger = 0x48, TargetingPoint = 0x49, EMPulse = 0x4A, IceSheegoth = 0x4B, PlayerActor = 0x4C, Flaahgra = 0x4D, AreaAttributes = 0x4E, FishCloud = 0x4F, FishCloudModifier = 0x50, VisorFlare = 0x51, WorldTeleporter = 0x52, VisorGoo = 0x53, JellyZap = 0x54, ControllerAction = 0x55, Switch = 0x56, PlayerStateChange = 0x57, Thardus = 0x58, WallCrawlerSwarm = 0x5A, AIJumpPoint = 0x5B, FlaahgraTentacle = 0x5C, RoomAcoustics = 0x5D, ColorModulate = 0x5E, ThardusRockProjectile = 0x5F, Midi = 0x60, StreamedAudio = 0x61, WorldTeleporterToo = 0x62, Repulsor = 0x63, GunTurret = 0x64, FogVolume = 0x65, Babygoth = 0x66, Eyeball = 0x67, RadialDamage = 0x68, CameraPitchVolume = 0x69, EnvFxDensityController = 0x6A, Magdolite = 0x6B, TeamAIMgr = 0x6C, SnakeWeedSwarm = 0x6D, ActorContraption = 0x6E, Oculus = 0x6F, Geemer = 0x70, SpindleCamera = 0x71, AtomicAlpha = 0x72, CameraHintTrigger = 0x73, RumbleEffect = 0x74, AmbientAI = 0x75, AtomicBeta = 0x77, IceZoomer = 0x78, Puffer = 0x79, Tryclops = 0x7A, Ridley = 0x7B, Seedling = 0x7C, ThermalHeatFader = 0x7D, Burrower = 0x7F, ScriptBeam = 0x81, WorldLightFader = 0x82, MetroidPrimeStage2 = 0x83, MetroidPrimeStage1 = 0x84, MazeNode = 0x85, OmegaPirate = 0x86, PhazonPool = 0x87, PhazonHealingNodule = 0x88, NewCameraShaker = 0x89, ShadowProjector = 0x8A, EnergyBall = 0x8B, ScriptObjectTypeMAX }; enum class EScriptObjectState { Any = -1, Active = 0, Arrived = 1, Closed = 2, Entered = 3, Exited = 4, Inactive = 5, Inside = 6, MaxReached = 7, Open = 8, Zero = 9, Attack = 10, CloseIn = 11, Retreat = 12, Patrol = 13, Dead = 14, CameraPath = 15, CameraTarget = 16, DeactivateState = 17, Play = 18, MassiveDeath = 19, DeathRattle = 20, AboutToMassivelyDie = 21, Damage = 22, InvulnDamage = 23, MassiveFrozenDeath = 24, Modify = 25, ScanStart = 26, ScanProcessing = 27, ScanDone = 28, UnFrozen = 29, Default = 30, ReflectedDamage = 31, InheritBounds = 32 }; enum class EScriptObjectMessage { None = -1, UNKM0 = 0, Activate = 1, Arrived = 2, Close = 3, Deactivate = 4, Decrement = 5, Follow = 6, Increment = 7, Next = 8, Open = 9, Reset = 10, ResetAndStart = 11, SetToMax = 12, SetToZero = 13, Start = 14, Stop = 15, StopAndReset = 16, ToggleActive = 17, UNKM18 = 18, Action = 19, Play = 20, Alert = 21, InternalMessage00 = 22, OnFloor = 23, InternalMessage02 = 24, InternalMessage03 = 25, Falling = 26, OnIceSurface = 27, OnMudSlowSurface = 28, OnNormalSurface = 29, Touched = 30, AddPlatformRider = 31, LandOnNotFloor = 32, Registered = 33, Deleted = 34, InitializedInArea = 35, WorldInitialized = 36, AddSplashInhabitant = 37, UpdateSplashInhabitant = 38, RemoveSplashInhabitant = 39, Jumped = 40, Damage = 41, InvulnDamage = 42, ProjectileCollide = 43, InSnakeWeed = 44, AddPhazonPoolInhabitant = 45, UpdatePhazonPoolInhabitant = 46, RemovePhazonPoolInhabitant = 47, SuspendedMove = 48 }; std::string_view ScriptObjectTypeToStr(EScriptObjectType type); std::string_view ScriptObjectStateToStr(EScriptObjectState state); std::string_view ScriptObjectMessageToStr(EScriptObjectMessage message); } // namespace metaforce