mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-05-02 06:51:57 +00:00
Merge branch '26w14a' into coopdx.-dev-sept25
This commit is contained in:
commit
7d37c4f305
925 changed files with 38070 additions and 5102 deletions
57
.github/workflows/build-coop.yaml
vendored
57
.github/workflows/build-coop.yaml
vendored
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
cd tools
|
||||
g++ -std=c++17 -o hash_file hash_file.cpp
|
||||
echo "::notice ::$(./hash_file ../build/us_pc/sm64coopdx)"
|
||||
|
||||
|
||||
- name: Zip the game
|
||||
run: |
|
||||
cd ./build/us_pc
|
||||
|
|
@ -37,7 +37,7 @@ jobs:
|
|||
with:
|
||||
name: sm64coopdx-linux
|
||||
path: ./build/us_pc/sm64coopdx_Linux.zip
|
||||
|
||||
|
||||
build-steamos:
|
||||
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[build]') }}
|
||||
runs-on: ubuntu-22.04
|
||||
|
|
@ -58,7 +58,7 @@ jobs:
|
|||
cd tools
|
||||
g++ -std=c++17 -o hash_file hash_file.cpp
|
||||
echo "::notice ::$(./hash_file ../build/us_pc/sm64coopdx)"
|
||||
|
||||
|
||||
- name: Zip the game
|
||||
run: |
|
||||
cd ./build/us_pc
|
||||
|
|
@ -108,7 +108,7 @@ jobs:
|
|||
cd tools
|
||||
g++ -std=c++17 -o hash_file.exe hash_file.cpp
|
||||
echo "::notice ::$(./hash_file.exe ../build/us_pc/sm64coopdx.exe)"
|
||||
|
||||
|
||||
- name: Zip the game
|
||||
run: |
|
||||
cd ./build/us_pc
|
||||
|
|
@ -158,7 +158,7 @@ jobs:
|
|||
cd tools
|
||||
g++ -std=c++17 -o hash_file.exe hash_file.cpp
|
||||
echo "::notice ::$(./hash_file.exe ../build/us_pc/sm64coopdx.exe)"
|
||||
|
||||
|
||||
- name: Zip the game
|
||||
run: |
|
||||
cd ./build/us_pc
|
||||
|
|
@ -172,17 +172,36 @@ jobs:
|
|||
|
||||
build-macos-arm:
|
||||
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[build]') }}
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-26
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install make mingw-w64 sdl2 pkg-config glew glfw3 coreutils
|
||||
brew install make mingw-w64 pkg-config glfw3 coreutils
|
||||
|
||||
- name: Compile glew
|
||||
run: |
|
||||
export MACOSX_DEPLOYMENT_TARGET=11
|
||||
curl -L -o glew.tar.gz https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz
|
||||
tar -xzf glew.tar.gz
|
||||
cd glew-2.2.0
|
||||
make SYSTEM=darwin CC="clang -arch arm64 -mmacosx-version-min=11" GLEW_PREFIX=/opt/homebrew GLEW_DEST=/opt/homebrew
|
||||
make install GLEW_PREFIX=/opt/homebrew GLEW_DEST=/opt/homebrew
|
||||
|
||||
- name: Compile SDL2
|
||||
run: |
|
||||
curl -L -o SDL2.tar.gz https://github.com/libsdl-org/SDL/releases/download/release-2.30.9/SDL2-2.30.9.tar.gz
|
||||
tar -xzf SDL2.tar.gz
|
||||
cd SDL2-2.30.9
|
||||
./configure --prefix=/opt/homebrew CC="clang -arch arm64 -mmacosx-version-min=11"
|
||||
make -j$(sysctl -n hw.ncpu)
|
||||
make install
|
||||
|
||||
- name: Build the game
|
||||
run: |
|
||||
export PKG_CONFIG_PATH=/opt/homebrew/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||
gmake OSX_BUILD=1 -j$(sysctl -n hw.ncpu)
|
||||
|
||||
- name: Code sign the app (Ad-Hoc)
|
||||
|
|
@ -199,7 +218,7 @@ jobs:
|
|||
run: |
|
||||
cd ./build/us_pc
|
||||
zip -r sm64coopdx_macOS_ARM.zip sm64coopdx.app
|
||||
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
@ -215,7 +234,25 @@ jobs:
|
|||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install make mingw-w64 gcc@9 sdl2 pkg-config glew glfw3 coreutils
|
||||
brew install make mingw-w64 gcc@9 pkg-config glfw3 coreutils
|
||||
|
||||
- name: Compile glew
|
||||
run: |
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.15
|
||||
curl -L -o glew.tar.gz https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.tgz
|
||||
tar -xzf glew.tar.gz
|
||||
cd glew-2.2.0
|
||||
make SYSTEM=darwin CC="clang -arch x86_64 -mmacosx-version-min=10.15"
|
||||
make install
|
||||
|
||||
- name: Compile SDL2
|
||||
run: |
|
||||
curl -L -o SDL2.tar.gz https://github.com/libsdl-org/SDL/releases/download/release-2.30.9/SDL2-2.30.9.tar.gz
|
||||
tar -xzf SDL2.tar.gz
|
||||
cd SDL2-2.30.9
|
||||
./configure --prefix=/usr/local CC="clang -arch x86_64 -mmacosx-version-min=10.15"
|
||||
make -j$(sysctl -n hw.ncpu)
|
||||
make install
|
||||
|
||||
- name: Build the game
|
||||
run: |
|
||||
|
|
@ -235,7 +272,7 @@ jobs:
|
|||
run: |
|
||||
cd ./build/us_pc
|
||||
zip -r sm64coopdx_macOS_Intel.zip sm64coopdx.app
|
||||
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
|
|||
31
Makefile
31
Makefile
|
|
@ -64,12 +64,7 @@ ICON ?= 1
|
|||
# Use .app (for macOS)
|
||||
USE_APP ?= 1
|
||||
# Minimum macOS Version
|
||||
# If our arch is arm, set to macOS 14
|
||||
ifeq ($(shell arch),arm64)
|
||||
MIN_MACOS_VERSION ?= 14
|
||||
else
|
||||
MIN_MACOS_VERSION ?= 10.15
|
||||
endif
|
||||
MIN_MACOS_VERSION ?= 11
|
||||
# Make some small adjustments for handheld devices
|
||||
HANDHELD ?= 0
|
||||
|
||||
|
|
@ -1575,15 +1570,15 @@ endif
|
|||
# with no prerequisites, .SECONDARY causes no intermediate target to be removed
|
||||
.SECONDARY:
|
||||
|
||||
# Handle end of macOS compilation
|
||||
APP_DIR = ./sm64coopdx.app
|
||||
APP_CONTENTS_DIR = $(APP_DIR)/Contents
|
||||
APP_MACOS_DIR = $(APP_CONTENTS_DIR)/MacOS
|
||||
APP_RESOURCES_DIR = $(APP_CONTENTS_DIR)/Resources
|
||||
|
||||
|
||||
ifeq ($(OSX_BUILD),1)
|
||||
GLEW_LIB := $(shell find $(BREW_PREFIX)/Cellar/glew | grep libGLEW.2.2.0 | sort -n | uniq)
|
||||
SDL2_LIB := $(shell find $(BREW_PREFIX)/Cellar/sdl2 | grep libSDL2- | sort -n | uniq)
|
||||
GLEW_LIB := $(shell find $(BREW_PREFIX)/lib/ | grep libGLEW.2.2.0 | sort -n | uniq)
|
||||
SDL2_LIB := $(shell find $(BREW_PREFIX)/lib/ | grep libSDL2- | sort -n | uniq)
|
||||
endif
|
||||
|
||||
all:
|
||||
|
|
@ -1605,14 +1600,20 @@ all:
|
|||
cp build/us_pc/libcoopnet.dylib $(APP_MACOS_DIR); \
|
||||
cp build/us_pc/libjuice.1.6.2.dylib $(APP_MACOS_DIR); \
|
||||
cp $(SDL2_LIB) $(APP_MACOS_DIR)/libSDL2.dylib; \
|
||||
install_name_tool -change $(BREW_PREFIX)/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/sm64coopdx; > /dev/null 2>&1 \
|
||||
install_name_tool -id @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/libSDL2.dylib; > /dev/null 2>&1 \
|
||||
install_name_tool -change $(BREW_PREFIX)/lib/libSDL2-2.0.0.dylib @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/sm64coopdx > /dev/null 2>&1; \
|
||||
install_name_tool -change $(BREW_PREFIX)/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/sm64coopdx > /dev/null 2>&1; \
|
||||
install_name_tool -id @executable_path/libSDL2.dylib $(APP_MACOS_DIR)/libSDL2.dylib > /dev/null 2>&1; \
|
||||
codesign --force --deep --sign - $(APP_MACOS_DIR)/libSDL2.dylib; \
|
||||
cp $(GLEW_LIB) $(APP_MACOS_DIR)/libGLEW.dylib; \
|
||||
install_name_tool -change $(BREW_PREFIX)/opt/glew/lib/libGLEW.2.2.dylib @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/sm64coopdx; > /dev/null 2>&1 \
|
||||
install_name_tool -id @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/libGLEW.dylib; > /dev/null 2>&1 \
|
||||
install_name_tool -change $(BREW_PREFIX)/lib/libGLEW.2.2.0.dylib @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/sm64coopdx > /dev/null 2>&1; \
|
||||
install_name_tool -change $(BREW_PREFIX)/opt/glew/lib/libGLEW.2.2.0.dylib @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/sm64coopdx > /dev/null 2>&1; \
|
||||
install_name_tool -id @executable_path/libGLEW.dylib $(APP_MACOS_DIR)/libGLEW.dylib > /dev/null 2>&1; \
|
||||
codesign --force --deep --sign - $(APP_MACOS_DIR)/libGLEW.dylib; \
|
||||
cp res/icon.icns $(APP_RESOURCES_DIR)/icon.icns; \
|
||||
mkdir res/build; \
|
||||
xcrun actool res/icon.icon --compile res/build --app-icon icon --output-partial-info-plist res/build/Info.plist --minimum-deployment-target $(MIN_MACOS_VERSION) --platform macosx > /dev/null 2>&1; \
|
||||
mv res/build/Assets.car $(APP_RESOURCES_DIR)/; \
|
||||
cp res/icon.icns $(APP_RESOURCES_DIR)/; \
|
||||
rm -rf res/build; \
|
||||
echo "APPL????" > $(APP_CONTENTS_DIR)/PkgInfo; \
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' > $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
|
|
@ -1623,7 +1624,7 @@ all:
|
|||
echo ' <key>CFBundleIconFile</key>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <string>icon</string>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <key>CFBundleIconName</key>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <string>AppIcon</string>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <string>icon</string>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <key>CFBundleDisplayName</key>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <string>sm64coopdx</string>' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
echo ' <!-- Add other keys and values here -->' >> $(APP_CONTENTS_DIR)/Info.plist; \
|
||||
|
|
|
|||
|
|
@ -535,6 +535,8 @@ def def_constant(fname, processed_constant, skip_constant):
|
|||
continue
|
||||
if '"' in c[1]:
|
||||
s += '\n--- @type string\n'
|
||||
elif "." in c[1]:
|
||||
s += '\n--- @type number\n'
|
||||
else:
|
||||
s += '\n--- @type integer\n'
|
||||
s += '%s = %s\n' % (c[0], c[1])
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ in_files = [
|
|||
"src/audio/seqplayer.h",
|
||||
"src/engine/lighting_engine.h",
|
||||
"src/pc/network/sync_object.h",
|
||||
"src/audio/load.h",
|
||||
]
|
||||
|
||||
override_allowed_functions = {
|
||||
|
|
@ -99,6 +100,7 @@ override_allowed_functions = {
|
|||
"src/game/ingame_menu.h": [ "set_min_dialog_width", "set_dialog_override_pos", "reset_dialog_override_pos", "set_dialog_override_color", "reset_dialog_override_color", "set_menu_mode", "create_dialog_box", "create_dialog_box_with_var", "create_dialog_inverted_box", "create_dialog_box_with_response", "reset_dialog_render_state", "set_dialog_box_state", "handle_special_dialog_text" ],
|
||||
"src/audio/seqplayer.h": [ "sequence_player_set_tempo", "sequence_player_set_tempo_acc", "sequence_player_set_transposition", "sequence_player_get_tempo", "sequence_player_get_tempo_acc", "sequence_player_get_transposition", "sequence_player_get_volume", "sequence_player_get_fade_volume", "sequence_player_get_mute_volume_scale" ],
|
||||
"src/pc/network/sync_object.h": [ "sync_object_is_initialized", "sync_object_is_owned_locally", "sync_object_get_object" ],
|
||||
"src/audio/load.h": [ "set_sound_bank_override" ],
|
||||
}
|
||||
|
||||
override_disallowed_functions = {
|
||||
|
|
@ -120,14 +122,14 @@ override_disallowed_functions = {
|
|||
"src/game/sound_init.h": [ "_loop_", "thread4_", "set_sound_mode" ],
|
||||
"src/pc/network/network_utils.h": [ "network_get_player_text_color[^_]" ],
|
||||
"src/pc/network/network_player.h": [ "_init", "_connected[^_]", "_shutdown", "_disconnected", "_update", "construct_player_popup", "network_player_name_valid" ],
|
||||
"src/game/object_helpers.c": [ "spawn_obj", "^bhv_", "abs[fi]", "^bit_shift", "_debug$", "^stub_", "_set_model", "cur_obj_set_direction_table", "cur_obj_progress_direction_table" ],
|
||||
"src/game/obj_behaviors.c": [ "debug_", "turn_obj_away_from_surface" ],
|
||||
"src/game/object_helpers.c": [ "spawn_obj", "^bhv_", "geo_", "abs[fi]", "^bit_shift", "_debug$", "^stub_", "_set_model", "cur_obj_set_direction_table", "cur_obj_progress_direction_table" ],
|
||||
"src/game/obj_behaviors.c": [ "debug_", "geo_", "turn_obj_away_from_surface"],
|
||||
"src/game/obj_behaviors_2.c": [ "wiggler_jumped_on_attack_handler", "huge_goomba_weakly_attacked" ],
|
||||
"src/game/spawn_sound.h": [ "exec_anim_sound_state" ],
|
||||
"src/game/level_info.h": [ "_name_table", "convert_string_" ],
|
||||
"src/pc/lua/utils/smlua_obj_utils.h": [ "spawn_object_remember_field" ],
|
||||
"src/game/camera.h": [ "update_camera", "init_camera", "stub_camera", "^reset_camera", "move_point_along_spline", "romhack_camera_init_settings", "romhack_camera_reset_settings" ],
|
||||
"src/game/behavior_actions.h": [ "bhv_dust_smoke_loop", "bhv_init_room" ],
|
||||
"src/game/camera.h": [ "geo_", "update_camera", "init_camera", "stub_camera", "^reset_camera", "move_point_along_spline", "romhack_camera_init_settings", "romhack_camera_reset_settings" ],
|
||||
"src/game/behavior_actions.h": [ "bhv_dust_smoke_loop", "bhv_init_room", "geo_" ],
|
||||
"src/pc/lua/utils/smlua_audio_utils.h": [ "smlua_audio_utils_override", "audio_custom_shutdown", "smlua_audio_custom_deinit", "audio_sample_destroy_pending_copies", "audio_custom_update_volume" ],
|
||||
"src/pc/lua/utils/smlua_level_utils.h": [ "smlua_level_util_reset" ],
|
||||
"src/pc/lua/utils/smlua_text_utils.h": [ "smlua_text_utils_init", "smlua_text_utils_shutdown", "smlua_text_utils_dialog_get_unmodified"],
|
||||
|
|
@ -825,7 +827,7 @@ def build_param(fid, param, i):
|
|||
lot = translate_type_to_lot(ptype)
|
||||
s = ' %s %s = (%s)smlua_to_cobject(L, %d, %s);' % (ptype, pid, ptype, i, lot)
|
||||
|
||||
if '???' in lot or "GRAPHNODE" in lot:
|
||||
if '???' in lot:
|
||||
s = '//' + s + ' <--- UNIMPLEMENTED'
|
||||
else:
|
||||
s = ' ' + s
|
||||
|
|
@ -949,7 +951,7 @@ def build_function(function, do_extern):
|
|||
sparam = build_param(fid, param, i)
|
||||
param_var, param_value = sparam.split('=')
|
||||
param_type = param_var.replace(pid, '').strip()
|
||||
s += ' %s = (%s) NULL;\n' % (param_var.strip(), param_type)
|
||||
s += ' %s = (%s) %s;\n' % (param_var.strip(), param_type, "NULL" if '*' in param_type else "0")
|
||||
s += ' if (top >= %d) {\n' % (i)
|
||||
s += ' %s = %s\n' % (pid, param_value.strip())
|
||||
s += ' if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %%u for function \'%%s\'", %d, "%s"); return 0; }\n' % (i, fid)
|
||||
|
|
@ -1340,7 +1342,7 @@ def doc_function(fname, function):
|
|||
s += '- None\n'
|
||||
|
||||
s += '\n### Returns\n'
|
||||
if rtype != None:
|
||||
if len(rvalues) > 0:
|
||||
for _, ptype, plink in rvalues:
|
||||
if plink:
|
||||
s += '- [%s](%s)\n' % (ptype, plink)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ SMLUA_CALL_EVENT_HOOKS_SET_HOOK_RESULT = """
|
|||
SMLUA_CALL_EVENT_HOOKS_CALLBACK = """
|
||||
// call the callback
|
||||
if (0 != smlua_call_hook(L, {n_inputs}, {n_outputs}, 0, hook->mod[i], hook->modFile[i])) {{
|
||||
LOG_LUA("Failed to call the callback for hook %s", sLuaHookedEventTypeName[{hook_type}]);
|
||||
LOG_LUA("Failed to call the callback for hook %s - '%s/%s'", sLuaHookedEventTypeName[{hook_type}], hook->mod[i]->relativePath, hook->modFile[i]->relativePath);
|
||||
continue;
|
||||
}}{set_hook_result}
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -306,6 +306,49 @@ IN_OUT_BOUNCE = function (x) return x < 0.5 and (1 - OUT_BOUNCE(1 - 2 * x)) / 2
|
|||
---@return number
|
||||
OUT_IN_BOUNCE = function (x) return x < 0.5 and 0.5 * OUT_BOUNCE(x * 2) or 0.5 + 0.5 * IN_BOUNCE(2 * x - 1) end
|
||||
|
||||
--- @alias EasingFunction
|
||||
--- | `IN_SINE`
|
||||
--- | `OUT_SINE`
|
||||
--- | `IN_OUT_SINE`
|
||||
--- | `OUT_IN_SINE`
|
||||
--- | `IN_QUAD`
|
||||
--- | `OUT_QUAD`
|
||||
--- | `IN_OUT_QUAD`
|
||||
--- | `OUT_IN_QUAD`
|
||||
--- | `IN_CUBIC`
|
||||
--- | `OUT_CUBIC`
|
||||
--- | `IN_OUT_CUBIC`
|
||||
--- | `OUT_IN_CUBIC`
|
||||
--- | `IN_QUART`
|
||||
--- | `OUT_QUART`
|
||||
--- | `IN_OUT_QUART`
|
||||
--- | `OUT_IN_QUART`
|
||||
--- | `IN_QUINT`
|
||||
--- | `OUT_QUINT`
|
||||
--- | `IN_OUT_QUINT`
|
||||
--- | `OUT_IN_QUINT`
|
||||
--- | `IN_EXPO`
|
||||
--- | `OUT_EXPO`
|
||||
--- | `IN_OUT_EXPO`
|
||||
--- | `OUT_IN_EXPO`
|
||||
--- | `IN_CIRC`
|
||||
--- | `OUT_CIRC`
|
||||
--- | `IN_OUT_CIRC`
|
||||
--- | `OUT_IN_CIRC`
|
||||
--- | `IN_BACK`
|
||||
--- | `OUT_BACK`
|
||||
--- | `IN_OUT_BACK`
|
||||
--- | `OUT_IN_BACK`
|
||||
--- | `IN_ELASTIC`
|
||||
--- | `OUT_ELASTIC`
|
||||
--- | `IN_OUT_ELASTIC`
|
||||
--- | `OUT_IN_ELASTIC`
|
||||
--- | `IN_BOUNCE`
|
||||
--- | `OUT_BOUNCE`
|
||||
--- | `IN_OUT_BOUNCE`
|
||||
--- | `OUT_IN_BOUNCE`
|
||||
--- | fun(x: number): number
|
||||
|
||||
--------------------
|
||||
-- math functions --
|
||||
--------------------
|
||||
|
|
@ -385,7 +428,7 @@ function math.round(x)
|
|||
return x > 0 and __math_floor(x + 0.5) or __math_ceil(x - 0.5)
|
||||
end
|
||||
|
||||
--- @param t function | number
|
||||
--- @param t EasingFunction | number
|
||||
--- @param a number
|
||||
--- @param b number
|
||||
--- @param x number
|
||||
|
|
|
|||
|
|
@ -308,6 +308,49 @@ IN_OUT_BOUNCE = function (x) return x < 0.5 and (1 - OUT_BOUNCE(1 - 2 * x)) / 2
|
|||
---@return number
|
||||
OUT_IN_BOUNCE = function (x) return x < 0.5 and 0.5 * OUT_BOUNCE(x * 2) or 0.5 + 0.5 * IN_BOUNCE(2 * x - 1) end
|
||||
|
||||
--- @alias EasingFunction
|
||||
--- | `IN_SINE`
|
||||
--- | `OUT_SINE`
|
||||
--- | `IN_OUT_SINE`
|
||||
--- | `OUT_IN_SINE`
|
||||
--- | `IN_QUAD`
|
||||
--- | `OUT_QUAD`
|
||||
--- | `IN_OUT_QUAD`
|
||||
--- | `OUT_IN_QUAD`
|
||||
--- | `IN_CUBIC`
|
||||
--- | `OUT_CUBIC`
|
||||
--- | `IN_OUT_CUBIC`
|
||||
--- | `OUT_IN_CUBIC`
|
||||
--- | `IN_QUART`
|
||||
--- | `OUT_QUART`
|
||||
--- | `IN_OUT_QUART`
|
||||
--- | `OUT_IN_QUART`
|
||||
--- | `IN_QUINT`
|
||||
--- | `OUT_QUINT`
|
||||
--- | `IN_OUT_QUINT`
|
||||
--- | `OUT_IN_QUINT`
|
||||
--- | `IN_EXPO`
|
||||
--- | `OUT_EXPO`
|
||||
--- | `IN_OUT_EXPO`
|
||||
--- | `OUT_IN_EXPO`
|
||||
--- | `IN_CIRC`
|
||||
--- | `OUT_CIRC`
|
||||
--- | `IN_OUT_CIRC`
|
||||
--- | `OUT_IN_CIRC`
|
||||
--- | `IN_BACK`
|
||||
--- | `OUT_BACK`
|
||||
--- | `IN_OUT_BACK`
|
||||
--- | `OUT_IN_BACK`
|
||||
--- | `IN_ELASTIC`
|
||||
--- | `OUT_ELASTIC`
|
||||
--- | `IN_OUT_ELASTIC`
|
||||
--- | `OUT_IN_ELASTIC`
|
||||
--- | `IN_BOUNCE`
|
||||
--- | `OUT_BOUNCE`
|
||||
--- | `IN_OUT_BOUNCE`
|
||||
--- | `OUT_IN_BOUNCE`
|
||||
--- | fun(x: number): number
|
||||
|
||||
--------------------
|
||||
-- math functions --
|
||||
--------------------
|
||||
|
|
@ -387,7 +430,7 @@ function math.round(x)
|
|||
return x > 0 and __math_floor(x + 0.5) or __math_ceil(x - 0.5)
|
||||
end
|
||||
|
||||
--- @param t function | number
|
||||
--- @param t EasingFunction | number
|
||||
--- @param a number
|
||||
--- @param b number
|
||||
--- @param x number
|
||||
|
|
@ -2717,6 +2760,42 @@ CONSOLE_MESSAGE_ERROR = 2 --- @type ConsoleMessageLevel
|
|||
--- | `CONSOLE_MESSAGE_WARNING`
|
||||
--- | `CONSOLE_MESSAGE_ERROR`
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_X_LEFT = 0.0
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_X_CENTER = 0.5
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_X_RIGHT = 1.0
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_Y_TOP = 0.0
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_Y_CENTER = 0.5
|
||||
|
||||
--- @type number
|
||||
ROTATION_PIVOT_Y_BOTTOM = 1.0
|
||||
|
||||
--- @type number
|
||||
TEXT_HALIGN_LEFT = 0.0
|
||||
|
||||
--- @type number
|
||||
TEXT_HALIGN_CENTER = 0.5
|
||||
|
||||
--- @type number
|
||||
TEXT_HALIGN_RIGHT = 1.0
|
||||
|
||||
--- @type number
|
||||
TEXT_VALIGN_TOP = 0.0
|
||||
|
||||
--- @type number
|
||||
TEXT_VALIGN_CENTER = 0.5
|
||||
|
||||
--- @type number
|
||||
TEXT_VALIGN_BOTTOM = 1.0
|
||||
|
||||
RESOLUTION_DJUI = 0 --- @type HudUtilsResolution
|
||||
RESOLUTION_N64 = 1 --- @type HudUtilsResolution
|
||||
RESOLUTION_COUNT = 2 --- @type HudUtilsResolution
|
||||
|
|
@ -2735,16 +2814,18 @@ FILTER_COUNT = 2 --- @type HudUtilsFilter
|
|||
--- | `FILTER_LINEAR`
|
||||
--- | `FILTER_COUNT`
|
||||
|
||||
FONT_NORMAL = 0 --- @type DjuiFontType
|
||||
FONT_MENU = 1 --- @type DjuiFontType
|
||||
FONT_HUD = 2 --- @type DjuiFontType
|
||||
FONT_ALIASED = 3 --- @type DjuiFontType
|
||||
FONT_CUSTOM_HUD = 4 --- @type DjuiFontType
|
||||
FONT_RECOLOR_HUD = 5 --- @type DjuiFontType
|
||||
FONT_SPECIAL = 6 --- @type DjuiFontType
|
||||
FONT_COUNT = 7 --- @type DjuiFontType
|
||||
FONT_LEGACY = -1 --- @type DjuiFontType
|
||||
FONT_NORMAL = 0 --- @type DjuiFontType
|
||||
FONT_MENU = 1 --- @type DjuiFontType
|
||||
FONT_HUD = 2 --- @type DjuiFontType
|
||||
FONT_ALIASED = 3 --- @type DjuiFontType
|
||||
FONT_CUSTOM_HUD = 4 --- @type DjuiFontType
|
||||
FONT_RECOLOR_HUD = 5 --- @type DjuiFontType
|
||||
FONT_SPECIAL = 6 --- @type DjuiFontType
|
||||
FONT_COUNT = 7 --- @type DjuiFontType
|
||||
|
||||
--- @alias DjuiFontType
|
||||
--- | `FONT_LEGACY`
|
||||
--- | `FONT_NORMAL`
|
||||
--- | `FONT_MENU`
|
||||
--- | `FONT_HUD`
|
||||
|
|
@ -3276,7 +3357,7 @@ PVP_ATTACK_KNOCKBACK_TIMER_DEFAULT = 10
|
|||
PVP_ATTACK_KNOCKBACK_TIMER_OVERRIDE = -5
|
||||
|
||||
--- @type integer
|
||||
PVP_ATTACK_OVERRIDE_VANILLA_INVINCIBILITY = 0x0000FFFF
|
||||
PVP_ATTACK_KNOCKBACK_ACTION_ARG = 0x10000
|
||||
|
||||
--- @type integer
|
||||
INT_STATUS_ATTACK_MASK = 0x000000FF
|
||||
|
|
@ -3635,7 +3716,7 @@ HUD_DISPLAY_DEFAULT = HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_CO
|
|||
--- | `HUD_DISPLAY_DEFAULT`
|
||||
|
||||
--- @type integer
|
||||
LE_MAX_LIGHTS = 512
|
||||
LE_MAX_LIGHTS = 1024
|
||||
|
||||
LE_MODE_AFFECT_ALL_SHADED_AND_COLORED = 0 --- @type LEMode
|
||||
LE_MODE_AFFECT_ALL_SHADED = 1 --- @type LEMode
|
||||
|
|
@ -8126,7 +8207,13 @@ HOOK_MARIO_OVERRIDE_FLOOR_CLASS = 56 --- @type LuaHookedEventType
|
|||
HOOK_ON_ADD_SURFACE = 57 --- @type LuaHookedEventType
|
||||
HOOK_ON_CLEAR_AREAS = 58 --- @type LuaHookedEventType
|
||||
HOOK_ON_PACKET_BYTESTRING_RECEIVE = 59 --- @type LuaHookedEventType
|
||||
HOOK_MAX = 60 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_WALL_COLLISION = 60 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_CEIL = 61 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_FLOOR = 62 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_WATER_LEVEL = 63 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_POISON_GAS_LEVEL = 64 --- @type LuaHookedEventType
|
||||
HOOK_ON_FIND_SURFACE_ON_RAY = 65 --- @type LuaHookedEventType
|
||||
HOOK_MAX = 66 --- @type LuaHookedEventType
|
||||
|
||||
--- @alias LuaHookedEventType
|
||||
--- | `HOOK_UPDATE`
|
||||
|
|
@ -8189,8 +8276,17 @@ HOOK_MAX = 60 --- @type LuaHookedEventType
|
|||
--- | `HOOK_ON_ADD_SURFACE`
|
||||
--- | `HOOK_ON_CLEAR_AREAS`
|
||||
--- | `HOOK_ON_PACKET_BYTESTRING_RECEIVE`
|
||||
--- | `HOOK_ON_FIND_WALL_COLLISION`
|
||||
--- | `HOOK_ON_FIND_CEIL`
|
||||
--- | `HOOK_ON_FIND_FLOOR`
|
||||
--- | `HOOK_ON_FIND_WATER_LEVEL`
|
||||
--- | `HOOK_ON_FIND_POISON_GAS_LEVEL`
|
||||
--- | `HOOK_ON_FIND_SURFACE_ON_RAY`
|
||||
--- | `HOOK_MAX`
|
||||
|
||||
--- @type integer
|
||||
MAX_HOOKED_BEHAVIORS = 1024
|
||||
|
||||
HUD_DISPLAY_LIVES = 0 --- @type HudDisplayValue
|
||||
HUD_DISPLAY_COINS = 1 --- @type HudDisplayValue
|
||||
HUD_DISPLAY_STARS = 2 --- @type HudDisplayValue
|
||||
|
|
@ -11170,7 +11266,7 @@ COOP_OBJ_FLAG_NON_SYNC = (1 << 2)
|
|||
COOP_OBJ_FLAG_INITIALIZED = (1 << 3)
|
||||
|
||||
--- @type string
|
||||
SM64COOPDX_VERSION = "v1.4.1"
|
||||
SM64COOPDX_VERSION = "v1.4.2"
|
||||
|
||||
--- @type string
|
||||
VERSION_TEXT = "v"
|
||||
|
|
|
|||
|
|
@ -3030,7 +3030,7 @@ end
|
|||
|
||||
--- @param name string
|
||||
--- @return BehaviorId
|
||||
--- gets a behavior ID from a behavior name
|
||||
--- Gets a behavior ID from a behavior name
|
||||
function get_id_from_behavior_name(name)
|
||||
-- ...
|
||||
end
|
||||
|
|
@ -3856,7 +3856,9 @@ function djui_hud_reset_color()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return HudUtilsRotation
|
||||
--- @return integer rotation
|
||||
--- @return number pivotX
|
||||
--- @return number pivotY
|
||||
--- Gets the current DJUI HUD rotation
|
||||
function djui_hud_get_rotation()
|
||||
-- ...
|
||||
|
|
@ -3881,6 +3883,29 @@ function djui_hud_set_rotation_interpolated(prevRotation, prevPivotX, prevPivotY
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return number textHAlign
|
||||
--- @return number textVAlign
|
||||
--- Gets the current DJUI HUD text alignment
|
||||
function djui_hud_get_text_alignment()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param textHAlign number
|
||||
--- @param textVAlign number
|
||||
--- Sets the current DJUI HUD text alignment
|
||||
function djui_hud_set_text_alignment(textHAlign, textVAlign)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param prevTextHAlign number
|
||||
--- @param prevTextVAlign number
|
||||
--- @param textHAlign number
|
||||
--- @param textVAlign number
|
||||
--- Sets the current DJUI HUD text alignment interpolated
|
||||
function djui_hud_set_text_alignment_interpolated(prevTextHAlign, prevTextVAlign, textHAlign, textVAlign)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
--- Gets the screen width in the current DJUI HUD resolution
|
||||
function djui_hud_get_screen_width()
|
||||
|
|
@ -5103,6 +5128,12 @@ function le_set_ambient_color(r, g, b)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param count integer
|
||||
--- Sets the max amount of lights that can affect a vertex
|
||||
function le_set_max_lights_per_vertex(count)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param pos Vec3f
|
||||
--- @param out Color
|
||||
--- @param lightIntensityScalar number
|
||||
|
|
@ -5234,6 +5265,12 @@ function le_set_light_use_surface_normals(id, useSurfaceNormals)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param bank integer
|
||||
--- Overrides the soundbank, set to -1 to reset
|
||||
function set_sound_bank_override(bank)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param m MarioState
|
||||
--- @return integer
|
||||
--- Checks if Mario's current animation has reached its final frame (i.e., the last valid frame in the animation). Useful for deciding when to transition out of an animation-driven action
|
||||
|
|
@ -10171,6 +10208,12 @@ function smlua_audio_utils_replace_sequence(sequenceId, bankId, defaultVolume, m
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
--- Allocates a new sequence ID
|
||||
function smlua_audio_utils_allocate_sequence()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param filename string
|
||||
--- @return ModAudio
|
||||
--- Loads an `audio` stream by `filename` (with extension)
|
||||
|
|
@ -11516,6 +11559,12 @@ function get_dialog_response()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
--- Gets the active time stop flags, used to freeze specific objects during cutscenes
|
||||
function get_time_stop_flags()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return string
|
||||
--- Gets the local discord ID if it isn't disabled, otherwise "0" is returned
|
||||
function get_local_discord_id()
|
||||
|
|
@ -11604,6 +11653,14 @@ function get_active_mod()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param mod Mod
|
||||
--- @param subDirectory? string
|
||||
--- @return table
|
||||
--- Gets all files a mod contains
|
||||
function get_mod_files(mod, subDirectory)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param title string
|
||||
--- Sets the window title to a custom title
|
||||
function set_window_title(title)
|
||||
|
|
@ -11622,35 +11679,42 @@ function get_os_name()
|
|||
end
|
||||
|
||||
--- @return GraphNodeRoot
|
||||
--- Gets the current GraphNodeRoot
|
||||
--- Gets the current root node being processed
|
||||
function geo_get_current_root()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeMasterList
|
||||
--- Gets the current GraphNodeMasterList
|
||||
--- Gets the current master list node being processed
|
||||
function geo_get_current_master_list()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodePerspective
|
||||
--- Gets the current GraphNodePerspective
|
||||
--- Gets the current perspective node being processed
|
||||
function geo_get_current_perspective()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeCamera
|
||||
--- Gets the current GraphNodeCamera
|
||||
--- Gets the current camera node being processed
|
||||
function geo_get_current_camera()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeHeldObject
|
||||
--- Gets the current GraphNodeHeldObject
|
||||
--- Gets the current held object node being processed
|
||||
function geo_get_current_held_object()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param node GraphNode
|
||||
--- @param obj GraphNodeObject
|
||||
--- Skips graph node interpolation for a frame
|
||||
function geo_skip_interpolation(node, obj)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param tex Pointer_Texture
|
||||
--- @return table
|
||||
--- Converts a texture's pixels to a Lua table. Returns nil if failed. Otherwise, returns a 1-indexed table of RGBA pixels
|
||||
|
|
@ -12062,6 +12126,18 @@ function set_whirlpools(x, y, z, strength, area, index)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param o Object
|
||||
--- Skips object interpolation for a frame
|
||||
function obj_skip_interpolation(o)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param o Object
|
||||
--- Skips animation interpolation for a frame
|
||||
function obj_anim_skip_interpolation(o)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- Resets every modified dialog back to vanilla
|
||||
function smlua_text_utils_reset_all()
|
||||
-- ...
|
||||
|
|
|
|||
|
|
@ -97,11 +97,6 @@ gServerSettings = {}
|
|||
--- Struct containing the settings for Nametags
|
||||
gNametagsSettings = {}
|
||||
|
||||
--- @type Camera
|
||||
--- Struct contaning camera fields
|
||||
--- - This camera is the same as `gMarioStates[i].area.camera` or `gCurrentArea.camera`
|
||||
gCamera = {}
|
||||
|
||||
-----------
|
||||
-- hooks --
|
||||
-----------
|
||||
|
|
@ -132,7 +127,7 @@ function update_chat_command_description(command, description)
|
|||
end
|
||||
|
||||
--- @param hookEventType LuaHookedEventType When a function should run
|
||||
--- @param func fun(...: any): any The function to run
|
||||
--- @param func fun(...: any): any?, any? The function to run
|
||||
--- Different hooks can pass in different parameters and have different return values. Be sure to read the hooks guide for more information.
|
||||
function hook_event(hookEventType, func)
|
||||
-- ...
|
||||
|
|
|
|||
|
|
@ -955,14 +955,6 @@
|
|||
--- @field public translation Vec3s
|
||||
--- @field public rotation Vec3s
|
||||
|
||||
--- @class HudUtilsRotation
|
||||
--- @field public rotation number
|
||||
--- @field public rotationDiff number
|
||||
--- @field public prevPivotX number
|
||||
--- @field public prevPivotY number
|
||||
--- @field public pivotX number
|
||||
--- @field public pivotY number
|
||||
|
||||
--- @class InstantWarp
|
||||
--- @field public id integer
|
||||
--- @field public area integer
|
||||
|
|
|
|||
|
|
@ -597,5 +597,11 @@ enum BehaviorId get_id_from_behavior_name(const char* name) {
|
|||
return i;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < gHookedBehaviorsCount; i++) {
|
||||
struct LuaHookedBehavior *hooked = &gHookedBehaviors[i];
|
||||
if (hooked->bhvName && !strcmp(name, hooked->bhvName)) {
|
||||
return hooked->overrideId;
|
||||
}
|
||||
}
|
||||
return id_bhv_max_count;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2449,6 +2449,48 @@ static void ParseBehaviorScriptSymbol(GfxData *aGfxData, DataNode<BehaviorScript
|
|||
PrintDataError(" ERROR: Unknown behavior symbol: %s", _Symbol.begin());
|
||||
}
|
||||
|
||||
static bool DynOS_Bhv_CheckCommands(const BehaviorScript *aBhv, const Array<BehaviorScript> &aCommands) {
|
||||
u8 bhvCommand = (*aBhv >> 24) & 0xFF;
|
||||
for (const auto &commandToCheck : aCommands) {
|
||||
if (bhvCommand == ((commandToCheck >> 24) & 0xFF)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool DynOS_Bhv_Validate(GfxData *aGfxData, const DataNode<BehaviorScript> *aNode) {
|
||||
|
||||
// 1st command must be BEGIN
|
||||
if (!DynOS_Bhv_CheckCommands(aNode->mData + 0, { BEGIN(0) })) {
|
||||
PrintDataError(" ERROR: Validation failed for behavior %s: First command of the script must be BEGIN.", aNode->mName.begin());
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2nd command must be ID
|
||||
if (!DynOS_Bhv_CheckCommands(aNode->mData + 1, { ID(0) })) {
|
||||
PrintDataError(" ERROR: Validation failed for behavior %s: Second command of the script must be ID.", aNode->mName.begin());
|
||||
return false;
|
||||
}
|
||||
|
||||
// Last command must be a terminating command
|
||||
if (!DynOS_Bhv_CheckCommands(aNode->mData + aNode->mSize - 1, {
|
||||
CALL(0),
|
||||
RETURN(),
|
||||
GOTO(0),
|
||||
END_LOOP(),
|
||||
BREAK(),
|
||||
DEACTIVATE(),
|
||||
CALL_EXT(0),
|
||||
GOTO_EXT(0),
|
||||
})) {
|
||||
PrintDataError(" ERROR: Validation failed for behavior %s: Last command of the script must be one of:\n CALL, RETURN, GOTO, END_LOOP, BREAK, DEACTIVATE", aNode->mName.begin());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
DataNode<BehaviorScript> *DynOS_Bhv_Parse(GfxData *aGfxData, DataNode<BehaviorScript> *aNode, bool aDisplayPercent) {
|
||||
if (aNode->mData) return aNode;
|
||||
|
||||
|
|
@ -2460,9 +2502,13 @@ DataNode<BehaviorScript> *DynOS_Bhv_Parse(GfxData *aGfxData, DataNode<BehaviorSc
|
|||
ParseBehaviorScriptSymbol(aGfxData, aNode, _Head, _TokenIndex, _SwitchNodes);
|
||||
if (aDisplayPercent && aGfxData->mErrorCount == 0) { PrintNoNewLine("%3d%%\b\b\b\b", (s32) (_TokenIndex * 100) / aNode->mTokens.Count()); }
|
||||
}
|
||||
if (aDisplayPercent && aGfxData->mErrorCount == 0) { Print("100%%"); }
|
||||
aNode->mSize = (u32)(_Head - aNode->mData);
|
||||
aNode->mLoadIndex = aGfxData->mLoadIndex++;
|
||||
|
||||
// Validate behavior script
|
||||
DynOS_Bhv_Validate(aGfxData, aNode);
|
||||
|
||||
if (aDisplayPercent && aGfxData->mErrorCount == 0) { Print("100%%"); }
|
||||
return aNode;
|
||||
}
|
||||
|
||||
|
|
@ -2592,6 +2638,12 @@ static DataNode<BehaviorScript> *DynOS_Bhv_Load(BinFile *aFile, GfxData *aGfxDat
|
|||
}
|
||||
}
|
||||
|
||||
// Validate it
|
||||
if (!DynOS_Bhv_Validate(aGfxData, _Node)) {
|
||||
Delete(_Node);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Add it
|
||||
if (aGfxData != NULL) {
|
||||
aGfxData->mBehaviorScripts.Add(_Node);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
extern "C" {
|
||||
#include "include/surface_terrains.h"
|
||||
#include "include/level_misc_macros.h"
|
||||
#include "include/special_presets.h"
|
||||
#include "include/special_preset_names.h"
|
||||
#include "src/engine/surface_load.h"
|
||||
}
|
||||
|
||||
// Free data pointers, but keep nodes and tokens intact
|
||||
|
|
@ -34,12 +36,32 @@ struct CollisionValidationData {
|
|||
u32 vtxCount;
|
||||
u32 triAlloc;
|
||||
u32 triCount;
|
||||
s16 surfaceType;
|
||||
u32 specialAlloc;
|
||||
u32 specialCount;
|
||||
u32 waterBoxAlloc;
|
||||
u32 waterBoxCount;
|
||||
};
|
||||
|
||||
static u8 GetSpecialObjectType(u8 preset) {
|
||||
for (s32 i = 0; i < ARRAY_COUNT(SpecialObjectPresets); ++i) {
|
||||
if (SpecialObjectPresets[i].preset_id == preset) {
|
||||
return SpecialObjectPresets[i].type;
|
||||
}
|
||||
}
|
||||
return SPTYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
static const char *GetCorrectSpecialObjectCommand(u8 presetType) {
|
||||
switch (presetType) {
|
||||
case SPTYPE_NO_YROT_OR_PARAMS: return "SPECIAL_OBJECT";
|
||||
case SPTYPE_YROT_NO_PARAMS: return "SPECIAL_OBJECT_WITH_YAW";
|
||||
case SPTYPE_PARAMS_AND_YROT: return "SPECIAL_OBJECT_WITH_YAW_AND_PARAM";
|
||||
case SPTYPE_DEF_PARAM_AND_YROT: return "SPECIAL_OBJECT_WITH_YAW";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
static void ValidateColSectionChange(GfxData* aGfxData, struct CollisionValidationData& aColValData, u8 section) {
|
||||
if (aColValData.section == COL_SECTION_END) {
|
||||
PrintDataError("Found new col section after COL_END");
|
||||
|
|
@ -67,51 +89,70 @@ static void ValidateColInit(GfxData* aGfxData, struct CollisionValidationData& a
|
|||
ValidateColSectionChange(aGfxData, aColValData, COL_SECTION_VTX);
|
||||
}
|
||||
|
||||
static void ValidateColVertexInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0) {
|
||||
static void ValidateColVertexInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 vertexCount) {
|
||||
if (strcmp(aColValData.lastSymbol, "COL_INIT") != 0) {
|
||||
PrintDataError("COL_VERTEX_INIT found outside of vertex section");
|
||||
}
|
||||
if (arg0 < 0) {
|
||||
PrintDataError("COL_VERTEX_INIT with a negative count: %d", arg0);
|
||||
if (vertexCount < 0) {
|
||||
PrintDataError("COL_VERTEX_INIT with a negative count: %d", vertexCount);
|
||||
}
|
||||
aColValData.vtxAlloc = arg0;
|
||||
aColValData.vtxAlloc = vertexCount;
|
||||
aColValData.vtxCount = 0;
|
||||
}
|
||||
|
||||
static void ValidateColVertex(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2) {
|
||||
static void ValidateColVertex(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 x, s16 y, s16 z) {
|
||||
if (aColValData.section != COL_SECTION_VTX) {
|
||||
PrintDataError("COL_VERTEX found outside of vertex section");
|
||||
}
|
||||
aColValData.vtxCount++;
|
||||
}
|
||||
|
||||
static void ValidateColTriInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1) {
|
||||
if (arg1 < 0) {
|
||||
PrintDataError("COL_TRI_INIT with a negative count: %d", arg1);
|
||||
static void ValidateColTriInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 surfaceType, s16 triangleCount) {
|
||||
if (triangleCount < 0) {
|
||||
PrintDataError("COL_TRI_INIT with a negative count: %d", triangleCount);
|
||||
}
|
||||
ValidateColSectionChange(aGfxData, aColValData, COL_SECTION_TRI);
|
||||
aColValData.triAlloc = arg1;
|
||||
aColValData.triAlloc = triangleCount;
|
||||
aColValData.triCount = 0;
|
||||
aColValData.surfaceType = surfaceType;
|
||||
}
|
||||
|
||||
static void ValidateColTri(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2) {
|
||||
static void ValidateColTri(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 vertex0, s16 vertex1, s16 vertex2) {
|
||||
if (aColValData.section != COL_SECTION_TRI) {
|
||||
PrintDataError("COL_TRI found outside of triangle section");
|
||||
}
|
||||
if (arg0 < 0 || arg0 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for first param: %d", arg0);
|
||||
if (surface_has_force(aColValData.surfaceType)) {
|
||||
PrintDataError("COL_TRI cannot be used by surface types with a force parameter: %d (use COL_TRI_SPECIAL instead)", aColValData.surfaceType);
|
||||
}
|
||||
if (arg1 < 0 || arg1 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for second param: %d", arg1);
|
||||
if (vertex0 < 0 || vertex0 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for first param: %d", vertex0);
|
||||
}
|
||||
if (arg2 < 0 || arg2 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for third param: %d", arg2);
|
||||
if (vertex1 < 0 || vertex1 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for second param: %d", vertex1);
|
||||
}
|
||||
if (vertex2 < 0 || vertex2 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI used vertex outside of known range for third param: %d", vertex2);
|
||||
}
|
||||
aColValData.triCount++;
|
||||
}
|
||||
|
||||
static void ValidateColTriSpecial(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
|
||||
ValidateColTri(aGfxData, aColValData, arg0, arg1, arg2);
|
||||
static void ValidateColTriSpecial(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 vertex0, s16 vertex1, s16 vertex2, s16 force) {
|
||||
if (aColValData.section != COL_SECTION_TRI) {
|
||||
PrintDataError("COL_TRI_SPECIAL found outside of triangle section");
|
||||
}
|
||||
if (!surface_has_force(aColValData.surfaceType)) {
|
||||
PrintDataError("COL_TRI_SPECIAL cannot be used by surface types with no force parameter: %d (use COL_TRI instead)", aColValData.surfaceType);
|
||||
}
|
||||
if (vertex0 < 0 || vertex0 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI_SPECIAL used vertex outside of known range for first param: %d", vertex0);
|
||||
}
|
||||
if (vertex1 < 0 || vertex1 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI_SPECIAL used vertex outside of known range for second param: %d", vertex1);
|
||||
}
|
||||
if (vertex2 < 0 || vertex2 > aColValData.vtxCount) {
|
||||
PrintDataError("COL_TRI_SPECIAL used vertex outside of known range for third param: %d", vertex2);
|
||||
}
|
||||
aColValData.triCount++;
|
||||
}
|
||||
|
||||
static void ValidateColStop(GfxData* aGfxData, struct CollisionValidationData& aColValData) {
|
||||
|
|
@ -122,49 +163,70 @@ static void ValidateColEnd(GfxData* aGfxData, struct CollisionValidationData& aC
|
|||
ValidateColSectionChange(aGfxData, aColValData, COL_SECTION_END);
|
||||
}
|
||||
|
||||
static void ValidateColSpecialInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0) {
|
||||
if (arg0 < 0) {
|
||||
PrintDataError("COL_SPECIAL_INIT with a negative count: %d", arg0);
|
||||
static void ValidateColSpecialInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 specialCount) {
|
||||
if (specialCount < 0) {
|
||||
PrintDataError("COL_SPECIAL_INIT with a negative count: %d", specialCount);
|
||||
}
|
||||
ValidateColSectionChange(aGfxData, aColValData, COL_SECTION_SPECIAL);
|
||||
aColValData.specialAlloc = arg0;
|
||||
aColValData.specialAlloc = specialCount;
|
||||
aColValData.specialCount = 0;
|
||||
}
|
||||
|
||||
static void ValidateColWaterBoxInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0) {
|
||||
if (arg0 < 0) {
|
||||
PrintDataError("COL_WATER_BOX_INIT with a negative count: %d", arg0);
|
||||
static void ValidateColWaterBoxInit(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 waterBoxCount) {
|
||||
if (waterBoxCount < 0) {
|
||||
PrintDataError("COL_WATER_BOX_INIT with a negative count: %d", waterBoxCount);
|
||||
}
|
||||
ValidateColSectionChange(aGfxData, aColValData, COL_SECTION_WATER_BOX);
|
||||
aColValData.waterBoxAlloc = arg0;
|
||||
aColValData.waterBoxAlloc = waterBoxCount;
|
||||
aColValData.waterBoxCount = 0;
|
||||
}
|
||||
|
||||
static void ValidateColWaterBox(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) {
|
||||
static void ValidateColWaterBox(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 id, s16 x1, s16 z1, s16 x2, s16 z2, s16 y) {
|
||||
if (aColValData.section != COL_SECTION_WATER_BOX) {
|
||||
PrintDataError("COL_WATER_BOX found outside of water box section");
|
||||
}
|
||||
aColValData.waterBoxCount++;
|
||||
}
|
||||
|
||||
static void ValidateColSpecialObject(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
|
||||
static void ValidateColSpecialObject(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 preset, s16 posX, s16 posY, s16 posZ) {
|
||||
if (aColValData.section != COL_SECTION_SPECIAL) {
|
||||
PrintDataError("SPECIAL_OBJECT found outside of special section");
|
||||
}
|
||||
aColValData.specialCount++;
|
||||
}
|
||||
|
||||
static void ValidateColSpecialObjectWithYaw(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
|
||||
if (aColValData.section != COL_SECTION_SPECIAL) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW found outside of special section");
|
||||
u8 presetType = GetSpecialObjectType(preset);
|
||||
if (presetType == SPTYPE_UNKNOWN) {
|
||||
PrintDataError("SPECIAL_OBJECT has invalid preset: %d", preset);
|
||||
}
|
||||
if (presetType != SPTYPE_NO_YROT_OR_PARAMS) {
|
||||
PrintDataError("SPECIAL_OBJECT cannot be used with preset: %d (use %s instead)", preset, GetCorrectSpecialObjectCommand(presetType));
|
||||
}
|
||||
aColValData.specialCount++;
|
||||
}
|
||||
|
||||
static void ValidateColSpecialObjectWithYawAndParam(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) {
|
||||
static void ValidateColSpecialObjectWithYaw(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 preset, s16 posX, s16 posY, s16 posZ, s16 yaw) {
|
||||
if (aColValData.section != COL_SECTION_SPECIAL) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW found outside of special section");
|
||||
}
|
||||
u8 presetType = GetSpecialObjectType(preset);
|
||||
if (presetType == SPTYPE_UNKNOWN) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW has invalid preset: %d", preset);
|
||||
}
|
||||
if (presetType != SPTYPE_YROT_NO_PARAMS && presetType != SPTYPE_DEF_PARAM_AND_YROT) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW cannot be used with preset: %d (use %s instead)", preset, GetCorrectSpecialObjectCommand(presetType));
|
||||
}
|
||||
aColValData.specialCount++;
|
||||
}
|
||||
|
||||
static void ValidateColSpecialObjectWithYawAndParam(GfxData* aGfxData, struct CollisionValidationData& aColValData, s16 preset, s16 posX, s16 posY, s16 posZ, s16 yaw, s16 param) {
|
||||
if (aColValData.section != COL_SECTION_SPECIAL) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW_AND_PARAM found outside of special section");
|
||||
}
|
||||
u8 presetType = GetSpecialObjectType(preset);
|
||||
if (presetType == SPTYPE_UNKNOWN) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW_AND_PARAM has invalid preset: %d", preset);
|
||||
}
|
||||
if (presetType != SPTYPE_PARAMS_AND_YROT) {
|
||||
PrintDataError("SPECIAL_OBJECT_WITH_YAW_AND_PARAM cannot be used with preset: %d (use %s instead)", preset, GetCorrectSpecialObjectCommand(presetType));
|
||||
}
|
||||
aColValData.specialCount++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ extern "C" {
|
|||
#include "behavior_data.h"
|
||||
#include "pc/lua/smlua_hooks.h"
|
||||
|
||||
s8 geo_get_processing_mario_index(void);
|
||||
s8 geo_get_processing_mario_index(struct Object *obj);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -77,7 +77,7 @@ void DynOS_Anim_Swap(void *aPtr) {
|
|||
|
||||
// Animation index
|
||||
s32 _AnimIndex = -1;
|
||||
s8 index = geo_get_processing_mario_index();
|
||||
s8 index = geo_get_processing_mario_index(_Object);
|
||||
if (index != -1) {
|
||||
_AnimIndex = RetrieveCurrentMarioAnimationIndex(index);
|
||||
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ PackData* DynOS_Pack_Add(const SysPath& aPath) {
|
|||
const char* displayName = aPath.c_str();
|
||||
const char* ctoken = displayName;
|
||||
while (*ctoken != '\0') {
|
||||
if (*ctoken == '/' || *ctoken == '\\') {
|
||||
if (*ctoken == *PATH_SEPARATOR || *ctoken == *PATH_SEPARATOR_ALT) {
|
||||
if (*(ctoken + 1) != '\0') {
|
||||
displayName = (ctoken + 1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1149,6 +1149,18 @@
|
|||
<br />
|
||||
|
||||
## [djui_hud_utils.h](#djui_hud_utils.h)
|
||||
- ROTATION_PIVOT_X_LEFT
|
||||
- ROTATION_PIVOT_X_CENTER
|
||||
- ROTATION_PIVOT_X_RIGHT
|
||||
- ROTATION_PIVOT_Y_TOP
|
||||
- ROTATION_PIVOT_Y_CENTER
|
||||
- ROTATION_PIVOT_Y_BOTTOM
|
||||
- TEXT_HALIGN_LEFT
|
||||
- TEXT_HALIGN_CENTER
|
||||
- TEXT_HALIGN_RIGHT
|
||||
- TEXT_VALIGN_TOP
|
||||
- TEXT_VALIGN_CENTER
|
||||
- TEXT_VALIGN_BOTTOM
|
||||
|
||||
### [enum HudUtilsResolution](#HudUtilsResolution)
|
||||
| Identifier | Value |
|
||||
|
|
@ -1167,6 +1179,7 @@
|
|||
### [enum DjuiFontType](#DjuiFontType)
|
||||
| Identifier | Value |
|
||||
| :--------- | :---- |
|
||||
| FONT_LEGACY | -1 |
|
||||
| FONT_NORMAL | 0 |
|
||||
| FONT_MENU | 1 |
|
||||
| FONT_HUD | 2 |
|
||||
|
|
@ -1459,7 +1472,7 @@
|
|||
- ATTACK_FROM_BELOW
|
||||
- PVP_ATTACK_KNOCKBACK_TIMER_DEFAULT
|
||||
- PVP_ATTACK_KNOCKBACK_TIMER_OVERRIDE
|
||||
- PVP_ATTACK_OVERRIDE_VANILLA_INVINCIBILITY
|
||||
- PVP_ATTACK_KNOCKBACK_ACTION_ARG
|
||||
- INT_STATUS_ATTACK_MASK
|
||||
- INT_STATUS_HOOT_GRABBED_BY_MARIO
|
||||
- INT_STATUS_MARIO_UNK1
|
||||
|
|
@ -3524,7 +3537,14 @@
|
|||
| HOOK_ON_ADD_SURFACE | 57 |
|
||||
| HOOK_ON_CLEAR_AREAS | 58 |
|
||||
| HOOK_ON_PACKET_BYTESTRING_RECEIVE | 59 |
|
||||
| HOOK_MAX | 60 |
|
||||
| HOOK_ON_FIND_WALL_COLLISION | 60 |
|
||||
| HOOK_ON_FIND_CEIL | 61 |
|
||||
| HOOK_ON_FIND_FLOOR | 62 |
|
||||
| HOOK_ON_FIND_WATER_LEVEL | 63 |
|
||||
| HOOK_ON_FIND_POISON_GAS_LEVEL | 64 |
|
||||
| HOOK_ON_FIND_SURFACE_ON_RAY | 65 |
|
||||
| HOOK_MAX | 66 |
|
||||
- MAX_HOOKED_BEHAVIORS
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ Gets a behavior name from a behavior ID (bhvMyGreatMODCustom004)
|
|||
## [get_id_from_behavior_name](#get_id_from_behavior_name)
|
||||
|
||||
### Description
|
||||
gets a behavior ID from a behavior name
|
||||
Gets a behavior ID from a behavior name
|
||||
|
||||
### Lua Example
|
||||
`local enumValue = get_id_from_behavior_name(name)`
|
||||
|
|
@ -1312,7 +1312,8 @@ Calculates and returns the pitch and yaw angles from one 3D position (`from`) to
|
|||
| to | [Vec3f](structs.md#Vec3f) |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `integer`
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`void calculate_angles(Vec3f from, Vec3f to, RET s16 *pitch, RET s16 *yaw);`
|
||||
|
|
@ -1585,7 +1586,7 @@ Applies a roll-based shake effect to the camera. Simulates rotational disturbanc
|
|||
| roll | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`void shake_camera_roll(INOUT s16 *roll);`
|
||||
|
|
@ -2825,7 +2826,7 @@ Gets the current DJUI HUD font
|
|||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`u8 djui_hud_get_font(void);`
|
||||
`s8 djui_hud_get_font(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
@ -2928,16 +2929,18 @@ Resets the current DJUI HUD color
|
|||
Gets the current DJUI HUD rotation
|
||||
|
||||
### Lua Example
|
||||
`local hudUtilsRotationValue = djui_hud_get_rotation()`
|
||||
`local rotation, pivotX, pivotY = djui_hud_get_rotation()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- [HudUtilsRotation](structs.md#HudUtilsRotation)
|
||||
- `integer`
|
||||
- `number`
|
||||
- `number`
|
||||
|
||||
### C Prototype
|
||||
`struct HudUtilsRotation* djui_hud_get_rotation(void);`
|
||||
`void djui_hud_get_rotation(RET s16 *rotation, RET f32 *pivotX, RET f32 *pivotY);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
@ -2990,7 +2993,79 @@ Sets the current DJUI HUD rotation interpolated
|
|||
- None
|
||||
|
||||
### C Prototype
|
||||
`void djui_hud_set_rotation_interpolated(s32 prevRotation, f32 prevPivotX, f32 prevPivotY, s32 rotation, f32 pivotX, f32 pivotY);`
|
||||
`void djui_hud_set_rotation_interpolated(s16 prevRotation, f32 prevPivotX, f32 prevPivotY, s16 rotation, f32 pivotX, f32 pivotY);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [djui_hud_get_text_alignment](#djui_hud_get_text_alignment)
|
||||
|
||||
### Description
|
||||
Gets the current DJUI HUD text alignment
|
||||
|
||||
### Lua Example
|
||||
`local textHAlign, textVAlign = djui_hud_get_text_alignment()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- `number`
|
||||
- `number`
|
||||
|
||||
### C Prototype
|
||||
`void djui_hud_get_text_alignment(RET f32 *textHAlign, RET f32 *textVAlign);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [djui_hud_set_text_alignment](#djui_hud_set_text_alignment)
|
||||
|
||||
### Description
|
||||
Sets the current DJUI HUD text alignment
|
||||
|
||||
### Lua Example
|
||||
`djui_hud_set_text_alignment(textHAlign, textVAlign)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| textHAlign | `number` |
|
||||
| textVAlign | `number` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void djui_hud_set_text_alignment(f32 textHAlign, f32 textVAlign);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [djui_hud_set_text_alignment_interpolated](#djui_hud_set_text_alignment_interpolated)
|
||||
|
||||
### Description
|
||||
Sets the current DJUI HUD text alignment interpolated
|
||||
|
||||
### Lua Example
|
||||
`djui_hud_set_text_alignment_interpolated(prevTextHAlign, prevTextVAlign, textHAlign, textVAlign)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| prevTextHAlign | `number` |
|
||||
| prevTextVAlign | `number` |
|
||||
| textHAlign | `number` |
|
||||
| textVAlign | `number` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void djui_hud_set_text_alignment_interpolated(f32 prevTextHAlign, f32 prevTextVAlign, f32 textHAlign, f32 textVAlign);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
|
|
|
|||
|
|
@ -147,6 +147,29 @@ Sets the lighting engine ambient color
|
|||
|
||||
<br />
|
||||
|
||||
## [le_set_max_lights_per_vertex](#le_set_max_lights_per_vertex)
|
||||
|
||||
### Description
|
||||
Sets the max amount of lights that can affect a vertex
|
||||
|
||||
### Lua Example
|
||||
`le_set_max_lights_per_vertex(count)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| count | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void le_set_max_lights_per_vertex(u8 count);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [le_calculate_lighting_color](#le_calculate_lighting_color)
|
||||
|
||||
### Description
|
||||
|
|
@ -560,6 +583,35 @@ Sets whether a lighting engine point light will use a surface's normals to deter
|
|||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from load.h
|
||||
|
||||
<br />
|
||||
|
||||
|
||||
## [set_sound_bank_override](#set_sound_bank_override)
|
||||
|
||||
### Description
|
||||
Overrides the soundbank, set to -1 to reset
|
||||
|
||||
### Lua Example
|
||||
`set_sound_bank_override(bank)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| bank | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void set_sound_bank_override(s32 bank);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from mario.h
|
||||
|
||||
|
|
@ -5082,7 +5134,9 @@ Calculates the distance between two points in 3D space (`from` and `to`), as wel
|
|||
| to | [Vec3f](structs.md#Vec3f) |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `number`
|
||||
- `integer`
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`void vec3f_get_dist_and_angle(Vec3f from, Vec3f to, RET f32 *dist, RET s16 *pitch, RET s16 *yaw);`
|
||||
|
|
|
|||
|
|
@ -2945,7 +2945,7 @@ Determines an object's forward speed multiplier.
|
|||
| floor_nY | `number` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `number`
|
||||
|
||||
### C Prototype
|
||||
`void calc_obj_friction(RET f32 *objFriction, f32 floor_nY);`
|
||||
|
|
@ -4419,7 +4419,7 @@ Begin by increasing the current object's scale by `scaleVel`, and slowly decreas
|
|||
| blinkLength | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`void obj_update_blinking(INOUT s32 *blinkTimer, s16 baseCycleLength, s16 cycleLengthRange, s16 blinkLength);`
|
||||
|
|
@ -4743,7 +4743,8 @@ Treats far home as Mario. Returns the distance and angle to the nearest player
|
|||
| threshold | `number` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `integer`
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`void treat_far_home_as_mario(f32 threshold, RET s32* distanceToPlayer, RET s32* angleToPlayer);`
|
||||
|
|
|
|||
|
|
@ -1963,7 +1963,7 @@ Marks an object to be unloaded at the end of the frame
|
|||
| dragStrength | `number` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
- `number`
|
||||
|
||||
### C Prototype
|
||||
`void apply_drag_to_value(INOUT f32 *value, f32 dragStrength);`
|
||||
|
|
@ -5616,6 +5616,27 @@ Replaces the sequence corresponding to `sequenceId` with one called `m64Name`.m6
|
|||
|
||||
<br />
|
||||
|
||||
## [smlua_audio_utils_allocate_sequence](#smlua_audio_utils_allocate_sequence)
|
||||
|
||||
### Description
|
||||
Allocates a new sequence ID
|
||||
|
||||
### Lua Example
|
||||
`local integerValue = smlua_audio_utils_allocate_sequence()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`u8 smlua_audio_utils_allocate_sequence(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [audio_stream_load](#audio_stream_load)
|
||||
|
||||
### Description
|
||||
|
|
|
|||
|
|
@ -1775,6 +1775,27 @@ Gets the choice selected inside of a dialog box (0-1)
|
|||
|
||||
<br />
|
||||
|
||||
## [get_time_stop_flags](#get_time_stop_flags)
|
||||
|
||||
### Description
|
||||
Gets the active time stop flags, used to freeze specific objects during cutscenes
|
||||
|
||||
### Lua Example
|
||||
`local integerValue = get_time_stop_flags()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`u32 get_time_stop_flags(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [get_local_discord_id](#get_local_discord_id)
|
||||
|
||||
### Description
|
||||
|
|
@ -2086,6 +2107,30 @@ Gets the mod currently being processed
|
|||
|
||||
<br />
|
||||
|
||||
## [get_mod_files](#get_mod_files)
|
||||
|
||||
### Description
|
||||
Gets all files a mod contains
|
||||
|
||||
### Lua Example
|
||||
`local tableValue = get_mod_files(mod, subDirectory)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| mod | [Mod](structs.md#Mod) |
|
||||
| subDirectory | `string` |
|
||||
|
||||
### Returns
|
||||
- `table`
|
||||
|
||||
### C Prototype
|
||||
`LuaTable get_mod_files(struct Mod* mod, OPTIONAL const char* subDirectory);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [set_window_title](#set_window_title)
|
||||
|
||||
### Description
|
||||
|
|
@ -2154,7 +2199,7 @@ Gets the name of the operating system the game is running on
|
|||
## [geo_get_current_root](#geo_get_current_root)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeRoot
|
||||
Gets the current root node being processed
|
||||
|
||||
### Lua Example
|
||||
`local graphNodeRootValue = geo_get_current_root()`
|
||||
|
|
@ -2175,7 +2220,7 @@ Gets the current GraphNodeRoot
|
|||
## [geo_get_current_master_list](#geo_get_current_master_list)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeMasterList
|
||||
Gets the current master list node being processed
|
||||
|
||||
### Lua Example
|
||||
`local graphNodeMasterListValue = geo_get_current_master_list()`
|
||||
|
|
@ -2196,7 +2241,7 @@ Gets the current GraphNodeMasterList
|
|||
## [geo_get_current_perspective](#geo_get_current_perspective)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodePerspective
|
||||
Gets the current perspective node being processed
|
||||
|
||||
### Lua Example
|
||||
`local graphNodePerspectiveValue = geo_get_current_perspective()`
|
||||
|
|
@ -2217,7 +2262,7 @@ Gets the current GraphNodePerspective
|
|||
## [geo_get_current_camera](#geo_get_current_camera)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeCamera
|
||||
Gets the current camera node being processed
|
||||
|
||||
### Lua Example
|
||||
`local graphNodeCameraValue = geo_get_current_camera()`
|
||||
|
|
@ -2238,7 +2283,7 @@ Gets the current GraphNodeCamera
|
|||
## [geo_get_current_held_object](#geo_get_current_held_object)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeHeldObject
|
||||
Gets the current held object node being processed
|
||||
|
||||
### Lua Example
|
||||
`local graphNodeHeldObjectValue = geo_get_current_held_object()`
|
||||
|
|
@ -2256,6 +2301,30 @@ Gets the current GraphNodeHeldObject
|
|||
|
||||
<br />
|
||||
|
||||
## [geo_skip_interpolation](#geo_skip_interpolation)
|
||||
|
||||
### Description
|
||||
Skips graph node interpolation for a frame
|
||||
|
||||
### Lua Example
|
||||
`geo_skip_interpolation(node, obj)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| node | [GraphNode](structs.md#GraphNode) |
|
||||
| obj | [GraphNodeObject](structs.md#GraphNodeObject) |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void geo_skip_interpolation(struct GraphNode *node, struct GraphNodeObject *obj);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [texture_to_lua_table](#texture_to_lua_table)
|
||||
|
||||
### Description
|
||||
|
|
@ -3531,6 +3600,52 @@ Sets the parameters of one of the two whirlpools (0-indexed) in an area
|
|||
|
||||
<br />
|
||||
|
||||
## [obj_skip_interpolation](#obj_skip_interpolation)
|
||||
|
||||
### Description
|
||||
Skips object interpolation for a frame
|
||||
|
||||
### Lua Example
|
||||
`obj_skip_interpolation(o)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| o | [Object](structs.md#Object) |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void obj_skip_interpolation(struct Object *o);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [obj_anim_skip_interpolation](#obj_anim_skip_interpolation)
|
||||
|
||||
### Description
|
||||
Skips animation interpolation for a frame
|
||||
|
||||
### Lua Example
|
||||
`obj_anim_skip_interpolation(o)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| o | [Object](structs.md#Object) |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void obj_anim_skip_interpolation(struct Object *o);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from smlua_text_utils.h
|
||||
|
||||
|
|
|
|||
|
|
@ -763,6 +763,9 @@
|
|||
- [djui_hud_get_rotation](functions-3.md#djui_hud_get_rotation)
|
||||
- [djui_hud_set_rotation](functions-3.md#djui_hud_set_rotation)
|
||||
- [djui_hud_set_rotation_interpolated](functions-3.md#djui_hud_set_rotation_interpolated)
|
||||
- [djui_hud_get_text_alignment](functions-3.md#djui_hud_get_text_alignment)
|
||||
- [djui_hud_set_text_alignment](functions-3.md#djui_hud_set_text_alignment)
|
||||
- [djui_hud_set_text_alignment_interpolated](functions-3.md#djui_hud_set_text_alignment_interpolated)
|
||||
- [djui_hud_get_screen_width](functions-3.md#djui_hud_get_screen_width)
|
||||
- [djui_hud_get_screen_height](functions-3.md#djui_hud_get_screen_height)
|
||||
- [djui_hud_get_mouse_x](functions-3.md#djui_hud_get_mouse_x)
|
||||
|
|
@ -976,6 +979,7 @@
|
|||
- [le_set_tone_mapping](functions-4.md#le_set_tone_mapping)
|
||||
- [le_get_ambient_color](functions-4.md#le_get_ambient_color)
|
||||
- [le_set_ambient_color](functions-4.md#le_set_ambient_color)
|
||||
- [le_set_max_lights_per_vertex](functions-4.md#le_set_max_lights_per_vertex)
|
||||
- [le_calculate_lighting_color](functions-4.md#le_calculate_lighting_color)
|
||||
- [le_calculate_lighting_color_with_normal](functions-4.md#le_calculate_lighting_color_with_normal)
|
||||
- [le_calculate_lighting_dir](functions-4.md#le_calculate_lighting_dir)
|
||||
|
|
@ -996,6 +1000,11 @@
|
|||
|
||||
<br />
|
||||
|
||||
- load.h
|
||||
- [set_sound_bank_override](functions-4.md#set_sound_bank_override)
|
||||
|
||||
<br />
|
||||
|
||||
- mario.h
|
||||
- [is_anim_at_end](functions-4.md#is_anim_at_end)
|
||||
- [is_anim_past_end](functions-4.md#is_anim_past_end)
|
||||
|
|
@ -1819,6 +1828,7 @@
|
|||
- smlua_audio_utils.h
|
||||
- [smlua_audio_utils_reset_all](functions-6.md#smlua_audio_utils_reset_all)
|
||||
- [smlua_audio_utils_replace_sequence](functions-6.md#smlua_audio_utils_replace_sequence)
|
||||
- [smlua_audio_utils_allocate_sequence](functions-6.md#smlua_audio_utils_allocate_sequence)
|
||||
- [audio_stream_load](functions-6.md#audio_stream_load)
|
||||
- [audio_stream_destroy](functions-6.md#audio_stream_destroy)
|
||||
- [audio_stream_play](functions-6.md#audio_stream_play)
|
||||
|
|
@ -2047,6 +2057,7 @@
|
|||
- [set_override_envfx](functions-7.md#set_override_envfx)
|
||||
- [get_global_timer](functions-7.md#get_global_timer)
|
||||
- [get_dialog_response](functions-7.md#get_dialog_response)
|
||||
- [get_time_stop_flags](functions-7.md#get_time_stop_flags)
|
||||
- [get_local_discord_id](functions-7.md#get_local_discord_id)
|
||||
- [get_coopnet_id](functions-7.md#get_coopnet_id)
|
||||
- [get_volume_master](functions-7.md#get_volume_master)
|
||||
|
|
@ -2061,6 +2072,7 @@
|
|||
- [set_environment_region](functions-7.md#set_environment_region)
|
||||
- [mod_file_exists](functions-7.md#mod_file_exists)
|
||||
- [get_active_mod](functions-7.md#get_active_mod)
|
||||
- [get_mod_files](functions-7.md#get_mod_files)
|
||||
- [set_window_title](functions-7.md#set_window_title)
|
||||
- [reset_window_title](functions-7.md#reset_window_title)
|
||||
- [get_os_name](functions-7.md#get_os_name)
|
||||
|
|
@ -2069,6 +2081,7 @@
|
|||
- [geo_get_current_perspective](functions-7.md#geo_get_current_perspective)
|
||||
- [geo_get_current_camera](functions-7.md#geo_get_current_camera)
|
||||
- [geo_get_current_held_object](functions-7.md#geo_get_current_held_object)
|
||||
- [geo_skip_interpolation](functions-7.md#geo_skip_interpolation)
|
||||
- [texture_to_lua_table](functions-7.md#texture_to_lua_table)
|
||||
- [get_texture_name](functions-7.md#get_texture_name)
|
||||
|
||||
|
|
@ -2130,6 +2143,8 @@
|
|||
- [obj_set_vel](functions-7.md#obj_set_vel)
|
||||
- [obj_move_xyz](functions-7.md#obj_move_xyz)
|
||||
- [set_whirlpools](functions-7.md#set_whirlpools)
|
||||
- [obj_skip_interpolation](functions-7.md#obj_skip_interpolation)
|
||||
- [obj_anim_skip_interpolation](functions-7.md#obj_anim_skip_interpolation)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
|
|||
|
|
@ -151,6 +151,12 @@ The lua functions sent to `hook_event()` will be automatically called by SM64 wh
|
|||
| HOOK_MARIO_OVERRIDE_FLOOR_CLASS | Called when Mario's floor class logic updates, return a `SURFACE_CLASS_*` constant to override the type. | [MarioState](../structs.md#MarioState) mario, `integer` surfaceClass |
|
||||
| HOOK_ON_ADD_SURFACE | Called when collision surfaces are added. | [Surface](../structs.md#Surface) surface, `boolean` dynamic |
|
||||
| HOOK_ON_CLEAR_AREAS | Called when a level's areas are unloaded. | None |
|
||||
| HOOK_ON_FIND_WALL_COLLISION | Called after wall collision detection completes. You can modify the `colData` fields directly. Return a number to override `numCollisions` | `number` posX, `number` posY, `number` posZ, [WallCollisionData](../structs.md#WallCollisionData) colData |
|
||||
| HOOK_ON_FIND_CEIL | Called after ceiling detection completes. Return `height` to override height, or `height, surface` to override both | `number` posX, `number` posY, `number` posZ, [Surface](../structs.md#Surface) ceil, `number` height |
|
||||
| HOOK_ON_FIND_FLOOR | Called after floor detection completes. Return `height` to override height, or `height, surface` to override both | `number` posX, `number` posY, `number` posZ, [Surface](../structs.md#Surface) floor, `number` height |
|
||||
| HOOK_ON_FIND_WATER_LEVEL | Called after water level detection completes. Return a number to override the water level | `number` x, `number` z, `number` waterLevel |
|
||||
| HOOK_ON_FIND_POISON_GAS_LEVEL | Called after poison gas level detection completes. Return a number to override the gas level | `number` x, `number` z, `number` gasLevel |
|
||||
| HOOK_ON_FIND_SURFACE_ON_RAY | Called after ray-surface intersection completes. Return `surface` to override the hit surface, or `surface, hitPos` to override both | `Vec3f` orig, `Vec3f` dir, [Surface](../structs.md#Surface) hitSurface, `Vec3f` hitPos |
|
||||
|
||||
### Parameters
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
- [GraphNodeSwitchCase](#GraphNodeSwitchCase)
|
||||
- [GraphNodeTranslation](#GraphNodeTranslation)
|
||||
- [GraphNodeTranslationRotation](#GraphNodeTranslationRotation)
|
||||
- [HudUtilsRotation](#HudUtilsRotation)
|
||||
- [InstantWarp](#InstantWarp)
|
||||
- [LakituState](#LakituState)
|
||||
- [LevelValues](#LevelValues)
|
||||
|
|
@ -1427,21 +1426,6 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [HudUtilsRotation](#HudUtilsRotation)
|
||||
|
||||
| Field | Type | Access |
|
||||
| ----- | ---- | ------ |
|
||||
| rotation | `number` | |
|
||||
| rotationDiff | `number` | |
|
||||
| prevPivotX | `number` | |
|
||||
| prevPivotY | `number` | |
|
||||
| pivotX | `number` | |
|
||||
| pivotY | `number` | |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [InstantWarp](#InstantWarp)
|
||||
|
||||
| Field | Type | Access |
|
||||
|
|
|
|||
|
|
@ -557,7 +557,7 @@ enum BehaviorId get_id_from_vanilla_behavior(const BehaviorScript* behavior);
|
|||
const BehaviorScript* get_behavior_from_id(enum BehaviorId id);
|
||||
/* |description|Gets a behavior name from a behavior ID (bhvMyGreatMODCustom004)|descriptionEnd| */
|
||||
const char* get_behavior_name_from_id(enum BehaviorId id);
|
||||
/* |description|gets a behavior ID from a behavior name|descriptionEnd| */
|
||||
/* |description|Gets a behavior ID from a behavior name|descriptionEnd| */
|
||||
enum BehaviorId get_id_from_behavior_name(const char* name);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ N64_BINDS = "N64 Ovládání"
|
|||
EXTRA_BINDS = "Extra Ovládání"
|
||||
BACKGROUND_GAMEPAD = "Ovladač v pozadí"
|
||||
DISABLE_GAMEPADS = "Zakažte gamepady"
|
||||
EXTENDED_REPORTS = "Rozšířené zprávy"
|
||||
GAMEPAD = "Použít ovladač"
|
||||
DEADZONE = "Deadzone"
|
||||
RUMBLE_STRENGTH = "Síla vibrace"
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ N64_BINDS = "N64 Toetsen"
|
|||
EXTRA_BINDS = "Extra Toetsen"
|
||||
BACKGROUND_GAMEPAD = "Achtergrond Gamepad"
|
||||
DISABLE_GAMEPADS = "Gamepads uitschakelen"
|
||||
EXTENDED_REPORTS = "Uitgebreide rapporten"
|
||||
GAMEPAD = "Gamepad"
|
||||
DEADZONE = "Doode-zone"
|
||||
RUMBLE_STRENGTH = "Rommel Kracht"
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ N64_BINDS = "N64 Binds"
|
|||
EXTRA_BINDS = "Extra Binds"
|
||||
BACKGROUND_GAMEPAD = "Background Gamepad"
|
||||
DISABLE_GAMEPADS = "Disable Gamepads"
|
||||
EXTENDED_REPORTS = "Extended Reports"
|
||||
GAMEPAD = "Gamepad"
|
||||
DEADZONE = "Deadzone"
|
||||
RUMBLE_STRENGTH = "Rumble Strength"
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ N64_BINDS = "Touches N64"
|
|||
EXTRA_BINDS = "Touches Supplémentaires"
|
||||
BACKGROUND_GAMEPAD = "Manette en arrière plan"
|
||||
DISABLE_GAMEPADS = "Désactiver les manettes de jeu"
|
||||
EXTENDED_REPORTS = "Rapports détaillés"
|
||||
GAMEPAD = "Manette"
|
||||
DEADZONE = "Zone Morte"
|
||||
RUMBLE_STRENGTH = "Vibrations"
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ NAMETAGS_MISSING_PARAMETERS = "Fehlende Parameter: [OPTION]"
|
|||
SELF_KICK = "Du kannst dich nicht selbst kicken."
|
||||
SELF_BAN = "Du kannst dich nicht selbst bannen."
|
||||
SELF_MOD = "Du kannst dich nicht selbst zum Moderator machen."
|
||||
KICK_CONFIRM = "Bist du sicher, dass du '@' vom Server kicken möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren."
|
||||
BAN_CONFIRM = "Bist du sicher, dass du '@' vom Server bannen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren."
|
||||
PERM_BAN_CONFIRM = "Bist du sicher, dass du '@' dauerhaft vom Server bannen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein, um fortzufahren."
|
||||
MOD_CONFIRM = "Bist du sicher, dass du '@' zum Moderator ernennen möchtest?\nGib '\\#a0ffa0\\/bestätigen\\#fff982\\' ein."
|
||||
KICK_CONFIRM = "Bist du sicher, dass du '@' vom Server kicken möchtest?\nGib '\\#a0ffa0\\/confirm\\#fff982\\' ein, um fortzufahren."
|
||||
BAN_CONFIRM = "Bist du sicher, dass du '@' vom Server bannen möchtest?\nGib '\\#a0ffa0\\/confirm\\#fff982\\' ein, um fortzufahren."
|
||||
PERM_BAN_CONFIRM = "Bist du sicher, dass du '@' dauerhaft vom Server bannen möchtest?\nGib '\\#a0ffa0\\/confirm\\#fff982\\' ein, um fortzufahren."
|
||||
MOD_CONFIRM = "Bist du sicher, dass du '@' zum Moderator ernennen möchtest?\nGib '\\#a0ffa0\\/confirm\\#fff982\\' ein."
|
||||
PLAYERS_DESC = "/players - Zeige alle Spieler und ihre IDs."
|
||||
KICK_DESC = "/kick [NAME|ID] - Kicke einen Spieler vom Server."
|
||||
BAN_DESC = "/ban [NAME|ID] - Banne einen Spieler vom Server."
|
||||
|
|
@ -101,6 +101,7 @@ CONTROLS = "STEUERUNG"
|
|||
N64_BINDS = "N64-Einstellungen"
|
||||
EXTRA_BINDS = "Zusätzliche Einstellungen"
|
||||
BACKGROUND_GAMEPAD = "Hintergrund-Gamepad"
|
||||
EXTENDED_REPORTS = "Erweiterte Berichte"
|
||||
DISABLE_GAMEPADS = "Gamepads deaktivieren"
|
||||
GAMEPAD = "Gamepad"
|
||||
DEADZONE = "Tote Zone"
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ CONTROLS = "CONTROLLI"
|
|||
N64_BINDS = "Comandi N64"
|
||||
EXTRA_BINDS = "Comandi Extra"
|
||||
BACKGROUND_GAMEPAD = "Attivi in Background"
|
||||
EXTENDED_REPORTS = "Rapporti estesi"
|
||||
DISABLE_GAMEPADS = "Disabilita i Gamepad"
|
||||
GAMEPAD = "Controller"
|
||||
DEADZONE = "Zona Morta"
|
||||
|
|
|
|||
|
|
@ -1,61 +1,61 @@
|
|||
[NOTIF]
|
||||
CONNECTED = "@が接続しました"
|
||||
DISCONNECTED = "@が切断しました。"
|
||||
LEFT_THIS_LEVEL = "@がこのコースから出ました。"
|
||||
ENTERED_THIS_LEVEL = "@がこのコースに入りました。"
|
||||
ENTERED = "@が\n#に入りました。"
|
||||
SERVER_CLOSED = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ 部屋が閉じられました。"
|
||||
DISCORD_ERROR = "Discordエラーが発生しました。\n解決するには、\n1. ゲームを終了し、\n2. Discordを再起動してから、\n3. もう一度ゲームを開いてください。"
|
||||
CONNECTED = "@ が参加しました"
|
||||
DISCONNECTED = "@ が退出しました"
|
||||
LEFT_THIS_LEVEL = "@ がこのコースから出ました"
|
||||
ENTERED_THIS_LEVEL = "@ がこのコースに入りました"
|
||||
ENTERED = "@ が \n# に入りました"
|
||||
SERVER_CLOSED = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ ルームが閉じられました。"
|
||||
DISCORD_ERROR = "Discordエラーが発生しました。\n解決するには、\n1. ゲームを終了する\n2. Discordを再起動する\n3. もう一度ゲームを開く\nの手順で進めてください。"
|
||||
DISCORD_DETECT = "\\#ffa0a0\\エラー:\\#dcdcdc\\ Discordを検出できませんでした。\n\\#a0a0a0\\ゲームを終了し、Discordを再起動してから、もう一度お試しください。"
|
||||
DISCONNECT_FULL = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ ルームが満員です。"
|
||||
DISCONNECT_KICK = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ キックされました。"
|
||||
DISCONNECT_BAN = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ BANされました。"
|
||||
DISCONNECT_REJOIN = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ 再参加中です…"
|
||||
DISCONNECT_CLOSED = "\\#ffa0a0\\切断されました:\\#dcdcdc\\ ホストが切断しました。"
|
||||
DISCONNECT_BIG_MOD = "MODの量が多すぎます!\n切断しました。"
|
||||
DIED = "@がやられた!"
|
||||
DEBUG_FLY = "@がデバッグ飛行モードに入りました!"
|
||||
IMPORT_MOD_SUCCESS = "'@'\n\\#a0ffa0\\MODを読み込みました\\#dcdcdc\\"
|
||||
IMPORT_DYNOS_SUCCESS = "'@'\n\\#a0ffa0\\DynOSのパックを読み込みました\\#dcdcdc\\"
|
||||
IMPORT_PALETTE_SUCCESS = "'@'\n\\#a0ffa0\\パレットのプリセットを読み込みました\\#dcdcdc\\"
|
||||
IMPORT_FAIL = "'@'\n\\#ffa0a0\\読み込みに失敗しました。\\#dcdcdc\\"
|
||||
IMPORT_FAIL_INGAME = "\\#ffa0a0\\ゲーム中はMODを読み込めません"
|
||||
DISCONNECT_BIG_MOD = "このルームはMODの量が多すぎます。\n切断しました。"
|
||||
DIED = "@がやられた"
|
||||
DEBUG_FLY = "@がデバッグ飛行モードに入った"
|
||||
IMPORT_MOD_SUCCESS = "\\#a0ffa0\\MODをインポートしました:\n\\#dcdcdc\\@"
|
||||
IMPORT_DYNOS_SUCCESS = "\\#a0ffa0\\DynOSパックをインポートしました:\n\\#dcdcdc\\@"
|
||||
IMPORT_PALETTE_SUCCESS = "\\#a0ffa0\\パレットプリセットをインポートしました:\n\\#dcdcdc\\@"
|
||||
IMPORT_FAIL = "\\#ffa0a0\\インポートに失敗しました:\n\\#dcdcdc\\@"
|
||||
IMPORT_FAIL_INGAME = "\\#ffa0a0\\ゲーム中はMODをインポートできません"
|
||||
COOPNET_CONNECTION_FAILED = "\\#ffa0a0\\CoopNetに接続できませんでした!"
|
||||
COOPNET_DISCONNECTED = "\\#ffa0a0\\CoopNetとの接続が途絶えました!"
|
||||
COOPNET_DISCONNECTED = "\\#ffa0a0\\CoopNetとの接続が失われました!"
|
||||
LOBBY_NOT_FOUND = "\\#ffa0a0\\エラー:\\#dcdcdc\\ ルームがすでに閉じられています!"
|
||||
LOBBY_JOIN_FAILED = "\\#ffa0a0\\ルームに参加できませんでした。"
|
||||
LOBBY_PASSWORD_INCORRECT = "\\#ffa0a0\\パスワードが間違っています。"
|
||||
COOPNET_VERSION = "\\#ffa0a0\\あなたのバージョンはCoopNetに対応していません。アップデートしましょう!"
|
||||
PEER_FAILED = "\\#ffa0a0\\'@'への接続に失敗しました。"
|
||||
LOBBY_JOIN_FAILED = "\\#ffa0a0\\ルームへの参加に失敗しました!"
|
||||
LOBBY_PASSWORD_INCORRECT = "\\#ffa0a0\\パスワードが間違っています!"
|
||||
COOPNET_VERSION = "\\#ffa0a0\\あなたのゲームバージョンはCoopNetに対応していません。アップデートしましょう!"
|
||||
PEER_FAILED = "\\#ffa0a0\\プレイヤー @ への接続に失敗しました。"
|
||||
UNKNOWN = "未知"
|
||||
LOBBY_HOST = "部屋主"
|
||||
LOBBY_HOST = "ルームのホスト"
|
||||
UPDATE_AVAILABLE = "アップデートが利用可能です!"
|
||||
LATEST_VERSION = "最新バージョン"
|
||||
LATEST_VERSION = "最新のバージョン"
|
||||
YOUR_VERSION = "あなたのバージョン"
|
||||
|
||||
[CHAT]
|
||||
KICKING = "'@'をキックしました!"
|
||||
BANNING = "'@'をBANしました!"
|
||||
KICKING = "@ をキックしました!"
|
||||
BANNING = "@ をBANしました!"
|
||||
SERVER_ONLY = "このコマンドはホストのみが実行できます。"
|
||||
PERM_BANNING = "'@'を永久BANしました!"
|
||||
ADD_MODERATOR = "'@'をモデレーターにしました!"
|
||||
PLAYERS = "プレイヤー"
|
||||
PERM_BANNING = "@ を永久BANしました!"
|
||||
ADD_MODERATOR = "@ をモデレーターにしました!"
|
||||
PLAYERS = "ルーム内のプレイヤー"
|
||||
NO_PERMS = "このコマンドを実行する権限がありません。"
|
||||
PLAYER_NOT_FOUND = "プレイヤーが見つかりませんでした。"
|
||||
NAMETAGS_MISSING_PARAMETERS = "引数が不足しています: [OPTION]が必要です。"
|
||||
NAMETAGS_MISSING_PARAMETERS = "引数が不足しています: [OPTION] が必要です。"
|
||||
SELF_KICK = "自分自身はキックできません。"
|
||||
SELF_BAN = "自分自身はBANできません。"
|
||||
SELF_MOD = "自分自身をモデレーターにすることはできません。"
|
||||
KICK_CONFIRM = "本当に'@'を強制退出させますか?\n実行するには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
BAN_CONFIRM = "本当に'@'をBANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
PERM_BAN_CONFIRM = "本当に'@'を永久BANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
MOD_CONFIRM = "本当に'@'をモデレーターにしますか?\n'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
PLAYERS_DESC = "/players - プレイヤー名とID一覧を表示します。"
|
||||
KICK_DESC = "/kick [NAME|ID] - プレイヤーを現在のルームからキックします。"
|
||||
BAN_DESC = "/ban [NAME|ID] - プレイヤーを現在のルームからBANします。"
|
||||
PERM_BAN_DESC = "/permban [NAME|ID] - プレイヤーをあなたが今後ホストするすべてのルームからBANします。"
|
||||
MOD_DESC = "/moderator [NAME|ID] - プレイヤーに/kick、/ban、/permbanのようなコマンドの使用を許可します。"
|
||||
NAMETAGS_DESC = "/nametags [show-tag|show-health] - あなたの体力やネームタグの表示を変更します。"
|
||||
KICK_CONFIRM = "本当に @ をキックしますか?\n実行するには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
BAN_CONFIRM = "本当に @ をBANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
PERM_BAN_CONFIRM = "本当に @ を永久BANしますか?\nBANするには'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
MOD_CONFIRM = "本当に @ をモデレーターにしますか?\n'\\#a0ffa0\\/confirm\\#fff982\\' と入力して確定します。"
|
||||
PLAYERS_DESC = "/players - ルーム内のプレイヤー名とIDの一覧を表示します。"
|
||||
KICK_DESC = "/kick [プレイヤー名|ID] - 指定したプレイヤーを現在のルームからキックします。"
|
||||
BAN_DESC = "/ban [プレイヤー名|ID] - 指定したプレイヤーを現在のルームからBANします。"
|
||||
PERM_BAN_DESC = "/permban [プレイヤー名|ID] - 指定したプレイヤーをあなたが今後ホストするすべてのルームからBANします。"
|
||||
MOD_DESC = "/moderator [プレイヤー名|ID] - 指定したプレイヤーに/kick、/ban、/permbanのようなコマンドの使用を許可します。"
|
||||
NAMETAGS_DESC = "/nametags [show-tag|show-health] - あなたのネームタグ/体力の表示を変更します。"
|
||||
UNRECOGNIZED = "未知のコマンドです。"
|
||||
MOD_GRANTED = "\\#fff982\\あなたはモデレーターになりました。"
|
||||
ALL_COMMANDS = "すべてのコマンド"
|
||||
|
|
@ -72,8 +72,8 @@ CAMERA = "CAMERA"
|
|||
FREE_CAMERA = "フリーカメラ"
|
||||
ANALOG_CAMERA = "アナログカメラ"
|
||||
FREE_CAMERA_TITLE = "FREE CAMERA"
|
||||
FREE_CAMERA_L_CENTERING = "Lセンタリング"
|
||||
FREE_CAMERA_USE_DPAD = "DPad の動作"
|
||||
FREE_CAMERA_L_CENTERING = "Lボタンで前を向く"
|
||||
FREE_CAMERA_USE_DPAD = "十字キー操作"
|
||||
FREE_CAMERA_COLLISION = "カメラの衝突"
|
||||
ROMHACK_CAMERA_TITLE = "ROMHACK\nCAMERA"
|
||||
ROMHACK_CAMERA = "ロムハックカメラ"
|
||||
|
|
@ -81,56 +81,55 @@ ROMHACK_CAMERA_AUTOMATIC = "自動"
|
|||
ROMHACK_CAMERA_ON = "オン"
|
||||
ROMHACK_CAMERA_OFF = "オフ"
|
||||
ROMHACK_CAMERA_IN_BOWSER = "クッパ戦で使用"
|
||||
ROMHACK_CAMERA_COLLISION = "カメラの衝突"
|
||||
ROMHACK_CAMERA_L_CENTERING = "Lセンタリング"
|
||||
ROMHACK_CAMERA_USE_DPAD = "DPad の動作"
|
||||
ROMHACK_CAMERA_SLOW_FALL = "スローフォール"
|
||||
CAMERA_TOXIC_GAS = "有毒ガスの調整"
|
||||
ROMHACK_CAMERA_COLLISION = "カメラの当たり判定"
|
||||
ROMHACK_CAMERA_L_CENTERING = "Lボタンで前を向く"
|
||||
ROMHACK_CAMERA_USE_DPAD = "十字キー操作"
|
||||
ROMHACK_CAMERA_SLOW_FALL = "低速落下"
|
||||
CAMERA_TOXIC_GAS = "有毒ガス内での調整"
|
||||
MOUSE_LOOK = "マウスでの操作"
|
||||
INVERT_X = "X方向のカメラ反転"
|
||||
INVERT_Y = "Y方向のカメラ反転"
|
||||
X_SENSITIVITY = "X方向の感度"
|
||||
Y_SENSITIVITY = "Y方向の感度"
|
||||
AGGRESSION = "かたさ"
|
||||
PAN_LEVEL = "カメラのずれ"
|
||||
DECELERATION = "カメラ減速"
|
||||
ROMHACK_CAMERA_OFF = "オフ"
|
||||
AGGRESSION = "カメラの追従性"
|
||||
PAN_LEVEL = "カメラの水平速度"
|
||||
DECELERATION = "カメラ減速の強さ"
|
||||
|
||||
[CONTROLS]
|
||||
CONTROLS = "CONTROLS"
|
||||
|
||||
N64_BINDS = "ニンテンドウ64の入力"
|
||||
EXTRA_BINDS = "追加の入力"
|
||||
N64_BINDS = "ニンテンドウ64のボタン割り当て"
|
||||
EXTRA_BINDS = "追加のボタン割り当て"
|
||||
BACKGROUND_GAMEPAD = "バックグラウンドでのコントローラー認識"
|
||||
EXTENDED_REPORTS = "拡張レポート"
|
||||
DISABLE_GAMEPADS = "コントローラーを無効化"
|
||||
GAMEPAD = "コントローラー"
|
||||
DEADZONE = "デッドゾーン"
|
||||
RUMBLE_STRENGTH = "振動の強さ"
|
||||
|
||||
CHAT = "チャット"
|
||||
CHAT_COMMAND = "チャット(コマンド)"
|
||||
PLAYERS = "プレイヤーリストの表示"
|
||||
PLAYERS = "プレイヤーリスト"
|
||||
D_UP = "十字キー 上"
|
||||
D_DOWN = "十字キー 下"
|
||||
D_LEFT = "十字キー 左"
|
||||
D_RIGHT = "十字キー 右"
|
||||
X = "X"
|
||||
Y = "Y"
|
||||
X = "Xボタン"
|
||||
Y = "Yボタン"
|
||||
CONSOLE = "コンソール"
|
||||
PREV = "前のページ"
|
||||
NEXT = "次のページ"
|
||||
DISCONNECT = "切断"
|
||||
DISCONNECT = "ゲームから切断"
|
||||
|
||||
UP = "上"
|
||||
DOWN = "下"
|
||||
LEFT = "左"
|
||||
RIGHT = "右"
|
||||
A = "A"
|
||||
B = "B"
|
||||
START = "スタート"
|
||||
L = "L"
|
||||
R = "R"
|
||||
Z = "Z"
|
||||
UP = "3Dスティック 上"
|
||||
DOWN = "3Dスティック 下"
|
||||
LEFT = "3Dスティック 左"
|
||||
RIGHT = "3Dスティック 右"
|
||||
A = "Aボタン"
|
||||
B = "Bボタン"
|
||||
START = "STARTボタン"
|
||||
L = "Lトリガー"
|
||||
R = "Rトリガー"
|
||||
Z = "Zトリガー"
|
||||
C_UP = "Cボタン 上"
|
||||
C_DOWN = "Cボタン 下"
|
||||
C_LEFT = "Cボタン 左"
|
||||
|
|
@ -138,7 +137,7 @@ C_RIGHT = "Cボタン 右"
|
|||
|
||||
ANALOG_STICK_OPTIONS = "アナログスティックのオプション"
|
||||
|
||||
ROTATE_LEFT = "左スティックを90度回転させる"
|
||||
ROTATE_LEFT = "左スティックを90度回転"
|
||||
INVERT_LEFT_X = "左スティックX軸の反転"
|
||||
INVERT_LEFT_Y = "左スティックY軸の反転"
|
||||
ROTATE_RIGHT = "右スティックを90度回転"
|
||||
|
|
@ -156,7 +155,7 @@ AUTO = "自動"
|
|||
MANUAL = "手動"
|
||||
UNCAPPED = "無制限"
|
||||
FRAME_LIMIT = "FPSの制限"
|
||||
FAST = "速い"
|
||||
FAST = "高速"
|
||||
ACCURATE = "正確"
|
||||
INTERPOLATION = "補間"
|
||||
NEAREST = "ニアレスト"
|
||||
|
|
@ -199,24 +198,24 @@ LOCAL_PLAYER_MODEL_ONLY = "ローカルのキャラモデルに限定"
|
|||
|
||||
[HOST_MESSAGE]
|
||||
INFO_TITLE = "INFO"
|
||||
WARN_DISCORD = "招待したいフレンドを右クリックしてn'\\#d0d0ff\\ゲームに招待\\#dcdcdc\\'.\n\nを押すと招待できます。サーバー内のチャンネルにも、チャット横の\\#d0d0ff\\プラス\\#dcdcdc\\マークから招待メッセージを送信できます。\n\nゲーム アクティビティを\\#ffa0a0\\必ず\\#dcdcdc\\有効にしてください。\n\n\nオフラインに設定していると、招待の送信を\\#ffa0a0\\妨げる\\#dcdcdc\\可能性があります。"
|
||||
WARN_DISCORD2 = "\\#ffa0a0\\エラー:\\#dcdcdc\\Discordを検出できませんでした。\n\\#a0a0a0\\ゲームを終了し、Discordを再起動してから、もう一度お試しください。"
|
||||
WARN_SOCKET = "ファイアウォール設定が正しく設定されている事をご確認ください。\n直接接続には、ルータのポート転送でIPv4インバウンド接続を受信するように設定する\\#ffa0a0\\必要\\#dcdcdc\\があります。\n\nUDPポート'%d'番を開放してください。IPv6にも対応しています。"
|
||||
WARN_DISCORD = "招待したいフレンドを右クリックしてn'\\#d0d0ff\\ゲームに招待\\#dcdcdc\\'.\n\nを押すと招待できます。サーバー内のチャンネルにも、チャット入力欄の横にある\\#d0d0ff\\+\\#dcdcdc\\マークから招待メッセージを送信できます。\n\nDiscordのユーザー設定からゲーム アクティビティを\\#ffa0a0\\必ず\\#dcdcdc\\有効にしてください。\n\n\nステータスをオフラインに設定していると、招待の送信が\\#ffa0a0\\妨げられる\\#dcdcdc\\可能性があります。"
|
||||
WARN_DISCORD2 = "\\#ffa0a0\\エラー:\\#dcdcdc\\Discordを検出できませんでした。\n\\#a0a0a0\\ゲームを終了してDiscordを再起動してから、もう一度お試しください。"
|
||||
WARN_SOCKET = "ファイアウォールの設定が正しく完了していることを確認してください。\nダイレクト接続には\\#ffa0a0\\あなた自身が\\#dcdcdc\\ルーターでIPv4の接続を受け入れるようにポートフォワーディング設定を行う必要があります。\n\nUDPポート'\\#d0d0ff\\%d\\#dcdcdc\\'を解放してください。IPv6も使用可能です。"
|
||||
HOST = "ルームを作る"
|
||||
|
||||
[HOST_MODS]
|
||||
MODS = "MODS"
|
||||
CATEGORIES = "カテゴリ一覧"
|
||||
WARNING = "\\#ffffa0\\<注意>\\#dcdcdc\\ MOD数が10個以上になっています。ラグや不安定を防ぐため、いくつか無効にしてください"
|
||||
NO_MODS_FOUND = "MODが見つかりませんでした。"
|
||||
WARNING = "\\#ffffa0\\<注意>\\#dcdcdc\\ MODの数が10個以上になっています。ラグや不安定を防ぐため、いくつか無効にしてください。"
|
||||
NO_MODS_FOUND = "MODは見つかりませんでした。"
|
||||
|
||||
[HOST_MOD_CATEGORIES]
|
||||
ALL = "すべて"
|
||||
MISC = "その他"
|
||||
ROMHACKS = "ハックロム"
|
||||
GAMEMODES = "ゲームモード"
|
||||
MOVESETS = "ムーブセット"
|
||||
CHARACTER_SELECT = "キャラクター選択"
|
||||
ROMHACKS = "ロムハック系"
|
||||
GAMEMODES = "ゲームモード系"
|
||||
MOVESETS = "ムーブセット系"
|
||||
CHARACTER_SELECT = "追加キャラクター系"
|
||||
|
||||
[HOST_SAVE]
|
||||
SAVE_TITLE = "SAVE"
|
||||
|
|
@ -225,7 +224,7 @@ CONFIRM = "本当に消しますか?"
|
|||
ERASE = "消す"
|
||||
EDIT = "編集"
|
||||
EDIT_TITLE = "EDIT"
|
||||
EDIT_NAME = "ファイル名を変更:"
|
||||
EDIT_NAME = "マリオ @のおなまえ変更:"
|
||||
|
||||
[HOST_SETTINGS]
|
||||
SETTINGS = "SETTINGS"
|
||||
|
|
@ -238,7 +237,7 @@ NORMAL = "普通"
|
|||
TOO_MUCH = "最強"
|
||||
KNOCKBACK_STRENGTH = "ノックバックの強さ"
|
||||
CLASSIC_PVP = "クラシック"
|
||||
REVAMPED_PVP = "改良"
|
||||
REVAMPED_PVP = "改良型"
|
||||
PVP_MODE = "PvPモード"
|
||||
LEAVE_LEVEL = "コースを出る"
|
||||
STAY_IN_LEVEL = "コースに留まる"
|
||||
|
|
@ -246,14 +245,14 @@ NONSTOP = "ノンストップ"
|
|||
ON_STAR_COLLECTION = "スター取得時の動作"
|
||||
SKIP_INTRO_CUTSCENE = "イントロをスキップ"
|
||||
ENABLE_CHEATS = "チートを有効にする"
|
||||
BUBBLE_ON_DEATH = "やられた時にシャボンで復活"
|
||||
BUBBLE_ON_DEATH = "ミス時にシャボンで復活"
|
||||
NAMETAGS = "ネームタグを有効にする"
|
||||
MOD_DEV_MODE = "MOD開発モード"
|
||||
BOUNCY_BOUNDS_ON_CAP = "オン(制限付き)"
|
||||
BOUNCY_BOUNDS_ON_CAP = "オン(速度制限)"
|
||||
BOUNCY_BOUNDS_ON = "オン"
|
||||
BOUNCY_BOUNDS_OFF = "オフ"
|
||||
BOUNCY_LEVEL_BOUNDS = "コース境界での跳ね返り"
|
||||
AMOUNT_OF_PLAYERS = "最大人数"
|
||||
AMOUNT_OF_PLAYERS = "最大ルーム人数"
|
||||
PAUSE_ANYWHERE = "どこでもポーズ"
|
||||
|
||||
[HOST]
|
||||
|
|
@ -278,7 +277,7 @@ JOINING = "JOINING"
|
|||
[JOIN]
|
||||
JOIN_TITLE = "JOIN"
|
||||
JOIN_DISCORD = "\\#d0d0ff\\Discord\\#dcdcdc\\ロビーへの参加:\n\nゲームを開いたまま、招待メッセージの参加ボタンを押してください。\n\n「ゲームは終了しました」と表示されている場合は、招待を送信した人の名前をクリックして更新してください。"
|
||||
JOIN_SOCKET = "\\#d0d0ff\\ダイレクト接続\\#dcdcdc\\のIPとポートを入力してください:"
|
||||
JOIN_SOCKET = "\\#d0d0ff\\ダイレクト接続先\\#dcdcdc\\のIPアドレスとポート番号を入力してください:"
|
||||
JOIN = "参加する"
|
||||
PUBLIC_LOBBIES = "公開ルーム"
|
||||
PRIVATE_LOBBIES = "非公開ルーム"
|
||||
|
|
@ -286,14 +285,14 @@ DIRECT = "ダイレクト接続"
|
|||
|
||||
[RULES]
|
||||
RULES_TITLE = "RULES"
|
||||
RULE_1 = "1. 13歳以上であること。"
|
||||
RULE_2 = "2. 不快な言葉、中傷、攻撃的な言葉を使わないこと。"
|
||||
RULE_3 = "3. 非公式ビルドを使わないこと。"
|
||||
RULE_4 = "4. ゲームをエクスプロイトする外部ツールを使用しないこと。"
|
||||
RULE_5 = "5. 作者の許可なく、非公開MODを公開しないこと。"
|
||||
RULE_6 = "6. 全てのNSFWコンテンツは禁止です。"
|
||||
SUBJECT_TO_CHANGE = "ルールはアップデートで変更される可能性があります。"
|
||||
NOTICE = "公開ルームではルールをお守りください。"
|
||||
RULE_1 = "1. CoopNetの利用は13歳以上に限ります。"
|
||||
RULE_2 = "2. ハラスメント(嫌がらせ)、ヘイトスピーチ、差別用語、その他攻撃的な言動は禁止です。"
|
||||
RULE_3 = "3. CoopNetでは改造(改ざん)されていない正規のsm64coopdxのみが使用可能です。"
|
||||
RULE_4 = "4. ゲームの脆弱性を悪用するための外部ツールの使用は禁止です。"
|
||||
RULE_5 = "5. 作者の許可なく、未公開MODでルームをホストしないでください。"
|
||||
RULE_6 = "6. ポルノやフェティッシュなコンテンツは一切禁止されています。これにはMOD、キャラクター、成人向けロールプレイなどが含まれますが、これらに限定されません。"
|
||||
SUBJECT_TO_CHANGE = "これらのルールは今後のアップデートで変更される可能性があります。"
|
||||
NOTICE = "公開ルームでプレイするためにCoopNetへ接続した時点で、あなたはこれらのルールを遵守することに同意したものとみなされます。"
|
||||
RULES = "ルールを見る"
|
||||
|
||||
[MAIN]
|
||||
|
|
@ -310,26 +309,27 @@ LEVEL = "コース"
|
|||
STAFF_ROLL = "スタッフロール"
|
||||
MUSIC = "BGM"
|
||||
RANDOM_STAGE = "ランダムなステージ"
|
||||
PLAY_VANILLA_DEMOS = "バニラゲームのデモを再生"
|
||||
PLAY_VANILLA_DEMOS = "オリジナルゲームのデモを再生"
|
||||
|
||||
[MISC]
|
||||
DEBUG_TITLE = "DEBUG"
|
||||
FIXED_COLLISIONS = "修正された当たり判定"
|
||||
LUA_PROFILER = "Luaのプロファイラー"
|
||||
CTX_PROFILER = "Ctxのプロファイラー"
|
||||
DEBUG_PRINT = "デバッグ情報の表示"
|
||||
DEBUG_INFO = "デバッグの情報"
|
||||
DEBUG_ERRORS = "デバッグのエラー"
|
||||
DEBUG_PRINT = "デバッグログの表示"
|
||||
DEBUG_INFO = "デバッグ情報の表示"
|
||||
DEBUG_ERRORS = "デバッグエラーの表示"
|
||||
MISC_TITLE = "MISC"
|
||||
PAUSE_IN_SINGLEPLAYER = "ソロプレイでの一時停止"
|
||||
PAUSE_IN_SINGLEPLAYER = "1人プレイ中にポーズで一時停止を有効化"
|
||||
DISABLE_POPUPS = "ポップアップを無効にする"
|
||||
USE_STANDARD_KEY_BINDINGS_CHAT = "旧式チャット操作"
|
||||
MENU_OPTIONS = "メニューの設定"
|
||||
INFORMATION = "情報"
|
||||
DEBUG = "デバッグ"
|
||||
LANGUAGE = "言語"
|
||||
COOP_COMPATIBILITY = "sm64ex-coopとの互換性を有効にする"
|
||||
R_BUTTON = "Rボタン - 設定"
|
||||
L_BUTTON = "Lボタン - アクティブなMODを再読み込み"
|
||||
L_BUTTON = "Lボタン - 有効化されたMODを再読み込み"
|
||||
|
||||
[CHAT_OPTIONS]
|
||||
CHAT = "CHAT"
|
||||
|
|
@ -402,7 +402,7 @@ PLAYER_TITLE = "PLAYER"
|
|||
OVERALLS = "オーバーオール"
|
||||
SHIRT = "シャツ"
|
||||
GLOVES = "手袋"
|
||||
SHOES = "くつ"
|
||||
SHOES = "クツ"
|
||||
HAIR = "髪"
|
||||
SKIN = "肌"
|
||||
CAP = "帽子"
|
||||
|
|
@ -439,8 +439,8 @@ MASTER_VOLUME = "主音量"
|
|||
MUSIC_VOLUME = "BGM音量"
|
||||
SFX_VOLUME = "SE音量"
|
||||
ENV_VOLUME = "環境音量"
|
||||
FADEOUT = "遠い音のフェードアウト"
|
||||
MUTE_FOCUS_LOSS = "非フォーカス時にミュート"
|
||||
FADEOUT = "音の距離減衰"
|
||||
MUTE_FOCUS_LOSS = "非フォーカス時に音をミュート"
|
||||
|
||||
[LANGUAGE]
|
||||
LANGUAGE = "LANGUAGE"
|
||||
|
|
@ -459,12 +459,11 @@ Spanish = "スペイン語 (Español)"
|
|||
[LOBBIES]
|
||||
PUBLIC_LOBBIES = "PUBLIC ROOMS"
|
||||
PRIVATE_LOBBIES = "PRIVATE ROOMS"
|
||||
REFRESH = "更新"
|
||||
REFRESH = "更新する"
|
||||
REFRESHING = "更新中…"
|
||||
ENTER_PASSWORD = "部屋のパスワードを入力してください:"
|
||||
ENTER_PASSWORD = "ルームのパスワードを入力してください:"
|
||||
SEARCH = "検索"
|
||||
NONE_FOUND = "部屋が見つかりませんでした"
|
||||
NO_LOBBIES_FOUND = "ロビーは見つからなかった。"
|
||||
NO_LOBBIES_FOUND = "ルームが見つかりませんでした。"
|
||||
|
||||
[CHANGELOG]
|
||||
CHANGELOG_TITLE = "CHANGELOG"
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ CONTROLS = "STEROWANIE"
|
|||
N64_BINDS = "Przypisania N64"
|
||||
EXTRA_BINDS = "Dodatkowe Przypisania"
|
||||
BACKGROUND_GAMEPAD = "Gamepad w Tle"
|
||||
EXTENDED_REPORTS = "Rozszerzone raporty"
|
||||
DISABLE_GAMEPADS = "Wyłącz Gamepady"
|
||||
GAMEPAD = "Gamepad"
|
||||
DEADZONE = "Martwa Strefa"
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ CONTROLS = "CONTROLES"
|
|||
N64_BINDS = "N64"
|
||||
EXTRA_BINDS = "Outros"
|
||||
BACKGROUND_GAMEPAD = "Controle de fundo"
|
||||
EXTENDED_REPORTS = "Relatórios detalhados"
|
||||
DISABLE_GAMEPADS = "Desativar controles"
|
||||
GAMEPAD = "Controle"
|
||||
DEADZONE = "Zona morta"
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ CONTROLS = "CONTROLS"
|
|||
N64_BINDS = "Кнопки N64"
|
||||
EXTRA_BINDS = "Дополнительные кнопки"
|
||||
BACKGROUND_GAMEPAD = "Фоновый ввод"
|
||||
EXTENDED_REPORTS = "Расширенные отчеты"
|
||||
DISABLE_GAMEPADS = "Отключить геймпады"
|
||||
GAMEPAD = "Геймпад"
|
||||
DEADZONE = "Mёртвая зона"
|
||||
|
|
|
|||
|
|
@ -102,6 +102,7 @@ N64_BINDS = "Botones de N64"
|
|||
EXTRA_BINDS = "Botones Adicionales"
|
||||
BACKGROUND_GAMEPAD = "Mando en segundo plano"
|
||||
DISABLE_GAMEPADS = "Desactivar mandos"
|
||||
EXTENDED_REPORTS = "Informes ampliados"
|
||||
GAMEPAD = "Mando"
|
||||
DEADZONE = "Zona muerta"
|
||||
RUMBLE_STRENGTH = "Intensidad de vibración"
|
||||
|
|
|
|||
Binary file not shown.
93
mods/char-select-extra-chars-plus/!class-definitions.lua
Normal file
93
mods/char-select-extra-chars-plus/!class-definitions.lua
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
--- Don't add any functional code to this file ---
|
||||
--- @meta
|
||||
|
||||
--- @class LuigiState
|
||||
|
||||
--- @class ToadState
|
||||
|
||||
--- @class WarioState
|
||||
|
||||
--- @class WaluigiState
|
||||
|
||||
--- @class ToadetteState
|
||||
--- @field public averageForwardVel number
|
||||
|
||||
--- @class PeachState
|
||||
|
||||
--- @class DaisyState
|
||||
|
||||
--- @class YoshiState
|
||||
|
||||
--- @class BirdoState
|
||||
--- @field public spitTimer integer
|
||||
--- @field public framesSinceShoot integer
|
||||
--- @field public flameCharge integer
|
||||
|
||||
--- @class SpikeState
|
||||
|
||||
--- @class PaulineState
|
||||
|
||||
--- @class RosalinaState
|
||||
--- @field public canSpin boolean
|
||||
--- @field public orbitObjActive boolean
|
||||
--- @field public orbitObjDist number
|
||||
--- @field public orbitObjAngle integer
|
||||
|
||||
--- @class WapeachState
|
||||
|
||||
--- @class DonkeyKongState
|
||||
|
||||
--- @class SonicState
|
||||
--- @field public spinCharge integer
|
||||
--- @field public groundYVel integer
|
||||
--- @field public prevForwardVel integer
|
||||
--- @field public peakHeight integer
|
||||
--- @field public actionADone boolean
|
||||
--- @field public actionBDone boolean
|
||||
--- @field public bounced boolean
|
||||
--- @field public spindashState integer
|
||||
--- @field public instashieldTimer integer
|
||||
--- @field public oxygen integer
|
||||
--- @field public prevVelY number
|
||||
--- @field public prevHeight number
|
||||
--- @field public physTimer integer
|
||||
--- @field public lastforwardPos Vec3f
|
||||
--- @field public realFVel number
|
||||
|
||||
--- @class CharacterState
|
||||
--- @field public mario MarioState
|
||||
--- @field public luigi LuigiState
|
||||
--- @field public toad ToadState
|
||||
--- @field public wario WarioState
|
||||
--- @field public waluigi WaluigiState
|
||||
--- @field public toadette ToadetteState
|
||||
--- @field public peach PeachState
|
||||
--- @field public daisy DaisyState
|
||||
--- @field public yoshi YoshiState
|
||||
--- @field public birdo BirdoState
|
||||
--- @field public spike SpikeState
|
||||
--- @field public pauline PaulineState
|
||||
--- @field public rosalina RosalinaState
|
||||
--- @field public wapeach WapeachState
|
||||
--- @field public donkeyKong DonkeyKongState
|
||||
--- @field public sonic SonicState
|
||||
|
||||
--- @alias SonicMouthGSCId
|
||||
--- | `SONIC_MOUTH_NORMAL`
|
||||
--- | `SONIC_MOUTH_FROWN`
|
||||
--- | `SONIC_MOUTH_GRIMACING`
|
||||
--- | `SONIC_MOUTH_HAPPY`
|
||||
--- | `SONIC_MOUTH_GRIN`
|
||||
--- | `SONIC_MOUTH_ATTACKED`
|
||||
--- | `SONIC_MOUTH_SHOCKED`
|
||||
--- | `SONIC_MOUTH_SURPRISED`
|
||||
--- | `SONIC_MOUTH_NEUTRAL`
|
||||
|
||||
--- @alias SonicMouthSideGSCId
|
||||
--- | `SONIC_MOUTH_LEFT`
|
||||
--- | `SONIC_MOUTH_RIGHT`
|
||||
|
||||
--- @alias HandParam
|
||||
--- | `SONIC_HAND_RIGHT`
|
||||
--- | `SONIC_HAND_LEFT`
|
||||
--- | `WAPEACH_HAND_AXE`
|
||||
10
mods/char-select-extra-chars-plus/!environments.lua
Normal file
10
mods/char-select-extra-chars-plus/!environments.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
-- Environment inclusions --
|
||||
--[[
|
||||
We only need to include character select rn
|
||||
]]
|
||||
|
||||
charSelect = charSelect
|
||||
|
||||
if not charSelect then return end
|
||||
_ENV = setmetatable(_G, { __index = charSelect })
|
||||
|
||||
31
mods/char-select-extra-chars-plus/!misc-functions.lua
Normal file
31
mods/char-select-extra-chars-plus/!misc-functions.lua
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
--- Misc Functions ---
|
||||
|
||||
--- @param m MarioState
|
||||
--- @param name string
|
||||
--- @param accel? number
|
||||
--- Plays a custom animation for MarioState `m`
|
||||
function play_custom_anim(m, name, accel)
|
||||
accel = accel or 0x10000
|
||||
|
||||
m.marioObj.header.gfx.animInfo.animAccel = accel
|
||||
|
||||
if (smlua_anim_util_get_current_animation_name(m.marioObj) ~= name or m.marioObj.header.gfx.animInfo.animID ~= -1) then
|
||||
m.marioObj.header.gfx.animInfo.animID = -1
|
||||
set_anim_to_frame(m, 0)
|
||||
end
|
||||
|
||||
smlua_anim_util_set_animation(m.marioObj, name)
|
||||
end
|
||||
|
||||
--- @param str string
|
||||
--- @param splitAt? string
|
||||
function string.split(str, splitAt)
|
||||
if splitAt == nil then
|
||||
splitAt = " "
|
||||
end
|
||||
local result = {}
|
||||
for match in str:gmatch(string.format("[^%s]+", splitAt)) do
|
||||
table.insert(result, match)
|
||||
end
|
||||
return result
|
||||
end
|
||||
148
mods/char-select-extra-chars-plus/a-hitboxes.lua
Normal file
148
mods/char-select-extra-chars-plus/a-hitboxes.lua
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
local colObjLists = { OBJ_LIST_GENACTOR, OBJ_LIST_PUSHABLE, OBJ_LIST_SURFACE, OBJ_LIST_DESTRUCTIVE }
|
||||
|
||||
local bhvBlacklist = {
|
||||
[id_bhvBowser] = true,
|
||||
[id_bhvDoor] = true,
|
||||
[id_bhvDoorWarp] = true,
|
||||
[id_bhvStarDoor] = true,
|
||||
[id_bhvUnlockDoorStar] = true,
|
||||
[id_bhvToadMessage] = true,
|
||||
[id_bhvFireSpitter] = true,
|
||||
[id_bhvExplosion] = true
|
||||
}
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_bounce(o, o2)
|
||||
o2.oVelY = 15.0
|
||||
play_sound(SOUND_ACTION_BONK, o2.header.gfx.cameraToObject)
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_bully(o, o2)
|
||||
o2.oBullyLastNetworkPlayerIndex = o.globalPlayerIndex
|
||||
o2.oMoveAngleYaw = o.oMoveAngleYaw
|
||||
o2.oForwardVel = 30.0
|
||||
|
||||
o2.oInteractStatus = o2.oInteractStatus | ATTACK_FAST_ATTACK | INT_STATUS_WAS_ATTACKED | INT_STATUS_INTERACTED
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_bully_strong(o, o2)
|
||||
o2.oBullyLastNetworkPlayerIndex = o.globalPlayerIndex
|
||||
o2.oMoveAngleYaw = o.oMoveAngleYaw
|
||||
o2.oForwardVel = 50.0
|
||||
o2.oVelY = 30.0
|
||||
|
||||
o2.oInteractStatus = o2.oInteractStatus | ATTACK_FAST_ATTACK | INT_STATUS_WAS_ATTACKED | INT_STATUS_INTERACTED
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_mrblizzard(o, o2)
|
||||
if o2.prevObj then
|
||||
o2.prevObj.oAction = 2
|
||||
o2.prevObj = nil
|
||||
o2.oMrBlizzardHeldObj = nil
|
||||
end
|
||||
o2.oAction = MR_BLIZZARD_ACT_DEATH
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_bullet_bill(o, o2)
|
||||
spawn_mist_particles_with_sound(SOUND_GENERAL2_BOBOMB_EXPLOSION)
|
||||
o2.oAction = 4
|
||||
o2.oTimer = 0
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_chuckya(o, o2)
|
||||
o2.oAction = 2
|
||||
o2.oVelY = 30
|
||||
o2.oMoveAngleYaw = o.oMoveAngleYaw
|
||||
o2.oForwardVel = 25
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_whomp(o, o2)
|
||||
o2.oAction = 8
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_kingbobomb(o, o2)
|
||||
if o2.oFlags & OBJ_FLAG_HOLDABLE ~= 0 and o2.oAction ~= 8 then
|
||||
o2.oVelY = 30
|
||||
o2.oForwardVel = 30
|
||||
o2.oMoveAngleYaw = o.oMoveAngleYaw
|
||||
o2.oMoveFlags = 0
|
||||
o2.oAction = 4
|
||||
end
|
||||
end
|
||||
|
||||
---@param o Object
|
||||
---@param o2 Object
|
||||
local function attack_wooden_post(o, o2)
|
||||
o2.oWoodenPostMarioPounding = 1
|
||||
o2.oWoodenPostSpeedY = -100.0
|
||||
cur_obj_play_sound_2(SOUND_GENERAL_POUND_WOOD_POST)
|
||||
end
|
||||
|
||||
-- lists for edge case interactions
|
||||
|
||||
bhvWapeachAxeAttacks = {
|
||||
[id_bhvSmallBully] = attack_bully_strong,
|
||||
[id_bhvBigBully] = attack_bully_strong,
|
||||
[id_bhvBigBullyWithMinions] = attack_bully_strong,
|
||||
[id_bhvSmallChillBully] = attack_bully_strong,
|
||||
[id_bhvBigChillBully] = attack_bully_strong,
|
||||
[id_bhvMrBlizzard] = attack_mrblizzard,
|
||||
[id_bhvBulletBill] = attack_bullet_bill,
|
||||
[id_bhvSmallWhomp] = attack_whomp,
|
||||
[id_bhvChuckya] = attack_chuckya,
|
||||
[id_bhvWoodenPost] = attack_wooden_post,
|
||||
}
|
||||
|
||||
---@param o Object
|
||||
---@param spAttacksList table<BehaviorId,function>
|
||||
---@param getTarget? boolean
|
||||
function obj_process_attacks(o, spAttacksList, getTarget)
|
||||
-- players
|
||||
if o.oInteractType == 0 then
|
||||
local m = nearest_mario_state_to_object(o)
|
||||
if m and m.playerIndex == 0 and m.marioObj.globalPlayerIndex ~= o.globalPlayerIndex
|
||||
and m.action & (ACT_FLAG_INVULNERABLE | ACT_FLAG_INTANGIBLE) == 0 and m.invincTimer == 0
|
||||
and obj_check_hitbox_overlap(m.marioObj, o) then
|
||||
if spAttacksList[id_bhvMario] then
|
||||
spAttacksList[id_bhvMario](o, m)
|
||||
else
|
||||
take_damage_and_knock_back(m, o)
|
||||
end
|
||||
if getTarget then return m.marioObj end
|
||||
end
|
||||
end
|
||||
-- other objects
|
||||
for i, list in ipairs(colObjLists) do
|
||||
local o2 = obj_get_first(list)
|
||||
while o2 do
|
||||
if o ~= o2 and o2.oInteractStatus & INT_STATUS_INTERACTED == 0 and o2.oIntangibleTimer == 0 and obj_check_hitbox_overlap(o, o2) then
|
||||
local bhv = get_id_from_behavior(o2.behavior)
|
||||
if not bhvBlacklist[bhv] then
|
||||
if spAttacksList[bhv] then
|
||||
spAttacksList[bhv](o, o2)
|
||||
else
|
||||
o2.oInteractStatus = o2.oInteractStatus | ATTACK_FAST_ATTACK | INT_STATUS_WAS_ATTACKED |
|
||||
INT_STATUS_INTERACTED
|
||||
end
|
||||
if getTarget then return o2 end
|
||||
end
|
||||
end
|
||||
o2 = obj_get_next(o2)
|
||||
end
|
||||
end
|
||||
end
|
||||
52
mods/char-select-extra-chars-plus/a-movesets-vars.lua
Normal file
52
mods/char-select-extra-chars-plus/a-movesets-vars.lua
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
--- Vars that all movesets use --
|
||||
|
||||
--- @type CharacterState[]
|
||||
gCharacterStates = {}
|
||||
for i = 0, (MAX_PLAYERS - 1) do
|
||||
gCharacterStates[i] = {}
|
||||
local m = gMarioStates[i]
|
||||
local e = gCharacterStates[i]
|
||||
e.mario = m
|
||||
e.luigi = {}
|
||||
e.toad = {}
|
||||
e.wario = {}
|
||||
e.waluigi = {}
|
||||
e.toadette = {}
|
||||
e.peach = {}
|
||||
e.daisy = {}
|
||||
e.yoshi = {}
|
||||
e.birdo = {}
|
||||
e.spike = {}
|
||||
e.pauline = {}
|
||||
e.rosalina = {}
|
||||
e.wapeach = {}
|
||||
e.donkeyKong = {}
|
||||
e.sonic = {}
|
||||
|
||||
e.toadette.averageForwardVel = 0
|
||||
|
||||
e.birdo.spitTimer = 0
|
||||
e.birdo.framesSinceShoot = 255
|
||||
e.birdo.flameCharge = 0
|
||||
|
||||
e.rosalina.canSpin = true
|
||||
e.rosalina.orbitObjActive = false
|
||||
e.rosalina.orbitObjDist = 0
|
||||
e.rosalina.orbitObjAngle = 0
|
||||
|
||||
e.sonic.spinCharge = 0
|
||||
e.sonic.groundYVel = 0
|
||||
e.sonic.prevForwardVel = 0
|
||||
e.sonic.peakHeight = 0
|
||||
e.sonic.actionADone = false
|
||||
e.sonic.actionBDone = false
|
||||
e.sonic.bounced = false
|
||||
e.sonic.spindashState = 0
|
||||
e.sonic.instashieldTimer = 0
|
||||
e.sonic.oxygen = 900 -- 30 seconds
|
||||
e.sonic.prevVelY = 0
|
||||
e.sonic.prevHeight = 0
|
||||
e.sonic.physTimer = 0
|
||||
e.sonic.lastforwardPos = gVec3fZero()
|
||||
e.sonic.realFVel = 0
|
||||
end
|
||||
BIN
mods/char-select-extra-chars-plus/actors/dizzy_circle_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/dizzy_circle_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/dk_cap_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/dk_cap_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/dk_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/dk_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/dk_metal_cap_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/dk_metal_cap_geo.bin
Normal file
Binary file not shown.
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/dk_wing_cap_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/dk_wing_cap_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/foreman_spike_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/foreman_spike_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/segasonic_cap_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/segasonic_cap_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/segasonic_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/segasonic_geo.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/segasupersonic_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/segasupersonic_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/spike_bomb_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/spike_bomb_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/spike_hammer_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/spike_hammer_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/wapeach_cap_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/wapeach_cap_geo.bin
Normal file
Binary file not shown.
BIN
mods/char-select-extra-chars-plus/actors/wapeach_geo.bin
Normal file
BIN
mods/char-select-extra-chars-plus/actors/wapeach_geo.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue