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
|
||||
|
||||
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/>
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
No animations or sounds are provided by default, so you'll have to substitute those appropriately. It's not a trivial task.
|
||||
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.
|
|
@ -1,2 +1,2 @@
|
|||
[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 Action = Enums.Action
|
||||
local ActionFlags = Enums.ActionFlags
|
||||
local ActionGroup = Enums.ActionGroups
|
||||
|
||||
local AirStep = Enums.AirStep
|
||||
local MarioEyes = Enums.MarioEyes
|
||||
local InputFlags = Enums.InputFlags
|
||||
local MarioFlags = Enums.MarioFlags
|
||||
local ParticleFlags = Enums.ParticleFlags
|
||||
|
||||
type Mario = System.Mario
|
||||
|
||||
|
@ -545,6 +540,8 @@ DEF_ACTION(Action.SIDE_FLIP_LAND_STOP, function(m: Mario)
|
|||
end
|
||||
|
||||
landingStep(m, Animations.SLIDEFLIP_LAND, Action.IDLE)
|
||||
--m.GfxAngle += Vector3int16.new(0, 0x8000, 0)
|
||||
|
||||
return false
|
||||
end)
|
||||
|
||||
|
@ -562,7 +559,7 @@ DEF_ACTION(Action.TRIPLE_JUMP_LAND_STOP, function(m: Mario)
|
|||
return true
|
||||
end
|
||||
|
||||
landingStep(m, Animations.GENERAL_LAND, Action.IDLE)
|
||||
landingStep(m, Animations.TRIPLE_JUMP_LAND, Action.IDLE)
|
||||
return false
|
||||
end)
|
||||
|
||||
|
@ -597,12 +594,9 @@ DEF_ACTION(Action.LONG_JUMP_LAND_STOP, function(m: Mario)
|
|||
return true
|
||||
end
|
||||
|
||||
-- stylua: ignore
|
||||
landingStep(m,
|
||||
if m.LongJumpIsSlow
|
||||
then Animations.CROUCH_FROM_FAST_LONGJUMP
|
||||
else Animations.CROUCH_FROM_SLOW_LONGJUMP,
|
||||
|
||||
landingStep(
|
||||
m,
|
||||
if m.LongJumpIsSlow then Animations.CROUCH_FROM_FAST_LONGJUMP else Animations.CROUCH_FROM_SLOW_LONGJUMP,
|
||||
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
|
||||
|
||||
local SM64 = script.Parent
|
||||
local Core = SM64.Parent
|
||||
|
||||
local Util = require(SM64.Util)
|
||||
local Enums = require(SM64.Enums)
|
||||
local Sounds = require(SM64.Sounds)
|
||||
local Animations = require(SM64.Animations)
|
||||
local Shared = require(Core.Shared)
|
||||
|
||||
local Sounds = Shared.Sounds
|
||||
local Animations = Shared.Animations
|
||||
|
||||
local Types = require(SM64.Types)
|
||||
local Flags = Types.Flags
|
||||
|
@ -28,7 +32,6 @@ local SurfaceClass = Enums.SurfaceClass
|
|||
local ParticleFlags = Enums.ParticleFlags
|
||||
|
||||
local AirStep = Enums.AirStep
|
||||
local WaterStep = Enums.WaterStep
|
||||
local GroundStep = Enums.GroundStep
|
||||
|
||||
export type BodyState = Types.BodyState
|
||||
|
@ -44,7 +47,7 @@ export type Class = Mario
|
|||
-- BINDINGS
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
local actions: { [number]: MarioAction } = {}
|
||||
local actions: { MarioAction } = {}
|
||||
Mario.Animations = Animations
|
||||
Mario.Actions = actions
|
||||
Mario.Sounds = Sounds
|
||||
|
@ -86,7 +89,7 @@ function Mario.SetAnimation(m: Mario, anim: Animation): number
|
|||
m.AnimCurrent = nil
|
||||
end
|
||||
|
||||
local startFrame: number = anim:GetAttribute("StartFrame") or -1
|
||||
local startFrame: number = anim:GetAttribute("StartFrame") or 0
|
||||
m.AnimAccelAssist = 0
|
||||
m.AnimAccel = 0
|
||||
|
||||
|
@ -101,8 +104,10 @@ function Mario.SetAnimationWithAccel(m: Mario, anim: Animation, accel: number)
|
|||
if m.AnimCurrent ~= anim then
|
||||
m:SetAnimation(anim)
|
||||
m.AnimAccelAssist = -accel
|
||||
m.AnimAccel = accel
|
||||
end
|
||||
|
||||
m.AnimAccel = accel
|
||||
return m.AnimFrame
|
||||
end
|
||||
|
||||
function Mario.SetAnimToFrame(m: Mario, frame: number)
|
||||
|
@ -190,7 +195,7 @@ function Mario.PlayJumpSound(m: Mario)
|
|||
end
|
||||
|
||||
function Mario.AdjustSoundForSpeed(m: Mario)
|
||||
local absForwardVel = math.abs(m.ForwardVel)
|
||||
local _absForwardVel = math.abs(m.ForwardVel)
|
||||
-- TODO: Adjust Moving Speed Pitch
|
||||
end
|
||||
|
||||
|
@ -234,8 +239,8 @@ function Mario.PlayActionSound(m: Mario, sound: Instance?, wave: number?)
|
|||
end
|
||||
end
|
||||
|
||||
function Mario.PlayLandingSound(m: Mario, sound: Instance?)
|
||||
local sound = sound or Sounds.ACTION_TERRAIN_LANDING
|
||||
function Mario.PlayLandingSound(m: Mario, maybeSound: Instance?)
|
||||
local sound = maybeSound or Sounds.ACTION_TERRAIN_LANDING
|
||||
|
||||
-- stylua: ignore
|
||||
local landSound = if m.Flags:Has(MarioFlags.METAL_CAP)
|
||||
|
@ -312,16 +317,10 @@ function Mario.GetFloorClass(m: Mario): number
|
|||
local floor = m.Floor
|
||||
|
||||
if floor then
|
||||
local hit: BasePart? = floor.Instance
|
||||
|
||||
if hit then
|
||||
local material = floor.Material
|
||||
local physics = hit.CustomPhysicalProperties
|
||||
|
||||
if not physics then
|
||||
physics = PhysicalProperties.new(material)
|
||||
end
|
||||
local hit = floor.Instance
|
||||
|
||||
if hit and hit:IsA("BasePart") then
|
||||
local physics = hit.CurrentPhysicalProperties
|
||||
local friction = physics.Friction
|
||||
|
||||
if friction <= 0.025 then
|
||||
|
@ -372,7 +371,7 @@ function Mario.FloorIsSlippery(m: Mario)
|
|||
|
||||
if floor then
|
||||
local floorClass = m:GetFloorClass()
|
||||
local deg: number = 90
|
||||
local deg = 90
|
||||
|
||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||
deg = 10
|
||||
|
@ -394,7 +393,7 @@ function Mario.FloorIsSlope(m: Mario)
|
|||
|
||||
if floor then
|
||||
local floorClass = m:GetFloorClass()
|
||||
local deg: number = 15
|
||||
local deg = 15
|
||||
|
||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||
deg = 5
|
||||
|
@ -416,7 +415,7 @@ function Mario.FloorIsSteep(m: Mario)
|
|||
|
||||
if floor and not m:FacingDownhill() then
|
||||
local floorClass = m:GetFloorClass()
|
||||
local deg: number = 30
|
||||
local deg = 30
|
||||
|
||||
if floorClass == SurfaceClass.VERY_SLIPPERY then
|
||||
deg = 15
|
||||
|
@ -641,9 +640,9 @@ function Mario.SetActionCutscene(m: Mario, action: number, actionArg: number): n
|
|||
return action
|
||||
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 actionArg: number = actionArg or 0
|
||||
local actionArg = maybeActionArg or 0
|
||||
|
||||
if group == ActionGroups.MOVING then
|
||||
action = m:SetActionMoving(action, actionArg)
|
||||
|
@ -888,14 +887,14 @@ function Mario.StationaryGroundStep(m: Mario): number
|
|||
end
|
||||
|
||||
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
|
||||
|
||||
local upperPos, upperWall = Util.FindWallCollisions(nextPos, 60, 50)
|
||||
nextPos = upperPos
|
||||
|
||||
local floorHeight, floor = Util.FindFloor(nextPos)
|
||||
local ceilHeight, ceil = Util.FindCeil(nextPos, floorHeight)
|
||||
local ceilHeight, _ceil = Util.FindCeil(nextPos, floorHeight)
|
||||
|
||||
m.Wall = upperWall
|
||||
|
||||
|
@ -923,7 +922,7 @@ function Mario.PerformGroundQuarterStep(m: Mario, nextPos: Vector3): number
|
|||
m.Position = Vector3.new(nextPos.X, floorHeight, nextPos.Z)
|
||||
|
||||
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
|
||||
return GroundStep.NONE
|
||||
|
@ -1015,7 +1014,7 @@ function Mario.PerformAirQuarterStep(m: Mario, intendedPos: Vector3, stepArg: nu
|
|||
nextPos = lowerPos
|
||||
|
||||
local floorHeight, floor = Util.FindFloor(nextPos)
|
||||
local ceilHeight, ceil = Util.FindCeil(nextPos)
|
||||
local ceilHeight, _ceil = Util.FindCeil(nextPos, floorHeight)
|
||||
|
||||
m.Wall = nil
|
||||
|
||||
|
@ -1073,7 +1072,7 @@ function Mario.PerformAirQuarterStep(m: Mario, intendedPos: Vector3, stepArg: nu
|
|||
|
||||
if upperWall or lowerWall then
|
||||
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
|
||||
|
||||
if math.abs(wallDYaw) > 0x6000 then
|
||||
|
@ -1166,9 +1165,9 @@ function Mario.ApplyGravity(m: Mario)
|
|||
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 stepArg = stepArg or 0
|
||||
m.Wall = nil
|
||||
|
||||
for i = 1, 4 do
|
||||
|
@ -1255,7 +1254,11 @@ function Mario.UpdateJoystickInputs(m: Mario)
|
|||
end
|
||||
|
||||
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)
|
||||
else
|
||||
m.IntendedYaw = m.FaceAngle.Y
|
||||
|
@ -1332,10 +1335,10 @@ end
|
|||
|
||||
function Mario.UpdateCaps(m: Mario): Flags
|
||||
local flags = m.Flags
|
||||
local action
|
||||
local _action
|
||||
|
||||
if m.CapTimer > 0 then
|
||||
action = m.Action
|
||||
_action = m.Action
|
||||
|
||||
if m.CapTimer <= 60 then
|
||||
m.CapTimer -= 1
|
||||
|
@ -1395,9 +1398,15 @@ end
|
|||
|
||||
function Mario.CheckKickOrPunchWall(m: Mario)
|
||||
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))
|
||||
local detector = m.Position + range
|
||||
local disp, wall = Util.FindWallCollisions(detector, 80, 5)
|
||||
-- stylua: ignore
|
||||
local range = Vector3.new(
|
||||
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 m.Action() ~= Action.MOVE_PUNCHING or m.ForwardVel >= 0 then
|
||||
|
@ -1464,7 +1473,7 @@ function Mario.ExecuteAction(m: Mario): number
|
|||
m.GfxAngle *= 0
|
||||
m.AnimDirty = true
|
||||
m.ThrowMatrix = nil
|
||||
m.AnimSkipInterp = false
|
||||
m.AnimSkipInterp = math.max(0, m.AnimSkipInterp - 1)
|
||||
|
||||
m:ResetBodyState()
|
||||
m:UpdateInputs()
|
||||
|
@ -1606,6 +1615,7 @@ function Mario.new(): Mario
|
|||
AnimReset = false,
|
||||
AnimFrameCount = 0,
|
||||
AnimAccelAssist = 0,
|
||||
AnimSkipInterp = 0,
|
||||
}
|
||||
|
||||
return setmetatable(state, Mario)
|
|
@ -105,8 +105,9 @@ export type MarioState = {
|
|||
AnimDirty: boolean,
|
||||
AnimReset: boolean,
|
||||
AnimSetFrame: number,
|
||||
AnimSkipInterp: boolean?,
|
||||
AnimSkipInterp: number,
|
||||
}
|
||||
|
||||
local result = { Flags = Flags }
|
||||
return table.freeze(result)
|
||||
return table.freeze({
|
||||
Flags = Flags,
|
||||
})
|
|
@ -1,13 +1,14 @@
|
|||
--!strict
|
||||
local Core = script.Parent.Parent
|
||||
|
||||
local Util = {
|
||||
TruncateRaycasts = true,
|
||||
GlobalTimer = 0,
|
||||
Scale = 1 / 16,
|
||||
}
|
||||
|
||||
local rayParams = RaycastParams.new()
|
||||
rayParams.CollisionGroup = "Player"
|
||||
rayParams.RespectCanCollide = true
|
||||
rayParams.IgnoreWater = true
|
||||
|
||||
local SHORT_TO_RAD = (2 * math.pi) / 0x10000
|
||||
local VECTOR3_XZ = Vector3.one - Vector3.yAxis
|
||||
|
@ -58,7 +59,6 @@ end
|
|||
function Util.ToRotation(v: Vector3int16): CFrame
|
||||
local angle = Util.ToEulerAngles(v)
|
||||
|
||||
-- stylua: ignore
|
||||
local matrix = CFrame.fromAxisAngle(Vector3.yAxis, angle.Y)
|
||||
* CFrame.fromAxisAngle(Vector3.xAxis, -angle.X)
|
||||
* CFrame.fromAxisAngle(Vector3.zAxis, -angle.Z)
|
||||
|
@ -66,9 +66,10 @@ function Util.ToRotation(v: Vector3int16): CFrame
|
|||
return matrix
|
||||
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 result: RaycastResult? = root:Raycast(pos, dir)
|
||||
local params = maybeParams or rayParams
|
||||
local result: RaycastResult? = root:Raycast(pos, dir, params)
|
||||
|
||||
if script:GetAttribute("Debug") then
|
||||
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?)
|
||||
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)
|
||||
|
||||
if math.abs(trunc.X) >= 0x2000 then
|
||||
return -11000, nil
|
||||
return height, nil
|
||||
end
|
||||
|
||||
if math.abs(trunc.Z) >= 0x2000 then
|
||||
return -11000, nil
|
||||
return height, nil
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
return height, result
|
||||
|
@ -134,8 +136,8 @@ function Util.FindFloor(pos: Vector3): (number, RaycastResult?)
|
|||
end
|
||||
|
||||
function Util.FindCeil(pos: Vector3, height: number?): (number, RaycastResult?)
|
||||
local pos = Vector3.new(pos.X, (height or pos.Y) + 80, pos.Z)
|
||||
local result = Util.RaycastSM64(pos, Vector3.yAxis * 10000)
|
||||
local head = Vector3.new(pos.X, (height or pos.Y) + 80, pos.Z)
|
||||
local result = Util.RaycastSM64(head, Vector3.yAxis * 10000)
|
||||
|
||||
if result then
|
||||
return result.Position.Y, result
|
||||
|
@ -146,7 +148,6 @@ end
|
|||
|
||||
function Util.FindWallCollisions(pos: Vector3, offset: number, radius: number): (Vector3, RaycastResult?)
|
||||
local origin = pos + Vector3.new(0, offset, 0)
|
||||
local walls: { RaycastResult } = {}
|
||||
local lastWall: RaycastResult?
|
||||
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
|
||||
local surface = contact.Position
|
||||
local offset = (surface - pos) * VECTOR3_XZ
|
||||
local dist = offset.Magnitude
|
||||
local move = (surface - pos) * VECTOR3_XZ
|
||||
local dist = move.Magnitude
|
||||
|
||||
if dist < radius then
|
||||
disp += (contact.Normal * VECTOR3_XZ) * (radius - dist)
|
||||
|
@ -215,17 +216,23 @@ function Util.ApproachInt(current: number, target: number, inc: number, dec: num
|
|||
end
|
||||
|
||||
function Util.Sins(short: number): number
|
||||
short = Util.SignedShort(short)
|
||||
return math.sin(short * SHORT_TO_RAD)
|
||||
local value = Util.SignedShort(short)
|
||||
value = math.floor(value / 16) * 16
|
||||
|
||||
return math.sin(value * SHORT_TO_RAD)
|
||||
end
|
||||
|
||||
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)
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
function Util.Atan2s(y: number, x: number): number
|
||||
|
@ -270,4 +277,4 @@ function Util.Atan2s(y: number, x: number): number
|
|||
return Util.SignedShort(ret)
|
||||
end
|
||||
|
||||
return table.freeze(Util)
|
||||
return Util
|
|
@ -1,4 +1,15 @@
|
|||
--!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 RunService = game:GetService("RunService")
|
||||
|
@ -8,7 +19,9 @@ local UserInputService = game:GetService("UserInputService")
|
|||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||
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 Mario = require(script.Mario)
|
||||
local Types = require(script.Types)
|
||||
|
@ -16,7 +29,7 @@ local Util = require(script.Util)
|
|||
|
||||
local Action = Enums.Action
|
||||
local Buttons = Enums.Buttons
|
||||
local InputFlags = Enums.InputFlags
|
||||
local MarioFlags = Enums.MarioFlags
|
||||
local ParticleFlags = Enums.ParticleFlags
|
||||
|
||||
type InputType = Enum.UserInputType | Enum.KeyCode
|
||||
|
@ -24,7 +37,15 @@ type Controller = Types.Controller
|
|||
type Mario = Mario.Class
|
||||
|
||||
local player: Player = assert(Players.LocalPlayer)
|
||||
local FLIP = CFrame.Angles(0, math.pi, 0)
|
||||
|
||||
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 = {
|
||||
Fire = true,
|
||||
|
@ -33,65 +54,104 @@ local PARTICLE_CLASSES = {
|
|||
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
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
local MATH_TAU = math.pi * 2
|
||||
local BUTTON_FEED: { Enum.UserInputState } = {}
|
||||
local BUTTON_A = "BTN_" .. Buttons.A_BUTTON
|
||||
-- NOTE: I had to replace the default BindAction via KeyCode and UserInputType
|
||||
-- BindAction forces some mappings (such as R2 mapping to MouseButton1) which you
|
||||
-- can't turn off otherwise.
|
||||
|
||||
local BUTTON_FEED = {}
|
||||
local BUTTON_BINDS = {}
|
||||
|
||||
local function toStrictNumber(str: string): number
|
||||
local result = tonumber(str)
|
||||
return assert(result, "Invalid number!")
|
||||
end
|
||||
|
||||
local function processAction(id: string, state: Enum.UserInputState)
|
||||
if id == "MarioDebug" then
|
||||
local function processAction(id: string, state: Enum.UserInputState, input: InputObject)
|
||||
if id == "MarioDebug" and Core:GetAttribute("DebugToggle") then
|
||||
if state == Enum.UserInputState.Begin then
|
||||
local isDebug = not script.Util:GetAttribute("Debug")
|
||||
local character = player.Character
|
||||
|
||||
-- stylua: ignore
|
||||
local rootPart = if character
|
||||
then character.PrimaryPart
|
||||
else nil
|
||||
|
||||
if rootPart then
|
||||
local action = rootPart:FindFirstChild("Action")
|
||||
|
||||
if action and action:IsA("BillboardGui") then
|
||||
action.Enabled = isDebug
|
||||
if character then
|
||||
local isDebug = not character:GetAttribute("Debug")
|
||||
character:SetAttribute("Debug", isDebug)
|
||||
end
|
||||
end
|
||||
|
||||
script.Util:SetAttribute("Debug", isDebug)
|
||||
end
|
||||
else
|
||||
local button = toStrictNumber(id:sub(5))
|
||||
BUTTON_FEED[button] = state
|
||||
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 id = "BTN_" .. button
|
||||
ContextActionService:BindAction(id, processAction, true, ...)
|
||||
|
||||
if UserInputService.TouchEnabled then
|
||||
ContextActionService:BindAction(id, processAction, true)
|
||||
ContextActionService:SetTitle(id, label)
|
||||
end
|
||||
|
||||
for i, input in { ... } do
|
||||
BUTTON_BINDS[input] = id
|
||||
end
|
||||
end
|
||||
|
||||
local function updateCollisions()
|
||||
for i, player in Players:GetPlayers() do
|
||||
assert(player:IsA("Player"))
|
||||
|
||||
-- stylua: ignore
|
||||
local rootPart = if player.Character
|
||||
then player.Character.PrimaryPart
|
||||
else nil
|
||||
local character = player.Character
|
||||
local rootPart = character and character.PrimaryPart
|
||||
|
||||
if rootPart then
|
||||
local parts = rootPart:GetConnectedParts(true)
|
||||
|
@ -105,12 +165,24 @@ local function updateCollisions()
|
|||
end
|
||||
end
|
||||
|
||||
local function updateController(controller: Controller, humanoid: Humanoid)
|
||||
local moveDir = humanoid.MoveDirection
|
||||
local pos = Vector2.new(moveDir.X, -moveDir.Z)
|
||||
local len = math.min(1, pos.Magnitude)
|
||||
local function updateController(controller: Controller, humanoid: Humanoid?)
|
||||
if not humanoid then
|
||||
return
|
||||
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.StickY = pos.Y * 64
|
||||
|
||||
|
@ -119,26 +191,47 @@ local function updateController(controller: Controller, humanoid: Humanoid)
|
|||
|
||||
if humanoid.Jump then
|
||||
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.Begin
|
||||
humanoid.Jump = false
|
||||
elseif controller.ButtonDown:Has(Buttons.A_BUTTON) then
|
||||
BUTTON_FEED[Buttons.A_BUTTON] = Enum.UserInputState.End
|
||||
end
|
||||
|
||||
local character = humanoid.Parent
|
||||
local lastButtonValue = controller.ButtonDown()
|
||||
|
||||
for button, state in pairs(BUTTON_FEED) do
|
||||
if state == Enum.UserInputState.Begin then
|
||||
controller.ButtonDown:Add(button)
|
||||
controller.ButtonPressed:Add(button)
|
||||
elseif state == Enum.UserInputState.End then
|
||||
controller.ButtonDown:Remove(button)
|
||||
end
|
||||
end
|
||||
|
||||
local buttonValue = controller.ButtonDown()
|
||||
controller.ButtonPressed:Set(buttonValue)
|
||||
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
|
||||
|
||||
ContextActionService:BindAction("MarioDebug", processAction, false, Enum.KeyCode.P)
|
||||
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
|
||||
|
@ -152,11 +245,7 @@ assert(lazyNetwork:IsA("RemoteEvent"), "bad lazyNetwork!")
|
|||
function Commands.PlaySound(player: Player, name: string)
|
||||
local sound: Sound? = Sounds[name]
|
||||
local character = player.Character
|
||||
|
||||
-- stylua: ignore
|
||||
local rootPart = if character
|
||||
then character.PrimaryPart
|
||||
else nil
|
||||
local rootPart = character and character.PrimaryPart
|
||||
|
||||
if rootPart and sound then
|
||||
local oldSound: Instance? = rootPart:FindFirstChild(name)
|
||||
|
@ -177,19 +266,11 @@ end
|
|||
|
||||
function Commands.SetParticle(player: Player, name: string, set: boolean)
|
||||
local character = player.Character
|
||||
|
||||
-- stylua: ignore
|
||||
local rootPart = if character
|
||||
then character.PrimaryPart
|
||||
else nil
|
||||
local rootPart = character and character.PrimaryPart
|
||||
|
||||
if rootPart then
|
||||
local particles = rootPart:FindFirstChild("Particles")
|
||||
|
||||
-- stylua: ignore
|
||||
local inst = if particles
|
||||
then particles:FindFirstChild(name)
|
||||
else nil
|
||||
local inst = particles and particles:FindFirstChild(name)
|
||||
|
||||
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
||||
local particle = inst :: ParticleEmitter
|
||||
|
@ -206,11 +287,7 @@ end
|
|||
|
||||
function Commands.SetAngle(player: Player, angle: Vector3int16)
|
||||
local character = player.Character
|
||||
|
||||
-- stylua: ignore
|
||||
local waist = if character
|
||||
then character:FindFirstChild("Waist", true)
|
||||
else nil
|
||||
local waist = character and character:FindFirstChild("Waist", true)
|
||||
|
||||
if waist and waist:IsA("Motor6D") then
|
||||
local props = { C1 = Util.ToRotation(-angle) + waist.C1.Position }
|
||||
|
@ -219,6 +296,17 @@ function Commands.SetAngle(player: Player, angle: Vector3int16)
|
|||
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 command = Commands[cmd]
|
||||
|
||||
|
@ -248,16 +336,15 @@ lazyNetwork.OnClientEvent:Connect(onNetworkReceive)
|
|||
|
||||
local lastUpdate = os.clock()
|
||||
local lastAngle: Vector3int16?
|
||||
|
||||
local mario: Mario = Mario.new()
|
||||
local controller = mario.Controller
|
||||
|
||||
local enumMap = {}
|
||||
local goalCF: CFrame
|
||||
local activeTrack: AnimationTrack?
|
||||
local peakSpeed = 0
|
||||
local subframe = 0 -- 30hz subframe
|
||||
local emptyId = ""
|
||||
|
||||
local goalCF: CFrame
|
||||
local prevCF: CFrame
|
||||
local activeTrack: AnimationTrack?
|
||||
|
||||
local reset = Instance.new("BindableEvent")
|
||||
reset.Archivable = false
|
||||
reset.Parent = script
|
||||
|
@ -274,8 +361,23 @@ while not player.Character do
|
|||
end
|
||||
|
||||
local character = assert(player.Character)
|
||||
local pivot = character:GetPivot().Position
|
||||
mario.Position = Util.ToSM64(pivot)
|
||||
local pivot = character:GetPivot()
|
||||
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 roblox = Vector3.yAxis * 100
|
||||
|
@ -284,13 +386,16 @@ local function onReset()
|
|||
|
||||
if char then
|
||||
local reset = char:FindFirstChild("Reset")
|
||||
|
||||
local cf = CFrame.new(roblox)
|
||||
char:PivotTo(cf)
|
||||
|
||||
goalCF = cf
|
||||
prevCF = cf
|
||||
|
||||
if reset and reset:IsA("RemoteEvent") then
|
||||
reset:FireServer()
|
||||
end
|
||||
|
||||
char:PivotTo(cf)
|
||||
end
|
||||
|
||||
mario.SlideVelX = 0
|
||||
|
@ -316,30 +421,44 @@ local function update()
|
|||
local gfxRot = CFrame.identity
|
||||
|
||||
-- stylua: ignore
|
||||
local humanoid = if character
|
||||
then character:FindFirstChildOfClass("Humanoid")
|
||||
else nil
|
||||
local scale = character:GetScale()
|
||||
Util.Scale = scale / 16 -- HACK! Should this be instanced?
|
||||
|
||||
local simSpeed = tonumber(script:GetAttribute("TimeScale") or nil) or 1
|
||||
local frames = math.floor((now - lastUpdate) * (STEP_RATE * simSpeed))
|
||||
local pos = character:GetPivot().Position
|
||||
local dist = (Util.ToRoblox(mario.Position) - pos).Magnitude
|
||||
local humanoid = character:FindFirstChildOfClass("Humanoid")
|
||||
|
||||
if frames > 0 and humanoid then
|
||||
if dist > (scale * 20) then
|
||||
mario.Position = Util.ToSM64(pos)
|
||||
end
|
||||
|
||||
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()
|
||||
|
||||
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)
|
||||
|
||||
local gfxPos = Util.ToRoblox(mario.Position)
|
||||
gfxRot = Util.ToRotation(mario.GfxAngle)
|
||||
goalCF = CFrame.new(pos) * FLIP * gfxRot
|
||||
end
|
||||
|
||||
local interp = math.min(1, simSpeed / 2)
|
||||
prevCF = goalCF
|
||||
goalCF = CFrame.new(gfxPos) * FLIP * gfxRot
|
||||
end
|
||||
|
||||
if character and goalCF then
|
||||
local cf = character:GetPivot()
|
||||
|
@ -351,6 +470,13 @@ local function update()
|
|||
local animSpeed = 0.1 / simSpeed
|
||||
|
||||
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 = nil
|
||||
end
|
||||
|
@ -389,50 +515,59 @@ local function update()
|
|||
end
|
||||
|
||||
if rootPart then
|
||||
local action = rootPart:FindFirstChild("Action")
|
||||
local particles = rootPart:FindFirstChild("Particles")
|
||||
local alignPos = rootPart:FindFirstChildOfClass("AlignPosition")
|
||||
local alignCF = rootPart:FindFirstChildOfClass("AlignOrientation")
|
||||
|
||||
local actionId = mario.Action()
|
||||
local throw = mario.ThrowMatrix
|
||||
|
||||
if throw then
|
||||
local pos = Util.ToRoblox(throw.Position)
|
||||
goalCF = throw.Rotation * FLIP + pos
|
||||
local throwPos = Util.ToRoblox(throw.Position)
|
||||
goalCF = throw.Rotation * FLIP + throwPos
|
||||
end
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
-- stylua: ignore
|
||||
local debugLabel = if action
|
||||
then action:FindFirstChildOfClass("TextLabel")
|
||||
else nil
|
||||
local isDebug = character:GetAttribute("Debug")
|
||||
local limits = character:GetAttribute("EmulateLimits")
|
||||
|
||||
if debugLabel then
|
||||
local actionId = mario.Action()
|
||||
script.Util:SetAttribute("Debug", isDebug)
|
||||
debugStats.Value = isDebug
|
||||
|
||||
-- stylua: ignore
|
||||
local anim = if activeTrack
|
||||
then activeTrack.Animation
|
||||
else nil
|
||||
if limits ~= nil then
|
||||
Core:SetAttribute("TruncateBounds", limits)
|
||||
end
|
||||
|
||||
-- stylua: ignore
|
||||
local animName = if anim
|
||||
then anim.Name
|
||||
else nil
|
||||
if isDebug then
|
||||
local animName = activeTrack and tostring(activeTrack.Animation)
|
||||
setDebugStat("Animation", animName)
|
||||
|
||||
local debugText = "Action: "
|
||||
.. Enums.GetName(Action, actionId)
|
||||
.. "\n"
|
||||
.. "Animation: "
|
||||
.. tostring(animName)
|
||||
.. "\n"
|
||||
.. "ForwardVel: "
|
||||
.. string.format("%.2f", mario.ForwardVel)
|
||||
local actionName = Enums.GetName(Action, actionId)
|
||||
setDebugStat("Action", actionName)
|
||||
|
||||
debugLabel.Text = debugText
|
||||
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
|
||||
|
||||
if alignPos then
|
||||
|
@ -440,14 +575,12 @@ local function update()
|
|||
end
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
local ang = bodyState.TorsoAngle
|
||||
|
||||
if ang ~= lastAngle then
|
||||
networkDispatch("SetAngle", ang)
|
||||
lastAngle = ang
|
||||
|
@ -458,9 +591,7 @@ local function update()
|
|||
local inst = particles:FindFirstChild(name)
|
||||
|
||||
if inst and PARTICLE_CLASSES[inst.ClassName] then
|
||||
local name = inst.Name
|
||||
local particle = inst :: ParticleEmitter
|
||||
|
||||
local emit = particle:GetAttribute("Emit")
|
||||
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",
|
||||
"$ignoreUnknownInstances": true,
|
||||
|
||||
"ReplicatedFirst": {
|
||||
"$className": "ReplicatedFirst",
|
||||
"Workspace": {
|
||||
"$className": "Workspace",
|
||||
"$ignoreUnknownInstances": true,
|
||||
|
||||
"SM64": {
|
||||
"$path": "SM64",
|
||||
"$ignoreUnknownInstances": true
|
||||
}
|
||||
"$className": "Folder",
|
||||
|
||||
"$attributes": {
|
||||
"TimeScale": 1,
|
||||
"WingCap": false,
|
||||
"HotLoading": false,
|
||||
"DebugToggle": true,
|
||||
"TruncateBounds": true,
|
||||
"ToolAssistedInput": true
|
||||
},
|
||||
|
||||
"ServerScriptService": {
|
||||
"$className": "ServerScriptService",
|
||||
"$ignoreUnknownInstances": true,
|
||||
|
||||
"LazyNetworking": {
|
||||
"$path": "rbx/LazyNetworking.server.lua"
|
||||
"Client": {
|
||||
"$path": "client"
|
||||
},
|
||||
|
||||
"StarterCharacter": {
|
||||
"$path": "rbx/StarterCharacter"
|
||||
}
|
||||
"Server": {
|
||||
"$path": "server"
|
||||
},
|
||||
|
||||
"StarterPlayer": {
|
||||
"$className": "StarterPlayer",
|
||||
"$ignoreUnknownInstances": true,
|
||||
|
||||
"$properties": {
|
||||
"EnableMouseLockOption": false
|
||||
},
|
||||
|
||||
"StarterCharacterScripts": {
|
||||
"$className": "StarterCharacterScripts",
|
||||
"$ignoreUnknownInstances": true,
|
||||
|
||||
"Animate": {
|
||||
"$className": "Hole"
|
||||
},
|
||||
|
||||
"Sound": {
|
||||
"$className": "Hole"
|
||||
},
|
||||
|
||||
"Health": {
|
||||
"$className": "Hole"
|
||||
},
|
||||
|
||||
"Appearance": {
|
||||
"$path": "rbx/Appearance.server.lua"
|
||||
"Shared": {
|
||||
"$path": "shared"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,13 +3,15 @@ local Validators: { [string]: (Player, ...any) -> boolean } = {}
|
|||
type Echo = () -> ()
|
||||
|
||||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||
local ReplicatedFirst = game:GetService("ReplicatedFirst")
|
||||
local PhysicsService = game:GetService("PhysicsService")
|
||||
local Sounds = require(ReplicatedFirst.SM64.Sounds)
|
||||
local Core = script.Parent.Parent
|
||||
|
||||
local Shared = require(Core.Shared)
|
||||
local Sounds = Shared.Sounds
|
||||
|
||||
local lazy = Instance.new("RemoteEvent")
|
||||
lazy.Parent = ReplicatedStorage
|
||||
lazy.Name = "LazyNetwork"
|
||||
lazy.Archivable = false
|
||||
|
||||
function Validators.PlaySound(player: Player, name: string)
|
||||
local sound: Instance? = Sounds[name]
|
||||
|
@ -27,19 +29,11 @@ function Validators.SetParticle(player: Player, name: string, set: boolean?)
|
|||
end
|
||||
|
||||
local character = player.Character
|
||||
|
||||
-- stylua: ignore
|
||||
local rootPart = if character
|
||||
then character.PrimaryPart
|
||||
else nil
|
||||
local rootPart = character and character.PrimaryPart
|
||||
|
||||
if rootPart then
|
||||
local particles = rootPart:FindFirstChild("Particles")
|
||||
|
||||
-- stylua: ignore
|
||||
local particle = if particles
|
||||
then particles:FindFirstChild(name)
|
||||
else nil
|
||||
local particle = particles and particles:FindFirstChild(name)
|
||||
|
||||
if particle then
|
||||
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 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")
|
||||
desc.CollisionGroup = "Player"
|
||||
desc.CanQuery = false
|
||||
|
@ -35,8 +35,18 @@ end
|
|||
|
||||
task.spawn(patchAllCollision)
|
||||
character.DescendantAdded:Connect(patchCollision)
|
||||
character:SetAttribute("TimeScale", 1)
|
||||
|
||||
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
|
||||
local success, result = pcall(function()
|
||||
return Players:GetHumanoidDescriptionFromUserId(userId)
|
|
@ -221,49 +221,5 @@
|
|||
</Properties>
|
||||
</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>
|
||||
</roblox>
|
|
@ -1,8 +1,9 @@
|
|||
--!strict
|
||||
|
||||
local PhysicsService = game:GetService("PhysicsService")
|
||||
local StarterPlayer = game:GetService("StarterPlayer")
|
||||
local Players = game:GetService("Players")
|
||||
local StarterPlayer = game:GetService("StarterPlayer")
|
||||
local PhysicsService = game:GetService("PhysicsService")
|
||||
local StarterCharacterScripts = StarterPlayer.StarterCharacterScripts
|
||||
|
||||
local hDesc = Instance.new("HumanoidDescription")
|
||||
hDesc.HeightScale = 1.3
|
||||
|
@ -27,15 +28,38 @@ if bodyColors then
|
|||
bodyColors:Destroy()
|
||||
end
|
||||
|
||||
local newRoot = script.HumanoidRootPart:Clone()
|
||||
local newRoot = script.HumanoidRootPart
|
||||
newRoot.Parent = character :: any
|
||||
|
||||
local humanoid = assert(character:FindFirstChildOfClass("Humanoid"))
|
||||
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.PrimaryPart = newRoot
|
||||
character.Parent = StarterPlayer
|
||||
|
||||
PhysicsService:CreateCollisionGroup("Player")
|
||||
PhysicsService:RegisterCollisionGroup("Player")
|
||||
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