Major restructuring and bug fixes.
Moved a lot of things around, fixed a lot of bugs, made the animations and sounds public. Special thanks to CuckyDev for helping me track down all the small problems that were lingering, and for fixing a major issue with the simulation rate. There's still some stuff to fix and improve, but now this should be more portable and useable by the wider community! 🎉
Co-Authored-By: Regan Green <cuckydev@gmail.com>
This commit is contained in:
parent
0629c7a645
commit
ba0e5364bb
51 changed files with 7377 additions and 2373 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
A port of Super Mario 64's movement code into Roblox Luau (in `--!strict` mode), hosted as a [rojo](https://rojo.space) project. Based on the SM64 decompilation project hosted at: https://github.com/n64decomp/sm64
|
A port of Super Mario 64's movement code into Roblox Luau (in `--!strict` mode), hosted as a [rojo](https://rojo.space) project. Based on the SM64 decompilation project hosted at: https://github.com/n64decomp/sm64
|
||||||
|
|
||||||
I wanted to make this public as a curiousity for anyone who wanted to know how I pulled it off. It **does not include any animations, sounds, or assets from Nintendo**. I do provide some of the scripts I used when I originally ported animations from the SM64 ROM into R15 Roblox avatars, but any future public version of this project from me will use commissioned assets that I have permission to use.
|
I wanted to make this public as a curiousity for anyone who wanted to know how I pulled it off. It **does not include any animations, sounds, or assets from Nintendo**. I do provide some of the scripts I used when I originally ported animations from the SM64 ROM into R15 Roblox avatars, but they are no longer in use.
|
||||||
|
|
||||||
Original game is hosted here:<br/>
|
Original game is hosted here:<br/>
|
||||||
https://www.roblox.com/games/10238956318/funny-64-bit-platformer
|
https://www.roblox.com/games/10238956318/funny-64-bit-platformer
|
||||||
|
@ -14,6 +14,4 @@ Any bugs or behavioral quirks of the physics in this are intentional and will no
|
||||||
|
|
||||||
## Terms of Use
|
## Terms of Use
|
||||||
|
|
||||||
You *may* use this in your game **as long as you provide credit** to me and the SM64 Decompilation Project. I would **NOT** advise using it as a foundation for a platformer since it's very rigidly tied to the 30hz physics simulation code of Super Mario 64. It's weirdly programmed and not very intuitive to build off of.
|
You *may* use this in your game, **but you must provide credit** to this repository and the SM64 Decompilation Project. I would **NOT** advise using it as a foundation for a platformer since it's very rigidly tied to the 30hz physics simulation code of Super Mario 64. It's weirdly programmed and not very intuitive to build off of.
|
||||||
|
|
||||||
No animations or sounds are provided by default, so you'll have to substitute those appropriately. It's not a trivial task.
|
|
|
@ -1,2 +1,2 @@
|
||||||
[tools]
|
[tools]
|
||||||
rojo = "rojo-rbx/rojo@7.2.1"
|
rojo = "rojo-rbx/rojo@7.3.0"
|
1303
client/Mario/Airborne/init.client.lua
Normal file
1303
client/Mario/Airborne/init.client.lua
Normal file
File diff suppressed because it is too large
Load diff
6
client/Mario/Airborne/init.meta.json
Normal file
6
client/Mario/Airborne/init.meta.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Disabled": true,
|
||||||
|
"RunContext": "Client"
|
||||||
|
}
|
||||||
|
}
|
6
client/Mario/Automatic/init.meta.json
Normal file
6
client/Mario/Automatic/init.meta.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Disabled": true,
|
||||||
|
"RunContext": "Client"
|
||||||
|
}
|
||||||
|
}
|
1495
client/Mario/Moving/init.client.lua
Normal file
1495
client/Mario/Moving/init.client.lua
Normal file
File diff suppressed because it is too large
Load diff
6
client/Mario/Moving/init.meta.json
Normal file
6
client/Mario/Moving/init.meta.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Disabled": true,
|
||||||
|
"RunContext": "Client"
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,14 +7,9 @@ local Enums = System.Enums
|
||||||
local Util = System.Util
|
local Util = System.Util
|
||||||
|
|
||||||
local Action = Enums.Action
|
local Action = Enums.Action
|
||||||
local ActionFlags = Enums.ActionFlags
|
|
||||||
local ActionGroup = Enums.ActionGroups
|
|
||||||
|
|
||||||
local AirStep = Enums.AirStep
|
|
||||||
local MarioEyes = Enums.MarioEyes
|
local MarioEyes = Enums.MarioEyes
|
||||||
local InputFlags = Enums.InputFlags
|
local InputFlags = Enums.InputFlags
|
||||||
local MarioFlags = Enums.MarioFlags
|
local MarioFlags = Enums.MarioFlags
|
||||||
local ParticleFlags = Enums.ParticleFlags
|
|
||||||
|
|
||||||
type Mario = System.Mario
|
type Mario = System.Mario
|
||||||
|
|
||||||
|
@ -545,6 +540,8 @@ DEF_ACTION(Action.SIDE_FLIP_LAND_STOP, function(m: Mario)
|
||||||
end
|
end
|
||||||
|
|
||||||
landingStep(m, Animations.SLIDEFLIP_LAND, Action.IDLE)
|
landingStep(m, Animations.SLIDEFLIP_LAND, Action.IDLE)
|
||||||
|
--m.GfxAngle += Vector3int16.new(0, 0x8000, 0)
|
||||||
|
|
||||||
return false
|
return false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -562,7 +559,7 @@ DEF_ACTION(Action.TRIPLE_JUMP_LAND_STOP, function(m: Mario)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
landingStep(m, Animations.GENERAL_LAND, Action.IDLE)
|
landingStep(m, Animations.TRIPLE_JUMP_LAND, Action.IDLE)
|
||||||
return false
|
return false
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -596,13 +593,10 @@ DEF_ACTION(Action.LONG_JUMP_LAND_STOP, function(m: Mario)
|
||||||
if checkCommonLandingCancels(m, Action.JUMP) then
|
if checkCommonLandingCancels(m, Action.JUMP) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- stylua: ignore
|
landingStep(
|
||||||
landingStep(m,
|
m,
|
||||||
if m.LongJumpIsSlow
|
if m.LongJumpIsSlow then Animations.CROUCH_FROM_FAST_LONGJUMP else Animations.CROUCH_FROM_SLOW_LONGJUMP,
|
||||||
then Animations.CROUCH_FROM_FAST_LONGJUMP
|
|
||||||
else Animations.CROUCH_FROM_SLOW_LONGJUMP,
|
|
||||||
|
|
||||||
Action.CROUCHING
|
Action.CROUCHING
|
||||||
)
|
)
|
||||||
|
|
6
client/Mario/Stationary/init.meta.json
Normal file
6
client/Mario/Stationary/init.meta.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Disabled": true,
|
||||||
|
"RunContext": "Client"
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,10 +3,14 @@ local Mario = {}
|
||||||
Mario.__index = Mario
|
Mario.__index = Mario
|
||||||
|
|
||||||
local SM64 = script.Parent
|
local SM64 = script.Parent
|
||||||
|
local Core = SM64.Parent
|
||||||
|
|
||||||
local Util = require(SM64.Util)
|
local Util = require(SM64.Util)
|
||||||
local Enums = require(SM64.Enums)
|
local Enums = require(SM64.Enums)
|
||||||
local Sounds = require(SM64.Sounds)
|
local Shared = require(Core.Shared)
|
||||||
local Animations = require(SM64.Animations)
|
|
||||||
|
local Sounds = Shared.Sounds
|
||||||
|
local Animations = Shared.Animations
|
||||||
|
|
||||||
local Types = require(SM64.Types)
|
local Types = require(SM64.Types)
|
||||||
local Flags = Types.Flags
|
local Flags = Types.Flags
|
||||||
|
@ -28,7 +32,6 @@ local SurfaceClass = Enums.SurfaceClass
|
||||||
local ParticleFlags = Enums.ParticleFlags
|
local ParticleFlags = Enums.ParticleFlags
|
||||||
|
|
||||||
local AirStep = Enums.AirStep
|
local AirStep = Enums.AirStep
|
||||||
local WaterStep = Enums.WaterStep
|
|
||||||
local GroundStep = Enums.GroundStep
|
local GroundStep = Enums.GroundStep
|
||||||
|
|
||||||
export type BodyState = Types.BodyState
|
export type BodyState = Types.BodyState
|
||||||
|
@ -44,7 +47,7 @@ export type Class = Mario
|
||||||
-- BINDINGS
|
-- BINDINGS
|
||||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
local actions: { [number]: MarioAction } = {}
|
local actions: { MarioAction } = {}
|
||||||
Mario.Animations = Animations
|
Mario.Animations = Animations
|
||||||
Mario.Actions = actions
|
Mario.Actions = actions
|
||||||
Mario.Sounds = Sounds
|
Mario.Sounds = Sounds
|
||||||
|
@ -86,7 +89,7 @@ function Mario.SetAnimation(m: Mario, anim: Animation): number
|
||||||
m.AnimCurrent = nil
|
m.AnimCurrent = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local startFrame: number = anim:GetAttribute("StartFrame") or -1
|
local startFrame: number = anim:GetAttribute("StartFrame") or 0
|
||||||
m.AnimAccelAssist = 0
|
m.AnimAccelAssist = 0
|
||||||
m.AnimAccel = 0
|
m.AnimAccel = 0
|
||||||
|
|
||||||
|
@ -101,8 +104,10 @@ function Mario.SetAnimationWithAccel(m: Mario, anim: Animation, accel: number)
|
||||||
if m.AnimCurrent ~= anim then
|
if m.AnimCurrent ~= anim then
|
||||||
m:SetAnimation(anim)
|
m:SetAnimation(anim)
|
||||||
m.AnimAccelAssist = -accel
|
m.AnimAccelAssist = -accel
|
||||||
m.AnimAccel = accel
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
m.AnimAccel = accel
|
||||||
|
return m.AnimFrame
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.SetAnimToFrame(m: Mario, frame: number)
|
function Mario.SetAnimToFrame(m: Mario, frame: number)
|
||||||
|
@ -190,7 +195,7 @@ function Mario.PlayJumpSound(m: Mario)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.AdjustSoundForSpeed(m: Mario)
|
function Mario.AdjustSoundForSpeed(m: Mario)
|
||||||
local absForwardVel = math.abs(m.ForwardVel)
|
local _absForwardVel = math.abs(m.ForwardVel)
|
||||||
-- TODO: Adjust Moving Speed Pitch
|
-- TODO: Adjust Moving Speed Pitch
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -234,12 +239,12 @@ function Mario.PlayActionSound(m: Mario, sound: Instance?, wave: number?)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.PlayLandingSound(m: Mario, sound: Instance?)
|
function Mario.PlayLandingSound(m: Mario, maybeSound: Instance?)
|
||||||
local sound = sound or Sounds.ACTION_TERRAIN_LANDING
|
local sound = maybeSound or Sounds.ACTION_TERRAIN_LANDING
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
local landSound = if m.Flags:Has(MarioFlags.METAL_CAP)
|
local landSound = if m.Flags:Has(MarioFlags.METAL_CAP)
|
||||||
then Sounds.ACTION_METAL_LANDING
|
then Sounds.ACTION_METAL_LANDING
|
||||||
else sound
|
else sound
|
||||||
|
|
||||||
m:PlaySoundAndSpawnParticles(landSound, 1)
|
m:PlaySoundAndSpawnParticles(landSound, 1)
|
||||||
|
@ -312,16 +317,10 @@ function Mario.GetFloorClass(m: Mario): number
|
||||||
local floor = m.Floor
|
local floor = m.Floor
|
||||||
|
|
||||||
if floor then
|
if floor then
|
||||||
local hit: BasePart? = floor.Instance
|
local hit = floor.Instance
|
||||||
|
|
||||||
if hit then
|
|
||||||
local material = floor.Material
|
|
||||||
local physics = hit.CustomPhysicalProperties
|
|
||||||
|
|
||||||
if not physics then
|
|
||||||
physics = PhysicalProperties.new(material)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
if hit and hit:IsA("BasePart") then
|
||||||
|
local physics = hit.CurrentPhysicalProperties
|
||||||
local friction = physics.Friction
|
local friction = physics.Friction
|
||||||
|
|
||||||
if friction <= 0.025 then
|
if friction <= 0.025 then
|
||||||
|
@ -372,7 +371,7 @@ function Mario.FloorIsSlippery(m: Mario)
|
||||||
|
|
||||||
if floor then
|
if floor then
|
||||||
local floorClass = m:GetFloorClass()
|
local floorClass = m:GetFloorClass()
|
||||||
local deg: number = 90
|
local deg = 90
|
||||||
|
|
||||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||||
deg = 10
|
deg = 10
|
||||||
|
@ -394,7 +393,7 @@ function Mario.FloorIsSlope(m: Mario)
|
||||||
|
|
||||||
if floor then
|
if floor then
|
||||||
local floorClass = m:GetFloorClass()
|
local floorClass = m:GetFloorClass()
|
||||||
local deg: number = 15
|
local deg = 15
|
||||||
|
|
||||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||||
deg = 5
|
deg = 5
|
||||||
|
@ -416,7 +415,7 @@ function Mario.FloorIsSteep(m: Mario)
|
||||||
|
|
||||||
if floor and not m:FacingDownhill() then
|
if floor and not m:FacingDownhill() then
|
||||||
local floorClass = m:GetFloorClass()
|
local floorClass = m:GetFloorClass()
|
||||||
local deg: number = 30
|
local deg = 30
|
||||||
|
|
||||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||||
deg = 15
|
deg = 15
|
||||||
|
@ -641,9 +640,9 @@ function Mario.SetActionCutscene(m: Mario, action: number, actionArg: number): n
|
||||||
return action
|
return action
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.SetAction(m: Mario, action: number, actionArg: number?): boolean
|
function Mario.SetAction(m: Mario, action: number, maybeActionArg: number?): boolean
|
||||||
local group = bit32.band(action, ActionGroups.GROUP_MASK)
|
local group = bit32.band(action, ActionGroups.GROUP_MASK)
|
||||||
local actionArg: number = actionArg or 0
|
local actionArg = maybeActionArg or 0
|
||||||
|
|
||||||
if group == ActionGroups.MOVING then
|
if group == ActionGroups.MOVING then
|
||||||
action = m:SetActionMoving(action, actionArg)
|
action = m:SetActionMoving(action, actionArg)
|
||||||
|
@ -888,14 +887,14 @@ function Mario.StationaryGroundStep(m: Mario): number
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.PerformGroundQuarterStep(m: Mario, nextPos: Vector3): number
|
function Mario.PerformGroundQuarterStep(m: Mario, nextPos: Vector3): number
|
||||||
local lowerPos, lowerWall = Util.FindWallCollisions(nextPos, 30, 24)
|
local lowerPos, _lowerWall = Util.FindWallCollisions(nextPos, 30, 24)
|
||||||
nextPos = lowerPos
|
nextPos = lowerPos
|
||||||
|
|
||||||
local upperPos, upperWall = Util.FindWallCollisions(nextPos, 60, 50)
|
local upperPos, upperWall = Util.FindWallCollisions(nextPos, 60, 50)
|
||||||
nextPos = upperPos
|
nextPos = upperPos
|
||||||
|
|
||||||
local floorHeight, floor = Util.FindFloor(nextPos)
|
local floorHeight, floor = Util.FindFloor(nextPos)
|
||||||
local ceilHeight, ceil = Util.FindCeil(nextPos, floorHeight)
|
local ceilHeight, _ceil = Util.FindCeil(nextPos, floorHeight)
|
||||||
|
|
||||||
m.Wall = upperWall
|
m.Wall = upperWall
|
||||||
|
|
||||||
|
@ -923,7 +922,7 @@ function Mario.PerformGroundQuarterStep(m: Mario, nextPos: Vector3): number
|
||||||
m.Position = Vector3.new(nextPos.X, floorHeight, nextPos.Z)
|
m.Position = Vector3.new(nextPos.X, floorHeight, nextPos.Z)
|
||||||
|
|
||||||
if upperWall then
|
if upperWall then
|
||||||
local wallDYaw = Util.Atan2s(upperWall.Normal.Z, upperWall.Normal.X) - m.FaceAngle.Y
|
local wallDYaw = Util.SignedShort(Util.Atan2s(upperWall.Normal.Z, upperWall.Normal.X) - m.FaceAngle.Y)
|
||||||
|
|
||||||
if math.abs(wallDYaw) >= 0x2AAA and math.abs(wallDYaw) <= 0x5555 then
|
if math.abs(wallDYaw) >= 0x2AAA and math.abs(wallDYaw) <= 0x5555 then
|
||||||
return GroundStep.NONE
|
return GroundStep.NONE
|
||||||
|
@ -1015,7 +1014,7 @@ function Mario.PerformAirQuarterStep(m: Mario, intendedPos: Vector3, stepArg: nu
|
||||||
nextPos = lowerPos
|
nextPos = lowerPos
|
||||||
|
|
||||||
local floorHeight, floor = Util.FindFloor(nextPos)
|
local floorHeight, floor = Util.FindFloor(nextPos)
|
||||||
local ceilHeight, ceil = Util.FindCeil(nextPos)
|
local ceilHeight, _ceil = Util.FindCeil(nextPos, floorHeight)
|
||||||
|
|
||||||
m.Wall = nil
|
m.Wall = nil
|
||||||
|
|
||||||
|
@ -1073,7 +1072,7 @@ function Mario.PerformAirQuarterStep(m: Mario, intendedPos: Vector3, stepArg: nu
|
||||||
|
|
||||||
if upperWall or lowerWall then
|
if upperWall or lowerWall then
|
||||||
local wall = assert(upperWall or lowerWall)
|
local wall = assert(upperWall or lowerWall)
|
||||||
local wallDYaw = Util.Atan2s(wall.Normal.Z, wall.Normal.X) - m.FaceAngle.Y
|
local wallDYaw = Util.SignedShort(Util.Atan2s(wall.Normal.Z, wall.Normal.X) - m.FaceAngle.Y)
|
||||||
m.Wall = wall
|
m.Wall = wall
|
||||||
|
|
||||||
if math.abs(wallDYaw) > 0x6000 then
|
if math.abs(wallDYaw) > 0x6000 then
|
||||||
|
@ -1166,9 +1165,9 @@ function Mario.ApplyGravity(m: Mario)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mario.PerformAirStep(m: Mario, stepArg: number?)
|
function Mario.PerformAirStep(m: Mario, maybeStepArg: number?)
|
||||||
|
local stepArg = maybeStepArg or 0
|
||||||
local stepResult = AirStep.NONE
|
local stepResult = AirStep.NONE
|
||||||
local stepArg = stepArg or 0
|
|
||||||
m.Wall = nil
|
m.Wall = nil
|
||||||
|
|
||||||
for i = 1, 4 do
|
for i = 1, 4 do
|
||||||
|
@ -1255,7 +1254,11 @@ function Mario.UpdateJoystickInputs(m: Mario)
|
||||||
end
|
end
|
||||||
|
|
||||||
if m.IntendedMag > 0 then
|
if m.IntendedMag > 0 then
|
||||||
m.IntendedYaw = Util.Atan2s(-controller.StickY, controller.StickX)
|
local camera = workspace.CurrentCamera
|
||||||
|
local lookVector = camera.CFrame.LookVector
|
||||||
|
local cameraYaw = Util.Atan2s(-lookVector.Z, -lookVector.X)
|
||||||
|
|
||||||
|
m.IntendedYaw = Util.SignedShort(Util.Atan2s(-controller.StickY, controller.StickX) + cameraYaw)
|
||||||
m.Input:Add(InputFlags.NONZERO_ANALOG)
|
m.Input:Add(InputFlags.NONZERO_ANALOG)
|
||||||
else
|
else
|
||||||
m.IntendedYaw = m.FaceAngle.Y
|
m.IntendedYaw = m.FaceAngle.Y
|
||||||
|
@ -1332,10 +1335,10 @@ end
|
||||||
|
|
||||||
function Mario.UpdateCaps(m: Mario): Flags
|
function Mario.UpdateCaps(m: Mario): Flags
|
||||||
local flags = m.Flags
|
local flags = m.Flags
|
||||||
local action
|
local _action
|
||||||
|
|
||||||
if m.CapTimer > 0 then
|
if m.CapTimer > 0 then
|
||||||
action = m.Action
|
_action = m.Action
|
||||||
|
|
||||||
if m.CapTimer <= 60 then
|
if m.CapTimer <= 60 then
|
||||||
m.CapTimer -= 1
|
m.CapTimer -= 1
|
||||||
|
@ -1395,9 +1398,15 @@ end
|
||||||
|
|
||||||
function Mario.CheckKickOrPunchWall(m: Mario)
|
function Mario.CheckKickOrPunchWall(m: Mario)
|
||||||
if m.Flags:Has(MarioFlags.PUNCHING, MarioFlags.KICKING, MarioFlags.TRIPPING) then
|
if m.Flags:Has(MarioFlags.PUNCHING, MarioFlags.KICKING, MarioFlags.TRIPPING) then
|
||||||
local range = Vector3.new(Util.Sins(m.FaceAngle.Y), 0, Util.Coss(m.FaceAngle.Y))
|
-- stylua: ignore
|
||||||
local detector = m.Position + range
|
local range = Vector3.new(
|
||||||
local disp, wall = Util.FindWallCollisions(detector, 80, 5)
|
Util.Sins(m.FaceAngle.Y),
|
||||||
|
0,
|
||||||
|
Util.Coss(m.FaceAngle.Y)
|
||||||
|
)
|
||||||
|
|
||||||
|
local detector = m.Position + (range * 50)
|
||||||
|
local _disp, wall = Util.FindWallCollisions(detector, 80, 5)
|
||||||
|
|
||||||
if wall then
|
if wall then
|
||||||
if m.Action() ~= Action.MOVE_PUNCHING or m.ForwardVel >= 0 then
|
if m.Action() ~= Action.MOVE_PUNCHING or m.ForwardVel >= 0 then
|
||||||
|
@ -1464,7 +1473,7 @@ function Mario.ExecuteAction(m: Mario): number
|
||||||
m.GfxAngle *= 0
|
m.GfxAngle *= 0
|
||||||
m.AnimDirty = true
|
m.AnimDirty = true
|
||||||
m.ThrowMatrix = nil
|
m.ThrowMatrix = nil
|
||||||
m.AnimSkipInterp = false
|
m.AnimSkipInterp = math.max(0, m.AnimSkipInterp - 1)
|
||||||
|
|
||||||
m:ResetBodyState()
|
m:ResetBodyState()
|
||||||
m:UpdateInputs()
|
m:UpdateInputs()
|
||||||
|
@ -1606,6 +1615,7 @@ function Mario.new(): Mario
|
||||||
AnimReset = false,
|
AnimReset = false,
|
||||||
AnimFrameCount = 0,
|
AnimFrameCount = 0,
|
||||||
AnimAccelAssist = 0,
|
AnimAccelAssist = 0,
|
||||||
|
AnimSkipInterp = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
return setmetatable(state, Mario)
|
return setmetatable(state, Mario)
|
|
@ -105,8 +105,9 @@ export type MarioState = {
|
||||||
AnimDirty: boolean,
|
AnimDirty: boolean,
|
||||||
AnimReset: boolean,
|
AnimReset: boolean,
|
||||||
AnimSetFrame: number,
|
AnimSetFrame: number,
|
||||||
AnimSkipInterp: boolean?,
|
AnimSkipInterp: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
local result = { Flags = Flags }
|
return table.freeze({
|
||||||
return table.freeze(result)
|
Flags = Flags,
|
||||||
|
})
|
|
@ -1,13 +1,14 @@
|
||||||
--!strict
|
--!strict
|
||||||
|
local Core = script.Parent.Parent
|
||||||
|
|
||||||
local Util = {
|
local Util = {
|
||||||
TruncateRaycasts = true,
|
|
||||||
GlobalTimer = 0,
|
GlobalTimer = 0,
|
||||||
Scale = 1 / 16,
|
Scale = 1 / 16,
|
||||||
}
|
}
|
||||||
|
|
||||||
local rayParams = RaycastParams.new()
|
local rayParams = RaycastParams.new()
|
||||||
rayParams.CollisionGroup = "Player"
|
rayParams.RespectCanCollide = true
|
||||||
|
rayParams.IgnoreWater = true
|
||||||
|
|
||||||
local SHORT_TO_RAD = (2 * math.pi) / 0x10000
|
local SHORT_TO_RAD = (2 * math.pi) / 0x10000
|
||||||
local VECTOR3_XZ = Vector3.one - Vector3.yAxis
|
local VECTOR3_XZ = Vector3.one - Vector3.yAxis
|
||||||
|
@ -57,18 +58,18 @@ end
|
||||||
|
|
||||||
function Util.ToRotation(v: Vector3int16): CFrame
|
function Util.ToRotation(v: Vector3int16): CFrame
|
||||||
local angle = Util.ToEulerAngles(v)
|
local angle = Util.ToEulerAngles(v)
|
||||||
|
|
||||||
-- stylua: ignore
|
local matrix = CFrame.fromAxisAngle(Vector3.yAxis, angle.Y)
|
||||||
local matrix = CFrame.fromAxisAngle(Vector3.yAxis, angle.Y)
|
* CFrame.fromAxisAngle(Vector3.xAxis, -angle.X)
|
||||||
* CFrame.fromAxisAngle(Vector3.xAxis, -angle.X)
|
* CFrame.fromAxisAngle(Vector3.zAxis, -angle.Z)
|
||||||
* CFrame.fromAxisAngle(Vector3.zAxis, -angle.Z)
|
|
||||||
|
|
||||||
return matrix
|
return matrix
|
||||||
end
|
end
|
||||||
|
|
||||||
function Util.Raycast(pos: Vector3, dir: Vector3, rayParams: RaycastParams?, worldRoot: WorldRoot?): RaycastResult?
|
function Util.Raycast(pos: Vector3, dir: Vector3, maybeParams: RaycastParams?, worldRoot: WorldRoot?): RaycastResult?
|
||||||
local root = worldRoot or workspace
|
local root = worldRoot or workspace
|
||||||
local result: RaycastResult? = root:Raycast(pos, dir)
|
local params = maybeParams or rayParams
|
||||||
|
local result: RaycastResult? = root:Raycast(pos, dir, params)
|
||||||
|
|
||||||
if script:GetAttribute("Debug") then
|
if script:GetAttribute("Debug") then
|
||||||
local color = Color3.new(result and 0 or 1, result and 1 or 0, 0)
|
local color = Color3.new(result and 0 or 1, result and 1 or 0, 0)
|
||||||
|
@ -106,16 +107,17 @@ end
|
||||||
|
|
||||||
function Util.FindFloor(pos: Vector3): (number, RaycastResult?)
|
function Util.FindFloor(pos: Vector3): (number, RaycastResult?)
|
||||||
local newPos = pos
|
local newPos = pos
|
||||||
|
local height = -11000
|
||||||
|
|
||||||
if Util.TruncateRaycasts then
|
if Core:GetAttribute("EmulateLimits") then
|
||||||
local trunc = Vector3int16.new(pos.X, pos.Y, pos.Z)
|
local trunc = Vector3int16.new(pos.X, pos.Y, pos.Z)
|
||||||
|
|
||||||
if math.abs(trunc.X) >= 0x2000 then
|
if math.abs(trunc.X) >= 0x2000 then
|
||||||
return -11000, nil
|
return height, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
if math.abs(trunc.Z) >= 0x2000 then
|
if math.abs(trunc.Z) >= 0x2000 then
|
||||||
return -11000, nil
|
return height, nil
|
||||||
end
|
end
|
||||||
|
|
||||||
newPos = Vector3.new(trunc.X, trunc.Y, trunc.Z)
|
newPos = Vector3.new(trunc.X, trunc.Y, trunc.Z)
|
||||||
|
@ -124,7 +126,7 @@ function Util.FindFloor(pos: Vector3): (number, RaycastResult?)
|
||||||
local result = Util.RaycastSM64(newPos + (Vector3.yAxis * 100), -Vector3.yAxis * 10000)
|
local result = Util.RaycastSM64(newPos + (Vector3.yAxis * 100), -Vector3.yAxis * 10000)
|
||||||
|
|
||||||
if result then
|
if result then
|
||||||
local height = Util.SignedShort(result.Position.Y)
|
height = Util.SignedShort(result.Position.Y)
|
||||||
result.Position = Vector3.new(pos.X, height, pos.Z)
|
result.Position = Vector3.new(pos.X, height, pos.Z)
|
||||||
|
|
||||||
return height, result
|
return height, result
|
||||||
|
@ -134,8 +136,8 @@ function Util.FindFloor(pos: Vector3): (number, RaycastResult?)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Util.FindCeil(pos: Vector3, height: number?): (number, RaycastResult?)
|
function Util.FindCeil(pos: Vector3, height: number?): (number, RaycastResult?)
|
||||||
local pos = Vector3.new(pos.X, (height or pos.Y) + 80, pos.Z)
|
local head = Vector3.new(pos.X, (height or pos.Y) + 80, pos.Z)
|
||||||
local result = Util.RaycastSM64(pos, Vector3.yAxis * 10000)
|
local result = Util.RaycastSM64(head, Vector3.yAxis * 10000)
|
||||||
|
|
||||||
if result then
|
if result then
|
||||||
return result.Position.Y, result
|
return result.Position.Y, result
|
||||||
|
@ -146,7 +148,6 @@ end
|
||||||
|
|
||||||
function Util.FindWallCollisions(pos: Vector3, offset: number, radius: number): (Vector3, RaycastResult?)
|
function Util.FindWallCollisions(pos: Vector3, offset: number, radius: number): (Vector3, RaycastResult?)
|
||||||
local origin = pos + Vector3.new(0, offset, 0)
|
local origin = pos + Vector3.new(0, offset, 0)
|
||||||
local walls: { RaycastResult } = {}
|
|
||||||
local lastWall: RaycastResult?
|
local lastWall: RaycastResult?
|
||||||
local disp = Vector3.zero
|
local disp = Vector3.zero
|
||||||
|
|
||||||
|
@ -158,8 +159,8 @@ function Util.FindWallCollisions(pos: Vector3, offset: number, radius: number):
|
||||||
|
|
||||||
if math.abs(normal.Y) < 0.01 then
|
if math.abs(normal.Y) < 0.01 then
|
||||||
local surface = contact.Position
|
local surface = contact.Position
|
||||||
local offset = (surface - pos) * VECTOR3_XZ
|
local move = (surface - pos) * VECTOR3_XZ
|
||||||
local dist = offset.Magnitude
|
local dist = move.Magnitude
|
||||||
|
|
||||||
if dist < radius then
|
if dist < radius then
|
||||||
disp += (contact.Normal * VECTOR3_XZ) * (radius - dist)
|
disp += (contact.Normal * VECTOR3_XZ) * (radius - dist)
|
||||||
|
@ -215,17 +216,23 @@ function Util.ApproachInt(current: number, target: number, inc: number, dec: num
|
||||||
end
|
end
|
||||||
|
|
||||||
function Util.Sins(short: number): number
|
function Util.Sins(short: number): number
|
||||||
short = Util.SignedShort(short)
|
local value = Util.SignedShort(short)
|
||||||
return math.sin(short * SHORT_TO_RAD)
|
value = math.floor(value / 16) * 16
|
||||||
|
|
||||||
|
return math.sin(value * SHORT_TO_RAD)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Util.Coss(short: number): number
|
function Util.Coss(short: number): number
|
||||||
short = Util.SignedShort(short)
|
local value = Util.SignedShort(short)
|
||||||
|
value = math.floor(value / 16) * 16
|
||||||
|
|
||||||
return math.cos(short * SHORT_TO_RAD)
|
return math.cos(short * SHORT_TO_RAD)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function atan2_lookup(y: number, x: number)
|
local function atan2_lookup(y: number, x: number)
|
||||||
return math.atan2(y, x) / SHORT_TO_RAD
|
local value = math.atan2(y, x) / SHORT_TO_RAD
|
||||||
|
value = math.floor(value / 16) * 16
|
||||||
|
return Util.SignedShort(value)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Util.Atan2s(y: number, x: number): number
|
function Util.Atan2s(y: number, x: number): number
|
||||||
|
@ -270,4 +277,4 @@ function Util.Atan2s(y: number, x: number): number
|
||||||
return Util.SignedShort(ret)
|
return Util.SignedShort(ret)
|
||||||
end
|
end
|
||||||
|
|
||||||
return table.freeze(Util)
|
return Util
|
|
@ -1,4 +1,15 @@
|
||||||
--!strict
|
--!strict
|
||||||
|
local Core = script.Parent
|
||||||
|
|
||||||
|
if Core:GetAttribute("HotLoading") then
|
||||||
|
task.wait(3)
|
||||||
|
end
|
||||||
|
|
||||||
|
for i, desc in script:GetDescendants() do
|
||||||
|
if desc:IsA("BaseScript") then
|
||||||
|
desc.Enabled = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local Players = game:GetService("Players")
|
local Players = game:GetService("Players")
|
||||||
local RunService = game:GetService("RunService")
|
local RunService = game:GetService("RunService")
|
||||||
|
@ -8,7 +19,9 @@ local UserInputService = game:GetService("UserInputService")
|
||||||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||||
local ContextActionService = game:GetService("ContextActionService")
|
local ContextActionService = game:GetService("ContextActionService")
|
||||||
|
|
||||||
local Sounds = require(script.Sounds)
|
local Shared = require(Core.Shared)
|
||||||
|
local Sounds = Shared.Sounds
|
||||||
|
|
||||||
local Enums = require(script.Enums)
|
local Enums = require(script.Enums)
|
||||||
local Mario = require(script.Mario)
|
local Mario = require(script.Mario)
|
||||||
local Types = require(script.Types)
|
local Types = require(script.Types)
|
||||||
|
@ -16,7 +29,7 @@ local Util = require(script.Util)
|
||||||
|
|
||||||
local Action = Enums.Action
|
local Action = Enums.Action
|
||||||
local Buttons = Enums.Buttons
|
local Buttons = Enums.Buttons
|
||||||
local InputFlags = Enums.InputFlags
|
local MarioFlags = Enums.MarioFlags
|
||||||
local ParticleFlags = Enums.ParticleFlags
|
local ParticleFlags = Enums.ParticleFlags
|
||||||
|
|
||||||
type InputType = Enum.UserInputType | Enum.KeyCode
|
type InputType = Enum.UserInputType | Enum.KeyCode
|
||||||
|
@ -24,7 +37,15 @@ type Controller = Types.Controller
|
||||||
type Mario = Mario.Class
|
type Mario = Mario.Class
|
||||||
|
|
||||||
local player: Player = assert(Players.LocalPlayer)
|
local player: Player = assert(Players.LocalPlayer)
|
||||||
|
local FLIP = CFrame.Angles(0, math.pi, 0)
|
||||||
|
|
||||||
local STEP_RATE = 30
|
local STEP_RATE = 30
|
||||||
|
local NULL_TEXT = `<font color="#FF0000">NULL</font>`
|
||||||
|
|
||||||
|
local debugStats = Instance.new("BoolValue")
|
||||||
|
debugStats.Name = "DebugStats"
|
||||||
|
debugStats.Archivable = false
|
||||||
|
debugStats.Parent = game
|
||||||
|
|
||||||
local PARTICLE_CLASSES = {
|
local PARTICLE_CLASSES = {
|
||||||
Fire = true,
|
Fire = true,
|
||||||
|
@ -33,41 +54,63 @@ local PARTICLE_CLASSES = {
|
||||||
ParticleEmitter = true,
|
ParticleEmitter = true,
|
||||||
}
|
}
|
||||||
|
|
||||||
local FLIP = CFrame.Angles(0, math.pi, 0)
|
local AUTO_STATS = {
|
||||||
|
"Position",
|
||||||
|
"Velocity",
|
||||||
|
"AnimFrame",
|
||||||
|
"FaceAngle",
|
||||||
|
|
||||||
|
"ActionState",
|
||||||
|
"ActionTimer",
|
||||||
|
"ActionArg",
|
||||||
|
|
||||||
|
"ForwardVel",
|
||||||
|
"SlideVelX",
|
||||||
|
"SlideVelZ",
|
||||||
|
|
||||||
|
"CeilHeight",
|
||||||
|
"FloorHeight",
|
||||||
|
}
|
||||||
|
|
||||||
|
local ControlModule: {
|
||||||
|
GetMoveVector: (self: any) -> Vector3,
|
||||||
|
}
|
||||||
|
|
||||||
|
while not ControlModule do
|
||||||
|
local inst = player:FindFirstChild("ControlModule", true)
|
||||||
|
|
||||||
|
if inst then
|
||||||
|
ControlModule = (require :: any)(inst)
|
||||||
|
end
|
||||||
|
|
||||||
|
task.wait(0.1)
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- Input Driver
|
-- Input Driver
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
local MATH_TAU = math.pi * 2
|
-- NOTE: I had to replace the default BindAction via KeyCode and UserInputType
|
||||||
local BUTTON_FEED: { Enum.UserInputState } = {}
|
-- BindAction forces some mappings (such as R2 mapping to MouseButton1) which you
|
||||||
local BUTTON_A = "BTN_" .. Buttons.A_BUTTON
|
-- can't turn off otherwise.
|
||||||
|
|
||||||
|
local BUTTON_FEED = {}
|
||||||
|
local BUTTON_BINDS = {}
|
||||||
|
|
||||||
local function toStrictNumber(str: string): number
|
local function toStrictNumber(str: string): number
|
||||||
local result = tonumber(str)
|
local result = tonumber(str)
|
||||||
return assert(result, "Invalid number!")
|
return assert(result, "Invalid number!")
|
||||||
end
|
end
|
||||||
|
|
||||||
local function processAction(id: string, state: Enum.UserInputState)
|
local function processAction(id: string, state: Enum.UserInputState, input: InputObject)
|
||||||
if id == "MarioDebug" then
|
if id == "MarioDebug" and Core:GetAttribute("DebugToggle") then
|
||||||
if state == Enum.UserInputState.Begin then
|
if state == Enum.UserInputState.Begin then
|
||||||
local isDebug = not script.Util:GetAttribute("Debug")
|
|
||||||
local character = player.Character
|
local character = player.Character
|
||||||
|
|
||||||
-- stylua: ignore
|
|
||||||
local rootPart = if character
|
|
||||||
then character.PrimaryPart
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if rootPart then
|
if character then
|
||||||
local action = rootPart:FindFirstChild("Action")
|
local isDebug = not character:GetAttribute("Debug")
|
||||||
|
character:SetAttribute("Debug", isDebug)
|
||||||
if action and action:IsA("BillboardGui") then
|
|
||||||
action.Enabled = isDebug
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
script.Util:SetAttribute("Debug", isDebug)
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local button = toStrictNumber(id:sub(5))
|
local button = toStrictNumber(id:sub(5))
|
||||||
|
@ -75,23 +118,40 @@ local function processAction(id: string, state: Enum.UserInputState)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function processInput(input: InputObject, gameProcessedEvent: boolean)
|
||||||
|
if gameProcessedEvent then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if BUTTON_BINDS[input.UserInputType] ~= nil then
|
||||||
|
processAction(BUTTON_BINDS[input.UserInputType], input.UserInputState, input)
|
||||||
|
end
|
||||||
|
if BUTTON_BINDS[input.KeyCode] ~= nil then
|
||||||
|
processAction(BUTTON_BINDS[input.KeyCode], input.UserInputState, input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
UserInputService.InputBegan:Connect(processInput)
|
||||||
|
UserInputService.InputChanged:Connect(processInput)
|
||||||
|
UserInputService.InputEnded:Connect(processInput)
|
||||||
|
|
||||||
local function bindInput(button: number, label: string, ...: InputType)
|
local function bindInput(button: number, label: string, ...: InputType)
|
||||||
local id = "BTN_" .. button
|
local id = "BTN_" .. button
|
||||||
ContextActionService:BindAction(id, processAction, true, ...)
|
|
||||||
|
|
||||||
if UserInputService.TouchEnabled then
|
if UserInputService.TouchEnabled then
|
||||||
|
ContextActionService:BindAction(id, processAction, true)
|
||||||
ContextActionService:SetTitle(id, label)
|
ContextActionService:SetTitle(id, label)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for i, input in { ... } do
|
||||||
|
BUTTON_BINDS[input] = id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function updateCollisions()
|
local function updateCollisions()
|
||||||
for i, player in Players:GetPlayers() do
|
for i, player in Players:GetPlayers() do
|
||||||
assert(player:IsA("Player"))
|
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
local rootPart = if player.Character
|
local character = player.Character
|
||||||
then player.Character.PrimaryPart
|
local rootPart = character and character.PrimaryPart
|
||||||
else nil
|
|
||||||
|
|
||||||
if rootPart then
|
if rootPart then
|
||||||
local parts = rootPart:GetConnectedParts(true)
|
local parts = rootPart:GetConnectedParts(true)
|
||||||
|
@ -105,12 +165,24 @@ local function updateCollisions()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function updateController(controller: Controller, humanoid: Humanoid)
|
local function updateController(controller: Controller, humanoid: Humanoid?)
|
||||||
local moveDir = humanoid.MoveDirection
|
if not humanoid then
|
||||||
local pos = Vector2.new(moveDir.X, -moveDir.Z)
|
return
|
||||||
local len = math.min(1, pos.Magnitude)
|
end
|
||||||
|
|
||||||
controller.StickMag = len * 64
|
local moveDir = ControlModule:GetMoveVector()
|
||||||
|
local pos = Vector2.new(moveDir.X, -moveDir.Z)
|
||||||
|
local mag = 0
|
||||||
|
|
||||||
|
if pos.Magnitude > 0 then
|
||||||
|
if pos.Magnitude > 1 then
|
||||||
|
pos = pos.Unit
|
||||||
|
end
|
||||||
|
|
||||||
|
mag = pos.Magnitude
|
||||||
|
end
|
||||||
|
|
||||||
|
controller.StickMag = mag * 64
|
||||||
controller.StickX = pos.X * 64
|
controller.StickX = pos.X * 64
|
||||||
controller.StickY = pos.Y * 64
|
controller.StickY = pos.Y * 64
|
||||||
|
|
||||||
|
@ -119,26 +191,47 @@ local function updateController(controller: Controller, humanoid: Humanoid)
|
||||||
|
|
||||||
if humanoid.Jump then
|
if humanoid.Jump then
|
||||||
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.Begin
|
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.Begin
|
||||||
humanoid.Jump = false
|
|
||||||
elseif controller.ButtonDown:Has(Buttons.A_BUTTON) then
|
elseif controller.ButtonDown:Has(Buttons.A_BUTTON) then
|
||||||
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.End
|
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.End
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local character = humanoid.Parent
|
||||||
|
local lastButtonValue = controller.ButtonDown()
|
||||||
|
|
||||||
for button, state in pairs(BUTTON_FEED) do
|
for button, state in pairs(BUTTON_FEED) do
|
||||||
if state == Enum.UserInputState.Begin then
|
if state == Enum.UserInputState.Begin then
|
||||||
controller.ButtonDown:Add(button)
|
controller.ButtonDown:Add(button)
|
||||||
controller.ButtonPressed:Add(button)
|
|
||||||
elseif state == Enum.UserInputState.End then
|
elseif state == Enum.UserInputState.End then
|
||||||
controller.ButtonDown:Remove(button)
|
controller.ButtonDown:Remove(button)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local buttonValue = controller.ButtonDown()
|
||||||
|
controller.ButtonPressed:Set(buttonValue)
|
||||||
table.clear(BUTTON_FEED)
|
table.clear(BUTTON_FEED)
|
||||||
|
|
||||||
|
if character and character:GetAttribute("TAS") then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if Core:GetAttribute("ToolAssistedInput") then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local diff = bit32.bxor(buttonValue, lastButtonValue)
|
||||||
|
controller.ButtonPressed:Band(diff)
|
||||||
end
|
end
|
||||||
|
|
||||||
ContextActionService:BindAction("MarioDebug", processAction, false, Enum.KeyCode.P)
|
ContextActionService:BindAction("MarioDebug", processAction, false, Enum.KeyCode.P)
|
||||||
bindInput(Buttons.B_BUTTON, "B", Enum.UserInputType.MouseButton1, Enum.KeyCode.ButtonX)
|
bindInput(Buttons.B_BUTTON, "B", Enum.UserInputType.MouseButton1, Enum.KeyCode.ButtonX)
|
||||||
bindInput(Buttons.Z_TRIG, "Z", Enum.KeyCode.LeftShift, Enum.KeyCode.RightShift, Enum.KeyCode.ButtonL2)
|
bindInput(
|
||||||
|
Buttons.Z_TRIG,
|
||||||
|
"Z",
|
||||||
|
Enum.KeyCode.LeftShift,
|
||||||
|
Enum.KeyCode.RightShift,
|
||||||
|
Enum.KeyCode.ButtonL2,
|
||||||
|
Enum.KeyCode.ButtonR2
|
||||||
|
)
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- Network Dispatch
|
-- Network Dispatch
|
||||||
|
@ -152,11 +245,7 @@ assert(lazyNetwork:IsA("RemoteEvent"), "bad lazyNetwork!")
|
||||||
function Commands.PlaySound(player: Player, name: string)
|
function Commands.PlaySound(player: Player, name: string)
|
||||||
local sound: Sound? = Sounds[name]
|
local sound: Sound? = Sounds[name]
|
||||||
local character = player.Character
|
local character = player.Character
|
||||||
|
local rootPart = character and character.PrimaryPart
|
||||||
-- stylua: ignore
|
|
||||||
local rootPart = if character
|
|
||||||
then character.PrimaryPart
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if rootPart and sound then
|
if rootPart and sound then
|
||||||
local oldSound: Instance? = rootPart:FindFirstChild(name)
|
local oldSound: Instance? = rootPart:FindFirstChild(name)
|
||||||
|
@ -177,19 +266,11 @@ end
|
||||||
|
|
||||||
function Commands.SetParticle(player: Player, name: string, set: boolean)
|
function Commands.SetParticle(player: Player, name: string, set: boolean)
|
||||||
local character = player.Character
|
local character = player.Character
|
||||||
|
local rootPart = character and character.PrimaryPart
|
||||||
-- stylua: ignore
|
|
||||||
local rootPart = if character
|
|
||||||
then character.PrimaryPart
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if rootPart then
|
if rootPart then
|
||||||
local particles = rootPart:FindFirstChild("Particles")
|
local particles = rootPart:FindFirstChild("Particles")
|
||||||
|
local inst = particles and particles:FindFirstChild(name)
|
||||||
-- stylua: ignore
|
|
||||||
local inst = if particles
|
|
||||||
then particles:FindFirstChild(name)
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
||||||
local particle = inst :: ParticleEmitter
|
local particle = inst :: ParticleEmitter
|
||||||
|
@ -206,11 +287,7 @@ end
|
||||||
|
|
||||||
function Commands.SetAngle(player: Player, angle: Vector3int16)
|
function Commands.SetAngle(player: Player, angle: Vector3int16)
|
||||||
local character = player.Character
|
local character = player.Character
|
||||||
|
local waist = character and character:FindFirstChild("Waist", true)
|
||||||
-- stylua: ignore
|
|
||||||
local waist = if character
|
|
||||||
then character:FindFirstChild("Waist", true)
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if waist and waist:IsA("Motor6D") then
|
if waist and waist:IsA("Motor6D") then
|
||||||
local props = { C1 = Util.ToRotation(-angle) + waist.C1.Position }
|
local props = { C1 = Util.ToRotation(-angle) + waist.C1.Position }
|
||||||
|
@ -219,6 +296,17 @@ function Commands.SetAngle(player: Player, angle: Vector3int16)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Commands.SetCamera(player: Player, cf: CFrame?)
|
||||||
|
local camera = workspace.CurrentCamera
|
||||||
|
|
||||||
|
if cf ~= nil then
|
||||||
|
camera.CameraType = Enum.CameraType.Scriptable
|
||||||
|
camera.CFrame = cf
|
||||||
|
else
|
||||||
|
camera.CameraType = Enum.CameraType.Custom
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function processCommand(player: Player, cmd: string, ...: any)
|
local function processCommand(player: Player, cmd: string, ...: any)
|
||||||
local command = Commands[cmd]
|
local command = Commands[cmd]
|
||||||
|
|
||||||
|
@ -248,16 +336,15 @@ lazyNetwork.OnClientEvent:Connect(onNetworkReceive)
|
||||||
|
|
||||||
local lastUpdate = os.clock()
|
local lastUpdate = os.clock()
|
||||||
local lastAngle: Vector3int16?
|
local lastAngle: Vector3int16?
|
||||||
|
|
||||||
local mario: Mario = Mario.new()
|
local mario: Mario = Mario.new()
|
||||||
local controller = mario.Controller
|
|
||||||
|
|
||||||
local enumMap = {}
|
local subframe = 0 -- 30hz subframe
|
||||||
local goalCF: CFrame
|
|
||||||
local activeTrack: AnimationTrack?
|
|
||||||
local peakSpeed = 0
|
|
||||||
local emptyId = ""
|
local emptyId = ""
|
||||||
|
|
||||||
|
local goalCF: CFrame
|
||||||
|
local prevCF: CFrame
|
||||||
|
local activeTrack: AnimationTrack?
|
||||||
|
|
||||||
local reset = Instance.new("BindableEvent")
|
local reset = Instance.new("BindableEvent")
|
||||||
reset.Archivable = false
|
reset.Archivable = false
|
||||||
reset.Parent = script
|
reset.Parent = script
|
||||||
|
@ -274,8 +361,23 @@ while not player.Character do
|
||||||
end
|
end
|
||||||
|
|
||||||
local character = assert(player.Character)
|
local character = assert(player.Character)
|
||||||
local pivot = character:GetPivot().Position
|
local pivot = character:GetPivot()
|
||||||
mario.Position = Util.ToSM64(pivot)
|
mario.Position = Util.ToSM64(pivot.Position)
|
||||||
|
|
||||||
|
goalCF = pivot
|
||||||
|
prevCF = pivot
|
||||||
|
|
||||||
|
local function setDebugStat(key: string, value: any)
|
||||||
|
if typeof(value) == "Vector3" then
|
||||||
|
value = string.format("%.3f, %.3f, %.3f", value.X, value.Y, value.Z)
|
||||||
|
elseif typeof(value) == "Vector3int16" then
|
||||||
|
value = string.format("%i, %i, %i", value.X, value.Y, value.Z)
|
||||||
|
elseif type(value) == "number" then
|
||||||
|
value = string.format("%.3f", value)
|
||||||
|
end
|
||||||
|
|
||||||
|
debugStats:SetAttribute(key, value)
|
||||||
|
end
|
||||||
|
|
||||||
local function onReset()
|
local function onReset()
|
||||||
local roblox = Vector3.yAxis * 100
|
local roblox = Vector3.yAxis * 100
|
||||||
|
@ -284,13 +386,16 @@ local function onReset()
|
||||||
|
|
||||||
if char then
|
if char then
|
||||||
local reset = char:FindFirstChild("Reset")
|
local reset = char:FindFirstChild("Reset")
|
||||||
|
|
||||||
local cf = CFrame.new(roblox)
|
local cf = CFrame.new(roblox)
|
||||||
|
char:PivotTo(cf)
|
||||||
|
|
||||||
|
goalCF = cf
|
||||||
|
prevCF = cf
|
||||||
|
|
||||||
if reset and reset:IsA("RemoteEvent") then
|
if reset and reset:IsA("RemoteEvent") then
|
||||||
reset:FireServer()
|
reset:FireServer()
|
||||||
end
|
end
|
||||||
|
|
||||||
char:PivotTo(cf)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
mario.SlideVelX = 0
|
mario.SlideVelX = 0
|
||||||
|
@ -314,32 +419,46 @@ local function update()
|
||||||
|
|
||||||
local now = os.clock()
|
local now = os.clock()
|
||||||
local gfxRot = CFrame.identity
|
local gfxRot = CFrame.identity
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
local humanoid = if character
|
local scale = character:GetScale()
|
||||||
then character:FindFirstChildOfClass("Humanoid")
|
Util.Scale = scale / 16 -- HACK! Should this be instanced?
|
||||||
else nil
|
|
||||||
|
|
||||||
local simSpeed = tonumber(script:GetAttribute("TimeScale") or nil) or 1
|
local pos = character:GetPivot().Position
|
||||||
local frames = math.floor((now - lastUpdate) * (STEP_RATE * simSpeed))
|
local dist = (Util.ToRoblox(mario.Position) - pos).Magnitude
|
||||||
|
local humanoid = character:FindFirstChildOfClass("Humanoid")
|
||||||
|
|
||||||
if frames > 0 and humanoid then
|
if dist > (scale * 20) then
|
||||||
lastUpdate = now
|
mario.Position = Util.ToSM64(pos)
|
||||||
updateCollisions()
|
|
||||||
|
|
||||||
for i = 1, math.min(4, frames) do
|
|
||||||
updateController(mario.Controller, humanoid)
|
|
||||||
mario:ExecuteAction()
|
|
||||||
end
|
|
||||||
|
|
||||||
local pos = Util.ToRoblox(mario.Position)
|
|
||||||
local rot = Util.ToRotation(mario.FaceAngle)
|
|
||||||
|
|
||||||
gfxRot = Util.ToRotation(mario.GfxAngle)
|
|
||||||
goalCF = CFrame.new(pos) * FLIP * gfxRot
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local interp = math.min(1, simSpeed / 2)
|
local simSpeed = tonumber(character:GetAttribute("TimeScale") or nil) or 1
|
||||||
|
subframe += (now - lastUpdate) * (STEP_RATE * simSpeed)
|
||||||
|
lastUpdate = now
|
||||||
|
|
||||||
|
if character:GetAttribute("WingCap") or Core:GetAttribute("WingCap") then
|
||||||
|
mario.Flags:Add(MarioFlags.WING_CAP)
|
||||||
|
mario.Flags:Remove(MarioFlags.NORMAL_CAP)
|
||||||
|
else
|
||||||
|
mario.Flags:Add(MarioFlags.NORMAL_CAP)
|
||||||
|
mario.Flags:Remove(MarioFlags.WING_CAP)
|
||||||
|
end
|
||||||
|
|
||||||
|
subframe = math.min(subframe, 4) -- Prevent execution runoff
|
||||||
|
|
||||||
|
while subframe >= 1 do
|
||||||
|
subframe -= 1
|
||||||
|
updateCollisions()
|
||||||
|
|
||||||
|
updateController(mario.Controller, humanoid)
|
||||||
|
mario:ExecuteAction()
|
||||||
|
|
||||||
|
local gfxPos = Util.ToRoblox(mario.Position)
|
||||||
|
gfxRot = Util.ToRotation(mario.GfxAngle)
|
||||||
|
|
||||||
|
prevCF = goalCF
|
||||||
|
goalCF = CFrame.new(gfxPos) * FLIP * gfxRot
|
||||||
|
end
|
||||||
|
|
||||||
if character and goalCF then
|
if character and goalCF then
|
||||||
local cf = character:GetPivot()
|
local cf = character:GetPivot()
|
||||||
|
@ -351,6 +470,13 @@ local function update()
|
||||||
local animSpeed = 0.1 / simSpeed
|
local animSpeed = 0.1 / simSpeed
|
||||||
|
|
||||||
if activeTrack and (activeTrack.Animation ~= anim or mario.AnimReset) then
|
if activeTrack and (activeTrack.Animation ~= anim or mario.AnimReset) then
|
||||||
|
if tostring(activeTrack.Animation) == "TURNING_PART1" then
|
||||||
|
if anim and anim.Name == "TURNING_PART2" then
|
||||||
|
mario.AnimSkipInterp = 2
|
||||||
|
animSpeed *= 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
activeTrack:Stop(animSpeed)
|
activeTrack:Stop(animSpeed)
|
||||||
activeTrack = nil
|
activeTrack = nil
|
||||||
end
|
end
|
||||||
|
@ -389,50 +515,59 @@ local function update()
|
||||||
end
|
end
|
||||||
|
|
||||||
if rootPart then
|
if rootPart then
|
||||||
local action = rootPart:FindFirstChild("Action")
|
|
||||||
local particles = rootPart:FindFirstChild("Particles")
|
local particles = rootPart:FindFirstChild("Particles")
|
||||||
local alignPos = rootPart:FindFirstChildOfClass("AlignPosition")
|
local alignPos = rootPart:FindFirstChildOfClass("AlignPosition")
|
||||||
local alignCF = rootPart:FindFirstChildOfClass("AlignOrientation")
|
local alignCF = rootPart:FindFirstChildOfClass("AlignOrientation")
|
||||||
|
|
||||||
|
local actionId = mario.Action()
|
||||||
local throw = mario.ThrowMatrix
|
local throw = mario.ThrowMatrix
|
||||||
|
|
||||||
if throw then
|
if throw then
|
||||||
local pos = Util.ToRoblox(throw.Position)
|
local throwPos = Util.ToRoblox(throw.Position)
|
||||||
goalCF = throw.Rotation * FLIP + pos
|
goalCF = throw.Rotation * FLIP + throwPos
|
||||||
end
|
end
|
||||||
|
|
||||||
if alignCF then
|
if alignCF then
|
||||||
cf = cf:Lerp(goalCF, interp)
|
local nextCF = prevCF:Lerp(goalCF, subframe)
|
||||||
|
|
||||||
|
-- stylua: ignore
|
||||||
|
cf = if mario.AnimSkipInterp > 0
|
||||||
|
then cf.Rotation + nextCF.Position
|
||||||
|
else nextCF
|
||||||
|
|
||||||
alignCF.CFrame = cf.Rotation
|
alignCF.CFrame = cf.Rotation
|
||||||
end
|
end
|
||||||
|
|
||||||
-- stylua: ignore
|
|
||||||
local debugLabel = if action
|
|
||||||
then action:FindFirstChildOfClass("TextLabel")
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if debugLabel then
|
local isDebug = character:GetAttribute("Debug")
|
||||||
local actionId = mario.Action()
|
local limits = character:GetAttribute("EmulateLimits")
|
||||||
|
|
||||||
-- stylua: ignore
|
|
||||||
local anim = if activeTrack
|
|
||||||
then activeTrack.Animation
|
|
||||||
else nil
|
|
||||||
|
|
||||||
-- stylua: ignore
|
|
||||||
local animName = if anim
|
|
||||||
then anim.Name
|
|
||||||
else nil
|
|
||||||
|
|
||||||
local debugText = "Action: "
|
script.Util:SetAttribute("Debug", isDebug)
|
||||||
.. Enums.GetName(Action, actionId)
|
debugStats.Value = isDebug
|
||||||
.. "\n"
|
|
||||||
.. "Animation: "
|
|
||||||
.. tostring(animName)
|
|
||||||
.. "\n"
|
|
||||||
.. "ForwardVel: "
|
|
||||||
.. string.format("%.2f", mario.ForwardVel)
|
|
||||||
|
|
||||||
debugLabel.Text = debugText
|
if limits ~= nil then
|
||||||
|
Core:SetAttribute("TruncateBounds", limits)
|
||||||
|
end
|
||||||
|
|
||||||
|
if isDebug then
|
||||||
|
local animName = activeTrack and tostring(activeTrack.Animation)
|
||||||
|
setDebugStat("Animation", animName)
|
||||||
|
|
||||||
|
local actionName = Enums.GetName(Action, actionId)
|
||||||
|
setDebugStat("Action", actionName)
|
||||||
|
|
||||||
|
local wall = mario.Wall
|
||||||
|
setDebugStat("Wall", wall and wall.Instance.Name or NULL_TEXT)
|
||||||
|
|
||||||
|
local floor = mario.Floor
|
||||||
|
setDebugStat("Floor", floor and floor.Instance.Name or NULL_TEXT)
|
||||||
|
|
||||||
|
local ceil = mario.Ceil
|
||||||
|
setDebugStat("Ceiling", ceil and ceil.Instance.Name or NULL_TEXT)
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, name in AUTO_STATS do
|
||||||
|
local value = rawget(mario :: any, name)
|
||||||
|
setDebugStat(name, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
if alignPos then
|
if alignPos then
|
||||||
|
@ -440,14 +575,12 @@ local function update()
|
||||||
end
|
end
|
||||||
|
|
||||||
local bodyState = mario.BodyState
|
local bodyState = mario.BodyState
|
||||||
local action = mario.Action()
|
local ang = bodyState.TorsoAngle
|
||||||
|
|
||||||
if action ~= Action.BUTT_SLIDE and action ~= Action.WALKING then
|
if actionId ~= Action.BUTT_SLIDE and actionId ~= Action.WALKING then
|
||||||
bodyState.TorsoAngle *= 0
|
bodyState.TorsoAngle *= 0
|
||||||
end
|
end
|
||||||
|
|
||||||
local ang = bodyState.TorsoAngle
|
|
||||||
|
|
||||||
if ang ~= lastAngle then
|
if ang ~= lastAngle then
|
||||||
networkDispatch("SetAngle", ang)
|
networkDispatch("SetAngle", ang)
|
||||||
lastAngle = ang
|
lastAngle = ang
|
||||||
|
@ -458,9 +591,7 @@ local function update()
|
||||||
local inst = particles:FindFirstChild(name)
|
local inst = particles:FindFirstChild(name)
|
||||||
|
|
||||||
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
||||||
local name = inst.Name
|
|
||||||
local particle = inst :: ParticleEmitter
|
local particle = inst :: ParticleEmitter
|
||||||
|
|
||||||
local emit = particle:GetAttribute("Emit")
|
local emit = particle:GetAttribute("Emit")
|
||||||
local hasFlag = mario.ParticleFlags:Has(flag)
|
local hasFlag = mario.ParticleFlags:Has(flag)
|
||||||
|
|
5
client/init.meta.json
Normal file
5
client/init.meta.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"RunContext": "Client"
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,55 +5,32 @@
|
||||||
"$className": "DataModel",
|
"$className": "DataModel",
|
||||||
"$ignoreUnknownInstances": true,
|
"$ignoreUnknownInstances": true,
|
||||||
|
|
||||||
"ReplicatedFirst": {
|
"Workspace": {
|
||||||
"$className": "ReplicatedFirst",
|
"$className": "Workspace",
|
||||||
"$ignoreUnknownInstances": true,
|
"$ignoreUnknownInstances": true,
|
||||||
|
|
||||||
"SM64": {
|
"SM64": {
|
||||||
"$path": "SM64",
|
"$className": "Folder",
|
||||||
"$ignoreUnknownInstances": true
|
|
||||||
}
|
"$attributes": {
|
||||||
},
|
"TimeScale": 1,
|
||||||
|
"WingCap": false,
|
||||||
"ServerScriptService": {
|
"HotLoading": false,
|
||||||
"$className": "ServerScriptService",
|
"DebugToggle": true,
|
||||||
"$ignoreUnknownInstances": true,
|
"TruncateBounds": true,
|
||||||
|
"ToolAssistedInput": true
|
||||||
"LazyNetworking": {
|
|
||||||
"$path": "rbx/LazyNetworking.server.lua"
|
|
||||||
},
|
|
||||||
|
|
||||||
"StarterCharacter": {
|
|
||||||
"$path": "rbx/StarterCharacter"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"StarterPlayer": {
|
|
||||||
"$className": "StarterPlayer",
|
|
||||||
"$ignoreUnknownInstances": true,
|
|
||||||
|
|
||||||
"$properties": {
|
|
||||||
"EnableMouseLockOption": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"StarterCharacterScripts": {
|
|
||||||
"$className": "StarterCharacterScripts",
|
|
||||||
"$ignoreUnknownInstances": true,
|
|
||||||
|
|
||||||
"Animate": {
|
|
||||||
"$className": "Hole"
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"Sound": {
|
"Client": {
|
||||||
"$className": "Hole"
|
"$path": "client"
|
||||||
},
|
},
|
||||||
|
|
||||||
"Health": {
|
"Server": {
|
||||||
"$className": "Hole"
|
"$path": "server"
|
||||||
},
|
},
|
||||||
|
|
||||||
"Appearance": {
|
"Shared": {
|
||||||
"$path": "rbx/Appearance.server.lua"
|
"$path": "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,15 @@ local Validators: { [string]: (Player, ...any) -> boolean } = {}
|
||||||
type Echo = () -> ()
|
type Echo = () -> ()
|
||||||
|
|
||||||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||||
local ReplicatedFirst = game:GetService("ReplicatedFirst")
|
local Core = script.Parent.Parent
|
||||||
local PhysicsService = game:GetService("PhysicsService")
|
|
||||||
local Sounds = require(ReplicatedFirst.SM64.Sounds)
|
local Shared = require(Core.Shared)
|
||||||
|
local Sounds = Shared.Sounds
|
||||||
|
|
||||||
local lazy = Instance.new("RemoteEvent")
|
local lazy = Instance.new("RemoteEvent")
|
||||||
lazy.Parent = ReplicatedStorage
|
lazy.Parent = ReplicatedStorage
|
||||||
lazy.Name = "LazyNetwork"
|
lazy.Name = "LazyNetwork"
|
||||||
|
lazy.Archivable = false
|
||||||
|
|
||||||
function Validators.PlaySound(player: Player, name: string)
|
function Validators.PlaySound(player: Player, name: string)
|
||||||
local sound: Instance? = Sounds[name]
|
local sound: Instance? = Sounds[name]
|
||||||
|
@ -27,19 +29,11 @@ function Validators.SetParticle(player: Player, name: string, set: boolean?)
|
||||||
end
|
end
|
||||||
|
|
||||||
local character = player.Character
|
local character = player.Character
|
||||||
|
local rootPart = character and character.PrimaryPart
|
||||||
-- stylua: ignore
|
|
||||||
local rootPart = if character
|
|
||||||
then character.PrimaryPart
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if rootPart then
|
if rootPart then
|
||||||
local particles = rootPart:FindFirstChild("Particles")
|
local particles = rootPart:FindFirstChild("Particles")
|
||||||
|
local particle = particles and particles:FindFirstChild(name)
|
||||||
-- stylua: ignore
|
|
||||||
local particle = if particles
|
|
||||||
then particles:FindFirstChild(name)
|
|
||||||
else nil
|
|
||||||
|
|
||||||
if particle then
|
if particle then
|
||||||
return true
|
return true
|
5
server/StarterCharacter/Appearance/init.meta.json
Normal file
5
server/StarterCharacter/Appearance/init.meta.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"properties": {
|
||||||
|
"Disabled": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ local userId = player.UserId
|
||||||
local hDesc: HumanoidDescription?
|
local hDesc: HumanoidDescription?
|
||||||
|
|
||||||
local function patchCollision(desc: Instance)
|
local function patchCollision(desc: Instance)
|
||||||
if desc:IsA("BasePart") and desc.CollisionGroupId ~= 1 then
|
if desc:IsA("BasePart") and desc.CollisionGroup ~= "Player" then
|
||||||
local canCollide = desc:GetPropertyChangedSignal("CanCollide")
|
local canCollide = desc:GetPropertyChangedSignal("CanCollide")
|
||||||
desc.CollisionGroup = "Player"
|
desc.CollisionGroup = "Player"
|
||||||
desc.CanQuery = false
|
desc.CanQuery = false
|
||||||
|
@ -35,8 +35,18 @@ end
|
||||||
|
|
||||||
task.spawn(patchAllCollision)
|
task.spawn(patchAllCollision)
|
||||||
character.DescendantAdded:Connect(patchCollision)
|
character.DescendantAdded:Connect(patchCollision)
|
||||||
|
character:SetAttribute("TimeScale", 1)
|
||||||
|
|
||||||
local function reload()
|
local function reload()
|
||||||
|
character:ScaleTo(1)
|
||||||
|
|
||||||
|
task.spawn(function()
|
||||||
|
for i = 1, 5 do
|
||||||
|
character:PivotTo(CFrame.new(0, 100, 0))
|
||||||
|
task.wait()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
for retry = 1, 10 do
|
for retry = 1, 10 do
|
||||||
local success, result = pcall(function()
|
local success, result = pcall(function()
|
||||||
return Players:GetHumanoidDescriptionFromUserId(userId)
|
return Players:GetHumanoidDescriptionFromUserId(userId)
|
|
@ -221,49 +221,5 @@
|
||||||
</Properties>
|
</Properties>
|
||||||
</Item>
|
</Item>
|
||||||
</Item>
|
</Item>
|
||||||
<Item class="BillboardGui" referent="RBX13">
|
|
||||||
<Properties>
|
|
||||||
<bool name="Active">true</bool>
|
|
||||||
<bool name="AlwaysOnTop">true</bool>
|
|
||||||
<float name="Brightness">1</float>
|
|
||||||
<bool name="ClipsDescendants">true</bool>
|
|
||||||
<bool name="Enabled">false</bool>
|
|
||||||
<float name="LightInfluence">1</float>
|
|
||||||
<string name="Name">Action</string>
|
|
||||||
<UDim2 name="Size">
|
|
||||||
<XS>0</XS>
|
|
||||||
<XO>400</XO>
|
|
||||||
<YS>0</YS>
|
|
||||||
<YO>100</YO>
|
|
||||||
</UDim2>
|
|
||||||
<Vector3 name="StudsOffsetWorldSpace">
|
|
||||||
<X>0</X>
|
|
||||||
<Y>5</Y>
|
|
||||||
<Z>0</Z>
|
|
||||||
</Vector3>
|
|
||||||
<token name="ZIndexBehavior">1</token>
|
|
||||||
</Properties>
|
|
||||||
<Item class="TextLabel" referent="RBX14">
|
|
||||||
<Properties>
|
|
||||||
<float name="BackgroundTransparency">1</float>
|
|
||||||
<token name="Font">4</token>
|
|
||||||
<string name="Name">Label</string>
|
|
||||||
<UDim2 name="Size">
|
|
||||||
<XS>1</XS>
|
|
||||||
<XO>0</XO>
|
|
||||||
<YS>1</YS>
|
|
||||||
<YO>0</YO>
|
|
||||||
</UDim2>
|
|
||||||
<string name="Text"></string>
|
|
||||||
<Color3 name="TextColor3">
|
|
||||||
<R>1</R>
|
|
||||||
<G>1</G>
|
|
||||||
<B>1</B>
|
|
||||||
</Color3>
|
|
||||||
<bool name="TextScaled">true</bool>
|
|
||||||
<float name="TextStrokeTransparency">0</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
</Item>
|
|
||||||
</Item>
|
</Item>
|
||||||
</roblox>
|
</roblox>
|
|
@ -1,8 +1,9 @@
|
||||||
--!strict
|
--!strict
|
||||||
|
|
||||||
local PhysicsService = game:GetService("PhysicsService")
|
|
||||||
local StarterPlayer = game:GetService("StarterPlayer")
|
|
||||||
local Players = game:GetService("Players")
|
local Players = game:GetService("Players")
|
||||||
|
local StarterPlayer = game:GetService("StarterPlayer")
|
||||||
|
local PhysicsService = game:GetService("PhysicsService")
|
||||||
|
local StarterCharacterScripts = StarterPlayer.StarterCharacterScripts
|
||||||
|
|
||||||
local hDesc = Instance.new("HumanoidDescription")
|
local hDesc = Instance.new("HumanoidDescription")
|
||||||
hDesc.HeightScale = 1.3
|
hDesc.HeightScale = 1.3
|
||||||
|
@ -27,15 +28,38 @@ if bodyColors then
|
||||||
bodyColors:Destroy()
|
bodyColors:Destroy()
|
||||||
end
|
end
|
||||||
|
|
||||||
local newRoot = script.HumanoidRootPart:Clone()
|
local newRoot = script.HumanoidRootPart
|
||||||
newRoot.Parent = character :: any
|
newRoot.Parent = character :: any
|
||||||
|
|
||||||
local humanoid = assert(character:FindFirstChildOfClass("Humanoid"))
|
local humanoid = assert(character:FindFirstChildOfClass("Humanoid"))
|
||||||
humanoid:BuildRigFromAttachments()
|
humanoid:BuildRigFromAttachments()
|
||||||
|
|
||||||
|
local dummyScripts = {
|
||||||
|
"Animate",
|
||||||
|
"Health",
|
||||||
|
"Sound",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, dummy in dummyScripts do
|
||||||
|
local stub = Instance.new("Hole", StarterCharacterScripts)
|
||||||
|
stub.Name = dummy
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, child in script:GetChildren() do
|
||||||
|
child.Parent = StarterCharacterScripts
|
||||||
|
|
||||||
|
if child:IsA("Script") then
|
||||||
|
child.Disabled = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
character.Name = "StarterCharacter"
|
character.Name = "StarterCharacter"
|
||||||
character.PrimaryPart = newRoot
|
character.PrimaryPart = newRoot
|
||||||
character.Parent = StarterPlayer
|
character.Parent = StarterPlayer
|
||||||
|
|
||||||
PhysicsService:CreateCollisionGroup("Player")
|
PhysicsService:RegisterCollisionGroup("Player")
|
||||||
PhysicsService:CollisionGroupSetCollidable("Default", "Player", false)
|
PhysicsService:CollisionGroupSetCollidable("Default", "Player", false)
|
||||||
|
|
||||||
|
for _, player in Players:GetPlayers() do
|
||||||
|
task.spawn(player.LoadCharacter, player)
|
||||||
|
end
|
3040
shared/Animations.model.json
Normal file
3040
shared/Animations.model.json
Normal file
File diff suppressed because it is too large
Load diff
3
shared/README.md
Normal file
3
shared/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Shared - Cloud Assets
|
||||||
|
|
||||||
|
This folder contains cloud asset mapping for custom Roblox assets that I use in funny 64-bit platformer. The content linked in here does not source from any assets or content from Nintendo. Voice acting was done by me, and animation work was done by Stalkalek. I also borrowed some stock sounds from Roblox.
|
773
shared/Sounds.model.json
Normal file
773
shared/Sounds.model.json
Normal file
|
@ -0,0 +1,773 @@
|
||||||
|
{
|
||||||
|
"className": "Folder",
|
||||||
|
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"name": "ACTION_BONK",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/hit.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_FLYING_FAST",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_HEAVY_LANDING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/action_jump_land.mp3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_HIT",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://9117969584"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_METAL_BONK",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_METAL_HEAVY_LANDING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_METAL_LANDING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_METAL_STEP",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_PAT_BACK",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_SIDE_FLIP",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://6552141879"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_SPIN",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://6552141879"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_BODY_HIT_GROUND",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://268933841"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_JUMP",
|
||||||
|
"className": "Configuration"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING",
|
||||||
|
"className": "Configuration"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_DEFAULT",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_GRASS",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_ICE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_METAL",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_SAND",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_SNOW",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_SPOOKY",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_STONE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_LANDING_WATER",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP",
|
||||||
|
"className": "Configuration"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_DEFAULT",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://5761648082"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_GRASS",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://7340372339"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_ICE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_METAL",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_SAND",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://8453417974"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_SNOW",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/flashbulb.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_SPOOKY",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://6703174876"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_STONE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://5761648082"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TERRAIN_STEP_WATER",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxasset://sounds/switch.wav"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_THROW",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "ACTION_TWIRL",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_ATTACKED",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_DIE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_DOH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276169318"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_GROUND_POUND_WAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_HAHA",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276161775"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_HOO",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11277164346"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_HOOHOO",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276429582"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_IMA_TIRED",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276995011"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_JUMP",
|
||||||
|
"className": "Configuration"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_JUMP_HOO",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276348319"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_JUMP_WAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276772310"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_MAMA_MIA",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276475451"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_ON_FIRE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276465437"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_OOOF",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276487760"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_PANTING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_PUNCH_HOO",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276348319"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_PUNCH_WAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276374733"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_PUNCH_YAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276361489"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_SNORING1",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11277042069"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_SNORING2",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11277042275"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_SNORING3",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11277042405"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_THROW_YAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276138169"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_UH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276507663"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_UH2",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276529034"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_WAAAOOOW",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_WAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276772310"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_WAHA",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276223526"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_WHOA",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276240769"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YAH",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276266154"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YAHOO",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276297854"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YAHOO_WAHA_YIPPEE",
|
||||||
|
"className": "Configuration",
|
||||||
|
|
||||||
|
"attributes": {
|
||||||
|
"MARIO_WAHA": 1,
|
||||||
|
"MARIO_YAHOO": 3,
|
||||||
|
"MARIO_YIPPEE": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YAH_WAH_HOO",
|
||||||
|
"className": "Configuration",
|
||||||
|
|
||||||
|
"attributes": {
|
||||||
|
"MARIO_YAH": 1,
|
||||||
|
"MARIO_HOO": 1,
|
||||||
|
"MARIO_WAH": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YAWNING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276996044"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MARIO_YIPPEE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": "rbxassetid://11276223467"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MOVING_FLYING",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MOVING_LAVA_BURN",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "MOVING_TERRAIN_SLIDE",
|
||||||
|
"className": "Sound",
|
||||||
|
|
||||||
|
"properties": {
|
||||||
|
"RollOffMinDistance": 8,
|
||||||
|
"RollOffMaxDistance": 128,
|
||||||
|
"SoundId": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
320
shared/init.lua
Normal file
320
shared/init.lua
Normal file
|
@ -0,0 +1,320 @@
|
||||||
|
--!strict
|
||||||
|
local Animations = script.Animations
|
||||||
|
local Sounds = script.Sounds
|
||||||
|
|
||||||
|
local AnimTable = {
|
||||||
|
SLOW_LEDGE_GRAB = Animations.SLOW_LEDGE_GRAB,
|
||||||
|
FALL_OVER_BACKWARDS = Animations.FALL_OVER_BACKWARDS,
|
||||||
|
BACKWARD_AIR_KB = Animations.BACKWARD_AIR_KB,
|
||||||
|
DYING_ON_BACK = Animations.DYING_ON_BACK,
|
||||||
|
BACKFLIP = Animations.BACKFLIP,
|
||||||
|
CLIMB_UP_POLE = Animations.CLIMB_UP_POLE,
|
||||||
|
GRAB_POLE_SHORT = Animations.GRAB_POLE_SHORT,
|
||||||
|
GRAB_POLE_SWING_PART1 = Animations.GRAB_POLE_SWING_PART1,
|
||||||
|
GRAB_POLE_SWING_PART2 = Animations.GRAB_POLE_SWING_PART2,
|
||||||
|
HANDSTAND_IDLE = Animations.HANDSTAND_IDLE,
|
||||||
|
HANDSTAND_JUMP = Animations.HANDSTAND_JUMP,
|
||||||
|
START_HANDSTAND = Animations.START_HANDSTAND,
|
||||||
|
RETURN_FROM_HANDSTAND = Animations.RETURN_FROM_HANDSTAND,
|
||||||
|
IDLE_ON_POLE = Animations.IDLE_ON_POLE,
|
||||||
|
A_POSE = Animations.A_POSE,
|
||||||
|
SKID_ON_GROUND = Animations.SKID_ON_GROUND,
|
||||||
|
STOP_SKID = Animations.STOP_SKID,
|
||||||
|
CROUCH_FROM_FAST_LONGJUMP = Animations.CROUCH_FROM_FAST_LONGJUMP,
|
||||||
|
CROUCH_FROM_SLOW_LONGJUMP = Animations.CROUCH_FROM_SLOW_LONGJUMP,
|
||||||
|
FAST_LONGJUMP = Animations.FAST_LONGJUMP,
|
||||||
|
SLOW_LONGJUMP = Animations.SLOW_LONGJUMP,
|
||||||
|
AIRBORNE_ON_STOMACH = Animations.AIRBORNE_ON_STOMACH,
|
||||||
|
WALK_WITH_LIGHT_OBJ = Animations.WALK_WITH_LIGHT_OBJ,
|
||||||
|
RUN_WITH_LIGHT_OBJ = Animations.RUN_WITH_LIGHT_OBJ,
|
||||||
|
SLOW_WALK_WITH_LIGHT_OBJ = Animations.SLOW_WALK_WITH_LIGHT_OBJ,
|
||||||
|
SHIVERING_WARMING_HAND = Animations.SHIVERING_WARMING_HAND,
|
||||||
|
SHIVERING_RETURN_TO_IDLE = Animations.SHIVERING_RETURN_TO_IDLE,
|
||||||
|
SHIVERING = Animations.SHIVERING,
|
||||||
|
CLIMB_DOWN_LEDGE = Animations.CLIMB_DOWN_LEDGE,
|
||||||
|
CREDITS_WAVING = Animations.CREDITS_WAVING,
|
||||||
|
CREDITS_LOOK_UP = Animations.CREDITS_LOOK_UP,
|
||||||
|
CREDITS_RETURN_FROM_LOOK_UP = Animations.CREDITS_RETURN_FROM_LOOK_UP,
|
||||||
|
CREDITS_RAISE_HAND = Animations.CREDITS_RAISE_HAND,
|
||||||
|
CREDITS_LOWER_HAND = Animations.CREDITS_LOWER_HAND,
|
||||||
|
CREDITS_TAKE_OFF_CAP = Animations.CREDITS_TAKE_OFF_CAP,
|
||||||
|
CREDITS_START_WALK_LOOK_UP = Animations.CREDITS_START_WALK_LOOK_UP,
|
||||||
|
CREDITS_LOOK_BACK_THEN_RUN = Animations.CREDITS_LOOK_BACK_THEN_RUN,
|
||||||
|
-- FINAL_BOWSER_RAISE_HAND_SPIN = Animations.FINAL_BOWSER_RAISE_HAND_SPIN;
|
||||||
|
-- FINAL_BOWSER_WING_CAP_TAKE_OFF = Animations.FINAL_BOWSER_WING_CAP_TAKE_OFF;
|
||||||
|
CREDITS_PEACE_SIGN = Animations.CREDITS_PEACE_SIGN,
|
||||||
|
STAND_UP_FROM_LAVA_BOOST = Animations.STAND_UP_FROM_LAVA_BOOST,
|
||||||
|
FIRE_LAVA_BURN = Animations.FIRE_LAVA_BURN,
|
||||||
|
WING_CAP_FLY = Animations.WING_CAP_FLY,
|
||||||
|
HANG_ON_OWL = Animations.HANG_ON_OWL,
|
||||||
|
LAND_ON_STOMACH = Animations.LAND_ON_STOMACH,
|
||||||
|
FORWARD_AIR_KB = Animations.FORWARD_AIR_KB,
|
||||||
|
DYING_ON_STOMACH = Animations.DYING_ON_STOMACH,
|
||||||
|
SUFFOCATING = Animations.SUFFOCATING,
|
||||||
|
COUGHING = Animations.COUGHING,
|
||||||
|
THROW_CATCH_KEY = Animations.THROW_CATCH_KEY,
|
||||||
|
DYING_FALL_OVER = Animations.DYING_FALL_OVER,
|
||||||
|
IDLE_ON_LEDGE = Animations.IDLE_ON_LEDGE,
|
||||||
|
FAST_LEDGE_GRAB = Animations.FAST_LEDGE_GRAB,
|
||||||
|
HANG_ON_CEILING = Animations.HANG_ON_CEILING,
|
||||||
|
PUT_CAP_ON = Animations.PUT_CAP_ON,
|
||||||
|
TAKE_CAP_OFF_THEN_ON = Animations.TAKE_CAP_OFF_THEN_ON,
|
||||||
|
QUICKLY_PUT_CAP_ON = Animations.QUICKLY_PUT_CAP_ON, -- unused
|
||||||
|
HEAD_STUCK_IN_GROUND = Animations.HEAD_STUCK_IN_GROUND,
|
||||||
|
GROUND_POUND_LANDING = Animations.GROUND_POUND_LANDING,
|
||||||
|
TRIPLE_JUMP_GROUND_POUND = Animations.TRIPLE_JUMP_GROUND_POUND,
|
||||||
|
START_GROUND_POUND = Animations.START_GROUND_POUND,
|
||||||
|
GROUND_POUND = Animations.GROUND_POUND,
|
||||||
|
BOTTOM_STUCK_IN_GROUND = Animations.BOTTOM_STUCK_IN_GROUND,
|
||||||
|
IDLE_WITH_LIGHT_OBJ = Animations.IDLE_WITH_LIGHT_OBJ,
|
||||||
|
JUMP_LAND_WITH_LIGHT_OBJ = Animations.JUMP_LAND_WITH_LIGHT_OBJ,
|
||||||
|
JUMP_WITH_LIGHT_OBJ = Animations.JUMP_WITH_LIGHT_OBJ,
|
||||||
|
FALL_LAND_WITH_LIGHT_OBJ = Animations.FALL_LAND_WITH_LIGHT_OBJ,
|
||||||
|
FALL_WITH_LIGHT_OBJ = Animations.FALL_WITH_LIGHT_OBJ,
|
||||||
|
FALL_FROM_SLIDING_WITH_LIGHT_OBJ = Animations.FALL_FROM_SLIDING_WITH_LIGHT_OBJ,
|
||||||
|
SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ = Animations.SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ,
|
||||||
|
STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ = Animations.STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ,
|
||||||
|
RIDING_SHELL = Animations.RIDING_SHELL,
|
||||||
|
WALKING = Animations.WALKING,
|
||||||
|
FORWARD_FLIP = Animations.FORWARD_FLIP, -- unused
|
||||||
|
JUMP_RIDING_SHELL = Animations.JUMP_RIDING_SHELL,
|
||||||
|
LAND_FROM_DOUBLE_JUMP = Animations.LAND_FROM_DOUBLE_JUMP,
|
||||||
|
DOUBLE_JUMP_FALL = Animations.DOUBLE_JUMP_FALL,
|
||||||
|
SINGLE_JUMP = Animations.SINGLE_JUMP,
|
||||||
|
LAND_FROM_SINGLE_JUMP = Animations.LAND_FROM_SINGLE_JUMP,
|
||||||
|
AIR_KICK = Animations.AIR_KICK,
|
||||||
|
DOUBLE_JUMP_RISE = Animations.DOUBLE_JUMP_RISE,
|
||||||
|
START_FORWARD_SPINNING = Animations.START_FORWARD_SPINNING, -- unused
|
||||||
|
THROW_LIGHT_OBJECT = Animations.THROW_LIGHT_OBJECT,
|
||||||
|
FALL_FROM_SLIDE_KICK = Animations.FALL_FROM_SLIDE_KICK,
|
||||||
|
BEND_KNESS_RIDING_SHELL = Animations.BEND_KNESS_RIDING_SHELL, -- unused
|
||||||
|
LEGS_STUCK_IN_GROUND = Animations.LEGS_STUCK_IN_GROUND,
|
||||||
|
GENERAL_FALL = Animations.GENERAL_FALL,
|
||||||
|
GENERAL_LAND = Animations.GENERAL_LAND,
|
||||||
|
BEING_GRABBED = Animations.BEING_GRABBED,
|
||||||
|
GRAB_HEAVY_OBJECT = Animations.GRAB_HEAVY_OBJECT,
|
||||||
|
SLOW_LAND_FROM_DIVE = Animations.SLOW_LAND_FROM_DIVE,
|
||||||
|
FLY_FROM_CANNON = Animations.FLY_FROM_CANNON,
|
||||||
|
MOVE_ON_WIRE_NET_RIGHT = Animations.MOVE_ON_WIRE_NET_RIGHT,
|
||||||
|
MOVE_ON_WIRE_NET_LEFT = Animations.MOVE_ON_WIRE_NET_LEFT,
|
||||||
|
MISSING_CAP = Animations.MISSING_CAP,
|
||||||
|
PULL_DOOR_WALK_IN = Animations.PULL_DOOR_WALK_IN,
|
||||||
|
PUSH_DOOR_WALK_IN = Animations.PUSH_DOOR_WALK_IN,
|
||||||
|
UNLOCK_DOOR = Animations.UNLOCK_DOOR,
|
||||||
|
START_REACH_POCKET = Animations.START_REACH_POCKET, -- unused, reaching keys maybe?
|
||||||
|
REACH_POCKET = Animations.REACH_POCKET, -- unused
|
||||||
|
STOP_REACH_POCKET = Animations.STOP_REACH_POCKET, -- unused
|
||||||
|
GROUND_THROW = Animations.GROUND_THROW,
|
||||||
|
GROUND_KICK = Animations.GROUND_KICK,
|
||||||
|
FIRST_PUNCH = Animations.FIRST_PUNCH,
|
||||||
|
SECOND_PUNCH = Animations.SECOND_PUNCH,
|
||||||
|
FIRST_PUNCH_FAST = Animations.FIRST_PUNCH_FAST,
|
||||||
|
SECOND_PUNCH_FAST = Animations.SECOND_PUNCH_FAST,
|
||||||
|
PICK_UP_LIGHT_OBJ = Animations.PICK_UP_LIGHT_OBJ,
|
||||||
|
PUSHING = Animations.PUSHING,
|
||||||
|
START_RIDING_SHELL = Animations.START_RIDING_SHELL,
|
||||||
|
PLACE_LIGHT_OBJ = Animations.PLACE_LIGHT_OBJ,
|
||||||
|
FORWARD_SPINNING = Animations.FORWARD_SPINNING,
|
||||||
|
BACKWARD_SPINNING = Animations.BACKWARD_SPINNING,
|
||||||
|
BREAKDANCE = Animations.BREAKDANCE,
|
||||||
|
RUNNING = Animations.RUNNING,
|
||||||
|
RUNNING_UNUSED = Animations.RUNNING_UNUSED, -- unused duplicate, originally part 2?
|
||||||
|
SOFT_BACK_KB = Animations.SOFT_BACK_KB,
|
||||||
|
SOFT_FRONT_KB = Animations.SOFT_FRONT_KB,
|
||||||
|
DYING_IN_QUICKSAND = Animations.DYING_IN_QUICKSAND,
|
||||||
|
IDLE_IN_QUICKSAND = Animations.IDLE_IN_QUICKSAND,
|
||||||
|
MOVE_IN_QUICKSAND = Animations.MOVE_IN_QUICKSAND,
|
||||||
|
ELECTROCUTION = Animations.ELECTROCUTION,
|
||||||
|
SHOCKED = Animations.SHOCKED,
|
||||||
|
BACKWARD_KB = Animations.BACKWARD_KB,
|
||||||
|
FORWARD_KB = Animations.FORWARD_KB,
|
||||||
|
IDLE_HEAVY_OBJ = Animations.IDLE_HEAVY_OBJ,
|
||||||
|
-- STAND_AGAINST_WALL = Animations.STAND_AGAINST_WALL;
|
||||||
|
SIDESTEP_LEFT = Animations.SIDESTEP_LEFT,
|
||||||
|
SIDESTEP_RIGHT = Animations.SIDESTEP_RIGHT,
|
||||||
|
START_SLEEP_IDLE = Animations.START_SLEEP_IDLE,
|
||||||
|
START_SLEEP_SCRATCH = Animations.START_SLEEP_SCRATCH,
|
||||||
|
START_SLEEP_YAWN = Animations.START_SLEEP_YAWN,
|
||||||
|
START_SLEEP_SITTING = Animations.START_SLEEP_SITTING,
|
||||||
|
SLEEP_IDLE = Animations.SLEEP_IDLE,
|
||||||
|
SLEEP_START_LYING = Animations.SLEEP_START_LYING,
|
||||||
|
SLEEP_LYING = Animations.SLEEP_LYING,
|
||||||
|
DIVE = Animations.DIVE,
|
||||||
|
SLIDE_DIVE = Animations.SLIDE_DIVE,
|
||||||
|
GROUND_BONK = Animations.GROUND_BONK,
|
||||||
|
STOP_SLIDE_LIGHT_OBJ = Animations.STOP_SLIDE_LIGHT_OBJ,
|
||||||
|
SLIDE_KICK = Animations.SLIDE_KICK,
|
||||||
|
CROUCH_FROM_SLIDE_KICK = Animations.CROUCH_FROM_SLIDE_KICK,
|
||||||
|
SLIDE_MOTIONLESS = Animations.SLIDE_MOTIONLESS, -- unused
|
||||||
|
STOP_SLIDE = Animations.STOP_SLIDE,
|
||||||
|
FALL_FROM_SLIDE = Animations.FALL_FROM_SLIDE,
|
||||||
|
SLIDE = Animations.SLIDE,
|
||||||
|
TIPTOE = Animations.TIPTOE,
|
||||||
|
TWIRL_LAND = Animations.TWIRL_LAND,
|
||||||
|
TWIRL = Animations.TWIRL,
|
||||||
|
START_TWIRL = Animations.START_TWIRL,
|
||||||
|
STOP_CROUCHING = Animations.STOP_CROUCHING,
|
||||||
|
START_CROUCHING = Animations.START_CROUCHING,
|
||||||
|
CROUCHING = Animations.CROUCHING,
|
||||||
|
CRAWLING = Animations.CRAWLING,
|
||||||
|
STOP_CRAWLING = Animations.STOP_CRAWLING,
|
||||||
|
START_CRAWLING = Animations.START_CRAWLING,
|
||||||
|
SUMMON_STAR = Animations.SUMMON_STAR,
|
||||||
|
RETURN_STAR_APPROACH_DOOR = Animations.RETURN_STAR_APPROACH_DOOR,
|
||||||
|
BACKWARDS_WATER_KB = Animations.BACKWARDS_WATER_KB,
|
||||||
|
SWIM_WITH_OBJ_PART1 = Animations.SWIM_WITH_OBJ_PART1,
|
||||||
|
SWIM_WITH_OBJ_PART2 = Animations.SWIM_WITH_OBJ_PART2,
|
||||||
|
FLUTTERKICK_WITH_OBJ = Animations.FLUTTERKICK_WITH_OBJ,
|
||||||
|
WATER_ACTION_END_WITH_OBJ = Animations.WATER_ACTION_END_WITH_OBJ, -- either swimming or flutterkicking
|
||||||
|
STOP_GRAB_OBJ_WATER = Animations.STOP_GRAB_OBJ_WATER,
|
||||||
|
WATER_IDLE_WITH_OBJ = Animations.WATER_IDLE_WITH_OBJ,
|
||||||
|
DROWNING_PART1 = Animations.DROWNING_PART1,
|
||||||
|
DROWNING_PART2 = Animations.DROWNING_PART2,
|
||||||
|
WATER_DYING = Animations.WATER_DYING,
|
||||||
|
WATER_FORWARD_KB = Animations.WATER_FORWARD_KB,
|
||||||
|
FALL_FROM_WATER = Animations.FALL_FROM_WATER,
|
||||||
|
SWIM_PART1 = Animations.SWIM_PART1,
|
||||||
|
SWIM_PART2 = Animations.SWIM_PART2,
|
||||||
|
FLUTTERKICK = Animations.FLUTTERKICK,
|
||||||
|
WATER_ACTION_END = Animations.WATER_ACTION_END, -- either swimming or flutterkicking
|
||||||
|
WATER_PICK_UP_OBJ = Animations.WATER_PICK_UP_OBJ,
|
||||||
|
WATER_GRAB_OBJ_PART2 = Animations.WATER_GRAB_OBJ_PART2,
|
||||||
|
WATER_GRAB_OBJ_PART1 = Animations.WATER_GRAB_OBJ_PART1,
|
||||||
|
WATER_THROW_OBJ = Animations.WATER_THROW_OBJ,
|
||||||
|
WATER_IDLE = Animations.WATER_IDLE,
|
||||||
|
WATER_STAR_DANCE = Animations.WATER_STAR_DANCE,
|
||||||
|
RETURN_FROM_WATER_STAR_DANCE = Animations.RETURN_FROM_WATER_STAR_DANCE,
|
||||||
|
-- GRAB_BOWSER = Animations.GRAB_BOWSER;
|
||||||
|
-- SWINGING_BOWSER = Animations.SWINGING_BOWSER;
|
||||||
|
-- RELEASE_BOWSER = Animations.RELEASE_BOWSER;
|
||||||
|
-- HOLDING_BOWSER = Animations.HOLDING_BOWSER;
|
||||||
|
HEAVY_THROW = Animations.HEAVY_THROW,
|
||||||
|
WALK_PANTING = Animations.WALK_PANTING,
|
||||||
|
WALK_WITH_HEAVY_OBJ = Animations.WALK_WITH_HEAVY_OBJ,
|
||||||
|
TURNING_PART1 = Animations.TURNING_PART1,
|
||||||
|
TURNING_PART2 = Animations.TURNING_PART2,
|
||||||
|
SLIDEFLIP_LAND = Animations.SLIDEFLIP_LAND,
|
||||||
|
SLIDEFLIP = Animations.SLIDEFLIP,
|
||||||
|
TRIPLE_JUMP_LAND = Animations.TRIPLE_JUMP_LAND,
|
||||||
|
TRIPLE_JUMP = Animations.TRIPLE_JUMP,
|
||||||
|
FIRST_PERSON = Animations.FIRST_PERSON,
|
||||||
|
IDLE_HEAD_LEFT = Animations.IDLE_HEAD_LEFT,
|
||||||
|
IDLE_HEAD_RIGHT = Animations.IDLE_HEAD_RIGHT,
|
||||||
|
IDLE_HEAD_CENTER = Animations.IDLE_HEAD_CENTER,
|
||||||
|
HANDSTAND_LEFT = Animations.HANDSTAND_LEFT,
|
||||||
|
HANDSTAND_RIGHT = Animations.HANDSTAND_RIGHT,
|
||||||
|
WAKE_FROM_SLEEP = Animations.WAKE_FROM_SLEEP,
|
||||||
|
WAKE_FROM_LYING = Animations.WAKE_FROM_LYING,
|
||||||
|
START_TIPTOE = Animations.START_TIPTOE,
|
||||||
|
SLIDEJUMP = Animations.SLIDEJUMP, -- pole jump and wall kick
|
||||||
|
START_WALLKICK = Animations.START_WALLKICK,
|
||||||
|
STAR_DANCE = Animations.STAR_DANCE,
|
||||||
|
RETURN_FROM_STAR_DANCE = Animations.RETURN_FROM_STAR_DANCE,
|
||||||
|
FORWARD_SPINNING_FLIP = Animations.FORWARD_SPINNING_FLIP,
|
||||||
|
TRIPLE_JUMP_FLY = Animations.TRIPLE_JUMP_FLY,
|
||||||
|
}
|
||||||
|
|
||||||
|
local SoundTable = {
|
||||||
|
ACTION_BONK = Sounds.ACTION_BONK,
|
||||||
|
ACTION_FLYING_FAST = Sounds.ACTION_FLYING_FAST,
|
||||||
|
ACTION_HIT = Sounds.ACTION_HIT,
|
||||||
|
ACTION_METAL_BONK = Sounds.ACTION_METAL_BONK,
|
||||||
|
ACTION_METAL_HEAVY_LANDING = Sounds.ACTION_METAL_HEAVY_LANDING,
|
||||||
|
ACTION_METAL_LANDING = Sounds.ACTION_METAL_LANDING,
|
||||||
|
ACTION_METAL_STEP = Sounds.ACTION_METAL_STEP,
|
||||||
|
ACTION_PAT_BACK = Sounds.ACTION_PAT_BACK,
|
||||||
|
ACTION_SIDE_FLIP = Sounds.ACTION_SIDE_FLIP,
|
||||||
|
ACTION_SPIN = Sounds.ACTION_SPIN,
|
||||||
|
ACTION_HEAVY_LANDING = Sounds.ACTION_HEAVY_LANDING,
|
||||||
|
ACTION_TERRAIN_BODY_HIT_GROUND = Sounds.ACTION_TERRAIN_BODY_HIT_GROUND,
|
||||||
|
ACTION_TERRAIN_JUMP = Sounds.ACTION_TERRAIN_JUMP,
|
||||||
|
ACTION_TERRAIN_LANDING = Sounds.ACTION_TERRAIN_LANDING,
|
||||||
|
ACTION_TERRAIN_STEP = Sounds.ACTION_TERRAIN_STEP,
|
||||||
|
ACTION_THROW = Sounds.ACTION_THROW,
|
||||||
|
ACTION_TWIRL = Sounds.ACTION_TWIRL,
|
||||||
|
|
||||||
|
MARIO_ATTACKED = Sounds.MARIO_ATTACKED,
|
||||||
|
MARIO_DOH = Sounds.MARIO_DOH,
|
||||||
|
MARIO_GROUND_POUND_WAH = Sounds.MARIO_GROUND_POUND_WAH,
|
||||||
|
MARIO_HAHA = Sounds.MARIO_HAHA,
|
||||||
|
MARIO_HOO = Sounds.MARIO_HOO,
|
||||||
|
MARIO_HOOHOO = Sounds.MARIO_HOOHOO,
|
||||||
|
MARIO_IMA_TIRED = Sounds.MARIO_IMA_TIRED,
|
||||||
|
MARIO_MAMA_MIA = Sounds.MARIO_MAMA_MIA,
|
||||||
|
MARIO_ON_FIRE = Sounds.MARIO_ON_FIRE,
|
||||||
|
MARIO_OOOF = Sounds.MARIO_OOOF,
|
||||||
|
MARIO_PANTING = Sounds.MARIO_PANTING,
|
||||||
|
MARIO_PUNCH_YAH = Sounds.MARIO_PUNCH_YAH,
|
||||||
|
MARIO_PUNCH_WAH = Sounds.MARIO_PUNCH_WAH,
|
||||||
|
MARIO_PUNCH_HOO = Sounds.MARIO_PUNCH_HOO,
|
||||||
|
MARIO_SNORING1 = Sounds.MARIO_SNORING1,
|
||||||
|
MARIO_SNORING2 = Sounds.MARIO_SNORING2,
|
||||||
|
MARIO_SNORING3 = Sounds.MARIO_SNORING3,
|
||||||
|
MARIO_UH = Sounds.MARIO_UH,
|
||||||
|
MARIO_UH2 = Sounds.MARIO_UH2,
|
||||||
|
MARIO_WAAAOOOW = Sounds.MARIO_WAAAOOOW,
|
||||||
|
MARIO_WAH = Sounds.MARIO_WAH,
|
||||||
|
MARIO_WAHA = Sounds.MARIO_WAHA,
|
||||||
|
MARIO_WHOA = Sounds.MARIO_WHOA,
|
||||||
|
MARIO_YAH = Sounds.MARIO_YAH,
|
||||||
|
MARIO_YAHOO = Sounds.MARIO_YAHOO,
|
||||||
|
MARIO_YAWNING = Sounds.MARIO_YAWNING,
|
||||||
|
MARIO_YIPPEE = Sounds.MARIO_YIPPEE,
|
||||||
|
|
||||||
|
MOVING_FLYING = Sounds.MOVING_FLYING,
|
||||||
|
MOVING_LAVA_BURN = Sounds.MOVING_LAVA_BURN,
|
||||||
|
MOVING_TERRAIN_SLIDE = Sounds.MOVING_TERRAIN_SLIDE,
|
||||||
|
|
||||||
|
MARIO_JUMP = Sounds.MARIO_JUMP,
|
||||||
|
MARIO_YAH_WAH_HOO = Sounds.MARIO_YAH_WAH_HOO,
|
||||||
|
MARIO_YAHOO_WAHA_YIPPEE = Sounds.MARIO_YAHOO_WAHA_YIPPEE,
|
||||||
|
|
||||||
|
ACTION_TERRAIN_STEP_DEFAULT = Sounds.ACTION_TERRAIN_STEP_DEFAULT,
|
||||||
|
ACTION_TERRAIN_STEP_GRASS = Sounds.ACTION_TERRAIN_STEP_GRASS,
|
||||||
|
ACTION_TERRAIN_STEP_ICE = Sounds.ACTION_TERRAIN_STEP_ICE,
|
||||||
|
ACTION_TERRAIN_STEP_METAL = Sounds.ACTION_TERRAIN_STEP_METAL,
|
||||||
|
ACTION_TERRAIN_STEP_SAND = Sounds.ACTION_TERRAIN_STEP_SAND,
|
||||||
|
ACTION_TERRAIN_STEP_SNOW = Sounds.ACTION_TERRAIN_STEP_SNOW,
|
||||||
|
ACTION_TERRAIN_STEP_SPOOKY = Sounds.ACTION_TERRAIN_STEP_SPOOKY,
|
||||||
|
ACTION_TERRAIN_STEP_STONE = Sounds.ACTION_TERRAIN_STEP_STONE,
|
||||||
|
|
||||||
|
ACTION_TERRAIN_LANDING_DEFAULT = Sounds.ACTION_TERRAIN_LANDING_DEFAULT,
|
||||||
|
ACTION_TERRAIN_LANDING_GRASS = Sounds.ACTION_TERRAIN_LANDING_GRASS,
|
||||||
|
ACTION_TERRAIN_LANDING_ICE = Sounds.ACTION_TERRAIN_LANDING_ICE,
|
||||||
|
ACTION_TERRAIN_LANDING_METAL = Sounds.ACTION_TERRAIN_LANDING_METAL,
|
||||||
|
ACTION_TERRAIN_LANDING_SAND = Sounds.ACTION_TERRAIN_LANDING_SAND,
|
||||||
|
ACTION_TERRAIN_LANDING_SNOW = Sounds.ACTION_TERRAIN_LANDING_SNOW,
|
||||||
|
ACTION_TERRAIN_LANDING_SPOOKY = Sounds.ACTION_TERRAIN_LANDING_SPOOKY,
|
||||||
|
ACTION_TERRAIN_LANDING_STONE = Sounds.ACTION_TERRAIN_LANDING_STONE,
|
||||||
|
|
||||||
|
ACTION_TERRAIN_JUMP_DEFAULT = Sounds.ACTION_TERRAIN_LANDING_DEFAULT,
|
||||||
|
ACTION_TERRAIN_JUMP_GRASS = Sounds.ACTION_TERRAIN_LANDING_GRASS,
|
||||||
|
ACTION_TERRAIN_JUMP_ICE = Sounds.ACTION_TERRAIN_LANDING_ICE,
|
||||||
|
ACTION_TERRAIN_JUMP_METAL = Sounds.ACTION_TERRAIN_LANDING_METAL,
|
||||||
|
ACTION_TERRAIN_JUMP_SAND = Sounds.ACTION_TERRAIN_LANDING_SAND,
|
||||||
|
ACTION_TERRAIN_JUMP_SNOW = Sounds.ACTION_TERRAIN_LANDING_SNOW,
|
||||||
|
ACTION_TERRAIN_JUMP_SPOOKY = Sounds.ACTION_TERRAIN_LANDING_SPOOKY,
|
||||||
|
ACTION_TERRAIN_JUMP_STONE = Sounds.ACTION_TERRAIN_LANDING_STONE,
|
||||||
|
}
|
||||||
|
|
||||||
|
task.spawn(function()
|
||||||
|
local ContentProvider = game:GetService("ContentProvider")
|
||||||
|
local preload = {}
|
||||||
|
|
||||||
|
for _, anim in pairs(AnimTable) do
|
||||||
|
table.insert(preload, anim)
|
||||||
|
end
|
||||||
|
|
||||||
|
ContentProvider:PreloadAsync(preload)
|
||||||
|
end)
|
||||||
|
|
||||||
|
setmetatable(SoundTable, {
|
||||||
|
__index = function(_, k)
|
||||||
|
warn("UNKNOWN SOUND:", k)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
Animations = AnimTable,
|
||||||
|
Sounds = SoundTable,
|
||||||
|
}
|
|
@ -1,229 +0,0 @@
|
||||||
--!strict
|
|
||||||
local System = script.Parent
|
|
||||||
local Assets = System.Assets
|
|
||||||
local Anims = Assets.Animations
|
|
||||||
|
|
||||||
local Data = table.freeze({
|
|
||||||
SLOW_LEDGE_GRAB = Anims.SLOW_LEDGE_GRAB,
|
|
||||||
FALL_OVER_BACKWARDS = Anims.FALL_OVER_BACKWARDS,
|
|
||||||
BACKWARD_AIR_KB = Anims.BACKWARD_AIR_KB,
|
|
||||||
DYING_ON_BACK = Anims.DYING_ON_BACK,
|
|
||||||
BACKFLIP = Anims.BACKFLIP,
|
|
||||||
CLIMB_UP_POLE = Anims.CLIMB_UP_POLE,
|
|
||||||
GRAB_POLE_SHORT = Anims.GRAB_POLE_SHORT,
|
|
||||||
GRAB_POLE_SWING_PART1 = Anims.GRAB_POLE_SWING_PART1,
|
|
||||||
GRAB_POLE_SWING_PART2 = Anims.GRAB_POLE_SWING_PART2,
|
|
||||||
HANDSTAND_IDLE = Anims.HANDSTAND_IDLE,
|
|
||||||
HANDSTAND_JUMP = Anims.HANDSTAND_JUMP,
|
|
||||||
START_HANDSTAND = Anims.START_HANDSTAND,
|
|
||||||
RETURN_FROM_HANDSTAND = Anims.RETURN_FROM_HANDSTAND,
|
|
||||||
IDLE_ON_POLE = Anims.IDLE_ON_POLE,
|
|
||||||
A_POSE = Anims.A_POSE,
|
|
||||||
SKID_ON_GROUND = Anims.SKID_ON_GROUND,
|
|
||||||
STOP_SKID = Anims.STOP_SKID,
|
|
||||||
CROUCH_FROM_FAST_LONGJUMP = Anims.CROUCH_FROM_FAST_LONGJUMP,
|
|
||||||
CROUCH_FROM_SLOW_LONGJUMP = Anims.CROUCH_FROM_SLOW_LONGJUMP,
|
|
||||||
FAST_LONGJUMP = Anims.FAST_LONGJUMP,
|
|
||||||
SLOW_LONGJUMP = Anims.SLOW_LONGJUMP,
|
|
||||||
AIRBORNE_ON_STOMACH = Anims.AIRBORNE_ON_STOMACH,
|
|
||||||
WALK_WITH_LIGHT_OBJ = Anims.WALK_WITH_LIGHT_OBJ,
|
|
||||||
RUN_WITH_LIGHT_OBJ = Anims.RUN_WITH_LIGHT_OBJ,
|
|
||||||
SLOW_WALK_WITH_LIGHT_OBJ = Anims.SLOW_WALK_WITH_LIGHT_OBJ,
|
|
||||||
SHIVERING_WARMING_HAND = Anims.SHIVERING_WARMING_HAND,
|
|
||||||
SHIVERING_RETURN_TO_IDLE = Anims.SHIVERING_RETURN_TO_IDLE,
|
|
||||||
SHIVERING = Anims.SHIVERING,
|
|
||||||
CLIMB_DOWN_LEDGE = Anims.CLIMB_DOWN_LEDGE,
|
|
||||||
CREDITS_WAVING = Anims.CREDITS_WAVING,
|
|
||||||
CREDITS_LOOK_UP = Anims.CREDITS_LOOK_UP,
|
|
||||||
CREDITS_RETURN_FROM_LOOK_UP = Anims.CREDITS_RETURN_FROM_LOOK_UP,
|
|
||||||
CREDITS_RAISE_HAND = Anims.CREDITS_RAISE_HAND,
|
|
||||||
CREDITS_LOWER_HAND = Anims.CREDITS_LOWER_HAND,
|
|
||||||
CREDITS_TAKE_OFF_CAP = Anims.CREDITS_TAKE_OFF_CAP,
|
|
||||||
CREDITS_START_WALK_LOOK_UP = Anims.CREDITS_START_WALK_LOOK_UP,
|
|
||||||
CREDITS_LOOK_BACK_THEN_RUN = Anims.CREDITS_LOOK_BACK_THEN_RUN,
|
|
||||||
-- FINAL_BOWSER_RAISE_HAND_SPIN = Anims.FINAL_BOWSER_RAISE_HAND_SPIN;
|
|
||||||
-- FINAL_BOWSER_WING_CAP_TAKE_OFF = Anims.FINAL_BOWSER_WING_CAP_TAKE_OFF;
|
|
||||||
CREDITS_PEACE_SIGN = Anims.CREDITS_PEACE_SIGN,
|
|
||||||
STAND_UP_FROM_LAVA_BOOST = Anims.STAND_UP_FROM_LAVA_BOOST,
|
|
||||||
FIRE_LAVA_BURN = Anims.FIRE_LAVA_BURN,
|
|
||||||
WING_CAP_FLY = Anims.WING_CAP_FLY,
|
|
||||||
HANG_ON_OWL = Anims.HANG_ON_OWL,
|
|
||||||
LAND_ON_STOMACH = Anims.LAND_ON_STOMACH,
|
|
||||||
FORWARD_AIR_KB = Anims.FORWARD_AIR_KB,
|
|
||||||
DYING_ON_STOMACH = Anims.DYING_ON_STOMACH,
|
|
||||||
SUFFOCATING = Anims.SUFFOCATING,
|
|
||||||
COUGHING = Anims.COUGHING,
|
|
||||||
THROW_CATCH_KEY = Anims.THROW_CATCH_KEY,
|
|
||||||
DYING_FALL_OVER = Anims.DYING_FALL_OVER,
|
|
||||||
IDLE_ON_LEDGE = Anims.IDLE_ON_LEDGE,
|
|
||||||
FAST_LEDGE_GRAB = Anims.FAST_LEDGE_GRAB,
|
|
||||||
HANG_ON_CEILING = Anims.HANG_ON_CEILING,
|
|
||||||
PUT_CAP_ON = Anims.PUT_CAP_ON,
|
|
||||||
TAKE_CAP_OFF_THEN_ON = Anims.TAKE_CAP_OFF_THEN_ON,
|
|
||||||
QUICKLY_PUT_CAP_ON = Anims.QUICKLY_PUT_CAP_ON, -- unused
|
|
||||||
HEAD_STUCK_IN_GROUND = Anims.HEAD_STUCK_IN_GROUND,
|
|
||||||
GROUND_POUND_LANDING = Anims.GROUND_POUND_LANDING,
|
|
||||||
TRIPLE_JUMP_GROUND_POUND = Anims.TRIPLE_JUMP_GROUND_POUND,
|
|
||||||
START_GROUND_POUND = Anims.START_GROUND_POUND,
|
|
||||||
GROUND_POUND = Anims.GROUND_POUND,
|
|
||||||
BOTTOM_STUCK_IN_GROUND = Anims.BOTTOM_STUCK_IN_GROUND,
|
|
||||||
IDLE_WITH_LIGHT_OBJ = Anims.IDLE_WITH_LIGHT_OBJ,
|
|
||||||
JUMP_LAND_WITH_LIGHT_OBJ = Anims.JUMP_LAND_WITH_LIGHT_OBJ,
|
|
||||||
JUMP_WITH_LIGHT_OBJ = Anims.JUMP_WITH_LIGHT_OBJ,
|
|
||||||
FALL_LAND_WITH_LIGHT_OBJ = Anims.FALL_LAND_WITH_LIGHT_OBJ,
|
|
||||||
FALL_WITH_LIGHT_OBJ = Anims.FALL_WITH_LIGHT_OBJ,
|
|
||||||
FALL_FROM_SLIDING_WITH_LIGHT_OBJ = Anims.FALL_FROM_SLIDING_WITH_LIGHT_OBJ,
|
|
||||||
SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ = Anims.SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ,
|
|
||||||
STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ = Anims.STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ,
|
|
||||||
RIDING_SHELL = Anims.RIDING_SHELL,
|
|
||||||
WALKING = Anims.WALKING,
|
|
||||||
FORWARD_FLIP = Anims.FORWARD_FLIP, -- unused
|
|
||||||
JUMP_RIDING_SHELL = Anims.JUMP_RIDING_SHELL,
|
|
||||||
LAND_FROM_DOUBLE_JUMP = Anims.LAND_FROM_DOUBLE_JUMP,
|
|
||||||
DOUBLE_JUMP_FALL = Anims.DOUBLE_JUMP_FALL,
|
|
||||||
SINGLE_JUMP = Anims.SINGLE_JUMP,
|
|
||||||
LAND_FROM_SINGLE_JUMP = Anims.LAND_FROM_SINGLE_JUMP,
|
|
||||||
AIR_KICK = Anims.AIR_KICK,
|
|
||||||
DOUBLE_JUMP_RISE = Anims.DOUBLE_JUMP_RISE,
|
|
||||||
START_FORWARD_SPINNING = Anims.START_FORWARD_SPINNING, -- unused
|
|
||||||
THROW_LIGHT_OBJECT = Anims.THROW_LIGHT_OBJECT,
|
|
||||||
FALL_FROM_SLIDE_KICK = Anims.FALL_FROM_SLIDE_KICK,
|
|
||||||
BEND_KNESS_RIDING_SHELL = Anims.BEND_KNESS_RIDING_SHELL, -- unused
|
|
||||||
LEGS_STUCK_IN_GROUND = Anims.LEGS_STUCK_IN_GROUND,
|
|
||||||
GENERAL_FALL = Anims.GENERAL_FALL,
|
|
||||||
GENERAL_LAND = Anims.GENERAL_LAND,
|
|
||||||
BEING_GRABBED = Anims.BEING_GRABBED,
|
|
||||||
GRAB_HEAVY_OBJECT = Anims.GRAB_HEAVY_OBJECT,
|
|
||||||
SLOW_LAND_FROM_DIVE = Anims.SLOW_LAND_FROM_DIVE,
|
|
||||||
FLY_FROM_CANNON = Anims.FLY_FROM_CANNON,
|
|
||||||
MOVE_ON_WIRE_NET_RIGHT = Anims.MOVE_ON_WIRE_NET_RIGHT,
|
|
||||||
MOVE_ON_WIRE_NET_LEFT = Anims.MOVE_ON_WIRE_NET_LEFT,
|
|
||||||
MISSING_CAP = Anims.MISSING_CAP,
|
|
||||||
PULL_DOOR_WALK_IN = Anims.PULL_DOOR_WALK_IN,
|
|
||||||
PUSH_DOOR_WALK_IN = Anims.PUSH_DOOR_WALK_IN,
|
|
||||||
UNLOCK_DOOR = Anims.UNLOCK_DOOR,
|
|
||||||
START_REACH_POCKET = Anims.START_REACH_POCKET, -- unused, reaching keys maybe?
|
|
||||||
REACH_POCKET = Anims.REACH_POCKET, -- unused
|
|
||||||
STOP_REACH_POCKET = Anims.STOP_REACH_POCKET, -- unused
|
|
||||||
GROUND_THROW = Anims.GROUND_THROW,
|
|
||||||
GROUND_KICK = Anims.GROUND_KICK,
|
|
||||||
FIRST_PUNCH = Anims.FIRST_PUNCH,
|
|
||||||
SECOND_PUNCH = Anims.SECOND_PUNCH,
|
|
||||||
FIRST_PUNCH_FAST = Anims.FIRST_PUNCH_FAST,
|
|
||||||
SECOND_PUNCH_FAST = Anims.SECOND_PUNCH_FAST,
|
|
||||||
PICK_UP_LIGHT_OBJ = Anims.PICK_UP_LIGHT_OBJ,
|
|
||||||
PUSHING = Anims.PUSHING,
|
|
||||||
START_RIDING_SHELL = Anims.START_RIDING_SHELL,
|
|
||||||
PLACE_LIGHT_OBJ = Anims.PLACE_LIGHT_OBJ,
|
|
||||||
FORWARD_SPINNING = Anims.FORWARD_SPINNING,
|
|
||||||
BACKWARD_SPINNING = Anims.BACKWARD_SPINNING,
|
|
||||||
BREAKDANCE = Anims.BREAKDANCE,
|
|
||||||
RUNNING = Anims.RUNNING,
|
|
||||||
RUNNING_UNUSED = Anims.RUNNING_UNUSED, -- unused duplicate, originally part 2?
|
|
||||||
SOFT_BACK_KB = Anims.SOFT_BACK_KB,
|
|
||||||
SOFT_FRONT_KB = Anims.SOFT_FRONT_KB,
|
|
||||||
DYING_IN_QUICKSAND = Anims.DYING_IN_QUICKSAND,
|
|
||||||
IDLE_IN_QUICKSAND = Anims.IDLE_IN_QUICKSAND,
|
|
||||||
MOVE_IN_QUICKSAND = Anims.MOVE_IN_QUICKSAND,
|
|
||||||
ELECTROCUTION = Anims.ELECTROCUTION,
|
|
||||||
SHOCKED = Anims.SHOCKED,
|
|
||||||
BACKWARD_KB = Anims.BACKWARD_KB,
|
|
||||||
FORWARD_KB = Anims.FORWARD_KB,
|
|
||||||
IDLE_HEAVY_OBJ = Anims.IDLE_HEAVY_OBJ,
|
|
||||||
-- STAND_AGAINST_WALL = Anims.STAND_AGAINST_WALL;
|
|
||||||
SIDESTEP_LEFT = Anims.SIDESTEP_LEFT,
|
|
||||||
SIDESTEP_RIGHT = Anims.SIDESTEP_RIGHT,
|
|
||||||
START_SLEEP_IDLE = Anims.START_SLEEP_IDLE,
|
|
||||||
START_SLEEP_SCRATCH = Anims.START_SLEEP_SCRATCH,
|
|
||||||
START_SLEEP_YAWN = Anims.START_SLEEP_YAWN,
|
|
||||||
START_SLEEP_SITTING = Anims.START_SLEEP_SITTING,
|
|
||||||
SLEEP_IDLE = Anims.SLEEP_IDLE,
|
|
||||||
SLEEP_START_LYING = Anims.SLEEP_START_LYING,
|
|
||||||
SLEEP_LYING = Anims.SLEEP_LYING,
|
|
||||||
DIVE = Anims.DIVE,
|
|
||||||
SLIDE_DIVE = Anims.SLIDE_DIVE,
|
|
||||||
GROUND_BONK = Anims.GROUND_BONK,
|
|
||||||
STOP_SLIDE_LIGHT_OBJ = Anims.STOP_SLIDE_LIGHT_OBJ,
|
|
||||||
SLIDE_KICK = Anims.SLIDE_KICK,
|
|
||||||
CROUCH_FROM_SLIDE_KICK = Anims.CROUCH_FROM_SLIDE_KICK,
|
|
||||||
SLIDE_MOTIONLESS = Anims.SLIDE_MOTIONLESS, -- unused
|
|
||||||
STOP_SLIDE = Anims.STOP_SLIDE,
|
|
||||||
FALL_FROM_SLIDE = Anims.FALL_FROM_SLIDE,
|
|
||||||
SLIDE = Anims.SLIDE,
|
|
||||||
TIPTOE = Anims.TIPTOE,
|
|
||||||
TWIRL_LAND = Anims.TWIRL_LAND,
|
|
||||||
TWIRL = Anims.TWIRL,
|
|
||||||
START_TWIRL = Anims.START_TWIRL,
|
|
||||||
STOP_CROUCHING = Anims.STOP_CROUCHING,
|
|
||||||
START_CROUCHING = Anims.START_CROUCHING,
|
|
||||||
CROUCHING = Anims.CROUCHING,
|
|
||||||
CRAWLING = Anims.CRAWLING,
|
|
||||||
STOP_CRAWLING = Anims.STOP_CRAWLING,
|
|
||||||
START_CRAWLING = Anims.START_CRAWLING,
|
|
||||||
SUMMON_STAR = Anims.SUMMON_STAR,
|
|
||||||
RETURN_STAR_APPROACH_DOOR = Anims.RETURN_STAR_APPROACH_DOOR,
|
|
||||||
BACKWARDS_WATER_KB = Anims.BACKWARDS_WATER_KB,
|
|
||||||
SWIM_WITH_OBJ_PART1 = Anims.SWIM_WITH_OBJ_PART1,
|
|
||||||
SWIM_WITH_OBJ_PART2 = Anims.SWIM_WITH_OBJ_PART2,
|
|
||||||
FLUTTERKICK_WITH_OBJ = Anims.FLUTTERKICK_WITH_OBJ,
|
|
||||||
WATER_ACTION_END_WITH_OBJ = Anims.WATER_ACTION_END_WITH_OBJ, -- either swimming or flutterkicking
|
|
||||||
STOP_GRAB_OBJ_WATER = Anims.STOP_GRAB_OBJ_WATER,
|
|
||||||
WATER_IDLE_WITH_OBJ = Anims.WATER_IDLE_WITH_OBJ,
|
|
||||||
DROWNING_PART1 = Anims.DROWNING_PART1,
|
|
||||||
DROWNING_PART2 = Anims.DROWNING_PART2,
|
|
||||||
WATER_DYING = Anims.WATER_DYING,
|
|
||||||
WATER_FORWARD_KB = Anims.WATER_FORWARD_KB,
|
|
||||||
FALL_FROM_WATER = Anims.FALL_FROM_WATER,
|
|
||||||
SWIM_PART1 = Anims.SWIM_PART1,
|
|
||||||
SWIM_PART2 = Anims.SWIM_PART2,
|
|
||||||
FLUTTERKICK = Anims.FLUTTERKICK,
|
|
||||||
WATER_ACTION_END = Anims.WATER_ACTION_END, -- either swimming or flutterkicking
|
|
||||||
WATER_PICK_UP_OBJ = Anims.WATER_PICK_UP_OBJ,
|
|
||||||
WATER_GRAB_OBJ_PART2 = Anims.WATER_GRAB_OBJ_PART2,
|
|
||||||
WATER_GRAB_OBJ_PART1 = Anims.WATER_GRAB_OBJ_PART1,
|
|
||||||
WATER_THROW_OBJ = Anims.WATER_THROW_OBJ,
|
|
||||||
WATER_IDLE = Anims.WATER_IDLE,
|
|
||||||
WATER_STAR_DANCE = Anims.WATER_STAR_DANCE,
|
|
||||||
RETURN_FROM_WATER_STAR_DANCE = Anims.RETURN_FROM_WATER_STAR_DANCE,
|
|
||||||
-- GRAB_BOWSER = Anims.GRAB_BOWSER;
|
|
||||||
-- SWINGING_BOWSER = Anims.SWINGING_BOWSER;
|
|
||||||
-- RELEASE_BOWSER = Anims.RELEASE_BOWSER;
|
|
||||||
-- HOLDING_BOWSER = Anims.HOLDING_BOWSER;
|
|
||||||
HEAVY_THROW = Anims.HEAVY_THROW,
|
|
||||||
WALK_PANTING = Anims.WALK_PANTING,
|
|
||||||
WALK_WITH_HEAVY_OBJ = Anims.WALK_WITH_HEAVY_OBJ,
|
|
||||||
TURNING_PART1 = Anims.TURNING_PART1,
|
|
||||||
TURNING_PART2 = Anims.TURNING_PART2,
|
|
||||||
SLIDEFLIP_LAND = Anims.SLIDEFLIP_LAND,
|
|
||||||
SLIDEFLIP = Anims.SLIDEFLIP,
|
|
||||||
TRIPLE_JUMP_LAND = Anims.TRIPLE_JUMP_LAND,
|
|
||||||
TRIPLE_JUMP = Anims.TRIPLE_JUMP,
|
|
||||||
FIRST_PERSON = Anims.FIRST_PERSON,
|
|
||||||
IDLE_HEAD_LEFT = Anims.IDLE_HEAD_LEFT,
|
|
||||||
IDLE_HEAD_RIGHT = Anims.IDLE_HEAD_RIGHT,
|
|
||||||
IDLE_HEAD_CENTER = Anims.IDLE_HEAD_CENTER,
|
|
||||||
HANDSTAND_LEFT = Anims.HANDSTAND_LEFT,
|
|
||||||
HANDSTAND_RIGHT = Anims.HANDSTAND_RIGHT,
|
|
||||||
WAKE_FROM_SLEEP = Anims.WAKE_FROM_SLEEP,
|
|
||||||
WAKE_FROM_LYING = Anims.WAKE_FROM_LYING,
|
|
||||||
START_TIPTOE = Anims.START_TIPTOE,
|
|
||||||
SLIDEJUMP = Anims.SLIDEJUMP, -- pole jump and wall kick
|
|
||||||
START_WALLKICK = Anims.START_WALLKICK,
|
|
||||||
STAR_DANCE = Anims.STAR_DANCE,
|
|
||||||
RETURN_FROM_STAR_DANCE = Anims.RETURN_FROM_STAR_DANCE,
|
|
||||||
FORWARD_SPINNING_FLIP = Anims.FORWARD_SPINNING_FLIP,
|
|
||||||
TRIPLE_JUMP_FLY = Anims.TRIPLE_JUMP_FLY,
|
|
||||||
})
|
|
||||||
|
|
||||||
task.spawn(function()
|
|
||||||
local ContentProvider = game:GetService("ContentProvider")
|
|
||||||
local preload = {}
|
|
||||||
|
|
||||||
for name, anim in pairs(Data) do
|
|
||||||
table.insert(preload, anim)
|
|
||||||
end
|
|
||||||
|
|
||||||
ContentProvider:PreloadAsync(preload)
|
|
||||||
end)
|
|
||||||
|
|
||||||
return Data
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,11 +0,0 @@
|
||||||
# Assets
|
|
||||||
|
|
||||||
These are empty asset definitions for the animations and sounds used by the SM64 script.<br/>
|
|
||||||
The animations define some metadata such as:
|
|
||||||
|
|
||||||
* How many frames the animation is
|
|
||||||
* Whether an animation should loop or freeze at the end
|
|
||||||
* The address of the animation data in the SM64 (USA) ROM.
|
|
||||||
* What the upload hash of the asset is (empty)
|
|
||||||
|
|
||||||
Sounds can be configuration objects with named sound attributes defining their weight of being rolled.
|
|
|
@ -1,501 +0,0 @@
|
||||||
<roblox version="4">
|
|
||||||
<Item class="Folder">
|
|
||||||
<Properties>
|
|
||||||
<string name="Name">Sounds</string>
|
|
||||||
</Properties>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_BONK</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_FLYING_FAST</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_HEAVY_LANDING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_HIT</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_METAL_BONK</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_METAL_HEAVY_LANDING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_METAL_LANDING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_METAL_STEP</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_PAT_BACK</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_SIDE_FLIP</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_SPIN</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_BODY_HIT_GROUND</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_DEFAULT</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_GRASS</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_ICE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_METAL</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_SAND</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_SNOW</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_SPOOKY</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_STONE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING_WATER</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_DEFAULT</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_GRASS</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_ICE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_METAL</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_SAND</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_SNOW</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_SPOOKY</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_STONE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP_WATER</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_THROW</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">ACTION_TWIRL</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_ATTACKED</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_DIE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_DOH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_GROUND_POUND_WAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_HAHA</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_HOO</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_HOOHOO</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_IMA_TIRED</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_JUMP_HOO</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_JUMP_WAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_MAMA_MIA</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_ON_FIRE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_OOOF</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_PANTING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_PUNCH_HOO</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_PUNCH_WAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_PUNCH_YAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_SNORING1</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_SNORING2</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_SNORING3</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_THROW_YAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_UH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_UH2</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_WAAAOOOW</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_WAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_WAHA</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_WHOA</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_YAH</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_YAHOO</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_YAWNING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MARIO_YIPPEE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MOVING_FLYING</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MOVING_LAVA_BURN</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Sound">
|
|
||||||
<Properties>
|
|
||||||
<float name="EmitterSize">8</float>
|
|
||||||
<string name="Name">MOVING_TERRAIN_SLIDE</string>
|
|
||||||
<float name="xmlRead_MaxDistance_3">128</float>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<string name="Name">ACTION_TERRAIN_JUMP</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<string name="Name">ACTION_TERRAIN_LANDING</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<string name="Name">ACTION_TERRAIN_STEP</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<string name="Name">MARIO_JUMP</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<BinaryString name="AttributesSerialize"><![CDATA[AwAAAAoAAABNQVJJT19XQUhBBgAAAAAAAPA/CwAAAE1BUklPX1lBSE9PBgAAAAAAAAhADAAAAE1BUklPX1lJUFBFRQYAAAAAAADwPw==]]></BinaryString>
|
|
||||||
<string name="Name">MARIO_YAHOO_WAHA_YIPPEE</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
<Item class="Configuration">
|
|
||||||
<Properties>
|
|
||||||
<BinaryString name="AttributesSerialize"><![CDATA[AwAAAAkAAABNQVJJT19IT08GAAAAAAAA8D8JAAAATUFSSU9fV0FIBgAAAAAAAPA/CQAAAE1BUklPX1lBSAYAAAAAAADwPw==]]></BinaryString>
|
|
||||||
<string name="Name">MARIO_YAH_WAH_HOO</string>
|
|
||||||
</Properties>
|
|
||||||
</Item>
|
|
||||||
</Item>
|
|
||||||
</roblox>
|
|
|
@ -1,96 +0,0 @@
|
||||||
--!strict
|
|
||||||
|
|
||||||
local System = script.Parent
|
|
||||||
local Assets = System.Assets
|
|
||||||
local Sounds = Assets.Sounds
|
|
||||||
|
|
||||||
local Data = {
|
|
||||||
ACTION_BONK = Sounds.ACTION_BONK,
|
|
||||||
ACTION_FLYING_FAST = Sounds.ACTION_FLYING_FAST,
|
|
||||||
ACTION_HIT = Sounds.ACTION_HIT,
|
|
||||||
ACTION_METAL_BONK = Sounds.ACTION_METAL_BONK,
|
|
||||||
ACTION_METAL_HEAVY_LANDING = Sounds.ACTION_METAL_HEAVY_LANDING,
|
|
||||||
ACTION_METAL_LANDING = Sounds.ACTION_METAL_LANDING,
|
|
||||||
ACTION_METAL_STEP = Sounds.ACTION_METAL_STEP,
|
|
||||||
ACTION_PAT_BACK = Sounds.ACTION_PAT_BACK,
|
|
||||||
ACTION_SIDE_FLIP = Sounds.ACTION_SIDE_FLIP,
|
|
||||||
ACTION_SPIN = Sounds.ACTION_SPIN,
|
|
||||||
ACTION_HEAVY_LANDING = Sounds.ACTION_HEAVY_LANDING,
|
|
||||||
ACTION_TERRAIN_BODY_HIT_GROUND = Sounds.ACTION_TERRAIN_BODY_HIT_GROUND,
|
|
||||||
ACTION_TERRAIN_JUMP = Sounds.ACTION_TERRAIN_JUMP,
|
|
||||||
ACTION_TERRAIN_LANDING = Sounds.ACTION_TERRAIN_LANDING,
|
|
||||||
ACTION_TERRAIN_STEP = Sounds.ACTION_TERRAIN_STEP,
|
|
||||||
ACTION_THROW = Sounds.ACTION_THROW,
|
|
||||||
ACTION_TWIRL = Sounds.ACTION_TWIRL,
|
|
||||||
|
|
||||||
MARIO_ATTACKED = Sounds.MARIO_ATTACKED,
|
|
||||||
MARIO_DOH = Sounds.MARIO_DOH,
|
|
||||||
MARIO_GROUND_POUND_WAH = Sounds.MARIO_GROUND_POUND_WAH,
|
|
||||||
MARIO_HAHA = Sounds.MARIO_HAHA,
|
|
||||||
MARIO_HOO = Sounds.MARIO_HOO,
|
|
||||||
MARIO_HOOHOO = Sounds.MARIO_HOOHOO,
|
|
||||||
MARIO_IMA_TIRED = Sounds.MARIO_IMA_TIRED,
|
|
||||||
MARIO_MAMA_MIA = Sounds.MARIO_MAMA_MIA,
|
|
||||||
MARIO_ON_FIRE = Sounds.MARIO_ON_FIRE,
|
|
||||||
MARIO_OOOF = Sounds.MARIO_OOOF,
|
|
||||||
MARIO_PANTING = Sounds.MARIO_PANTING,
|
|
||||||
MARIO_PUNCH_YAH = Sounds.MARIO_PUNCH_YAH,
|
|
||||||
MARIO_PUNCH_WAH = Sounds.MARIO_PUNCH_WAH,
|
|
||||||
MARIO_PUNCH_HOO = Sounds.MARIO_PUNCH_HOO,
|
|
||||||
MARIO_SNORING1 = Sounds.MARIO_SNORING1,
|
|
||||||
MARIO_SNORING2 = Sounds.MARIO_SNORING2,
|
|
||||||
MARIO_SNORING3 = Sounds.MARIO_SNORING3,
|
|
||||||
MARIO_UH = Sounds.MARIO_UH,
|
|
||||||
MARIO_UH2 = Sounds.MARIO_UH2,
|
|
||||||
MARIO_WAAAOOOW = Sounds.MARIO_WAAAOOOW,
|
|
||||||
MARIO_WAH = Sounds.MARIO_WAH,
|
|
||||||
MARIO_WAHA = Sounds.MARIO_WAHA,
|
|
||||||
MARIO_WHOA = Sounds.MARIO_WHOA,
|
|
||||||
MARIO_YAH = Sounds.MARIO_YAH,
|
|
||||||
MARIO_YAHOO = Sounds.MARIO_YAHOO,
|
|
||||||
MARIO_YAWNING = Sounds.MARIO_YAWNING,
|
|
||||||
MARIO_YIPPEE = Sounds.MARIO_YIPPEE,
|
|
||||||
|
|
||||||
MOVING_FLYING = Sounds.MOVING_FLYING,
|
|
||||||
MOVING_LAVA_BURN = Sounds.MOVING_LAVA_BURN,
|
|
||||||
MOVING_TERRAIN_SLIDE = Sounds.MOVING_TERRAIN_SLIDE,
|
|
||||||
|
|
||||||
MARIO_JUMP = Sounds.MARIO_JUMP,
|
|
||||||
MARIO_YAH_WAH_HOO = Sounds.MARIO_YAH_WAH_HOO,
|
|
||||||
MARIO_YAHOO_WAHA_YIPPEE = Sounds.MARIO_YAHOO_WAHA_YIPPEE,
|
|
||||||
|
|
||||||
ACTION_TERRAIN_STEP_DEFAULT = Sounds.ACTION_TERRAIN_STEP_DEFAULT,
|
|
||||||
ACTION_TERRAIN_STEP_GRASS = Sounds.ACTION_TERRAIN_STEP_GRASS,
|
|
||||||
ACTION_TERRAIN_STEP_ICE = Sounds.ACTION_TERRAIN_STEP_ICE,
|
|
||||||
ACTION_TERRAIN_STEP_METAL = Sounds.ACTION_TERRAIN_STEP_METAL,
|
|
||||||
ACTION_TERRAIN_STEP_SAND = Sounds.ACTION_TERRAIN_STEP_SAND,
|
|
||||||
ACTION_TERRAIN_STEP_SNOW = Sounds.ACTION_TERRAIN_STEP_SNOW,
|
|
||||||
ACTION_TERRAIN_STEP_SPOOKY = Sounds.ACTION_TERRAIN_STEP_SPOOKY,
|
|
||||||
ACTION_TERRAIN_STEP_STONE = Sounds.ACTION_TERRAIN_STEP_STONE,
|
|
||||||
|
|
||||||
ACTION_TERRAIN_LANDING_DEFAULT = Sounds.ACTION_TERRAIN_LANDING_DEFAULT,
|
|
||||||
ACTION_TERRAIN_LANDING_GRASS = Sounds.ACTION_TERRAIN_LANDING_GRASS,
|
|
||||||
ACTION_TERRAIN_LANDING_ICE = Sounds.ACTION_TERRAIN_LANDING_ICE,
|
|
||||||
ACTION_TERRAIN_LANDING_METAL = Sounds.ACTION_TERRAIN_LANDING_METAL,
|
|
||||||
ACTION_TERRAIN_LANDING_SAND = Sounds.ACTION_TERRAIN_LANDING_SAND,
|
|
||||||
ACTION_TERRAIN_LANDING_SNOW = Sounds.ACTION_TERRAIN_LANDING_SNOW,
|
|
||||||
ACTION_TERRAIN_LANDING_SPOOKY = Sounds.ACTION_TERRAIN_LANDING_SPOOKY,
|
|
||||||
ACTION_TERRAIN_LANDING_STONE = Sounds.ACTION_TERRAIN_LANDING_STONE,
|
|
||||||
|
|
||||||
ACTION_TERRAIN_JUMP_DEFAULT = Sounds.ACTION_TERRAIN_LANDING_DEFAULT,
|
|
||||||
ACTION_TERRAIN_JUMP_GRASS = Sounds.ACTION_TERRAIN_LANDING_GRASS,
|
|
||||||
ACTION_TERRAIN_JUMP_ICE = Sounds.ACTION_TERRAIN_LANDING_ICE,
|
|
||||||
ACTION_TERRAIN_JUMP_METAL = Sounds.ACTION_TERRAIN_LANDING_METAL,
|
|
||||||
ACTION_TERRAIN_JUMP_SAND = Sounds.ACTION_TERRAIN_LANDING_SAND,
|
|
||||||
ACTION_TERRAIN_JUMP_SNOW = Sounds.ACTION_TERRAIN_LANDING_SNOW,
|
|
||||||
ACTION_TERRAIN_JUMP_SPOOKY = Sounds.ACTION_TERRAIN_LANDING_SPOOKY,
|
|
||||||
ACTION_TERRAIN_JUMP_STONE = Sounds.ACTION_TERRAIN_LANDING_STONE,
|
|
||||||
}
|
|
||||||
|
|
||||||
setmetatable(Data, {
|
|
||||||
__index = function(t, k)
|
|
||||||
warn("UNKNOWN SOUND:", k)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
return table.freeze(Data)
|
|
Loading…
Reference in a new issue