Update default mods

This commit is contained in:
Agent X 2023-12-24 16:05:21 -05:00
parent c27da0e382
commit a3b48fcf6f
68 changed files with 25 additions and 6589 deletions

View file

@ -452,21 +452,6 @@ endif
# Extra Source Files # # Extra Source Files #
#==============================================================================# #==============================================================================#
# Luigi, wario and toad sounds don't work on 32-bit right now
# And the audio code is so terrible I don't care enough to figure it out at the moment
ifeq ($(TARGET_BITS), 32)
_ := $(shell rm -rf sound/samples/sfx_custom_luigi/*.aiff)
_ := $(shell rm -rf sound/samples/sfx_custom_luigi_peach/*.aiff)
_ := $(shell rm -rf sound/samples/sfx_custom_wario/*.aiff)
_ := $(shell rm -rf sound/samples/sfx_custom_wario_peach/*.aiff)
_ := $(shell rm -rf sound/samples/sfx_custom_toad/*.aiff)
_ := $(shell rm -rf sound/samples/sfx_custom_toad_peach/*.aiff)
# Copy missing character sounds from mario sound banks
_ := $(shell $(PYTHON) $(TOOLS_DIR)/copy_mario_sounds.py)
endif
# Copy missing instrument samples from the music sound banks # Copy missing instrument samples from the music sound banks
_ := $(shell $(PYTHON) $(TOOLS_DIR)/copy_extended_sounds.py) _ := $(shell $(PYTHON) $(TOOLS_DIR)/copy_extended_sounds.py)
@ -997,11 +982,6 @@ export LANG := C
# Extra CC Flags # # Extra CC Flags #
#==============================================================================# #==============================================================================#
# Identify that this is a coop build so that one patch can be applied to EX
# and/or COOP. They can choose to ifdef entity synchronization out.
CC_CHECK_CFLAGS += -DCOOP
CFLAGS += -DCOOP
# Enforce -Werror in strict mode # Enforce -Werror in strict mode
ifeq ($(STRICT),1) ifeq ($(STRICT),1)
CC_CHECK_CFLAGS += -Werror CC_CHECK_CFLAGS += -Werror

View file

@ -81,6 +81,6 @@ end
-- Global Variables -- -- Global Variables --
---------------------- ----------------------
modVersion = "1.5.2" modVersion = "1.5.3"
allowMenu = {} allowMenu = {}

View file

@ -1,9 +0,0 @@
# Day Night Cycle
<a href="http://www.youtube.com/watch?feature=player_embedded&v=2OhIsYoHrlA" target="_blank">
<img src="http://img.youtube.com/vi/2OhIsYoHrlA/mqdefault.jpg" alt="Watch the video" width="640" height="360" border="10" />
</a>
This mod adds a fully featured day night cycle system with night, sunrise, day and sunset to sm64ex-coop. Days last 24 minutes and you can switch to and from 24 hour time with /ampm
Special thanks to AngelicMiracles for the sunset, sunrise and night time skyboxes

View file

@ -1,6 +1,6 @@
-- name: .Day Night Cycle DX -- name: .Day Night Cycle DX
-- incompatible: light -- incompatible: light
-- description: Day Night Cycle DX v2.0\nBy \\#ec7731\\Agent X\n\n\\#dcdcdc\\This mod adds a fully featured day night cycle system with night, sunrise, day and sunset to sm64coopdx. Days last 24 minutes and you can switch to and from 24 hour time with /ampm\n\nSpecial thanks to \\#00ffff\\AngelicMiracles \\#dcdcdc\\for the sunset, sunrise and night time skyboxes -- description: Day Night Cycle DX v2.0\nBy \\#ec7731\\Agent X\n\n\\#dcdcdc\\This mod adds a fully featured day night cycle system with night, sunrise, day and sunset to sm64coopdx. Days last 24 minutes and you can switch to and from 24 hour time with /time 24h\n\nSpecial thanks to \\#00ffff\\AngelicMiracles \\#dcdcdc\\for the sunset, sunrise and night time skyboxes
-- deluxe: true -- deluxe: true
--- @diagnostic disable: undefined-global --- @diagnostic disable: undefined-global

View file

@ -1,24 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout ak47_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SCALE(LAYER_FORCE, 65536),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_mario_set_player_colors),
GEO_ASM(8, geo_mario_set_player_colors),
GEO_SWITCH_CASE(0, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -45, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, ak47_Arm_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, ak47_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,25 +0,0 @@
extern const GeoLayout ak47_geo[];
extern Lights1 ak47_wood_lights;
extern Lights1 ak47_gray_lights;
extern Lights1 ak47_darkgray_lights;
extern Lights1 ak47_darkergray_lights;
extern u8 ak47_wood_rgba16[];
extern u8 ak47_noise_i8[];
extern Vtx ak47_Arm_mesh_layer_1_vtx_0[101];
extern Gfx ak47_Arm_mesh_layer_1_tri_0[];
extern Vtx ak47_Arm_mesh_layer_1_vtx_1[226];
extern Gfx ak47_Arm_mesh_layer_1_tri_1[];
extern Vtx ak47_Arm_mesh_layer_1_vtx_2[4];
extern Gfx ak47_Arm_mesh_layer_1_tri_2[];
extern Vtx ak47_Arm_mesh_layer_1_vtx_3[71];
extern Gfx ak47_Arm_mesh_layer_1_tri_3[];
extern Vtx ak47_Arm_mesh_layer_1_vtx_4[60];
extern Gfx ak47_Arm_mesh_layer_1_tri_4[];
extern Gfx mat_ak47_wood[];
extern Gfx mat_ak47_gray[];
extern Gfx mat_ak47_black_layer1[];
extern Gfx mat_revert_ak47_black_layer1[];
extern Gfx mat_ak47_darkgray[];
extern Gfx mat_ak47_darkergray[];
extern Gfx ak47_Arm_mesh_layer_1[];
extern Gfx ak47_material_revert_render_settings[];

View file

@ -1,905 +0,0 @@
Lights1 ak47_wood_lights = gdSPDefLights1(
0x7F, 0x7F, 0x7F,
0xFF, 0xFF, 0xFF, 0x28, 0x28, 0x28);
Lights1 ak47_gray_lights = gdSPDefLights1(
0x53, 0x53, 0x53,
0xAA, 0xAA, 0xAA, 0x28, 0x28, 0x28);
Lights1 ak47_darkgray_lights = gdSPDefLights1(
0x3B, 0x3B, 0x3B,
0x7C, 0x7C, 0x7C, 0x28, 0x28, 0x28);
Lights1 ak47_darkergray_lights = gdSPDefLights1(
0xF, 0xF, 0xF,
0x2A, 0x2A, 0x2A, 0x28, 0x28, 0x28);
Gfx ak47_wood_rgba16_aligner[] = {gsSPEndDisplayList()};
u8 ak47_wood_rgba16[] = {
#include "actors/ak47/wood.rgba16.inc.c"
};
Gfx ak47_noise_i8_aligner[] = {gsSPEndDisplayList()};
u8 ak47_noise_i8[] = {
#include "actors/ak47/noise.i8.inc.c"
};
Vtx ak47_Arm_mesh_layer_1_vtx_0[101] = {
{{ {119, 40, -12}, 0, {-197, 504}, {161, 28, 176, 255} }},
{{ {119, 22, -12}, 0, {-197, 1006}, {177, 179, 194, 255} }},
{{ {121, 22, 1}, 0, {165, 1006}, {200, 179, 84, 255} }},
{{ {120, 45, -2}, 0, {75, 365}, {188, 89, 59, 255} }},
{{ {121, 40, 1}, 0, {165, 504}, {191, 28, 105, 255} }},
{{ {119, 45, -9}, 0, {-107, 365}, {173, 89, 220, 255} }},
{{ {119, 22, -12}, 0, {165, -639}, {177, 179, 194, 255} }},
{{ {143, 25, -15}, 0, {144, -1330}, {0, 167, 165, 255} }},
{{ {168, 28, -13}, 0, {-16, -2021}, {86, 163, 242, 255} }},
{{ {121, 22, 1}, 0, {-197, -639}, {200, 179, 84, 255} }},
{{ {145, 25, -4}, 0, {-176, -1330}, {28, 167, 86, 255} }},
{{ {143, 25, -15}, 0, {63, -1330}, {0, 167, 165, 255} }},
{{ {119, 22, -12}, 0, {-14, -639}, {177, 179, 194, 255} }},
{{ {119, 40, -12}, 0, {488, -639}, {161, 28, 176, 255} }},
{{ {167, 34, -18}, 0, {309, -2021}, {72, 231, 154, 255} }},
{{ {167, 40, -18}, 0, {488, -2021}, {68, 29, 153, 255} }},
{{ {119, 40, -12}, 0, {488, -639}, {161, 28, 176, 255} }},
{{ {119, 45, -9}, 0, {627, -639}, {173, 89, 220, 255} }},
{{ {167, 40, -18}, 0, {488, -2021}, {68, 29, 153, 255} }},
{{ {168, 44, -16}, 0, {585, -2021}, {72, 88, 199, 255} }},
{{ {143, 25, -15}, 0, {63, -1330}, {0, 167, 165, 255} }},
{{ {167, 34, -18}, 0, {309, -2021}, {72, 231, 154, 255} }},
{{ {168, 28, -13}, 0, {140, -2021}, {86, 163, 242, 255} }},
{{ {168, 28, -13}, 0, {-172, -2021}, {86, 163, 242, 255} }},
{{ {169, 34, -8}, 0, {-341, -2021}, {100, 231, 74, 255} }},
{{ {145, 25, -4}, 0, {-95, -1330}, {28, 167, 86, 255} }},
{{ {169, 40, -8}, 0, {-520, -2021}, {97, 29, 77, 255} }},
{{ {121, 22, 1}, 0, {-18, -639}, {200, 179, 84, 255} }},
{{ {121, 40, 1}, 0, {-520, -639}, {191, 28, 105, 255} }},
{{ {120, 45, -2}, 0, {-659, -639}, {188, 89, 59, 255} }},
{{ {169, 44, -11}, 0, {-617, -2021}, {86, 88, 32, 255} }},
{{ {169, 34, -8}, 0, {-154, 683}, {100, 231, 74, 255} }},
{{ {168, 28, -13}, 0, {-16, 852}, {86, 163, 242, 255} }},
{{ {167, 34, -18}, 0, {122, 683}, {72, 231, 154, 255} }},
{{ {169, 44, -11}, 0, {-85, 407}, {86, 88, 32, 255} }},
{{ {167, 40, -18}, 0, {122, 504}, {68, 29, 153, 255} }},
{{ {168, 44, -16}, 0, {53, 407}, {72, 88, 199, 255} }},
{{ {169, 40, -8}, 0, {-154, 504}, {97, 29, 77, 255} }},
{{ {169, 44, -11}, 0, {53, -2021}, {86, 88, 32, 255} }},
{{ {119, 45, -9}, 0, {-107, -639}, {173, 89, 220, 255} }},
{{ {120, 45, -2}, 0, {75, -639}, {188, 89, 59, 255} }},
{{ {168, 44, -16}, 0, {-85, -2021}, {72, 88, 199, 255} }},
{{ {70, 22, 0}, 0, {-16, 768}, {84, 225, 166, 255} }},
{{ {42, 0, 3}, 0, {-640, 1553}, {153, 24, 186, 255} }},
{{ {53, 22, 3}, 0, {-16, 1248}, {171, 43, 172, 255} }},
{{ {57, -10, 0}, 0, {-937, 1115}, {39, 168, 173, 255} }},
{{ {42, -8, 3}, 0, {-855, 1553}, {166, 190, 195, 255} }},
{{ {57, -10, 0}, 0, {95, 1929}, {39, 168, 173, 255} }},
{{ {70, 22, 0}, 0, {43, 1008}, {84, 225, 166, 255} }},
{{ {70, 22, 4}, 0, {-75, 1008}, {108, 225, 60, 255} }},
{{ {59, -10, 8}, 0, {-127, 1929}, {62, 168, 67, 255} }},
{{ {43, 0, 11}, 0, {95, 1632}, {179, 24, 98, 255} }},
{{ {54, 22, 7}, 0, {43, 1008}, {201, 43, 106, 255} }},
{{ {53, 22, 3}, 0, {-75, 1008}, {171, 43, 172, 255} }},
{{ {42, 0, 3}, 0, {-127, 1632}, {153, 24, 186, 255} }},
{{ {42, -8, 3}, 0, {-127, 1847}, {166, 190, 195, 255} }},
{{ {43, -8, 11}, 0, {95, 1847}, {190, 190, 86, 255} }},
{{ {43, 0, 11}, 0, {608, 1553}, {179, 24, 98, 255} }},
{{ {70, 22, 4}, 0, {-16, 768}, {108, 225, 60, 255} }},
{{ {54, 22, 7}, 0, {-16, 1248}, {201, 43, 106, 255} }},
{{ {59, -10, 8}, 0, {905, 1115}, {62, 168, 67, 255} }},
{{ {43, -8, 11}, 0, {823, 1553}, {190, 190, 86, 255} }},
{{ {57, -10, 0}, 0, {95, 1115}, {39, 168, 173, 255} }},
{{ {59, -10, 8}, 0, {-127, 1115}, {62, 168, 67, 255} }},
{{ {43, -8, 11}, 0, {-127, 1553}, {190, 190, 86, 255} }},
{{ {42, -8, 3}, 0, {95, 1553}, {166, 190, 195, 255} }},
{{ {51, 22, 5}, 0, {-16, 1317}, {202, 141, 8, 255} }},
{{ {52, 38, 10}, 0, {-449, 1317}, {228, 66, 105, 255} }},
{{ {31, 31, 14}, 0, {-263, 1902}, {22, 69, 105, 255} }},
{{ {18, 11, 13}, 0, {314, 2254}, {44, 167, 79, 255} }},
{{ {22, 33, 15}, 0, {-329, 2171}, {18, 90, 87, 255} }},
{{ {-21, 27, 22}, 0, {-159, 3377}, {184, 56, 89, 255} }},
{{ {-15, -1, 18}, 0, {643, 3190}, {218, 162, 76, 255} }},
{{ {51, 22, 5}, 0, {-16, 1317}, {202, 141, 8, 255} }},
{{ {30, 31, 4}, 0, {231, 1902}, {245, 69, 150, 255} }},
{{ {50, 38, 0}, 0, {417, 1317}, {197, 66, 165, 255} }},
{{ {18, 11, 8}, 0, {-346, 2254}, {18, 167, 167, 255} }},
{{ {20, 33, 5}, 0, {297, 2171}, {246, 90, 167, 255} }},
{{ {20, 33, 5}, 0, {297, 2171}, {246, 90, 167, 255} }},
{{ {18, 11, 8}, 0, {-346, 2254}, {18, 167, 167, 255} }},
{{ {-22, 27, 12}, 0, {127, 3377}, {161, 56, 194, 255} }},
{{ {-15, -1, 13}, 0, {-675, 3190}, {196, 162, 195, 255} }},
{{ {51, 22, 5}, 0, {-16, 1317}, {202, 141, 8, 255} }},
{{ {18, 11, 13}, 0, {-87, 2254}, {44, 167, 79, 255} }},
{{ {18, 11, 8}, 0, {55, 2254}, {18, 167, 167, 255} }},
{{ {-15, -1, 13}, 0, {55, 3190}, {196, 162, 195, 255} }},
{{ {-15, -1, 18}, 0, {-87, 3190}, {218, 162, 76, 255} }},
{{ {-22, 27, 12}, 0, {-158, 3377}, {161, 56, 194, 255} }},
{{ {-21, 27, 22}, 0, {126, 3377}, {184, 56, 89, 255} }},
{{ {22, 33, 15}, 0, {126, 2171}, {18, 90, 87, 255} }},
{{ {20, 33, 5}, 0, {-158, 2171}, {246, 90, 167, 255} }},
{{ {30, 31, 4}, 0, {-158, 1902}, {245, 69, 150, 255} }},
{{ {31, 31, 14}, 0, {126, 1902}, {22, 69, 105, 255} }},
{{ {50, 38, 0}, 0, {-158, 1317}, {197, 66, 165, 255} }},
{{ {50, 38, 0}, 0, {-158, 1317}, {197, 66, 165, 255} }},
{{ {31, 31, 14}, 0, {126, 1902}, {22, 69, 105, 255} }},
{{ {52, 38, 10}, 0, {126, 1317}, {228, 66, 105, 255} }},
{{ {-22, 27, 12}, 0, {-158, 865}, {161, 56, 194, 255} }},
{{ {-15, -1, 18}, 0, {55, 1667}, {218, 162, 76, 255} }},
{{ {-21, 27, 22}, 0, {126, 865}, {184, 56, 89, 255} }},
{{ {-15, -1, 13}, 0, {-87, 1667}, {196, 162, 195, 255} }},
};
Gfx ak47_Arm_mesh_layer_1_tri_0[] = {
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(13, 14, 11, 0),
gsSP1Triangle(13, 15, 14, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 16, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(9, 8, 10, 0),
gsSP1Triangle(10, 11, 9, 0),
gsSP1Triangle(10, 12, 11, 0),
gsSP1Triangle(12, 10, 13, 0),
gsSP1Triangle(14, 13, 10, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 31, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(4, 5, 3, 0),
gsSP1Triangle(3, 6, 0, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 10, 8, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(12, 11, 14, 0),
gsSP1Triangle(15, 12, 14, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 47, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 4, 7, 0),
gsSP1Triangle(8, 9, 4, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(11, 10, 13, 0),
gsSP1Triangle(14, 13, 10, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 62, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 7, 4, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(10, 7, 9, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(14, 12, 11, 0),
gsSP1Triangle(14, 15, 12, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 78, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(7, 6, 5, 0),
gsSP1Triangle(7, 5, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(11, 13, 12, 0),
gsSP1Triangle(11, 14, 13, 0),
gsSP1Triangle(15, 13, 14, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_0 + 94, 7, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 6, 4, 0),
gsSPEndDisplayList(),
};
Vtx ak47_Arm_mesh_layer_1_vtx_1[226] = {
{{ {218, 32, -19}, 0, {-85, 746}, {125, 0, 236, 255} }},
{{ {218, 29, -20}, 0, {-37, 828}, {125, 0, 236, 255} }},
{{ {218, 35, -20}, 0, {-37, 664}, {125, 0, 236, 255} }},
{{ {218, 29, -24}, 0, {58, 828}, {125, 0, 236, 255} }},
{{ {217, 32, -25}, 0, {105, 746}, {125, 0, 236, 255} }},
{{ {218, 35, -24}, 0, {58, 664}, {125, 0, 236, 255} }},
{{ {52, 22, 10}, 0, {126, 1008}, {195, 183, 84, 255} }},
{{ {52, 38, 10}, 0, {126, 575}, {228, 66, 105, 255} }},
{{ {51, 22, 5}, 0, {-16, 1008}, {202, 141, 8, 255} }},
{{ {50, 22, 0}, 0, {-158, 1008}, {172, 183, 195, 255} }},
{{ {50, 38, 0}, 0, {-158, 575}, {197, 66, 165, 255} }},
{{ {90, 36, 4}, 0, {126, 218}, {0, 127, 0, 255} }},
{{ {98, 36, 8}, 0, {277, 24}, {0, 127, 0, 255} }},
{{ {95, 36, 1}, 0, {65, 71}, {0, 127, 0, 255} }},
{{ {90, 34, 4}, 0, {-158, 218}, {0, 129, 0, 255} }},
{{ {95, 34, 1}, 0, {-97, 71}, {0, 129, 0, 255} }},
{{ {98, 34, 8}, 0, {-309, 24}, {0, 129, 0, 255} }},
{{ {193, 37, -16}, 0, {9, 582}, {131, 0, 20, 255} }},
{{ {193, 39, -17}, 0, {-17, 538}, {131, 0, 20, 255} }},
{{ {193, 39, -19}, 0, {-68, 538}, {131, 0, 20, 255} }},
{{ {193, 36, -19}, 0, {-68, 627}, {131, 0, 20, 255} }},
{{ {193, 37, -20}, 0, {-94, 582}, {131, 0, 20, 255} }},
{{ {193, 36, -17}, 0, {-17, 627}, {131, 0, 20, 255} }},
{{ {156, 39, -13}, 0, {-68, -1673}, {246, 110, 193, 255} }},
{{ {156, 39, -11}, 0, {-17, -1673}, {10, 110, 63, 255} }},
{{ {193, 39, -17}, 0, {-17, -2728}, {10, 110, 63, 255} }},
{{ {193, 39, -19}, 0, {-68, -2728}, {246, 110, 193, 255} }},
{{ {156, 39, -11}, 0, {-486, -1673}, {10, 110, 63, 255} }},
{{ {193, 37, -16}, 0, {-442, -2728}, {20, 0, 125, 255} }},
{{ {193, 39, -17}, 0, {-486, -2728}, {10, 110, 63, 255} }},
{{ {156, 39, -11}, 0, {-486, -1673}, {10, 110, 63, 255} }},
{{ {156, 37, -10}, 0, {-442, -1673}, {20, 0, 125, 255} }},
{{ {193, 37, -16}, 0, {-442, -2728}, {20, 0, 125, 255} }},
{{ {193, 36, -17}, 0, {-397, -2728}, {10, 146, 63, 255} }},
{{ {156, 36, -11}, 0, {-397, -1673}, {10, 146, 63, 255} }},
{{ {193, 35, -16}, 0, {5, 664}, {131, 0, 20, 255} }},
{{ {193, 37, -15}, 0, {53, 582}, {131, 0, 20, 255} }},
{{ {193, 40, -16}, 0, {5, 500}, {131, 0, 20, 255} }},
{{ {192, 37, -21}, 0, {-137, 582}, {131, 0, 20, 255} }},
{{ {193, 40, -20}, 0, {-90, 500}, {131, 0, 20, 255} }},
{{ {193, 35, -20}, 0, {-90, 664}, {131, 0, 20, 255} }},
{{ {193, 32, -15}, 0, {53, 746}, {131, 0, 20, 255} }},
{{ {193, 29, -20}, 0, {-90, 828}, {131, 0, 20, 255} }},
{{ {192, 32, -21}, 0, {-137, 746}, {131, 0, 20, 255} }},
{{ {193, 29, -16}, 0, {5, 828}, {131, 0, 20, 255} }},
{{ {193, 35, -16}, 0, {-360, -2728}, {17, 192, 109, 255} }},
{{ {206, 35, -18}, 0, {-360, -3083}, {17, 192, 109, 255} }},
{{ {206, 37, -17}, 0, {-442, -3083}, {17, 192, 109, 255} }},
{{ {193, 37, -15}, 0, {-442, -2728}, {17, 192, 109, 255} }},
{{ {218, 35, -20}, 0, {-360, -3439}, {17, 64, 109, 255} }},
{{ {206, 35, -18}, 0, {-360, -3083}, {17, 64, 109, 255} }},
{{ {193, 35, -16}, 0, {-360, -2728}, {17, 64, 109, 255} }},
{{ {218, 32, -19}, 0, {-278, -3439}, {17, 64, 109, 255} }},
{{ {193, 32, -15}, 0, {-278, -2728}, {17, 64, 109, 255} }},
{{ {192, 37, -21}, 0, {410, -2728}, {239, 192, 147, 255} }},
{{ {205, 35, -22}, 0, {328, -3083}, {239, 192, 147, 255} }},
{{ {193, 35, -20}, 0, {328, -2728}, {239, 192, 147, 255} }},
{{ {205, 37, -23}, 0, {410, -3083}, {239, 192, 147, 255} }},
{{ {193, 35, -20}, 0, {328, -2728}, {239, 64, 147, 255} }},
{{ {205, 35, -22}, 0, {328, -3083}, {239, 64, 147, 255} }},
{{ {218, 35, -24}, 0, {328, -3439}, {239, 64, 147, 255} }},
{{ {218, 35, -24}, 0, {328, -3439}, {239, 64, 147, 255} }},
{{ {192, 32, -21}, 0, {246, -2728}, {239, 64, 147, 255} }},
{{ {193, 35, -20}, 0, {328, -2728}, {239, 64, 147, 255} }},
{{ {217, 32, -25}, 0, {246, -3439}, {239, 64, 147, 255} }},
{{ {193, 40, -16}, 0, {5, -2728}, {0, 127, 0, 255} }},
{{ {206, 40, -18}, 0, {5, -3083}, {0, 127, 0, 255} }},
{{ {205, 40, -22}, 0, {-90, -3083}, {0, 127, 0, 255} }},
{{ {193, 40, -20}, 0, {-90, -2728}, {0, 127, 0, 255} }},
{{ {193, 37, -15}, 0, {-442, -2728}, {17, 64, 109, 255} }},
{{ {206, 40, -18}, 0, {-524, -3083}, {17, 64, 109, 255} }},
{{ {193, 40, -16}, 0, {-524, -2728}, {17, 64, 109, 255} }},
{{ {206, 37, -17}, 0, {-442, -3083}, {17, 64, 109, 255} }},
{{ {156, 36, -11}, 0, {-15, -1673}, {10, 146, 63, 255} }},
{{ {193, 36, -19}, 0, {36, -2728}, {246, 146, 193, 255} }},
{{ {193, 36, -17}, 0, {-15, -2728}, {10, 146, 63, 255} }},
{{ {156, 36, -13}, 0, {36, -1673}, {246, 146, 193, 255} }},
{{ {156, 36, -13}, 0, {365, -1673}, {246, 146, 193, 255} }},
{{ {193, 37, -20}, 0, {410, -2728}, {236, 0, 131, 255} }},
{{ {193, 36, -19}, 0, {365, -2728}, {246, 146, 193, 255} }},
{{ {156, 37, -14}, 0, {410, -1673}, {236, 0, 131, 255} }},
{{ {193, 39, -19}, 0, {454, -2728}, {246, 110, 193, 255} }},
{{ {156, 39, -13}, 0, {454, -1673}, {246, 110, 193, 255} }},
{{ {156, 30, -13}, 0, {201, -1673}, {246, 146, 193, 255} }},
{{ {193, 32, -20}, 0, {246, -2728}, {236, 0, 131, 255} }},
{{ {193, 30, -19}, 0, {201, -2728}, {246, 146, 193, 255} }},
{{ {156, 32, -14}, 0, {246, -1673}, {236, 0, 131, 255} }},
{{ {156, 33, -13}, 0, {290, -1673}, {246, 110, 193, 255} }},
{{ {193, 33, -19}, 0, {290, -2728}, {246, 110, 193, 255} }},
{{ {156, 30, -11}, 0, {-15, -1673}, {10, 146, 63, 255} }},
{{ {156, 30, -13}, 0, {36, -1673}, {246, 146, 193, 255} }},
{{ {193, 30, -19}, 0, {36, -2728}, {246, 146, 193, 255} }},
{{ {193, 30, -17}, 0, {-15, -2728}, {10, 146, 63, 255} }},
{{ {156, 32, -10}, 0, {-278, -1673}, {20, 0, 125, 255} }},
{{ {156, 30, -11}, 0, {-233, -1673}, {10, 146, 63, 255} }},
{{ {193, 30, -17}, 0, {-233, -2728}, {10, 146, 63, 255} }},
{{ {193, 32, -16}, 0, {-278, -2728}, {20, 0, 125, 255} }},
{{ {156, 33, -11}, 0, {-322, -1673}, {10, 110, 63, 255} }},
{{ {193, 33, -17}, 0, {-322, -2728}, {10, 110, 63, 255} }},
{{ {193, 29, -20}, 0, {58, -2728}, {0, 129, 0, 255} }},
{{ {218, 29, -24}, 0, {58, -3439}, {0, 129, 0, 255} }},
{{ {218, 29, -20}, 0, {-37, -3439}, {0, 129, 0, 255} }},
{{ {193, 29, -16}, 0, {-37, -2728}, {0, 129, 0, 255} }},
{{ {193, 29, -20}, 0, {164, -2728}, {239, 192, 147, 255} }},
{{ {192, 32, -21}, 0, {246, -2728}, {239, 192, 147, 255} }},
{{ {217, 32, -25}, 0, {246, -3439}, {239, 192, 147, 255} }},
{{ {218, 29, -24}, 0, {164, -3439}, {239, 192, 147, 255} }},
{{ {193, 40, -20}, 0, {492, -2728}, {239, 64, 147, 255} }},
{{ {205, 37, -23}, 0, {410, -3083}, {239, 64, 147, 255} }},
{{ {192, 37, -21}, 0, {410, -2728}, {239, 64, 147, 255} }},
{{ {205, 40, -22}, 0, {492, -3083}, {239, 64, 147, 255} }},
{{ {205, 37, -22}, 0, {58, 583}, {125, 0, 236, 255} }},
{{ {205, 37, -23}, 0, {105, 582}, {125, 0, 236, 255} }},
{{ {205, 40, -22}, 0, {58, 500}, {125, 0, 236, 255} }},
{{ {205, 35, -22}, 0, {58, 664}, {125, 0, 236, 255} }},
{{ {211, 49, -23}, 0, {-90, 251}, {154, 74, 16, 255} }},
{{ {205, 40, -22}, 0, {-90, 500}, {154, 74, 16, 255} }},
{{ {206, 40, -18}, 0, {5, 500}, {154, 74, 16, 255} }},
{{ {212, 49, -19}, 0, {5, 251}, {154, 74, 16, 255} }},
{{ {193, 32, -15}, 0, {-278, -2728}, {17, 192, 109, 255} }},
{{ {193, 29, -16}, 0, {-196, -2728}, {17, 192, 109, 255} }},
{{ {218, 29, -20}, 0, {-196, -3439}, {17, 192, 109, 255} }},
{{ {218, 32, -19}, 0, {-278, -3439}, {17, 192, 109, 255} }},
{{ {206, 40, -18}, 0, {-37, 500}, {125, 0, 236, 255} }},
{{ {206, 37, -17}, 0, {-85, 582}, {125, 0, 236, 255} }},
{{ {206, 35, -18}, 0, {-37, 664}, {125, 0, 236, 255} }},
{{ {206, 37, -18}, 0, {-37, 583}, {125, 0, 236, 255} }},
{{ {206, 35, -18}, 0, {-360, -3083}, {20, 0, 125, 255} }},
{{ {218, 35, -20}, 0, {-360, -3439}, {20, 0, 125, 255} }},
{{ {218, 37, -20}, 0, {-441, -3439}, {20, 0, 125, 255} }},
{{ {209, 37, -19}, 0, {-441, -3165}, {20, 0, 125, 255} }},
{{ {215, 37, -20}, 0, {-441, -3357}, {20, 0, 125, 255} }},
{{ {218, 49, -20}, 0, {-773, -3439}, {20, 0, 125, 255} }},
{{ {215, 46, -20}, 0, {-691, -3357}, {20, 0, 125, 255} }},
{{ {213, 46, -20}, 0, {-691, -3303}, {20, 0, 125, 255} }},
{{ {212, 49, -19}, 0, {-773, -3261}, {20, 0, 125, 255} }},
{{ {206, 37, -18}, 0, {-441, -3083}, {20, 0, 125, 255} }},
{{ {206, 40, -18}, 0, {-524, -3083}, {20, 0, 125, 255} }},
{{ {209, 39, -19}, 0, {-498, -3165}, {20, 0, 125, 255} }},
{{ {218, 35, -24}, 0, {328, -3439}, {236, 0, 131, 255} }},
{{ {205, 35, -22}, 0, {328, -3083}, {236, 0, 131, 255} }},
{{ {205, 37, -22}, 0, {409, -3083}, {236, 0, 131, 255} }},
{{ {208, 37, -22}, 0, {409, -3165}, {236, 0, 131, 255} }},
{{ {205, 40, -22}, 0, {492, -3083}, {236, 0, 131, 255} }},
{{ {208, 39, -22}, 0, {466, -3165}, {236, 0, 131, 255} }},
{{ {213, 46, -23}, 0, {659, -3303}, {236, 0, 131, 255} }},
{{ {211, 49, -23}, 0, {741, -3261}, {236, 0, 131, 255} }},
{{ {218, 49, -24}, 0, {741, -3439}, {236, 0, 131, 255} }},
{{ {215, 46, -23}, 0, {659, -3357}, {236, 0, 131, 255} }},
{{ {215, 37, -23}, 0, {409, -3357}, {236, 0, 131, 255} }},
{{ {218, 37, -24}, 0, {409, -3439}, {236, 0, 131, 255} }},
{{ {212, 49, -19}, 0, {5, -3261}, {0, 127, 0, 255} }},
{{ {218, 49, -20}, 0, {5, -3439}, {0, 127, 0, 255} }},
{{ {218, 49, -24}, 0, {-90, -3439}, {0, 127, 0, 255} }},
{{ {211, 49, -23}, 0, {-90, -3261}, {0, 127, 0, 255} }},
{{ {218, 37, -24}, 0, {58, 583}, {125, 0, 236, 255} }},
{{ {218, 49, -24}, 0, {58, 251}, {125, 0, 236, 255} }},
{{ {218, 49, -20}, 0, {-37, 251}, {125, 0, 236, 255} }},
{{ {218, 37, -20}, 0, {-37, 583}, {125, 0, 236, 255} }},
{{ {218, 35, -24}, 0, {58, 664}, {125, 0, 236, 255} }},
{{ {218, 35, -20}, 0, {-37, 664}, {125, 0, 236, 255} }},
{{ {209, 37, -19}, 0, {5, -3165}, {0, 127, 0, 255} }},
{{ {215, 37, -20}, 0, {5, -3357}, {0, 127, 0, 255} }},
{{ {215, 37, -23}, 0, {-90, -3357}, {0, 127, 0, 255} }},
{{ {208, 37, -22}, 0, {-90, -3165}, {0, 127, 0, 255} }},
{{ {209, 39, -19}, 0, {-37, 526}, {125, 0, 236, 255} }},
{{ {209, 37, -19}, 0, {-37, 583}, {125, 0, 236, 255} }},
{{ {208, 37, -22}, 0, {58, 583}, {125, 0, 236, 255} }},
{{ {208, 39, -22}, 0, {58, 526}, {125, 0, 236, 255} }},
{{ {215, 37, -20}, 0, {5, 583}, {131, 0, 20, 255} }},
{{ {215, 46, -23}, 0, {-90, 333}, {131, 0, 20, 255} }},
{{ {215, 37, -23}, 0, {-90, 583}, {131, 0, 20, 255} }},
{{ {215, 46, -20}, 0, {5, 333}, {131, 0, 20, 255} }},
{{ {213, 46, -20}, 0, {-37, 333}, {102, 182, 240, 255} }},
{{ {209, 39, -19}, 0, {-37, 526}, {102, 182, 240, 255} }},
{{ {208, 39, -22}, 0, {58, 526}, {102, 182, 240, 255} }},
{{ {213, 46, -23}, 0, {58, 333}, {102, 182, 240, 255} }},
{{ {215, 46, -20}, 0, {-37, -3357}, {0, 129, 0, 255} }},
{{ {213, 46, -20}, 0, {-37, -3303}, {0, 129, 0, 255} }},
{{ {213, 46, -23}, 0, {58, -3303}, {0, 129, 0, 255} }},
{{ {215, 46, -23}, 0, {58, -3357}, {0, 129, 0, 255} }},
{{ {156, 33, -13}, 0, {-68, -1673}, {246, 110, 193, 255} }},
{{ {193, 33, -17}, 0, {-17, -2728}, {10, 110, 63, 255} }},
{{ {193, 33, -19}, 0, {-68, -2728}, {246, 110, 193, 255} }},
{{ {156, 33, -11}, 0, {-17, -1673}, {10, 110, 63, 255} }},
{{ {51, 22, 5}, 0, {-16, 1317}, {202, 141, 8, 255} }},
{{ {50, 22, 0}, 0, {126, 1317}, {172, 183, 195, 255} }},
{{ {89, 22, -6}, 0, {126, 203}, {245, 165, 168, 255} }},
{{ {52, 22, 10}, 0, {-158, 1317}, {195, 183, 84, 255} }},
{{ {91, 22, 4}, 0, {-158, 203}, {17, 165, 87, 255} }},
{{ {139, 26, -4}, 0, {-158, -1178}, {21, 168, 90, 255} }},
{{ {138, 26, -13}, 0, {126, -1178}, {248, 168, 164, 255} }},
{{ {52, 38, 10}, 0, {-449, 1317}, {228, 66, 105, 255} }},
{{ {52, 22, 10}, 0, {-16, 1317}, {195, 183, 84, 255} }},
{{ {91, 22, 4}, 0, {-16, 203}, {17, 165, 87, 255} }},
{{ {139, 38, -4}, 0, {-449, -1178}, {19, 27, 122, 255} }},
{{ {139, 26, -4}, 0, {-117, -1178}, {21, 168, 90, 255} }},
{{ {139, 44, -6}, 0, {-617, -1178}, {11, 107, 68, 255} }},
{{ {57, 44, 7}, 0, {-617, 1149}, {229, 107, 63, 255} }},
{{ {50, 38, 0}, 0, {-158, 1317}, {197, 66, 165, 255} }},
{{ {52, 38, 10}, 0, {126, 1317}, {228, 66, 105, 255} }},
{{ {57, 44, 7}, 0, {48, 1149}, {229, 107, 63, 255} }},
{{ {56, 44, 2}, 0, {-80, 1149}, {211, 107, 205, 255} }},
{{ {139, 44, -6}, 0, {48, -1178}, {11, 107, 68, 255} }},
{{ {138, 44, -11}, 0, {-80, -1178}, {245, 107, 188, 255} }},
{{ {138, 26, -13}, 0, {85, -1178}, {248, 168, 164, 255} }},
{{ {89, 22, -6}, 0, {-16, 203}, {245, 165, 168, 255} }},
{{ {50, 22, 0}, 0, {-16, 1317}, {172, 183, 195, 255} }},
{{ {138, 38, -13}, 0, {417, -1178}, {237, 27, 134, 255} }},
{{ {50, 38, 0}, 0, {417, 1317}, {197, 66, 165, 255} }},
{{ {56, 44, 2}, 0, {585, 1149}, {211, 107, 205, 255} }},
{{ {138, 44, -11}, 0, {585, -1178}, {245, 107, 188, 255} }},
{{ {90, 36, 4}, 0, {375, 218}, {190, 0, 148, 255} }},
{{ {95, 36, 1}, 0, {375, 71}, {190, 0, 148, 255} }},
{{ {95, 34, 1}, 0, {305, 71}, {190, 0, 148, 255} }},
{{ {90, 36, 4}, 0, {375, 218}, {190, 0, 148, 255} }},
{{ {95, 34, 1}, 0, {305, 71}, {190, 0, 148, 255} }},
{{ {90, 34, 4}, 0, {305, 218}, {190, 0, 148, 255} }},
{{ {98, 36, 8}, 0, {-407, 24}, {195, 0, 111, 255} }},
{{ {90, 36, 4}, 0, {-407, 218}, {195, 0, 111, 255} }},
{{ {90, 34, 4}, 0, {-337, 218}, {195, 0, 111, 255} }},
{{ {98, 34, 8}, 0, {-337, 24}, {195, 0, 111, 255} }},
{{ {95, 36, 1}, 0, {-97, 617}, {118, 0, 209, 255} }},
{{ {98, 36, 8}, 0, {-309, 617}, {118, 0, 209, 255} }},
{{ {98, 34, 8}, 0, {-309, 687}, {118, 0, 209, 255} }},
{{ {95, 34, 1}, 0, {-97, 687}, {118, 0, 209, 255} }},
};
Gfx ak47_Arm_mesh_layer_1_tri_1[] = {
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 0, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 8, 10, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 14, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 3, 5, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(6, 8, 3, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 30, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(1, 4, 3, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(7, 8, 5, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(8, 10, 5, 0),
gsSP1Triangle(11, 5, 10, 0),
gsSP1Triangle(12, 11, 10, 0),
gsSP1Triangle(10, 13, 12, 0),
gsSP1Triangle(12, 14, 11, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 45, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(6, 7, 4, 0),
gsSP1Triangle(6, 8, 7, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 12, 10, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 61, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 11, 9, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 15, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 77, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 9, 7, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(7, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 93, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 107, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 123, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(7, 4, 6, 0),
gsSP1Triangle(6, 8, 7, 0),
gsSP1Triangle(8, 6, 9, 0),
gsSP1Triangle(10, 8, 9, 0),
gsSP1Triangle(11, 10, 9, 0),
gsSP1Triangle(9, 12, 11, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(13, 15, 11, 0),
gsSP1Triangle(13, 7, 15, 0),
gsSP1Triangle(7, 13, 4, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 139, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(5, 3, 4, 0),
gsSP1Triangle(6, 5, 4, 0),
gsSP1Triangle(4, 7, 6, 0),
gsSP1Triangle(7, 8, 6, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(8, 11, 10, 0),
gsSP1Triangle(10, 11, 0, 0),
gsSP1Triangle(3, 10, 0, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 155, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 169, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 15, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 185, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(5, 4, 2, 0),
gsSP1Triangle(5, 2, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(9, 10, 7, 0),
gsSP1Triangle(9, 11, 10, 0),
gsSP1Triangle(7, 10, 12, 0),
gsSP1Triangle(7, 12, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 199, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_1 + 215, 11, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSPEndDisplayList(),
};
Vtx ak47_Arm_mesh_layer_1_vtx_2[4] = {
{{ {218, 29, -20}, 0, {-37, 828}, {125, 0, 236, 255} }},
{{ {218, 29, -24}, 0, {58, 828}, {125, 0, 236, 255} }},
{{ {218, 35, -20}, 0, {-37, 664}, {125, 0, 236, 255} }},
{{ {218, 35, -24}, 0, {58, 664}, {125, 0, 236, 255} }},
};
Gfx ak47_Arm_mesh_layer_1_tri_2[] = {
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_2 + 0, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSPEndDisplayList(),
};
Vtx ak47_Arm_mesh_layer_1_vtx_3[71] = {
{{ {73, 18, 1}, 0, {-125, 678}, {183, 188, 177, 255} }},
{{ {75, 15, 1}, 0, {-218, 619}, {183, 188, 177, 255} }},
{{ {72, 18, 2}, 0, {-125, 724}, {183, 188, 177, 255} }},
{{ {75, 15, 1}, 0, {-10, 1210}, {106, 68, 239, 255} }},
{{ {73, 18, 1}, 0, {21, 1117}, {106, 68, 239, 255} }},
{{ {73, 18, 3}, 0, {-40, 1117}, {106, 68, 239, 255} }},
{{ {75, 15, 1}, 0, {186, 619}, {211, 188, 97, 255} }},
{{ {73, 18, 3}, 0, {93, 678}, {211, 188, 97, 255} }},
{{ {72, 18, 2}, 0, {93, 724}, {211, 188, 97, 255} }},
{{ {70, 14, 4}, 0, {-67, 768}, {0, 129, 0, 255} }},
{{ {70, 14, 1}, 0, {35, 768}, {0, 129, 0, 255} }},
{{ {79, 14, -1}, 0, {35, 512}, {0, 129, 0, 255} }},
{{ {79, 14, 3}, 0, {-67, 512}, {0, 129, 0, 255} }},
{{ {67, 18, 5}, 0, {35, 1136}, {166, 167, 14, 255} }},
{{ {70, 14, 1}, 0, {-67, 1238}, {166, 167, 14, 255} }},
{{ {70, 14, 4}, 0, {35, 1238}, {166, 167, 14, 255} }},
{{ {67, 18, 5}, 0, {35, 1136}, {166, 167, 14, 255} }},
{{ {66, 18, 1}, 0, {-67, 1136}, {166, 167, 14, 255} }},
{{ {70, 14, 1}, 0, {-67, 1238}, {166, 167, 14, 255} }},
{{ {70, 15, 2}, 0, {-16, 760}, {7, 118, 45, 255} }},
{{ {70, 14, 4}, 0, {35, 768}, {7, 118, 45, 255} }},
{{ {79, 14, 3}, 0, {35, 512}, {7, 118, 45, 255} }},
{{ {79, 15, 1}, 0, {-16, 522}, {7, 118, 45, 255} }},
{{ {67, 18, 3}, 0, {-16, 1128}, {91, 83, 32, 255} }},
{{ {67, 18, 5}, 0, {-67, 1136}, {91, 83, 32, 255} }},
{{ {70, 14, 4}, 0, {-67, 1238}, {91, 83, 32, 255} }},
{{ {70, 15, 2}, 0, {-16, 1218}, {91, 83, 32, 255} }},
{{ {79, 14, 3}, 0, {-67, 1238}, {97, 176, 241, 255} }},
{{ {79, 14, -1}, 0, {35, 1238}, {97, 176, 241, 255} }},
{{ {82, 18, -1}, 0, {35, 1136}, {97, 176, 241, 255} }},
{{ {82, 18, 2}, 0, {-67, 1136}, {97, 176, 241, 255} }},
{{ {79, 15, 1}, 0, {-16, 1218}, {172, 75, 60, 255} }},
{{ {79, 14, 3}, 0, {35, 1238}, {172, 75, 60, 255} }},
{{ {82, 18, 2}, 0, {35, 1136}, {172, 75, 60, 255} }},
{{ {81, 18, 1}, 0, {-16, 1129}, {172, 75, 60, 255} }},
{{ {70, 14, 1}, 0, {-67, 768}, {249, 118, 211, 255} }},
{{ {79, 15, 1}, 0, {-16, 522}, {249, 118, 211, 255} }},
{{ {79, 14, -1}, 0, {-67, 512}, {249, 118, 211, 255} }},
{{ {70, 15, 2}, 0, {-16, 760}, {249, 118, 211, 255} }},
{{ {79, 14, -1}, 0, {-67, 1238}, {158, 75, 225, 255} }},
{{ {79, 15, 1}, 0, {-16, 1218}, {158, 75, 225, 255} }},
{{ {81, 18, 1}, 0, {-16, 1129}, {158, 75, 225, 255} }},
{{ {82, 18, -1}, 0, {-67, 1136}, {158, 75, 225, 255} }},
{{ {66, 18, 1}, 0, {35, 1136}, {77, 83, 197, 255} }},
{{ {67, 18, 3}, 0, {-16, 1128}, {77, 83, 197, 255} }},
{{ {70, 15, 2}, 0, {-16, 1218}, {77, 83, 197, 255} }},
{{ {70, 14, 1}, 0, {35, 1238}, {77, 83, 197, 255} }},
{{ {82, 18, -1}, 0, {-67, 1136}, {132, 0, 229, 255} }},
{{ {81, 18, 1}, 0, {-16, 1129}, {132, 0, 229, 255} }},
{{ {81, 25, 1}, 0, {-16, 944}, {132, 0, 229, 255} }},
{{ {82, 25, -1}, 0, {-67, 944}, {132, 0, 229, 255} }},
{{ {81, 18, 1}, 0, {-16, 1129}, {146, 0, 64, 255} }},
{{ {82, 18, 2}, 0, {35, 1136}, {146, 0, 64, 255} }},
{{ {82, 25, 2}, 0, {35, 944}, {146, 0, 64, 255} }},
{{ {81, 25, 1}, 0, {-16, 944}, {146, 0, 64, 255} }},
{{ {82, 18, 2}, 0, {-67, 1136}, {125, 0, 236, 255} }},
{{ {82, 18, -1}, 0, {35, 1136}, {125, 0, 236, 255} }},
{{ {82, 25, -1}, 0, {35, 944}, {125, 0, 236, 255} }},
{{ {82, 25, 2}, 0, {-67, 944}, {125, 0, 236, 255} }},
{{ {73, 24, 3}, 0, {-52, 678}, {203, 0, 115, 255} }},
{{ {72, 24, 2}, 0, {-52, 724}, {203, 0, 115, 255} }},
{{ {72, 18, 2}, 0, {93, 724}, {203, 0, 115, 255} }},
{{ {73, 18, 3}, 0, {93, 678}, {203, 0, 115, 255} }},
{{ {72, 24, 2}, 0, {20, 724}, {170, 0, 163, 255} }},
{{ {73, 24, 1}, 0, {20, 678}, {170, 0, 163, 255} }},
{{ {73, 18, 1}, 0, {-125, 678}, {170, 0, 163, 255} }},
{{ {72, 18, 2}, 0, {-125, 724}, {170, 0, 163, 255} }},
{{ {73, 18, 1}, 0, {21, 1117}, {125, 0, 236, 255} }},
{{ {73, 24, 1}, 0, {21, 972}, {125, 0, 236, 255} }},
{{ {73, 24, 3}, 0, {-40, 972}, {125, 0, 236, 255} }},
{{ {73, 18, 3}, 0, {-40, 1117}, {125, 0, 236, 255} }},
};
Gfx ak47_Arm_mesh_layer_1_tri_3[] = {
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_3 + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_3 + 16, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_3 + 31, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_3 + 47, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_3 + 63, 8, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSPEndDisplayList(),
};
Vtx ak47_Arm_mesh_layer_1_vtx_4[60] = {
{{ {91, 22, -4}, 0, {-13, 165}, {236, 0, 131, 255} }},
{{ {90, 28, -4}, 0, {150, 177}, {236, 0, 131, 255} }},
{{ {108, 29, -7}, 0, {185, -310}, {236, 0, 131, 255} }},
{{ {108, 24, -7}, 0, {22, -322}, {236, 0, 131, 255} }},
{{ {111, 8, -7}, 0, {-419, -402}, {236, 0, 131, 255} }},
{{ {103, -14, -6}, 0, {-1042, -187}, {236, 0, 131, 255} }},
{{ {118, -6, -8}, 0, {-813, -618}, {236, 0, 131, 255} }},
{{ {129, -17, -10}, 0, {-1108, -931}, {236, 0, 131, 255} }},
{{ {117, -29, -8}, 0, {-1454, -587}, {236, 0, 131, 255} }},
{{ {94, 3, -5}, 0, {-548, 68}, {236, 0, 131, 255} }},
{{ {91, 22, -4}, 0, {-101, 1005}, {131, 247, 20, 255} }},
{{ {91, 28, 2}, 0, {69, 842}, {131, 247, 20, 255} }},
{{ {90, 28, -4}, 0, {-101, 842}, {131, 247, 20, 255} }},
{{ {92, 22, 2}, 0, {69, 1005}, {131, 247, 20, 255} }},
{{ {108, 29, -7}, 0, {-101, -310}, {247, 127, 1, 255} }},
{{ {90, 28, -4}, 0, {-101, 177}, {247, 127, 1, 255} }},
{{ {91, 28, 2}, 0, {69, 177}, {247, 127, 1, 255} }},
{{ {109, 29, -1}, 0, {69, -310}, {247, 127, 1, 255} }},
{{ {111, 8, -7}, 0, {69, 1411}, {110, 61, 239, 255} }},
{{ {119, -6, -2}, 0, {-101, 1805}, {110, 61, 239, 255} }},
{{ {118, -6, -8}, 0, {69, 1805}, {110, 61, 239, 255} }},
{{ {112, 8, -1}, 0, {-101, 1411}, {110, 61, 239, 255} }},
{{ {119, -6, -2}, 0, {69, -618}, {86, 92, 242, 255} }},
{{ {129, -17, -10}, 0, {-101, -931}, {86, 92, 242, 255} }},
{{ {118, -6, -8}, 0, {-101, -618}, {86, 92, 242, 255} }},
{{ {130, -17, -4}, 0, {69, -931}, {86, 92, 242, 255} }},
{{ {109, 24, -1}, 0, {-101, 970}, {125, 9, 236, 255} }},
{{ {108, 24, -7}, 0, {69, 970}, {125, 9, 236, 255} }},
{{ {108, 29, -7}, 0, {69, 807}, {125, 9, 236, 255} }},
{{ {109, 29, -1}, 0, {-101, 807}, {125, 9, 236, 255} }},
{{ {91, 22, -4}, 0, {-101, 1005}, {133, 233, 20, 255} }},
{{ {94, 3, -5}, 0, {-101, 1540}, {133, 233, 20, 255} }},
{{ {95, 3, 1}, 0, {69, 1540}, {133, 233, 20, 255} }},
{{ {92, 22, 2}, 0, {69, 1005}, {133, 233, 20, 255} }},
{{ {95, 3, 1}, 0, {69, 1540}, {145, 198, 18, 255} }},
{{ {94, 3, -5}, 0, {-101, 1540}, {145, 198, 18, 255} }},
{{ {103, -14, -6}, 0, {-101, 2034}, {145, 198, 18, 255} }},
{{ {104, -14, 0}, 0, {69, 2034}, {145, 198, 18, 255} }},
{{ {103, -14, -6}, 0, {-101, 2034}, {166, 168, 14, 255} }},
{{ {117, -29, -8}, 0, {-101, 2446}, {166, 168, 14, 255} }},
{{ {118, -29, -2}, 0, {69, 2446}, {166, 168, 14, 255} }},
{{ {104, -14, 0}, 0, {69, 2034}, {166, 168, 14, 255} }},
{{ {117, -29, -8}, 0, {69, 2446}, {89, 166, 242, 255} }},
{{ {130, -17, -4}, 0, {-101, 2100}, {89, 166, 242, 255} }},
{{ {118, -29, -2}, 0, {-101, 2446}, {89, 166, 242, 255} }},
{{ {129, -17, -10}, 0, {69, 2100}, {89, 166, 242, 255} }},
{{ {118, -29, -2}, 0, {1422, -587}, {20, 0, 125, 255} }},
{{ {130, -17, -4}, 0, {1076, -931}, {20, 0, 125, 255} }},
{{ {119, -6, -2}, 0, {781, -618}, {20, 0, 125, 255} }},
{{ {112, 8, -1}, 0, {387, -402}, {20, 0, 125, 255} }},
{{ {109, 24, -1}, 0, {-54, -322}, {20, 0, 125, 255} }},
{{ {91, 28, 2}, 0, {-182, 177}, {20, 0, 125, 255} }},
{{ {109, 29, -1}, 0, {-217, -310}, {20, 0, 125, 255} }},
{{ {95, 3, 1}, 0, {516, 68}, {20, 0, 125, 255} }},
{{ {92, 22, 2}, 0, {-19, 165}, {20, 0, 125, 255} }},
{{ {104, -14, 0}, 0, {1010, -187}, {20, 0, 125, 255} }},
{{ {108, 24, -7}, 0, {69, 970}, {123, 23, 236, 255} }},
{{ {109, 24, -1}, 0, {-101, 970}, {123, 23, 236, 255} }},
{{ {112, 8, -1}, 0, {-101, 1411}, {123, 23, 236, 255} }},
{{ {111, 8, -7}, 0, {69, 1411}, {123, 23, 236, 255} }},
};
Gfx ak47_Arm_mesh_layer_1_tri_4[] = {
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_4 + 0, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(5, 0, 4, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(7, 8, 5, 0),
gsSP1Triangle(5, 9, 0, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 13, 11, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_4 + 14, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 11, 9, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_4 + 30, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 15, 13, 0),
gsSPVertex(ak47_Arm_mesh_layer_1_vtx_4 + 46, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(0, 3, 4, 0),
gsSP1Triangle(4, 5, 0, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(5, 7, 0, 0),
gsSP1Triangle(5, 8, 7, 0),
gsSP1Triangle(7, 9, 0, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPEndDisplayList(),
};
Gfx mat_ak47_wood[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(ak47_wood_lights),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, ak47_wood_rgba16),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPEndDisplayList(),
};
Gfx mat_ak47_gray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(ak47_gray_lights),
gsSPEndDisplayList(),
};
Gfx mat_ak47_black_layer1[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPEndDisplayList(),
};
Gfx mat_revert_ak47_black_layer1[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsSPEndDisplayList(),
};
Gfx mat_ak47_darkgray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(ak47_darkgray_lights),
gsSPEndDisplayList(),
};
Gfx mat_ak47_darkergray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(ak47_darkergray_lights),
gsDPSetTextureImage(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 1, ak47_noise_i8),
gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 511, 512),
gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b, 4, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPEndDisplayList(),
};
Gfx ak47_Arm_mesh_layer_1[] = {
gsSPDisplayList(mat_ak47_wood),
gsSPDisplayList(ak47_Arm_mesh_layer_1_tri_0),
gsSPDisplayList(mat_ak47_gray),
gsSPDisplayList(ak47_Arm_mesh_layer_1_tri_1),
gsSPDisplayList(mat_ak47_black_layer1),
gsSPDisplayList(ak47_Arm_mesh_layer_1_tri_2),
gsSPDisplayList(mat_revert_ak47_black_layer1),
gsSPDisplayList(mat_ak47_darkgray),
gsSPDisplayList(ak47_Arm_mesh_layer_1_tri_3),
gsSPDisplayList(mat_ak47_darkergray),
gsSPDisplayList(ak47_Arm_mesh_layer_1_tri_4),
gsSPEndDisplayList(),
};
Gfx ak47_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -1,58 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout arm_Metal_Arm_Armature[] = {
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 0, -43, 0, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -2, 0, arm_Switch_Option_Upper_Arm_Metal_mesh_layer_1),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, arm_Switch_Option_Arm_Metal_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
const GeoLayout arm_Vanish_Arm_Armature[] = {
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 0, -43, 0, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -2, 0, arm_Switch_Option_Upper_Arm_Vanish_mesh_layer_5),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 25, 0, 0, arm_Switch_Option_Arm_Vanish_mesh_layer_5),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
const GeoLayout arm_Vanish_Metal_Armature[] = {
GEO_TRANSLATE_ROTATE(LAYER_OPAQUE, 0, -43, 0, 0, 0, 0),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -2, 0, arm_Switch_Option_Upper_Arm_Vanish_Metal_mesh_layer_5),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_TRANSPARENT, 25, 0, 0, arm_Switch_Option_Arm_Vanish_Metal_mesh_layer_5),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
const GeoLayout arm_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SCALE(LAYER_FORCE, 65536),
GEO_OPEN_NODE(),
GEO_ASM(LAYER_OPAQUE, geo_mario_set_player_colors),
GEO_ASM(LAYER_TRANSPARENT + 3, geo_mario_set_player_colors),
GEO_SWITCH_CASE(4, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -45, 0, arm_Upper_Arm_mesh_layer_1),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, arm_Arm_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_BRANCH(1, arm_Metal_Arm_Armature),
GEO_BRANCH(1, arm_Vanish_Arm_Armature),
GEO_BRANCH(1, arm_Vanish_Metal_Armature),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, arm_material_revert_render_settings),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, arm_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,51 +0,0 @@
extern const GeoLayout arm_Metal_Arm_Armature[];
extern const GeoLayout arm_Vanish_Arm_Armature[];
extern const GeoLayout arm_Vanish_Metal_Armature[];
extern const GeoLayout arm_geo[];
extern Lights1 arm_shirt_lights;
extern Lights1 arm_gloves_lights;
extern Lights1 arm_metal_lights;
extern Lights1 arm_shirt2_lights;
extern Lights1 arm_gloves2_lights;
extern Lights1 arm_metal2_lights;
extern u8 arm_custom_mario_metal_shade_rgba16_rgba16[];
extern u8 arm_custom_mario_metal_light_rgba16_rgba16[];
extern Vtx arm_Upper_Arm_mesh_layer_1_vtx_0[32];
extern Gfx arm_Upper_Arm_mesh_layer_1_tri_0[];
extern Vtx arm_Arm_mesh_layer_1_vtx_0[36];
extern Gfx arm_Arm_mesh_layer_1_tri_0[];
extern Vtx arm_Arm_mesh_layer_1_vtx_1[16];
extern Gfx arm_Arm_mesh_layer_1_tri_1[];
extern Vtx arm_Switch_Option_Upper_Arm_Metal_mesh_layer_1_vtx_0[32];
extern Gfx arm_Switch_Option_Upper_Arm_Metal_mesh_layer_1_tri_0[];
extern Vtx arm_Switch_Option_Arm_Metal_mesh_layer_1_vtx_0[52];
extern Gfx arm_Switch_Option_Arm_Metal_mesh_layer_1_tri_0[];
extern Vtx arm_Switch_Option_Upper_Arm_Vanish_mesh_layer_5_vtx_0[32];
extern Gfx arm_Switch_Option_Upper_Arm_Vanish_mesh_layer_5_tri_0[];
extern Vtx arm_Switch_Option_Arm_Vanish_mesh_layer_5_vtx_0[36];
extern Gfx arm_Switch_Option_Arm_Vanish_mesh_layer_5_tri_0[];
extern Vtx arm_Switch_Option_Arm_Vanish_mesh_layer_5_vtx_1[16];
extern Gfx arm_Switch_Option_Arm_Vanish_mesh_layer_5_tri_1[];
extern Vtx arm_Switch_Option_Upper_Arm_Vanish_Metal_mesh_layer_5_vtx_0[32];
extern Gfx arm_Switch_Option_Upper_Arm_Vanish_Metal_mesh_layer_5_tri_0[];
extern Vtx arm_Switch_Option_Arm_Vanish_Metal_mesh_layer_5_vtx_0[52];
extern Gfx arm_Switch_Option_Arm_Vanish_Metal_mesh_layer_5_tri_0[];
extern Gfx mat_arm_shirt[];
extern Gfx mat_arm_gloves[];
extern Gfx mat_arm_metal[];
extern Gfx mat_revert_arm_metal[];
extern Gfx mat_arm_shirt2[];
extern Gfx mat_revert_arm_shirt2[];
extern Gfx mat_arm_gloves2[];
extern Gfx mat_revert_arm_gloves2[];
extern Gfx mat_arm_metal2[];
extern Gfx mat_revert_arm_metal2[];
extern Gfx arm_Upper_Arm_mesh_layer_1[];
extern Gfx arm_Arm_mesh_layer_1[];
extern Gfx arm_Switch_Option_Upper_Arm_Metal_mesh_layer_1[];
extern Gfx arm_Switch_Option_Arm_Metal_mesh_layer_1[];
extern Gfx arm_Switch_Option_Upper_Arm_Vanish_mesh_layer_5[];
extern Gfx arm_Switch_Option_Arm_Vanish_mesh_layer_5[];
extern Gfx arm_Switch_Option_Upper_Arm_Vanish_Metal_mesh_layer_5[];
extern Gfx arm_Switch_Option_Arm_Vanish_Metal_mesh_layer_5[];
extern Gfx arm_material_revert_render_settings[];

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout arrow_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_BILLBOARD_WITH_PARAMS_AND_DL(LAYER_OPAQUE, 0, 0, 0, arrow_triangle_mesh_layer_1),
GEO_DISPLAY_LIST(LAYER_OPAQUE, arrow_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,7 +0,0 @@
extern const GeoLayout arrow_geo[];
extern Vtx arrow_triangle_mesh_layer_1_vtx_0[3];
extern Gfx arrow_triangle_mesh_layer_1_tri_0[];
extern Gfx mat_arrow_white[];
extern Gfx mat_revert_arrow_white[];
extern Gfx arrow_triangle_mesh_layer_1[];
extern Gfx arrow_material_revert_render_settings[];

View file

@ -1,45 +0,0 @@
Vtx arrow_triangle_mesh_layer_1_vtx_0[3] = {
{{ {-40, 58, 0}, 0, {-16, 1008}, {0, 0, 129, 255} }},
{{ {40, 58, 0}, 0, {1008, 1008}, {0, 0, 129, 255} }},
{{ {0, 0, 0}, 0, {-16, -16}, {0, 0, 129, 255} }},
};
Gfx arrow_triangle_mesh_layer_1_tri_0[] = {
gsSPVertex(arrow_triangle_mesh_layer_1_vtx_0 + 0, 3, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSPEndDisplayList(),
};
Gfx mat_arrow_white[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPEndDisplayList(),
};
Gfx mat_revert_arrow_white[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_CULL_BACK),
gsSPEndDisplayList(),
};
Gfx arrow_triangle_mesh_layer_1[] = {
gsSPDisplayList(mat_arrow_white),
gsSPDisplayList(arrow_triangle_mesh_layer_1_tri_0),
gsSPDisplayList(mat_revert_arrow_white),
gsSPEndDisplayList(),
};
Gfx arrow_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -1,10 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout bullet_hole_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_ALPHA, bullet_hole_bullet_hole_mesh_layer_4),
GEO_DISPLAY_LIST(LAYER_ALPHA, bullet_hole_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,9 +0,0 @@
extern const GeoLayout bullet_hole_geo[];
extern Lights1 bullet_hole_bullet_hole_lights;
extern u8 bullet_hole_bullet_hole_ia8[];
extern Vtx bullet_hole_bullet_hole_mesh_layer_4_vtx_0[4];
extern Gfx bullet_hole_bullet_hole_mesh_layer_4_tri_0[];
extern Gfx mat_bullet_hole_bullet_hole[];
extern Gfx mat_revert_bullet_hole_bullet_hole[];
extern Gfx bullet_hole_bullet_hole_mesh_layer_4[];
extern Gfx bullet_hole_material_revert_render_settings[];

View file

@ -1,62 +0,0 @@
Lights1 bullet_hole_bullet_hole_lights = gdSPDefLights1(
0x7F, 0x7F, 0x7F,
0xFF, 0xFF, 0xFF, 0x28, 0x28, 0x28);
Gfx bullet_hole_bullet_hole_ia8_aligner[] = {gsSPEndDisplayList()};
u8 bullet_hole_bullet_hole_ia8[] = {
#include "actors/bullet_hole/bullet_hole.ia8.inc.c"
};
Vtx bullet_hole_bullet_hole_mesh_layer_4_vtx_0[4] = {
{{ {-22, 1, 22}, 0, {-16, 2032}, {0, 127, 0, 255} }},
{{ {22, 1, 22}, 0, {2032, 2032}, {0, 127, 0, 255} }},
{{ {22, 1, -22}, 0, {2032, -16}, {0, 127, 0, 255} }},
{{ {-22, 1, -22}, 0, {-16, -16}, {0, 127, 0, 255} }},
};
Gfx bullet_hole_bullet_hole_mesh_layer_4_tri_0[] = {
gsSPVertex(bullet_hole_bullet_hole_mesh_layer_4_vtx_0 + 0, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Gfx mat_bullet_hole_bullet_hole[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(bullet_hole_bullet_hole_lights),
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_8b_LOAD_BLOCK, 1, bullet_hole_bullet_hole_ia8),
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 256),
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 8, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(0, 0, 0, 252, 252),
gsSPEndDisplayList(),
};
Gfx mat_revert_bullet_hole_bullet_hole[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_CULL_BACK),
gsSPEndDisplayList(),
};
Gfx bullet_hole_bullet_hole_mesh_layer_4[] = {
gsSPDisplayList(mat_bullet_hole_bullet_hole),
gsSPDisplayList(bullet_hole_bullet_hole_mesh_layer_4_tri_0),
gsSPDisplayList(mat_revert_bullet_hole_bullet_hole),
gsSPEndDisplayList(),
};
Gfx bullet_hole_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};

View file

@ -1,24 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout magnum_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SCALE(LAYER_FORCE, 65536),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_mario_set_player_colors),
GEO_ASM(8, geo_mario_set_player_colors),
GEO_SWITCH_CASE(0, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -45, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, magnum_Arm_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, magnum_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,18 +0,0 @@
extern const GeoLayout magnum_geo[];
extern Lights1 magnum_darkergray_lights;
extern Lights1 magnum_metal_lights;
extern u8 magnum_noise_i8[];
extern u8 magnum_plat_rgba16[];
extern Vtx magnum_Arm_mesh_layer_1_vtx_0[64];
extern Gfx magnum_Arm_mesh_layer_1_tri_0[];
extern Vtx magnum_Arm_mesh_layer_1_vtx_1[8];
extern Gfx magnum_Arm_mesh_layer_1_tri_1[];
extern Vtx magnum_Arm_mesh_layer_1_vtx_2[533];
extern Gfx magnum_Arm_mesh_layer_1_tri_2[];
extern Gfx mat_magnum_darkergray[];
extern Gfx mat_magnum_black_layer1[];
extern Gfx mat_revert_magnum_black_layer1[];
extern Gfx mat_magnum_metal[];
extern Gfx mat_revert_magnum_metal[];
extern Gfx magnum_Arm_mesh_layer_1[];
extern Gfx magnum_material_revert_render_settings[];

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -1,24 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout pistol_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SCALE(LAYER_FORCE, 65536),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_mario_set_player_colors),
GEO_ASM(8, geo_mario_set_player_colors),
GEO_SWITCH_CASE(0, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -45, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, pistol_Arm_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, pistol_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,16 +0,0 @@
extern const GeoLayout pistol_geo[];
extern Lights1 pistol_gray_lights;
extern Lights1 pistol_darkergray_lights;
extern u8 pistol_noise_i8[];
extern Vtx pistol_Arm_mesh_layer_1_vtx_0[174];
extern Gfx pistol_Arm_mesh_layer_1_tri_0[];
extern Vtx pistol_Arm_mesh_layer_1_vtx_1[34];
extern Gfx pistol_Arm_mesh_layer_1_tri_1[];
extern Vtx pistol_Arm_mesh_layer_1_vtx_2[6];
extern Gfx pistol_Arm_mesh_layer_1_tri_2[];
extern Gfx mat_pistol_gray[];
extern Gfx mat_pistol_darkergray[];
extern Gfx mat_pistol_black_layer1[];
extern Gfx mat_revert_pistol_black_layer1[];
extern Gfx pistol_Arm_mesh_layer_1[];
extern Gfx pistol_material_revert_render_settings[];

View file

@ -1,575 +0,0 @@
Lights1 pistol_gray_lights = gdSPDefLights1(
0x53, 0x53, 0x53,
0xAA, 0xAA, 0xAA, 0x28, 0x28, 0x28);
Lights1 pistol_darkergray_lights = gdSPDefLights1(
0xF, 0xF, 0xF,
0x2A, 0x2A, 0x2A, 0x28, 0x28, 0x28);
Gfx pistol_noise_i8_aligner[] = {gsSPEndDisplayList()};
u8 pistol_noise_i8[] = {
0xfa, 0xff, 0xf1, 0xf7, 0xf6, 0xf0, 0xff, 0xff,
0xf7, 0xf7, 0xff, 0xff, 0xdb, 0xff, 0xcc, 0xfa,
0xd1, 0xff, 0xff, 0xf5, 0xde, 0xf7, 0xe4, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xce,
0xfc, 0xf7, 0xff, 0xff, 0xe9, 0xd7, 0xff, 0xff,
0xff, 0xe3, 0xff, 0xff, 0xce, 0xff, 0xfe, 0xff,
0xff, 0xf9, 0xe2, 0xf4, 0xde, 0xf6, 0xf8, 0xff,
0xf6, 0xea, 0xf1, 0xff, 0xff, 0xf6, 0xf3, 0xdf,
0xbe, 0xff, 0xff, 0xf4, 0xee, 0xf2, 0xff, 0xff,
0xff, 0xff, 0xf9, 0xff, 0xde, 0xf7, 0xe6, 0xf9,
0xff, 0xff, 0xfc, 0xf0, 0xff, 0xeb, 0xf1, 0xff,
0xff, 0xfd, 0xea, 0xde, 0xdc, 0xec, 0xd3, 0xff,
0xff, 0xff, 0xff, 0xcd, 0xff, 0xff, 0xff, 0xc9,
0xd9, 0xf6, 0xff, 0xdc, 0xff, 0xff, 0xf7, 0xe0,
0xff, 0xd9, 0xd4, 0xff, 0xed, 0xff, 0xff, 0xff,
0xed, 0xd8, 0xff, 0xff, 0xef, 0xeb, 0xb6, 0xff,
0xf9, 0xff, 0xff, 0xf1, 0xd6, 0xe7, 0xde, 0xe9,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff,
0xd0, 0xff, 0xff, 0xff, 0xea, 0xff, 0xe3, 0xdf,
0xff, 0xff, 0xff, 0xf6, 0xff, 0xe7, 0xff, 0xff,
0xd1, 0xff, 0xeb, 0xef, 0xec, 0xfe, 0xff, 0xff,
0xff, 0xd5, 0xde, 0xff, 0xeb, 0xff, 0xfe, 0xcf,
0xff, 0xf4, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff,
0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff,
0xca, 0xfd, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xda,
0xff, 0xb3, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xf2, 0xf9, 0xe5, 0xde, 0xe0, 0xff, 0xcb,
0xf1, 0xe5, 0xed, 0xe1, 0xcb, 0xc4, 0xef, 0xd9,
0xff, 0xc1, 0xf3, 0xff, 0xf4, 0xef, 0xff, 0xff,
0xff, 0xff, 0xf1, 0xff, 0xf8, 0xff, 0xfb, 0xff,
0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xf8, 0xff,
0xfa, 0xe9, 0xff, 0xff, 0xfe, 0xce, 0xff, 0xe8,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0xc6,
0xed, 0xff, 0xff, 0xe9, 0xe4, 0xe2, 0xf3, 0xd5,
0xff, 0xff, 0xff, 0xe4, 0xf0, 0xff, 0xff, 0xff,
0xef, 0xf5, 0xf8, 0xff, 0xfa, 0xf0, 0xff, 0xc6,
0xf2, 0xff, 0xfb, 0xff, 0xfd, 0xe4, 0xff, 0xed,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xea, 0xf6, 0xff,
0xf7, 0xff, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf4, 0xff, 0xf9, 0xf7, 0xff, 0xee, 0xf0, 0xf8,
0xf9, 0xff, 0xff, 0xff, 0xe2, 0xff, 0xe0, 0xff,
0xf0, 0xfc, 0xe8, 0xff, 0xff, 0xf4, 0xff, 0xe6,
0xbc, 0xfa, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff,
0xf8, 0xd3, 0xff, 0xff, 0xe5, 0xd9, 0xf6, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf5,
0xde, 0xff, 0xee, 0xff, 0xe6, 0xe6, 0xff, 0xc9,
0xff, 0xff, 0xf2, 0xd0, 0xf4, 0xff, 0xfe, 0xe6,
0xfe, 0xd4, 0xff, 0xe8, 0xff, 0xfb, 0xff, 0xff,
0xff, 0xff, 0xd5, 0xff, 0xf9, 0xfc, 0xf3, 0xb9,
0xf9, 0xf9, 0xf9, 0xea, 0xff, 0xff, 0xff, 0xff,
0xeb, 0xf0, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xfd,
0xff, 0xff, 0xfe, 0xfc, 0xf3, 0xfb, 0xfd, 0xff,
0xff, 0xe9, 0xde, 0xff, 0xf2, 0xee, 0xff, 0xf4,
0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xd2,
0xff, 0xe2, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf4, 0xd5,
0xff, 0xff, 0xe5, 0xfd, 0xeb, 0xff, 0xff, 0xff,
0xff, 0xff, 0xe5, 0xff, 0xed, 0xff, 0xf6, 0xfb,
0xff, 0xf4, 0xf1, 0xf9, 0xd5, 0xd8, 0xff, 0xff,
0xff, 0xf5, 0xf5, 0xe2, 0xdf, 0xfd, 0xff, 0xea,
0xee, 0xff, 0xd2, 0xff, 0xff, 0xff, 0xff, 0xed,
0xff, 0xff, 0xfa, 0xe8, 0xf7, 0xcc, 0xf4, 0xef,
0xf7, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe7, 0xff, 0xe9, 0xd5, 0xda, 0xff, 0xff, 0xf8,
0xe6, 0xf9, 0xf2, 0xfc, 0xff, 0xff, 0xff, 0xed,
0xff, 0xff, 0xf5, 0xff, 0xe0, 0xed, 0xff, 0xf4,
0xff, 0xf5, 0xff, 0xfd, 0xfa, 0xf9, 0xd6, 0xee,
0xe8, 0xff, 0xff, 0xe7, 0xed, 0xff, 0xf4, 0xfc,
0xff, 0xff, 0xfd, 0xf7, 0xff, 0xfe, 0xff, 0xf0,
0xff, 0xff, 0xef, 0xf4, 0xe3, 0xee, 0xff, 0xf5,
0xfa, 0xff, 0xff, 0xff, 0xd3, 0xd6, 0xff, 0xd3,
0xfa, 0xed, 0xf5, 0xe9, 0xff, 0xe7, 0xff, 0xa3,
0xed, 0xff, 0xfe, 0xff, 0xea, 0xff, 0xfd, 0xff,
0xf6, 0xff, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xfa,
0xd8, 0xff, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xf6,
0xff, 0xf0, 0xff, 0xff, 0xff, 0xdd, 0xff, 0xd6,
0xff, 0xeb, 0xff, 0xf1, 0xfe, 0xff, 0xff, 0xff,
0xff, 0xef, 0xe8, 0xfe, 0xfa, 0xdc, 0xff, 0xff,
0xfc, 0xff, 0xfd, 0xff, 0xf2, 0xf0, 0xff, 0xd6,
0xff, 0xf4, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xff,
0xf7, 0xca, 0xde, 0xff, 0xf7, 0xd3, 0xff, 0xf2,
0xea, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
0xf9, 0xff, 0xf6, 0xf1, 0xec, 0xff, 0xff, 0xff,
0xf1, 0xfb, 0xff, 0xf8, 0xff, 0xe2, 0xff, 0xff,
0xff, 0xe6, 0xfe, 0xff, 0xe9, 0xed, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xe9,
0xe2, 0xec, 0xff, 0xff, 0xf3, 0xf9, 0xff, 0xff,
0xfc, 0xff, 0xff, 0xc4, 0xfc, 0xe6, 0xff, 0xd1,
0xff, 0xff, 0xff, 0xdd, 0xff, 0xff, 0xd0, 0xff,
0xff, 0xff, 0xf9, 0xff, 0xff, 0xfe, 0xff, 0xf8,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa,
0xff, 0xff, 0xff, 0xf0, 0xf9, 0xff, 0xff, 0xff,
0xbc, 0xff, 0xff, 0xcb, 0xff, 0xde, 0xff, 0xe7,
0xff, 0xfc, 0xff, 0xf3, 0xff, 0xeb, 0xbf, 0xff,
0xff, 0xef, 0xe7, 0xff, 0xf4, 0xff, 0xff, 0xff,
0xeb, 0xf4, 0xff, 0xec, 0xff, 0xff, 0xff, 0xed,
0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0xe2, 0xff,
0xf4, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xf2, 0xff,
0xff, 0xff, 0xdf, 0xff, 0xfb, 0xff, 0xff, 0xff,
0xff, 0xea, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xde,
0xf9, 0xb3, 0xf3, 0xf1, 0xe6, 0xe4, 0xdb, 0xff,
0xf2, 0xff, 0xfd, 0xff, 0xff, 0xf3, 0xf6, 0xde,
0xff, 0xf4, 0xfa, 0xea, 0xf2, 0xf1, 0xea, 0xff,
0xea, 0xf5, 0xe8, 0xff, 0xef, 0xe8, 0xc9, 0xff,
0xff, 0xff, 0xe0, 0xed, 0xff, 0xff, 0xe5, 0xff,
0xff, 0xff, 0xf6, 0xf4, 0xe5, 0xc6, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfc, 0xba, 0xea, 0xed,
0xff, 0xfd, 0xff, 0xf9, 0xe9, 0xf8, 0xff, 0xff,
0xff, 0xfb, 0xe9, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff,
0xda, 0xdd, 0xff, 0xff, 0xff, 0xda, 0xff, 0xff,
0xff, 0xff, 0xff, 0xdd, 0xf0, 0xc7, 0xe7, 0xff,
0xf8, 0xde, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xec, 0xff,
0xd5, 0xfb, 0xfd, 0xff, 0xeb, 0xd9, 0xff, 0xbb,
0xff, 0xff, 0xff, 0xff, 0xdd, 0xff, 0xff, 0xff,
0xff, 0xff, 0xfb, 0xfe, 0xec, 0xff, 0xea, 0xdd,
0xff, 0xda, 0xff, 0xe6, 0xef, 0xff, 0xff, 0xff,
0xff, 0xf8, 0xff, 0xe3, 0xff, 0xff, 0xe6, 0xff,
0xbb, 0xed, 0xff, 0xfc, 0xec, 0xff, 0xf7, 0xfb,
0xfe, 0xf5, 0xe5, 0xd5, 0xff, 0xff, 0xef, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff,
0xff, 0xdf, 0xff, 0xff, 0xff, 0xf2, 0xff, 0xff,
0xff, 0xd2, 0xff, 0xff, 0xff, 0xe4, 0xfe, 0xff,
0xff, 0xff, 0xff, 0xce, 0xff, 0xeb, 0xef, 0xfd,
0xfc, 0xe5, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xf0,
};
Vtx pistol_Arm_mesh_layer_1_vtx_0[174] = {
{{ {43, 30, -1}, 0, {-304, 922}, {0, 0, 129, 255} }},
{{ {34, 42, -1}, 0, {181, 1299}, {0, 0, 129, 255} }},
{{ {47, 39, -1}, 0, {63, 771}, {0, 0, 129, 255} }},
{{ {43, 30, 4}, 0, {272, 922}, {0, 0, 127, 255} }},
{{ {47, 39, 4}, 0, {-95, 771}, {0, 0, 127, 255} }},
{{ {34, 42, 4}, 0, {-213, 1299}, {0, 0, 127, 255} }},
{{ {74, 19, 0}, 0, {-306, 916}, {195, 187, 168, 255} }},
{{ {77, 14, 1}, 0, {-492, 797}, {195, 187, 168, 255} }},
{{ {72, 19, 1}, 0, {-306, 1008}, {195, 187, 168, 255} }},
{{ {77, 14, 1}, 0, {-16, 1484}, {107, 68, 0, 255} }},
{{ {74, 19, 0}, 0, {46, 1298}, {107, 68, 0, 255} }},
{{ {74, 19, 3}, 0, {-78, 1298}, {107, 68, 0, 255} }},
{{ {77, 14, 1}, 0, {460, 797}, {195, 187, 88, 255} }},
{{ {74, 19, 3}, 0, {274, 916}, {195, 187, 88, 255} }},
{{ {72, 19, 1}, 0, {274, 1008}, {195, 187, 88, 255} }},
{{ {70, 13, 4}, 0, {-119, 331}, {237, 209, 117, 255} }},
{{ {70, 13, -1}, 0, {87, 331}, {237, 209, 139, 255} }},
{{ {82, 13, -1}, 0, {87, -181}, {23, 208, 141, 255} }},
{{ {82, 13, 4}, 0, {-119, -181}, {23, 208, 115, 255} }},
{{ {65, 18, 4}, 0, {87, 1267}, {218, 219, 115, 255} }},
{{ {70, 13, -1}, 0, {-119, 1472}, {237, 209, 139, 255} }},
{{ {70, 13, 4}, 0, {87, 1472}, {237, 209, 117, 255} }},
{{ {65, 18, -1}, 0, {-119, 1267}, {218, 219, 141, 255} }},
{{ {70, 14, 2}, 0, {-16, 314}, {49, 117, 0, 255} }},
{{ {70, 13, 4}, 0, {87, 331}, {237, 209, 117, 255} }},
{{ {82, 13, 4}, 0, {87, -181}, {23, 208, 115, 255} }},
{{ {82, 14, 2}, 0, {-16, -162}, {201, 115, 0, 255} }},
{{ {70, 13, -1}, 0, {-119, 331}, {237, 209, 139, 255} }},
{{ {82, 13, -1}, 0, {-119, -181}, {23, 208, 141, 255} }},
{{ {66, 18, 2}, 0, {-16, 1251}, {91, 89, 0, 255} }},
{{ {65, 18, 4}, 0, {-119, 1267}, {218, 219, 115, 255} }},
{{ {70, 13, 4}, 0, {-119, 1472}, {237, 209, 117, 255} }},
{{ {70, 14, 2}, 0, {-16, 1432}, {49, 117, 0, 255} }},
{{ {65, 18, -1}, 0, {87, 1267}, {218, 219, 141, 255} }},
{{ {70, 13, -1}, 0, {87, 1472}, {237, 209, 139, 255} }},
{{ {82, 14, 2}, 0, {-16, 1432}, {201, 115, 0, 255} }},
{{ {82, 13, 4}, 0, {87, 1472}, {23, 208, 115, 255} }},
{{ {86, 18, 4}, 0, {87, 1267}, {44, 241, 118, 255} }},
{{ {86, 18, 2}, 0, {-16, 1253}, {136, 42, 0, 255} }},
{{ {86, 27, 4}, 0, {87, 884}, {22, 0, 125, 255} }},
{{ {86, 27, 2}, 0, {-16, 884}, {129, 0, 0, 255} }},
{{ {86, 18, -1}, 0, {-119, 1267}, {44, 241, 138, 255} }},
{{ {86, 27, -1}, 0, {-119, 884}, {22, 0, 131, 255} }},
{{ {82, 13, -1}, 0, {-119, 1472}, {23, 208, 141, 255} }},
{{ {82, 13, 4}, 0, {-119, 1472}, {23, 208, 115, 255} }},
{{ {82, 13, -1}, 0, {87, 1472}, {23, 208, 141, 255} }},
{{ {86, 18, -1}, 0, {87, 1267}, {44, 241, 138, 255} }},
{{ {86, 18, 4}, 0, {-119, 1267}, {44, 241, 118, 255} }},
{{ {86, 27, -1}, 0, {87, 884}, {22, 0, 131, 255} }},
{{ {86, 27, 4}, 0, {-119, 884}, {22, 0, 125, 255} }},
{{ {127, 28, -2}, 0, {127, 827}, {84, 236, 163, 255} }},
{{ {127, 33, -4}, 0, {209, 647}, {71, 56, 167, 255} }},
{{ {127, 33, 7}, 0, {-241, 647}, {71, 56, 89, 255} }},
{{ {127, 28, 5}, 0, {-159, 827}, {84, 236, 93, 255} }},
{{ {127, 24, -2}, 0, {127, 1008}, {73, 183, 183, 255} }},
{{ {127, 24, 5}, 0, {-159, 1008}, {73, 183, 73, 255} }},
{{ {108, 33, 7}, 0, {209, -1241}, {10, 77, 101, 255} }},
{{ {127, 33, 7}, 0, {209, -2006}, {71, 56, 89, 255} }},
{{ {127, 33, -4}, 0, {-241, -2006}, {71, 56, 167, 255} }},
{{ {38, 33, -4}, 0, {-241, 1660}, {183, 73, 183, 255} }},
{{ {38, 33, -4}, 0, {-241, 1660}, {183, 73, 183, 255} }},
{{ {38, 33, 7}, 0, {209, 1660}, {183, 73, 73, 255} }},
{{ {108, 33, 7}, 0, {209, -1241}, {10, 77, 101, 255} }},
{{ {102, 24, -4}, 0, {-16, -982}, {12, 167, 166, 255} }},
{{ {38, 24, -4}, 0, {-16, 1660}, {183, 183, 183, 255} }},
{{ {38, 33, -4}, 0, {345, 1660}, {183, 73, 183, 255} }},
{{ {108, 33, -4}, 0, {345, -1241}, {9, 232, 132, 255} }},
{{ {127, 33, -4}, 0, {345, -2006}, {71, 56, 167, 255} }},
{{ {108, 28, -2}, 0, {165, -1241}, {26, 229, 135, 255} }},
{{ {127, 28, -2}, 0, {165, -2006}, {84, 236, 163, 255} }},
{{ {108, 24, -2}, 0, {-16, -1241}, {19, 164, 170, 255} }},
{{ {127, 24, -2}, 0, {-16, -2006}, {73, 183, 183, 255} }},
{{ {38, 24, 7}, 0, {209, 1008}, {183, 183, 73, 255} }},
{{ {38, 33, 7}, 0, {209, 647}, {183, 73, 73, 255} }},
{{ {38, 33, -4}, 0, {-241, 647}, {183, 73, 183, 255} }},
{{ {38, 24, -4}, 0, {-241, 1008}, {183, 183, 183, 255} }},
{{ {108, 24, -2}, 0, {127, -1241}, {19, 164, 170, 255} }},
{{ {127, 24, -2}, 0, {127, -2006}, {73, 183, 183, 255} }},
{{ {127, 24, 5}, 0, {-159, -2006}, {73, 183, 73, 255} }},
{{ {108, 24, 5}, 0, {-159, -1241}, {19, 164, 86, 255} }},
{{ {38, 24, 7}, 0, {-241, 1660}, {183, 183, 73, 255} }},
{{ {102, 24, 7}, 0, {-241, -982}, {12, 167, 90, 255} }},
{{ {102, 24, -4}, 0, {209, -982}, {12, 167, 166, 255} }},
{{ {38, 24, -4}, 0, {209, 1660}, {183, 183, 183, 255} }},
{{ {102, 24, 7}, 0, {-16, -982}, {12, 167, 90, 255} }},
{{ {38, 33, 7}, 0, {-377, 1660}, {183, 73, 73, 255} }},
{{ {38, 24, 7}, 0, {-16, 1660}, {183, 183, 73, 255} }},
{{ {108, 33, 7}, 0, {-377, -1241}, {10, 77, 101, 255} }},
{{ {108, 24, 5}, 0, {-16, -1241}, {19, 164, 86, 255} }},
{{ {108, 28, 5}, 0, {-197, -1241}, {26, 229, 121, 255} }},
{{ {127, 24, 5}, 0, {-16, -2006}, {73, 183, 73, 255} }},
{{ {127, 28, 5}, 0, {-197, -2006}, {84, 236, 93, 255} }},
{{ {127, 28, 5}, 0, {-197, -2006}, {84, 236, 93, 255} }},
{{ {127, 33, 7}, 0, {-377, -2006}, {71, 56, 89, 255} }},
{{ {108, 33, 7}, 0, {-377, -1241}, {10, 77, 101, 255} }},
{{ {86, 36, -3}, 0, {480, -347}, {179, 205, 169, 255} }},
{{ {86, 40, -3}, 0, {664, -347}, {179, 51, 169, 255} }},
{{ {130, 40, -3}, 0, {664, -2149}, {0, 64, 146, 255} }},
{{ {130, 36, -3}, 0, {480, -2149}, {0, 192, 146, 255} }},
{{ {86, 40, -3}, 0, {-176, -347}, {179, 51, 169, 255} }},
{{ {130, 43, 2}, 0, {-16, -2149}, {0, 127, 0, 255} }},
{{ {130, 40, -3}, 0, {-176, -2149}, {0, 64, 146, 255} }},
{{ {86, 43, 2}, 0, {-16, -347}, {178, 101, 0, 255} }},
{{ {130, 40, 6}, 0, {144, -2149}, {0, 64, 110, 255} }},
{{ {86, 40, 6}, 0, {144, -347}, {179, 51, 87, 255} }},
{{ {86, 34, 2}, 0, {-16, -347}, {178, 155, 0, 255} }},
{{ {86, 36, -3}, 0, {144, -347}, {179, 205, 169, 255} }},
{{ {130, 36, -3}, 0, {144, -2149}, {0, 192, 146, 255} }},
{{ {86, 34, 2}, 0, {-16, -347}, {178, 155, 0, 255} }},
{{ {130, 36, -3}, 0, {144, -2149}, {0, 192, 146, 255} }},
{{ {130, 34, 2}, 0, {-16, -2149}, {0, 129, 0, 255} }},
{{ {86, 36, 6}, 0, {-176, -347}, {179, 205, 87, 255} }},
{{ {130, 36, 6}, 0, {-176, -2149}, {0, 192, 110, 255} }},
{{ {86, 43, 2}, 0, {-16, 235}, {178, 101, 0, 255} }},
{{ {86, 40, -3}, 0, {-176, 328}, {179, 51, 169, 255} }},
{{ {86, 36, -3}, 0, {-176, 512}, {179, 205, 169, 255} }},
{{ {86, 36, 6}, 0, {144, 512}, {179, 205, 87, 255} }},
{{ {86, 34, 2}, 0, {-16, 604}, {178, 155, 0, 255} }},
{{ {86, 40, 6}, 0, {144, 328}, {179, 51, 87, 255} }},
{{ {86, 40, 6}, 0, {-696, -347}, {179, 51, 87, 255} }},
{{ {86, 36, 6}, 0, {-512, -347}, {179, 205, 87, 255} }},
{{ {130, 36, 6}, 0, {-512, -2149}, {0, 192, 110, 255} }},
{{ {130, 40, 6}, 0, {-696, -2149}, {0, 64, 110, 255} }},
{{ {38, 33, 7}, 0, {209, 2872}, {0, 127, 0, 255} }},
{{ {127, 33, 7}, 0, {209, -794}, {0, 127, 0, 255} }},
{{ {127, 33, -4}, 0, {-241, -794}, {0, 127, 0, 255} }},
{{ {38, 33, -4}, 0, {-241, 2872}, {0, 127, 0, 255} }},
{{ {38, 33, 7}, 0, {190, 2872}, {161, 26, 81, 255} }},
{{ {127, 33, 7}, 0, {190, -794}, {90, 0, 90, 255} }},
{{ {127, 42, 7}, 0, {-172, -794}, {77, 51, 87, 255} }},
{{ {40, 42, 7}, 0, {-172, 2770}, {187, 66, 83, 255} }},
{{ {127, 42, 7}, 0, {-241, 852}, {77, 51, 87, 255} }},
{{ {127, 33, 7}, 0, {-241, 1214}, {90, 0, 90, 255} }},
{{ {127, 33, -4}, 0, {209, 1214}, {90, 0, 166, 255} }},
{{ {127, 42, -4}, 0, {209, 852}, {77, 51, 169, 255} }},
{{ {127, 45, 2}, 0, {-16, 721}, {78, 101, 0, 255} }},
{{ {127, 33, -4}, 0, {-222, -794}, {90, 0, 166, 255} }},
{{ {38, 33, -4}, 0, {-222, 2872}, {161, 26, 175, 255} }},
{{ {40, 42, -4}, 0, {140, 2770}, {187, 66, 173, 255} }},
{{ {127, 33, -4}, 0, {-222, -794}, {90, 0, 166, 255} }},
{{ {40, 42, -4}, 0, {140, 2770}, {187, 66, 173, 255} }},
{{ {127, 42, -4}, 0, {140, -794}, {77, 51, 169, 255} }},
{{ {40, 42, -4}, 0, {-241, 852}, {187, 66, 173, 255} }},
{{ {38, 33, -4}, 0, {-241, 1214}, {161, 26, 175, 255} }},
{{ {38, 33, 7}, 0, {209, 1214}, {161, 26, 81, 255} }},
{{ {40, 42, 7}, 0, {209, 852}, {187, 66, 83, 255} }},
{{ {127, 45, 2}, 0, {-16, -794}, {78, 101, 0, 255} }},
{{ {127, 42, -4}, 0, {-241, -794}, {77, 51, 169, 255} }},
{{ {40, 42, -4}, 0, {-241, 2770}, {187, 66, 173, 255} }},
{{ {44, 45, 2}, 0, {-16, 2626}, {227, 124, 0, 255} }},
{{ {40, 42, 7}, 0, {209, 2770}, {187, 66, 83, 255} }},
{{ {127, 42, 7}, 0, {209, -794}, {77, 51, 87, 255} }},
{{ {47, 39, -1}, 0, {-104, 771}, {27, 124, 0, 255} }},
{{ {34, 42, -1}, 0, {-104, 1299}, {27, 124, 0, 255} }},
{{ {34, 42, 4}, 0, {72, 1299}, {27, 124, 0, 255} }},
{{ {47, 39, -1}, 0, {-104, 771}, {27, 124, 0, 255} }},
{{ {34, 42, 4}, 0, {72, 1299}, {27, 124, 0, 255} }},
{{ {47, 39, 4}, 0, {72, 771}, {27, 124, 0, 255} }},
{{ {34, 42, -1}, 0, {-104, 811}, {155, 178, 0, 255} }},
{{ {43, 30, -1}, 0, {-104, 1296}, {155, 178, 0, 255} }},
{{ {43, 30, 4}, 0, {72, 1296}, {155, 178, 0, 255} }},
{{ {34, 42, 4}, 0, {72, 811}, {155, 178, 0, 255} }},
{{ {74, 26, 3}, 0, {-16, 916}, {183, 0, 104, 255} }},
{{ {72, 26, 1}, 0, {-16, 1008}, {183, 0, 104, 255} }},
{{ {72, 19, 1}, 0, {274, 1008}, {183, 0, 104, 255} }},
{{ {74, 19, 3}, 0, {274, 916}, {183, 0, 104, 255} }},
{{ {72, 26, 1}, 0, {-16, 1008}, {183, 0, 152, 255} }},
{{ {74, 26, 0}, 0, {-16, 916}, {183, 0, 152, 255} }},
{{ {74, 19, 0}, 0, {-306, 916}, {183, 0, 152, 255} }},
{{ {72, 19, 1}, 0, {-306, 1008}, {183, 0, 152, 255} }},
{{ {74, 19, 0}, 0, {46, 1298}, {127, 0, 0, 255} }},
{{ {74, 26, 0}, 0, {46, 1008}, {127, 0, 0, 255} }},
{{ {74, 26, 3}, 0, {-78, 1008}, {127, 0, 0, 255} }},
{{ {74, 19, 3}, 0, {-78, 1298}, {127, 0, 0, 255} }},
};
Gfx pistol_Arm_mesh_layer_1_tri_0[] = {
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 0, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 15, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 8, 11, 0),
gsSP1Triangle(12, 11, 13, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 29, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 0, 3, 0),
gsSP1Triangle(4, 3, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(9, 8, 10, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 9, 11, 0),
gsSP1Triangle(12, 11, 13, 0),
gsSP1Triangle(14, 9, 12, 0),
gsSP1Triangle(14, 6, 9, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 44, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(9, 10, 6, 0),
gsSP1Triangle(9, 11, 10, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 60, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(5, 6, 3, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(8, 6, 7, 0),
gsSP1Triangle(8, 7, 9, 0),
gsSP1Triangle(10, 8, 9, 0),
gsSP1Triangle(10, 9, 11, 0),
gsSP1Triangle(6, 8, 10, 0),
gsSP1Triangle(6, 10, 3, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 76, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(3, 4, 0, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(4, 6, 0, 0),
gsSP1Triangle(4, 7, 6, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 11, 9, 0),
gsSP1Triangle(12, 11, 8, 0),
gsSP1Triangle(12, 13, 11, 0),
gsSP1Triangle(14, 13, 12, 0),
gsSP1Triangle(14, 15, 13, 0),
gsSP1Triangle(15, 11, 13, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 92, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 10, 8, 0),
gsSP1Triangle(10, 11, 8, 0),
gsSP1Triangle(10, 12, 11, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 108, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 0, 2, 0),
gsSP1Triangle(3, 2, 4, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(5, 7, 8, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(8, 10, 5, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 123, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(11, 12, 8, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 139, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(10, 9, 11, 0),
gsSP1Triangle(12, 10, 11, 0),
gsSP1Triangle(12, 7, 10, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 155, 15, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(3, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(11, 13, 14, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_0 + 170, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Vtx pistol_Arm_mesh_layer_1_vtx_1[34] = {
{{ {56, -22, -3}, 0, {168, 2906}, {127, 0, 0, 255} }},
{{ {56, -14, -3}, 0, {168, 2582}, {127, 0, 0, 255} }},
{{ {56, -14, 6}, 0, {-200, 2582}, {127, 0, 0, 255} }},
{{ {56, -22, 6}, 0, {-200, 2906}, {127, 0, 0, 255} }},
{{ {56, -14, -3}, 0, {-1590, 906}, {0, 0, 129, 255} }},
{{ {56, -22, -3}, 0, {-1914, 906}, {0, 0, 129, 255} }},
{{ {30, -14, -3}, 0, {-1590, 1971}, {0, 0, 129, 255} }},
{{ {41, 20, -3}, 0, {-173, 1528}, {0, 0, 129, 255} }},
{{ {68, 24, -3}, 0, {-16, 414}, {0, 0, 129, 255} }},
{{ {39, 24, -3}, 0, {-16, 1602}, {0, 0, 129, 255} }},
{{ {68, 24, 6}, 0, {-200, 1008}, {121, 218, 0, 255} }},
{{ {56, -14, 6}, 0, {-200, 2582}, {121, 218, 0, 255} }},
{{ {56, -14, -3}, 0, {168, 2582}, {121, 218, 0, 255} }},
{{ {68, 24, -3}, 0, {168, 1008}, {121, 218, 0, 255} }},
{{ {30, -14, 6}, 0, {-200, 1971}, {219, 134, 0, 255} }},
{{ {30, -14, -3}, 0, {168, 1971}, {219, 134, 0, 255} }},
{{ {56, -22, -3}, 0, {168, 906}, {219, 134, 0, 255} }},
{{ {56, -22, 6}, 0, {-200, 906}, {219, 134, 0, 255} }},
{{ {30, -14, 6}, 0, {168, 2582}, {135, 38, 0, 255} }},
{{ {41, 20, -3}, 0, {-200, 1165}, {135, 38, 0, 255} }},
{{ {30, -14, -3}, 0, {-200, 2582}, {135, 38, 0, 255} }},
{{ {41, 20, 6}, 0, {168, 1165}, {135, 38, 0, 255} }},
{{ {39, 24, -3}, 0, {-200, 1008}, {141, 202, 0, 255} }},
{{ {41, 20, -3}, 0, {-200, 1165}, {141, 202, 0, 255} }},
{{ {41, 20, 6}, 0, {168, 1165}, {141, 202, 0, 255} }},
{{ {39, 24, 6}, 0, {168, 1008}, {141, 202, 0, 255} }},
{{ {30, -14, 6}, 0, {1558, 1971}, {0, 0, 127, 255} }},
{{ {56, -22, 6}, 0, {1882, 906}, {0, 0, 127, 255} }},
{{ {56, -14, 6}, 0, {1558, 906}, {0, 0, 127, 255} }},
{{ {41, 20, 6}, 0, {141, 1528}, {0, 0, 127, 255} }},
{{ {56, -14, 6}, 0, {1558, 906}, {0, 0, 127, 255} }},
{{ {68, 24, 6}, 0, {-16, 414}, {0, 0, 127, 255} }},
{{ {41, 20, 6}, 0, {141, 1528}, {0, 0, 127, 255} }},
{{ {39, 24, 6}, 0, {-16, 1602}, {0, 0, 127, 255} }},
};
Gfx pistol_Arm_mesh_layer_1_tri_1[] = {
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_1 + 0, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 6, 7, 0),
gsSP1Triangle(4, 7, 8, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_1 + 14, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(15, 12, 14, 0),
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_1 + 30, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSPEndDisplayList(),
};
Vtx pistol_Arm_mesh_layer_1_vtx_2[6] = {
{{ {130, 36, -3}, 0, {144, 512}, {127, 0, 0, 255} }},
{{ {130, 40, -3}, 0, {144, 328}, {127, 0, 0, 255} }},
{{ {130, 43, 2}, 0, {-16, 235}, {127, 0, 0, 255} }},
{{ {130, 36, 6}, 0, {-176, 512}, {127, 0, 0, 255} }},
{{ {130, 40, 6}, 0, {-176, 328}, {127, 0, 0, 255} }},
{{ {130, 34, 2}, 0, {-16, 604}, {127, 0, 0, 255} }},
};
Gfx pistol_Arm_mesh_layer_1_tri_2[] = {
gsSPVertex(pistol_Arm_mesh_layer_1_vtx_2 + 0, 6, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSPEndDisplayList(),
};
Gfx mat_pistol_gray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(pistol_gray_lights),
gsSPEndDisplayList(),
};
Gfx mat_pistol_darkergray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(pistol_darkergray_lights),
gsDPSetTextureImage(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 1, pistol_noise_i8),
gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 511, 512),
gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b, 4, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPEndDisplayList(),
};
Gfx mat_pistol_black_layer1[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPEndDisplayList(),
};
Gfx mat_revert_pistol_black_layer1[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsSPEndDisplayList(),
};
Gfx pistol_Arm_mesh_layer_1[] = {
gsSPDisplayList(mat_pistol_gray),
gsSPDisplayList(pistol_Arm_mesh_layer_1_tri_0),
gsSPDisplayList(mat_pistol_darkergray),
gsSPDisplayList(pistol_Arm_mesh_layer_1_tri_1),
gsSPDisplayList(mat_pistol_black_layer1),
gsSPDisplayList(pistol_Arm_mesh_layer_1_tri_2),
gsSPDisplayList(mat_revert_pistol_black_layer1),
gsSPEndDisplayList(),
};
Gfx pistol_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};

View file

@ -1,24 +0,0 @@
#include "src/game/envfx_snow.h"
const GeoLayout shotgun_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_SCALE(LAYER_FORCE, 65536),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_mario_set_player_colors),
GEO_ASM(8, geo_mario_set_player_colors),
GEO_SWITCH_CASE(0, geo_switch_anim_state),
GEO_OPEN_NODE(),
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -45, 0, NULL),
GEO_OPEN_NODE(),
GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 0, 0, shotgun_Arm_mesh_layer_1),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, shotgun_material_revert_render_settings),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,22 +0,0 @@
extern const GeoLayout shotgun_geo[];
extern Lights1 shotgun_wood_lights;
extern Lights1 shotgun_darkgray_lights;
extern Lights1 shotgun_metal_lights;
extern u8 shotgun_wood_rgba16[];
extern u8 shotgun_plat_rgba16[];
extern Vtx shotgun_Arm_mesh_layer_1_vtx_0[108];
extern Gfx shotgun_Arm_mesh_layer_1_tri_0[];
extern Vtx shotgun_Arm_mesh_layer_1_vtx_1[68];
extern Gfx shotgun_Arm_mesh_layer_1_tri_1[];
extern Vtx shotgun_Arm_mesh_layer_1_vtx_2[46];
extern Gfx shotgun_Arm_mesh_layer_1_tri_2[];
extern Vtx shotgun_Arm_mesh_layer_1_vtx_3[10];
extern Gfx shotgun_Arm_mesh_layer_1_tri_3[];
extern Gfx mat_shotgun_wood[];
extern Gfx mat_shotgun_darkgray[];
extern Gfx mat_shotgun_metal[];
extern Gfx mat_revert_shotgun_metal[];
extern Gfx mat_shotgun_black_layer1[];
extern Gfx mat_revert_shotgun_black_layer1[];
extern Gfx shotgun_Arm_mesh_layer_1[];
extern Gfx shotgun_material_revert_render_settings[];

View file

@ -1,528 +0,0 @@
Lights1 shotgun_wood_lights = gdSPDefLights1(
0x7F, 0x7F, 0x7F,
0xFF, 0xFF, 0xFF, 0x28, 0x28, 0x28);
Lights1 shotgun_darkgray_lights = gdSPDefLights1(
0x3B, 0x3B, 0x3B,
0x7C, 0x7C, 0x7C, 0x28, 0x28, 0x28);
Lights1 shotgun_metal_lights = gdSPDefLights1(
0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x28, 0x28, 0x28);
Gfx shotgun_wood_rgba16_aligner[] = {gsSPEndDisplayList()};
u8 shotgun_wood_rgba16[] = {
#include "actors/shotgun/wood.rgba16.inc.c"
};
Gfx shotgun_plat_rgba16_aligner[] = {gsSPEndDisplayList()};
u8 shotgun_plat_rgba16[] = {
#include "actors/shotgun/plat.rgba16.inc.c"
};
Vtx shotgun_Arm_mesh_layer_1_vtx_0[108] = {
{{ {65, 23, 1}, 0, {-20, 1252}, {213, 137, 0, 255} }},
{{ {79, 21, -2}, 0, {67, 827}, {238, 150, 188, 255} }},
{{ {79, 21, 4}, 0, {-107, 827}, {239, 150, 68, 255} }},
{{ {90, 21, 4}, 0, {-107, 498}, {0, 148, 66, 255} }},
{{ {90, 21, -2}, 0, {67, 498}, {0, 148, 190, 255} }},
{{ {45, 19, 5}, 0, {-116, 1841}, {38, 183, 97, 255} }},
{{ {45, 19, -2}, 0, {75, 1841}, {38, 183, 159, 255} }},
{{ {5, 0, -2}, 0, {75, 3047}, {202, 163, 189, 255} }},
{{ {5, 0, 5}, 0, {-116, 3047}, {202, 163, 68, 255} }},
{{ {5, 0, -2}, 0, {-717, 3047}, {202, 163, 189, 255} }},
{{ {4, 26, -4}, 0, {68, 3097}, {182, 67, 178, 255} }},
{{ {45, 19, -2}, 0, {-166, 1841}, {38, 183, 159, 255} }},
{{ {45, 27, -1}, 0, {82, 1841}, {247, 88, 165, 255} }},
{{ {65, 23, 1}, 0, {-29, 1252}, {213, 137, 0, 255} }},
{{ {60, 33, -1}, 0, {279, 1404}, {208, 73, 164, 255} }},
{{ {79, 21, -2}, 0, {-106, 827}, {238, 150, 188, 255} }},
{{ {79, 21, -2}, 0, {-106, 827}, {238, 150, 188, 255} }},
{{ {60, 33, -1}, 0, {279, 1404}, {208, 73, 164, 255} }},
{{ {79, 26, -4}, 0, {64, 827}, {239, 224, 134, 255} }},
{{ {79, 37, -4}, 0, {383, 827}, {71, 38, 158, 255} }},
{{ {74, 40, -1}, 0, {473, 976}, {229, 112, 202, 255} }},
{{ {79, 30, -4}, 0, {190, 827}, {25, 40, 138, 255} }},
{{ {90, 26, -4}, 0, {64, 498}, {0, 226, 133, 255} }},
{{ {90, 30, -4}, 0, {190, 498}, {0, 90, 166, 255} }},
{{ {90, 21, -2}, 0, {-106, 498}, {0, 148, 190, 255} }},
{{ {79, 37, -4}, 0, {-186, 827}, {71, 38, 158, 255} }},
{{ {74, 40, -1}, 0, {-88, 976}, {229, 112, 202, 255} }},
{{ {79, 40, -1}, 0, {-91, 827}, {82, 91, 220, 255} }},
{{ {74, 40, 4}, 0, {64, 976}, {230, 112, 54, 255} }},
{{ {60, 33, -1}, 0, {-80, 1404}, {208, 73, 164, 255} }},
{{ {45, 27, 3}, 0, {48, 1841}, {248, 88, 91, 255} }},
{{ {45, 27, -1}, 0, {-71, 1841}, {247, 88, 165, 255} }},
{{ {45, 27, -1}, 0, {-71, 1841}, {247, 88, 165, 255} }},
{{ {4, 26, 7}, 0, {162, 3097}, {183, 67, 79, 255} }},
{{ {45, 27, 3}, 0, {48, 1841}, {248, 88, 91, 255} }},
{{ {4, 26, -4}, 0, {-186, 3097}, {182, 67, 178, 255} }},
{{ {60, 33, 4}, 0, {56, 1404}, {209, 73, 93, 255} }},
{{ {74, 40, 4}, 0, {64, 976}, {230, 112, 54, 255} }},
{{ {90, 26, -4}, 0, {-186, 928}, {129, 0, 0, 255} }},
{{ {90, 21, -2}, 0, {-99, 1098}, {129, 0, 0, 255} }},
{{ {90, 21, 4}, 0, {75, 1098}, {129, 0, 0, 255} }},
{{ {90, 30, 7}, 0, {162, 802}, {129, 0, 0, 255} }},
{{ {90, 26, 7}, 0, {162, 928}, {129, 0, 0, 255} }},
{{ {90, 30, -4}, 0, {-186, 802}, {129, 0, 0, 255} }},
{{ {5, 0, -2}, 0, {-107, 1709}, {202, 163, 189, 255} }},
{{ {5, 0, 5}, 0, {84, 1709}, {202, 163, 68, 255} }},
{{ {4, 26, 7}, 0, {162, 924}, {183, 67, 79, 255} }},
{{ {4, 26, -4}, 0, {-186, 924}, {182, 67, 178, 255} }},
{{ {5, 0, 5}, 0, {685, 3047}, {202, 163, 68, 255} }},
{{ {45, 19, 5}, 0, {134, 1841}, {38, 183, 97, 255} }},
{{ {4, 26, 7}, 0, {-100, 3097}, {183, 67, 79, 255} }},
{{ {45, 27, 3}, 0, {-114, 1841}, {248, 88, 91, 255} }},
{{ {65, 23, 1}, 0, {-3, 1252}, {213, 137, 0, 255} }},
{{ {60, 33, 4}, 0, {-311, 1404}, {209, 73, 93, 255} }},
{{ {79, 21, 4}, 0, {74, 827}, {239, 150, 68, 255} }},
{{ {79, 26, 7}, 0, {-96, 827}, {239, 224, 122, 255} }},
{{ {90, 21, 4}, 0, {74, 498}, {0, 148, 66, 255} }},
{{ {90, 26, 7}, 0, {-96, 498}, {0, 226, 123, 255} }},
{{ {90, 30, 7}, 0, {-222, 498}, {0, 90, 90, 255} }},
{{ {79, 30, 7}, 0, {-222, 827}, {26, 40, 118, 255} }},
{{ {79, 37, 7}, 0, {-415, 827}, {72, 38, 97, 255} }},
{{ {74, 40, 4}, 0, {-505, 976}, {230, 112, 54, 255} }},
{{ {79, 40, 4}, 0, {-99, 524}, {82, 91, 35, 255} }},
{{ {79, 37, 7}, 0, {-194, 609}, {72, 38, 97, 255} }},
{{ {79, 30, 7}, 0, {-194, 802}, {26, 40, 118, 255} }},
{{ {79, 37, -4}, 0, {154, 609}, {71, 38, 158, 255} }},
{{ {79, 30, -4}, 0, {154, 802}, {25, 40, 138, 255} }},
{{ {79, 40, -1}, 0, {59, 524}, {82, 91, 220, 255} }},
{{ {79, 40, 4}, 0, {67, 827}, {82, 91, 35, 255} }},
{{ {74, 40, 4}, 0, {64, 976}, {230, 112, 54, 255} }},
{{ {79, 37, 7}, 0, {162, 827}, {72, 38, 97, 255} }},
{{ {79, 40, -1}, 0, {-91, 827}, {82, 91, 220, 255} }},
{{ {79, 30, 7}, 0, {162, 827}, {26, 40, 118, 255} }},
{{ {90, 30, 7}, 0, {162, 498}, {0, 90, 90, 255} }},
{{ {90, 30, -4}, 0, {-186, 498}, {0, 90, 166, 255} }},
{{ {79, 30, -4}, 0, {-186, 827}, {25, 40, 138, 255} }},
{{ {90, 26, -4}, 0, {-186, 928}, {172, 234, 163, 255} }},
{{ {90, 21, -2}, 0, {-99, 1098}, {179, 170, 204, 255} }},
{{ {90, 21, 4}, 0, {75, 1098}, {179, 170, 53, 255} }},
{{ {90, 30, 7}, 0, {162, 802}, {183, 73, 74, 255} }},
{{ {90, 26, 7}, 0, {162, 928}, {173, 234, 93, 255} }},
{{ {90, 30, -4}, 0, {-186, 802}, {182, 73, 183, 255} }},
{{ {126, 30, -5}, 0, {-186, -580}, {73, 73, 182, 255} }},
{{ {90, 30, -4}, 0, {-186, 498}, {182, 73, 183, 255} }},
{{ {90, 30, 7}, 0, {162, 498}, {183, 73, 74, 255} }},
{{ {126, 30, 7}, 0, {162, -580}, {74, 73, 73, 255} }},
{{ {126, 26, -5}, 0, {64, -580}, {83, 231, 163, 255} }},
{{ {90, 30, -4}, 0, {190, 498}, {182, 73, 183, 255} }},
{{ {126, 30, -5}, 0, {190, -580}, {73, 73, 182, 255} }},
{{ {90, 26, -4}, 0, {64, 498}, {172, 234, 163, 255} }},
{{ {90, 21, -2}, 0, {-106, 498}, {179, 170, 204, 255} }},
{{ {126, 21, -1}, 0, {-106, -580}, {78, 169, 206, 255} }},
{{ {126, 26, 7}, 0, {-96, -580}, {83, 231, 92, 255} }},
{{ {90, 21, 4}, 0, {74, 498}, {179, 170, 53, 255} }},
{{ {126, 21, 4}, 0, {74, -580}, {78, 169, 50, 255} }},
{{ {90, 26, 7}, 0, {-96, 498}, {173, 234, 93, 255} }},
{{ {126, 30, 7}, 0, {-222, -580}, {74, 73, 73, 255} }},
{{ {90, 30, 7}, 0, {-222, 498}, {183, 73, 74, 255} }},
{{ {126, 21, 4}, 0, {-96, -580}, {78, 169, 50, 255} }},
{{ {90, 21, 4}, 0, {-107, 498}, {179, 170, 53, 255} }},
{{ {90, 21, -2}, 0, {67, 498}, {179, 170, 204, 255} }},
{{ {126, 21, -1}, 0, {55, -580}, {78, 169, 206, 255} }},
{{ {126, 26, -5}, 0, {154, 928}, {83, 231, 163, 255} }},
{{ {126, 21, 4}, 0, {-96, 1098}, {78, 169, 50, 255} }},
{{ {126, 21, -1}, 0, {55, 1098}, {78, 169, 206, 255} }},
{{ {126, 26, 7}, 0, {-194, 928}, {83, 231, 92, 255} }},
{{ {126, 30, -5}, 0, {154, 802}, {73, 73, 182, 255} }},
{{ {126, 30, 7}, 0, {-194, 802}, {74, 73, 73, 255} }},
};
Gfx shotgun_Arm_mesh_layer_1_tri_0[] = {
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSP1Triangle(3, 1, 4, 0),
gsSP1Triangle(0, 5, 6, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(5, 8, 7, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(12, 11, 10, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(14, 13, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(4, 3, 1, 0),
gsSP1Triangle(2, 3, 5, 0),
gsSP1Triangle(6, 2, 5, 0),
gsSP1Triangle(6, 5, 7, 0),
gsSP1Triangle(8, 2, 6, 0),
gsSP1Triangle(8, 0, 2, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(11, 10, 12, 0),
gsSP1Triangle(12, 10, 13, 0),
gsSP1Triangle(14, 12, 13, 0),
gsSP1Triangle(13, 15, 14, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 32, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(2, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(9, 11, 6, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 48, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 2, 1, 0),
gsSP1Triangle(1, 4, 3, 0),
gsSP1Triangle(5, 3, 4, 0),
gsSP1Triangle(4, 6, 5, 0),
gsSP1Triangle(6, 7, 5, 0),
gsSP1Triangle(8, 7, 6, 0),
gsSP1Triangle(8, 9, 7, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(7, 10, 11, 0),
gsSP1Triangle(7, 11, 5, 0),
gsSP1Triangle(11, 12, 5, 0),
gsSP1Triangle(5, 12, 13, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 62, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 7, 6, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 76, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 13, 11, 0),
gsSP1Triangle(10, 14, 13, 0),
gsSP1Triangle(14, 10, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_0 + 92, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 0, 3, 0),
gsSP1Triangle(3, 0, 4, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 13, 11, 0),
gsSP1Triangle(13, 10, 14, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPEndDisplayList(),
};
Vtx shotgun_Arm_mesh_layer_1_vtx_1[68] = {
{{ {75, 18, 1}, 0, {-173, 958}, {211, 206, 148, 255} }},
{{ {77, 15, 1}, 0, {-274, 894}, {211, 206, 148, 255} }},
{{ {73, 18, 1}, 0, {-173, 1008}, {211, 206, 148, 255} }},
{{ {77, 15, 1}, 0, {-16, 1266}, {107, 68, 0, 255} }},
{{ {75, 18, 1}, 0, {4, 1165}, {107, 68, 0, 255} }},
{{ {75, 18, 2}, 0, {-36, 1165}, {107, 68, 0, 255} }},
{{ {77, 15, 1}, 0, {242, 894}, {212, 206, 108, 255} }},
{{ {75, 18, 2}, 0, {141, 958}, {212, 206, 108, 255} }},
{{ {73, 18, 1}, 0, {141, 1008}, {212, 206, 108, 255} }},
{{ {71, 14, 2}, 0, {-54, 1056}, {233, 200, 111, 255} }},
{{ {71, 14, 0}, 0, {14, 1056}, {232, 200, 145, 255} }},
{{ {81, 14, 0}, 0, {14, 778}, {27, 198, 146, 255} }},
{{ {81, 14, 2}, 0, {-54, 778}, {28, 198, 110, 255} }},
{{ {68, 18, 3}, 0, {22, 1185}, {200, 233, 112, 255} }},
{{ {71, 14, 0}, 0, {-46, 1296}, {232, 200, 145, 255} }},
{{ {71, 14, 2}, 0, {22, 1296}, {233, 200, 111, 255} }},
{{ {68, 18, 3}, 0, {22, 1185}, {200, 233, 112, 255} }},
{{ {68, 18, 0}, 0, {-46, 1185}, {200, 233, 145, 255} }},
{{ {71, 14, 0}, 0, {-46, 1296}, {232, 200, 145, 255} }},
{{ {68, 25, 3}, 0, {22, 978}, {221, 0, 122, 255} }},
{{ {68, 25, 0}, 0, {-46, 978}, {220, 0, 134, 255} }},
{{ {71, 14, 0}, 0, {-46, 1056}, {232, 200, 145, 255} }},
{{ {80, 15, 1}, 0, {-12, 789}, {201, 115, 0, 255} }},
{{ {81, 14, 0}, 0, {-46, 778}, {27, 198, 146, 255} }},
{{ {72, 15, 1}, 0, {-12, 1047}, {49, 117, 0, 255} }},
{{ {81, 14, 2}, 0, {22, 778}, {28, 198, 110, 255} }},
{{ {71, 14, 2}, 0, {22, 1056}, {233, 200, 111, 255} }},
{{ {68, 18, 0}, 0, {14, 1185}, {200, 233, 145, 255} }},
{{ {72, 15, 1}, 0, {-20, 1274}, {49, 117, 0, 255} }},
{{ {71, 14, 0}, 0, {14, 1296}, {232, 200, 145, 255} }},
{{ {68, 18, 1}, 0, {-20, 1176}, {118, 48, 0, 255} }},
{{ {68, 25, 0}, 0, {14, 978}, {220, 0, 134, 255} }},
{{ {68, 25, 0}, 0, {14, 978}, {220, 0, 134, 255} }},
{{ {68, 25, 1}, 0, {-20, 978}, {127, 0, 0, 255} }},
{{ {68, 18, 1}, 0, {-20, 1176}, {118, 48, 0, 255} }},
{{ {68, 18, 3}, 0, {-54, 1185}, {200, 233, 112, 255} }},
{{ {68, 25, 3}, 0, {-54, 978}, {221, 0, 122, 255} }},
{{ {71, 14, 2}, 0, {-54, 1296}, {233, 200, 111, 255} }},
{{ {72, 15, 1}, 0, {-20, 1274}, {49, 117, 0, 255} }},
{{ {81, 14, 2}, 0, {-54, 1296}, {28, 198, 110, 255} }},
{{ {81, 14, 0}, 0, {14, 1296}, {27, 198, 146, 255} }},
{{ {84, 18, 0}, 0, {14, 1185}, {54, 237, 143, 255} }},
{{ {84, 18, 2}, 0, {-54, 1185}, {55, 237, 113, 255} }},
{{ {84, 25, 0}, 0, {14, 978}, {35, 0, 134, 255} }},
{{ {84, 25, 2}, 0, {-54, 978}, {36, 0, 122, 255} }},
{{ {80, 15, 1}, 0, {-12, 1274}, {201, 115, 0, 255} }},
{{ {81, 14, 2}, 0, {22, 1296}, {28, 198, 110, 255} }},
{{ {84, 18, 2}, 0, {22, 1185}, {55, 237, 113, 255} }},
{{ {80, 15, 1}, 0, {-12, 1274}, {201, 115, 0, 255} }},
{{ {84, 18, 2}, 0, {22, 1185}, {55, 237, 113, 255} }},
{{ {83, 18, 1}, 0, {-12, 1177}, {136, 42, 0, 255} }},
{{ {84, 25, 2}, 0, {22, 978}, {36, 0, 122, 255} }},
{{ {83, 25, 1}, 0, {-12, 978}, {129, 0, 0, 255} }},
{{ {84, 18, 0}, 0, {-46, 1185}, {54, 237, 143, 255} }},
{{ {84, 25, 0}, 0, {-46, 978}, {35, 0, 134, 255} }},
{{ {81, 14, 0}, 0, {-46, 1296}, {27, 198, 146, 255} }},
{{ {75, 24, 2}, 0, {-16, 958}, {208, 0, 118, 255} }},
{{ {73, 24, 1}, 0, {-16, 1008}, {208, 0, 118, 255} }},
{{ {73, 18, 1}, 0, {141, 1008}, {208, 0, 118, 255} }},
{{ {75, 18, 2}, 0, {141, 958}, {208, 0, 118, 255} }},
{{ {73, 24, 1}, 0, {-16, 1008}, {208, 0, 139, 255} }},
{{ {75, 24, 1}, 0, {-16, 958}, {208, 0, 139, 255} }},
{{ {75, 18, 1}, 0, {-173, 958}, {208, 0, 139, 255} }},
{{ {73, 18, 1}, 0, {-173, 1008}, {208, 0, 139, 255} }},
{{ {75, 18, 1}, 0, {4, 1165}, {127, 0, 0, 255} }},
{{ {75, 24, 1}, 0, {4, 1008}, {127, 0, 0, 255} }},
{{ {75, 24, 2}, 0, {-36, 1008}, {127, 0, 0, 255} }},
{{ {75, 18, 2}, 0, {-36, 1165}, {127, 0, 0, 255} }},
};
Gfx shotgun_Arm_mesh_layer_1_tri_1[] = {
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_1 + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 4, 5, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(9, 10, 11, 0),
gsSP1Triangle(9, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_1 + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(3, 1, 0, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(5, 6, 7, 0),
gsSP1Triangle(5, 8, 6, 0),
gsSP1Triangle(8, 9, 6, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(11, 12, 13, 0),
gsSP1Triangle(11, 14, 12, 0),
gsSP1Triangle(15, 14, 11, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_1 + 32, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(1, 3, 2, 0),
gsSP1Triangle(1, 4, 3, 0),
gsSP1Triangle(2, 3, 5, 0),
gsSP1Triangle(2, 5, 6, 0),
gsSP1Triangle(7, 8, 9, 0),
gsSP1Triangle(7, 9, 10, 0),
gsSP1Triangle(10, 9, 11, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(13, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_1 + 48, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 1, 3, 0),
gsSP1Triangle(2, 3, 4, 0),
gsSP1Triangle(5, 2, 4, 0),
gsSP1Triangle(5, 4, 6, 0),
gsSP1Triangle(7, 2, 5, 0),
gsSP1Triangle(7, 0, 2, 0),
gsSP1Triangle(8, 9, 10, 0),
gsSP1Triangle(8, 10, 11, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_1 + 64, 4, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSPEndDisplayList(),
};
Vtx shotgun_Arm_mesh_layer_1_vtx_2[46] = {
{{ {196, 22, 3}, 0, {-160, -3197}, {0, 146, 63, 255} }},
{{ {79, 26, 6}, 0, {-419, 315}, {179, 0, 101, 255} }},
{{ {79, 22, 4}, 0, {-160, 315}, {179, 169, 51, 255} }},
{{ {196, 26, 6}, 0, {-419, -3197}, {0, 0, 127, 255} }},
{{ {79, 30, 4}, 0, {-678, 315}, {155, 38, 66, 255} }},
{{ {196, 30, 3}, 0, {-678, -3197}, {0, 64, 110, 255} }},
{{ {196, 22, -2}, 0, {-119, -3197}, {0, 146, 193, 255} }},
{{ {196, 22, 3}, 0, {-418, -3197}, {0, 146, 63, 255} }},
{{ {79, 22, 4}, 0, {-418, 315}, {179, 169, 51, 255} }},
{{ {79, 22, -1}, 0, {-119, 315}, {178, 169, 206, 255} }},
{{ {79, 22, 4}, 0, {-102, 546}, {179, 169, 51, 255} }},
{{ {79, 26, 6}, 0, {48, 416}, {179, 0, 101, 255} }},
{{ {79, 30, 4}, 0, {-102, 286}, {155, 38, 66, 255} }},
{{ {79, 26, -4}, 0, {-551, 416}, {178, 0, 156, 255} }},
{{ {79, 30, -1}, 0, {-401, 286}, {154, 38, 190, 255} }},
{{ {79, 22, -1}, 0, {-401, 546}, {178, 169, 206, 255} }},
{{ {196, 30, -2}, 0, {158, -3197}, {0, 63, 146, 255} }},
{{ {79, 26, -4}, 0, {-101, 315}, {178, 0, 156, 255} }},
{{ {79, 30, -1}, 0, {158, 315}, {154, 38, 190, 255} }},
{{ {196, 26, -4}, 0, {-101, -3197}, {0, 0, 129, 255} }},
{{ {79, 22, -1}, 0, {-360, 315}, {178, 169, 206, 255} }},
{{ {196, 22, -2}, 0, {-360, -3197}, {0, 146, 193, 255} }},
{{ {79, 30, -1}, 0, {-401, 286}, {154, 218, 190, 255} }},
{{ {79, 30, 4}, 0, {-102, 286}, {155, 218, 66, 255} }},
{{ {79, 35, 6}, 0, {48, 157}, {179, 0, 101, 255} }},
{{ {79, 39, -1}, 0, {-401, 27}, {178, 87, 206, 255} }},
{{ {79, 39, 4}, 0, {-102, 27}, {179, 87, 51, 255} }},
{{ {79, 35, -4}, 0, {-551, 157}, {178, 0, 156, 255} }},
{{ {79, 35, 6}, 0, {-938, 315}, {179, 0, 101, 255} }},
{{ {79, 30, 4}, 0, {-678, 315}, {155, 218, 66, 255} }},
{{ {196, 30, 3}, 0, {-678, -3197}, {0, 192, 110, 255} }},
{{ {196, 35, 6}, 0, {-938, -3197}, {0, 0, 127, 255} }},
{{ {79, 39, 4}, 0, {-1197, 315}, {179, 87, 51, 255} }},
{{ {79, 35, 6}, 0, {-938, 315}, {179, 0, 101, 255} }},
{{ {196, 35, 6}, 0, {-938, -3197}, {0, 0, 127, 255} }},
{{ {196, 39, 3}, 0, {-1197, -3197}, {0, 110, 63, 255} }},
{{ {79, 30, -1}, 0, {158, 315}, {154, 218, 190, 255} }},
{{ {196, 35, -4}, 0, {418, -3197}, {0, 0, 129, 255} }},
{{ {196, 30, -2}, 0, {158, -3197}, {0, 193, 146, 255} }},
{{ {79, 35, -4}, 0, {418, 315}, {178, 0, 156, 255} }},
{{ {196, 39, -2}, 0, {677, -3197}, {0, 110, 193, 255} }},
{{ {79, 39, -1}, 0, {677, 315}, {178, 87, 206, 255} }},
{{ {79, 39, -1}, 0, {-401, 315}, {178, 87, 206, 255} }},
{{ {79, 39, 4}, 0, {-102, 315}, {179, 87, 51, 255} }},
{{ {196, 39, 3}, 0, {-102, -3197}, {0, 110, 63, 255} }},
{{ {196, 39, -2}, 0, {-401, -3197}, {0, 110, 193, 255} }},
};
Gfx shotgun_Arm_mesh_layer_1_tri_2[] = {
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_2 + 0, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSP1Triangle(12, 14, 13, 0),
gsSP1Triangle(13, 15, 10, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_2 + 16, 16, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 3, 1, 0),
gsSP1Triangle(3, 4, 1, 0),
gsSP1Triangle(3, 5, 4, 0),
gsSP1Triangle(6, 7, 8, 0),
gsSP1Triangle(6, 8, 9, 0),
gsSP1Triangle(8, 10, 9, 0),
gsSP1Triangle(9, 11, 6, 0),
gsSP1Triangle(12, 13, 14, 0),
gsSP1Triangle(12, 14, 15, 0),
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_2 + 32, 14, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(0, 2, 3, 0),
gsSP1Triangle(4, 5, 6, 0),
gsSP1Triangle(4, 7, 5, 0),
gsSP1Triangle(7, 8, 5, 0),
gsSP1Triangle(7, 9, 8, 0),
gsSP1Triangle(10, 11, 12, 0),
gsSP1Triangle(10, 12, 13, 0),
gsSPEndDisplayList(),
};
Vtx shotgun_Arm_mesh_layer_1_vtx_3[10] = {
{{ {196, 30, 3}, 0, {-95, 799}, {127, 0, 0, 255} }},
{{ {196, 26, 6}, 0, {-170, 928}, {127, 0, 0, 255} }},
{{ {196, 22, 3}, 0, {-95, 1058}, {127, 0, 0, 255} }},
{{ {196, 26, -4}, 0, {129, 928}, {127, 0, 0, 255} }},
{{ {196, 22, -2}, 0, {55, 1058}, {127, 0, 0, 255} }},
{{ {196, 30, -2}, 0, {55, 799}, {127, 0, 0, 255} }},
{{ {196, 35, 6}, 0, {-170, 669}, {127, 0, 0, 255} }},
{{ {196, 39, -2}, 0, {55, 540}, {127, 0, 0, 255} }},
{{ {196, 35, -4}, 0, {129, 669}, {127, 0, 0, 255} }},
{{ {196, 39, 3}, 0, {-95, 540}, {127, 0, 0, 255} }},
};
Gfx shotgun_Arm_mesh_layer_1_tri_3[] = {
gsSPVertex(shotgun_Arm_mesh_layer_1_vtx_3 + 0, 10, 0),
gsSP1Triangle(0, 1, 2, 0),
gsSP1Triangle(2, 3, 0, 0),
gsSP1Triangle(2, 4, 3, 0),
gsSP1Triangle(3, 5, 0, 0),
gsSP1Triangle(6, 0, 5, 0),
gsSP1Triangle(5, 7, 6, 0),
gsSP1Triangle(5, 8, 7, 0),
gsSP1Triangle(7, 9, 6, 0),
gsSPEndDisplayList(),
};
Gfx mat_shotgun_wood[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(shotgun_wood_lights),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, shotgun_wood_rgba16),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 1023, 256),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0),
gsDPSetTileSize(0, 0, 0, 124, 124),
gsSPEndDisplayList(),
};
Gfx mat_shotgun_darkgray[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPSetLights1(shotgun_darkgray_lights),
gsSPEndDisplayList(),
};
Gfx mat_shotgun_metal[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT),
gsSPSetGeometryMode(G_TEXTURE_GEN),
gsSPTexture(4032, 1984, 0, 0, 1),
gsSPSetLights1(shotgun_metal_lights),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, shotgun_plat_rgba16),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0),
gsDPLoadBlock(7, 0, 0, 2047, 128),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0),
gsDPSetTileSize(0, 0, 0, 252, 124),
gsSPEndDisplayList(),
};
Gfx mat_revert_shotgun_metal[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsSPEndDisplayList(),
};
Gfx mat_shotgun_black_layer1[] = {
gsDPPipeSync(),
gsDPSetCombineLERP(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2),
gsSPTexture(65535, 65535, 0, 0, 1),
gsSPEndDisplayList(),
};
Gfx mat_revert_shotgun_black_layer1[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsSPEndDisplayList(),
};
Gfx shotgun_Arm_mesh_layer_1[] = {
gsSPDisplayList(mat_shotgun_wood),
gsSPDisplayList(shotgun_Arm_mesh_layer_1_tri_0),
gsSPDisplayList(mat_shotgun_darkgray),
gsSPDisplayList(shotgun_Arm_mesh_layer_1_tri_1),
gsSPDisplayList(mat_shotgun_metal),
gsSPDisplayList(shotgun_Arm_mesh_layer_1_tri_2),
gsSPDisplayList(mat_revert_shotgun_metal),
gsSPDisplayList(mat_shotgun_black_layer1),
gsSPDisplayList(shotgun_Arm_mesh_layer_1_tri_3),
gsSPDisplayList(mat_revert_shotgun_black_layer1),
gsSPEndDisplayList(),
};
Gfx shotgun_material_revert_render_settings[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsSPClearGeometryMode(G_TEXTURE_GEN),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT),
gsSPTexture(65535, 65535, 0, 0, 0),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPEndDisplayList(),
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -1,7 +0,0 @@
const GeoLayout troll_explosion_geo[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, troll_explosion),
GEO_CLOSE_NODE(),
GEO_END(),
};

View file

@ -1,38 +0,0 @@
static const Vtx explosion_seg3_vertex_030009C8[] = {
{{{ -128, -128, 0}, 0, { 0, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 128, -128, 0}, 0, { 992, 992}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 128, 128, 0}, 0, { 992, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ -128, 128, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
};
// 0x03000A08
ALIGNED8 const Texture troll_explosion_texture[] = {
#include "actors/troll_explosion/troll_explosion.rgba16.inc.c"
};
// 0x03004208 - 0x03004298
const Gfx explosion_seg3_dl_03004208[] = {
gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),
gsDPSetEnvColor(255, 255, 255, 150),
gsSPClearGeometryMode(G_LIGHTING),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPVertex(explosion_seg3_vertex_030009C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING),
gsDPSetEnvColor(255, 255, 255, 255),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPEndDisplayList(),
};
const Gfx troll_explosion[] = {
gsDPPipeSync(),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, troll_explosion_texture),
gsSPBranchList(explosion_seg3_dl_03004208),
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View file

@ -256,6 +256,7 @@ end
function hurt_mr_blizzard(obj) function hurt_mr_blizzard(obj)
play_sound(SOUND_OBJ_SNOWMAN_EXPLODE, obj.header.gfx.cameraToObject) play_sound(SOUND_OBJ_SNOWMAN_EXPLODE, obj.header.gfx.cameraToObject)
obj_mark_for_deletion(obj) obj_mark_for_deletion(obj)
obj_spawn_loot_yellow_coins(obj, obj.oNumLootCoins, 20)
network_send_object(obj, false) network_send_object(obj, false)
return true return true
end end
@ -294,6 +295,13 @@ function hurt_bully(obj, bulletObj)
return true return true
end end
--- @param obj Object
function hurt_moneybag(obj)
obj.oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | INT_ATTACK_NOT_FROM_BELOW
network_send_object(obj, false)
return true
end
--- @param obj Object --- @param obj Object
--- @param bulletObj Object --- @param bulletObj Object
function hurt_king_bobomb(obj, bulletObj) function hurt_king_bobomb(obj, bulletObj)
@ -324,8 +332,8 @@ end
--- @param bulletObj Object --- @param bulletObj Object
function hurt_yoshi(_, bulletObj) function hurt_yoshi(_, bulletObj)
bulletObj.oAction = 2
bullet_ricochet(bulletObj) bullet_ricochet(bulletObj)
bulletObj.oAction = 2
djui_chat_message_create("\\#a0ffa0\\Yoshi\\#dcdcdc\\: no lol") djui_chat_message_create("\\#a0ffa0\\Yoshi\\#dcdcdc\\: no lol")
play_sound(SOUND_MENU_MESSAGE_APPEAR, gGlobalSoundSource) play_sound(SOUND_MENU_MESSAGE_APPEAR, gGlobalSoundSource)

View file

@ -10,6 +10,7 @@ gFirstPersonViewmodels = {
--- @param o Object --- @param o Object
local function bhv_viewmodel_init(o) local function bhv_viewmodel_init(o)
o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
o.oGraphYOffset = 0
end end
--- @param o Object --- @param o Object

View file

@ -1,5 +1,5 @@
-- name: .Gun Mod DX -- name: .Gun Mod DX
-- description: Gun Mod DX v3.0\nBy \\#ec7731\\Agent X\\#dcdcdc\\\nSpecial thanks to \\#f296af\\PeachyPeach\\#dcdcdc\\\n\nThis is a rewritten & overhauled version of my original Gun Mod for sm64ex-coop. I thought this would make a good mod to bundle with sm64coopdx.\n\nPress [\\#3040ff\\Y\\#dcdcdc\\] to shoot\nPress [\\#3040ff\\X\\#dcdcdc\\] to reload\nRun \\#00ffff\\/gm help\\#dcdcdc\\ for help -- description: Gun Mod DX v3.0.1\nBy \\#ec7731\\Agent X\\#dcdcdc\\\nSpecial thanks to \\#f296af\\PeachyPeach\\#dcdcdc\\\n\nThis is a rewritten & overhauled version of my original Gun Mod for sm64ex-coop. I thought this would make a good mod to bundle with sm64coopdx. If you have two pistols, you are able to dual wield them as well!\n\nPress [\\#3040ff\\Y\\#dcdcdc\\] to shoot\nPress [\\#3040ff\\X\\#dcdcdc\\] to reload\nRun \\#00ffff\\/gm help\\#dcdcdc\\ for help
-- deluxe: true -- deluxe: true
if SM64COOPDX_VERSION == nil then return end if SM64COOPDX_VERSION == nil then return end
@ -40,6 +40,7 @@ gShootableHitboxes = {
[id_bhvBigBully] = hurt_bully, [id_bhvBigBully] = hurt_bully,
[id_bhvSmallChillBully] = hurt_bully, [id_bhvSmallChillBully] = hurt_bully,
[id_bhvBigChillBully] = hurt_bully, [id_bhvBigChillBully] = hurt_bully,
[id_bhvMoneybag] = hurt_moneybag,
[id_bhvKingBobomb] = hurt_king_bobomb, [id_bhvKingBobomb] = hurt_king_bobomb,
[id_bhvBowser] = hurt_bowser, [id_bhvBowser] = hurt_bowser,
[id_bhvYoshi] = hurt_yoshi [id_bhvYoshi] = hurt_yoshi
@ -293,7 +294,7 @@ local function on_gm_command(msg)
return on_give_command(args[2] or "") return on_give_command(args[2] or "")
end end
if msg:gsub("%s+", "") == "" then if msg:gsub("%s+", "") == "" and (network_is_server() or network_is_moderator()) then
gGlobalSyncTable.gunModEnabled = not gGlobalSyncTable.gunModEnabled gGlobalSyncTable.gunModEnabled = not gGlobalSyncTable.gunModEnabled
djui_chat_message_create("[Gun Mod] Status: " .. on_or_off(gGlobalSyncTable.gunModEnabled)) djui_chat_message_create("[Gun Mod] Status: " .. on_or_off(gGlobalSyncTable.gunModEnabled))
else else

Binary file not shown.

View file

@ -1,432 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
-- localize functions to improve performance - _mquake_a_constants.lua
local clampf,allocate_mario_action,vec3f_copy,vec3f_add,set_mario_action,math_floor,obj_get_first,vec3f_dist,obj_get_next = clampf,allocate_mario_action,vec3f_copy,vec3f_add,set_mario_action,math.floor,obj_get_first,vec3f_dist,obj_get_next
sv_stopmovement = false
sv_playerheight = 160
sv_crouchoffset = 60
sv_playersubmergelevel = 100
sv_camerayoffset = 8
sv_waterfriction = 2.5
sv_friction = 4.75
sv_crouchfriction_scale = 2.0
sv_stopspeed = 2
sv_maxspeed = 200
sv_maxvelocity = 1200
sv_playerspeed = 120
sv_playerspeed_water = 120
sv_playerspeed_water_shell = 300
sv_upspeed_water = 160
sv_playerspeed_crouch = 60
sv_playerclamp_air = 25
sv_accelerate = 10
sv_airaccelerate_value = 80
sv_edgefriction = 2
sv_tickrate = 1/30
sv_scalerate = 0.25
cl_grounddefacto = 1.0 / 0.60
cl_localangles = {forward={x=0,y=0,z=0},right={x=0,y=0,z=0},rawForward={x=0,y=0,z=0}}
cl_speedbuffer = {x=0,y=0,z=0} --,w=0}
cl_upwarpfix_vel = {x=0,y=0,z=0}
cl_upwarpfix_pos = {x=0,y=0,z=0}
cl_bowserthrow = false
cl_bowserthrow_previousYaw = 0
cl_interacttimer = 0
cl_red = 0
cl_footstepTimer = 0
-- cl_watershelltimer = 0
-- Physics helpers
local SurfaceStandableMinimum = {
[SURFACE_CLASS_NOT_SLIPPERY] = 0.01,
[SURFACE_HARD_NOT_SLIPPERY] = 0.01,
[SURFACE_CLASS_SLIPPERY] = 0.7,
[SURFACE_HARD_SLIPPERY] = 0.7,
[SURFACE_NO_CAM_COL_SLIPPERY] = 0.7,
[SURFACE_NOISE_SLIPPERY] = 0.7,
[SURFACE_SLIPPERY] = 0.7,
[SURFACE_CLASS_VERY_SLIPPERY] = 0.85,
[SURFACE_HARD_VERY_SLIPPERY] = 0.85,
[SURFACE_NO_CAM_COL_VERY_SLIPPERY] = 0.85,
[SURFACE_VERY_SLIPPERY] = 0.85,
[SURFACE_NOISE_VERY_SLIPPERY] = 0.85,
[SURFACE_NOISE_VERY_SLIPPERY_73] = 0.85,
[SURFACE_NOISE_VERY_SLIPPERY_74] = 0.85
}
local SurfaceFriction = {
[SURFACE_CLASS_NOT_SLIPPERY] = 1.0,
[SURFACE_HARD_NOT_SLIPPERY] = 1.0,
[SURFACE_CLASS_SLIPPERY] = 0.8,
[SURFACE_HARD_SLIPPERY] = 0.8,
[SURFACE_NO_CAM_COL_SLIPPERY] = 0.8,
[SURFACE_NOISE_SLIPPERY] = 0.8,
[SURFACE_SLIPPERY] = 0.8,
[SURFACE_CLASS_VERY_SLIPPERY] = 0.4,
[SURFACE_HARD_VERY_SLIPPERY] = 0.4,
[SURFACE_NO_CAM_COL_VERY_SLIPPERY] = 0.4,
[SURFACE_VERY_SLIPPERY] = 0.4,
[SURFACE_NOISE_VERY_SLIPPERY] = 0.4,
[SURFACE_NOISE_VERY_SLIPPERY_73] = 0.4,
[SURFACE_NOISE_VERY_SLIPPERY_74] = 0.4
}
local AreaTypeFriction = {
[TERRAIN_SLIDE] = 0.225, -- incase i wanna give other types different friction values
[TERRAIN_SNOW] = 0.90 -- incase i wanna give other types different friction values
}
local AreaTypeStandable = {
[TERRAIN_SLIDE] = 2.75,
[TERRAIN_SNOW] = 1.10
}
local function SV_GetAreaFriction(type)
if AreaTypeFriction[type] ~= nil then return AreaTypeFriction[type] end
return 1.0
end
local function SV_GetAreaStandable(type)
if AreaTypeStandable[type] ~= nil then return AreaTypeStandable[type] end
return 1.0
end
function SV_GetSurfaceStandableMinimum(type,areaType)
areaFactor = SV_GetAreaStandable(areaType)
standableMinimum = 0.675
if SurfaceStandableMinimum[type] ~= nil then standableMinimum = SurfaceStandableMinimum[type] end
return clampf(standableMinimum * areaFactor,0.01,0.999)
end
function SV_GetSurfaceStandableFrictionMultiplier(type,areaType)
areaFactor = SV_GetAreaFriction(areaType)
standableMinimum = 1.0
if SurfaceFriction[type] ~= nil then standableMinimum = SurfaceFriction[type] end
return clampf(standableMinimum * areaFactor,0.01,1.0)
end
sv_gunmod_loaded = (_G.gunModApi ~= nil)
-- Actions
ACT_DM_GROUNDED_MOVEMENT = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_CUSTOM_ACTION)
ACT_DM_GROUNDED_IDLE = allocate_mario_action(ACT_FLAG_MOVING | ACT_FLAG_IDLE | ACT_FLAG_CUSTOM_ACTION) -- fix for reading signs while moving on accident
ACT_DM_AIR_MOVEMENT = allocate_mario_action(ACT_GROUP_AIRBORNE | ACT_FLAG_MOVING | ACT_FLAG_AIR | ACT_FLAG_CUSTOM_ACTION)
ACT_DM_GROUNDED_MOVEMENT_METAL = allocate_mario_action(ACT_GROUP_SUBMERGED | ACT_FLAG_MOVING | ACT_FLAG_WATER_OR_TEXT | ACT_FLAG_CUSTOM_ACTION)
ACT_DM_AIR_MOVEMENT_METAL = allocate_mario_action(ACT_GROUP_SUBMERGED | ACT_FLAG_MOVING | ACT_FLAG_WATER_OR_TEXT | ACT_FLAG_CUSTOM_ACTION)
ACT_DM_WATER_MOVEMENT = allocate_mario_action(ACT_GROUP_SUBMERGED | ACT_FLAG_MOVING | ACT_FLAG_WATER_OR_TEXT | ACT_FLAG_CUSTOM_ACTION)
ACT_DM_POLE_MOVEMENT = allocate_mario_action(ACT_GROUP_CUTSCENE | ACT_FLAG_MOVING | ACT_FLAG_CUSTOM_ACTION)
-- Predefine these for later calls
main_act_dm_grounded_movement = function() end
main_act_dm_air_movement = function() end
act_dm_water_movement_movement = function() end
-- Action helpers
DM_ACTIONS = {
[ACT_DM_GROUNDED_MOVEMENT] = 1,
[ACT_DM_GROUNDED_IDLE] = 1,
[ACT_DM_AIR_MOVEMENT] = 1,
[ACT_DM_GROUNDED_MOVEMENT_METAL] = 1,
[ACT_DM_AIR_MOVEMENT_METAL] = 1,
[ACT_DM_WATER_MOVEMENT] = 1,
[ACT_DM_POLE_MOVEMENT] = 1,
[ACT_ELECTROCUTION] = 1,
[ACT_QUICKSAND_DEATH] = 1,
[ACT_SHOCKED] = 1,
[ACT_GRABBED] = 1,
[ACT_UNINITIALIZED] = 1,
[ACT_PULLING_DOOR] = 1,
[ACT_PUSHING_DOOR] = 1,
[ACT_EMERGE_FROM_PIPE] = 1,
[ACT_ENTERING_STAR_DOOR] = 1,
[ACT_DEATH_EXIT] = 1,
[ACT_DEATH_EXIT_LAND] = 1,
[ACT_SQUISHED] = 1,
[ACT_DISAPPEARED] = 1,
[ACT_EXIT_AIRBORNE] = 1,
[ACT_EXIT_LAND_SAVE_DIALOG] = 1,
[ACT_HARD_BACKWARD_GROUND_KB] = 1,
[ACT_FALLING_DEATH_EXIT] = 1,
[ACT_FALLING_EXIT_AIRBORNE] = 1,
[ACT_DEATH_ON_BACK] = 1,
[ACT_DEATH_ON_STOMACH] = 1,
[ACT_DROWNING] = 1,
-- [ACT_WATER_IDLE] = 1,
-- [ACT_WATER_SHOCKED] = 1,
[ACT_SPECIAL_DEATH_EXIT] = 1,
[ACT_SPECIAL_EXIT_AIRBORNE] = 1,
[ACT_IN_CANNON] = 1,
[ACT_SHOT_FROM_CANNON] = 1,
[ACT_WAITING_FOR_DIALOG] = 1,
[ACT_READING_AUTOMATIC_DIALOG] = 1,
[ACT_READING_NPC_DIALOG] = 1,
[ACT_READING_SIGN] = 1,
[ACT_GRAB_POLE_FAST] = 1,
[ACT_GRAB_POLE_SLOW] = 1,
[ACT_CLIMBING_POLE] = 1,
[ACT_READING_SIGN] = 1,
[ACT_HOLDING_POLE] = 1,
[ACT_TOP_OF_POLE] = 1,
[ACT_TOP_OF_POLE_JUMP] = 1,
[ACT_WALL_KICK_AIR] = 1,
[ACT_TOP_OF_POLE_TRANSITION] = 1,
[ACT_GROUND_POUND] = 1, -- if marios y vel is low enough and you press crouch in the air while not holding jump, ground pound
[ACT_GROUND_POUND_LAND] = 1, -- manually added, if this is detected we can do a ground pound jump :3
[ACT_STANDING_DEATH] = 1,
[ACT_INTRO_CUTSCENE] = 1,
[ACT_JUMBO_STAR_CUTSCENE] = 1,
[ACT_SPAWN_NO_SPIN_AIRBORNE] = 1,
[ACT_HOLDING_BOWSER] = 1,
[ACT_SPAWN_SPIN_AIRBORNE] = 1,
[ACT_CRAZY_BOX_BOUNCE] = 1,
[ACT_BBH_ENTER_JUMP] = 1,
[ACT_BBH_ENTER_SPIN] = 1,
[ACT_THROWN_FORWARD] = 1,
[ACT_THROWN_BACKWARD] = 1,
[ACT_GETTING_BLOWN] = 1,
[ACT_TELEPORT_FADE_IN] = 1,
[ACT_TELEPORT_FADE_OUT] = 1
}
DM_ACTIONS_CROUCHAIR = {
[ACT_DM_AIR_MOVEMENT] = 1,
[ACT_DM_AIR_MOVEMENT_METAL] = 1,
[ACT_GROUND_POUND] = 1
}
DM_ACTIONS_ALLOWGRAB = {
[ACT_DM_GROUNDED_MOVEMENT] = 1,
[ACT_DM_GROUNDED_IDLE] = 1,
[ACT_DM_AIR_MOVEMENT] = 1,
[ACT_DM_GROUNDED_MOVEMENT_METAL] = 1,
[ACT_DM_AIR_MOVEMENT_METAL] = 1,
[ACT_DM_WATER_MOVEMENT] = 1,
[ACT_DM_POLE_MOVEMENT] = 1,
[ACT_GROUND_POUND_LAND] = 1
}
DM_ACTION_QPHYS = {
[ACT_DM_GROUNDED_MOVEMENT] = 1,
[ACT_DM_GROUNDED_IDLE] = 1,
[ACT_DM_AIR_MOVEMENT] = 1,
[ACT_DM_GROUNDED_MOVEMENT_METAL] = 1,
[ACT_DM_AIR_MOVEMENT_METAL] = 1,
[ACT_DM_WATER_MOVEMENT] = 1,
[ACT_DM_POLE_MOVEMENT] = 1
}
DM_ACTION_FORCEANGLE = {
[ACT_GRAB_POLE_FAST] = 1,
[ACT_GRAB_POLE_SLOW] = 1,
[ACT_CLIMBING_POLE] = 1,
[ACT_HOLDING_POLE] = 1,
[ACT_TOP_OF_POLE] = 1
}
DM_ACTION_TRANSFERS = {
[ACT_TOP_OF_POLE_JUMP] = 1,
[ACT_WALL_KICK_AIR] = 1
}
DM_ACTION_PREFUNCS = {
[ACT_BURNING_JUMP] = function(m)
m.hurtCounter = 4
m.invincTimer = 10
if (m == gMarioStates[0]) then
gLakituState.roll = 1000
gLakituState.oldRoll = gLakituState.roll
cl_red = 128
end
return 1
end
}
DM_ACTION_PREFUNCS = {
[ACT_SHOCKED] = function(m)
m.vel.y = m.vel.y * 0.25
end
}
DM_ACTION_FUNCTIONS = {
[ACT_GROUND_POUND_LAND] = function(m)
if (m.controller.buttonDown & A_BUTTON) ~= 0 and m.health > 0xFF then
if m.floor ~= nil then
SV_HandleSpecialFloors(m,true)
local s = gPlayerSyncTable[m.playerIndex]
local direction = GetAngleVectors(m).forward
local yV = m.vel.y
vec3f_copy(m.vel,vec3_scale(direction,m.forwardVel*3.5))
vec3f_add(m.vel,vec3_qscale(m.floor.normal,-0.3,85 * clampf((m.forwardVel+math.abs(yV*0.32)) / 96, 0.5, 1.0),-0.3))
m.vel.y = m.vel.y + (250 * clampf((m.forwardVel+math.abs(yV*0.32)) / 96, 0.65, 1.0))
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
play_character_sound(m,CHAR_SOUND_YAHOO)
return
end
end
end,
[ACT_HARD_BACKWARD_GROUND_KB] = function(m)
if (m.prevAction == ACT_SPECIAL_DEATH_EXIT) then m.healCounter = 32 end
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
end,
[ACT_DEATH_EXIT_LAND] = function(m)
m.healCounter = 32
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
end,
[ACT_GETTING_BLOWN] = function(m)
vec3f_add(m.vel,{x=-coss(m.faceAngle.y)*75,y=50,z=-sins(m.faceAngle.y)*75})
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
end,
[ACT_DM_WATER_MOVEMENT] = function(m)
if (m.prevAction ~= ACT_DM_AIR_MOVEMENT and m.prevAction == ACT_DM_GROUNDED_MOVEMENT and m.prevAction ~= ACT_DM_AIR_MOVEMENT_METAL and m.prevAction == ACT_DM_GROUNDED_MOVEMENT_METAL and m.prevAction == ACT_DM_GROUNDED_IDLE) then SV_PlayerMovement_Store(m,false) end
end
}
--- General helper functions
function ifelse(a,b,c)
if (a) then return b else return c end
end
function vec3_invert(a)
_x = a.x * -1.0
_y = a.y * -1.0
_z = a.z * -1.0
return {x=_x,y=_y,z=_z}
end
function vec3_qscale(a,b,c,d)
_x = a.x * b
_y = a.y * c
_z = a.z * d
return {x=_x,y=_y,z=_z}
end
function vec3_scale(a,b)
_x = a.x * b
_y = a.y * b
_z = a.z * b
return {x=_x,y=_y,z=_z}
end
function s16(num)
num = math.floor(num) & 0xFFFF
if num >= 32768 then return num - 65536 end
return num
end
function mario_holding_underwater_shell(m) -- direction is true then we're checking a small range behind, otherwise we're checking the inverse of that range
if (m.heldObj == nil) then return false end
return get_id_from_behavior(m.heldObj.behavior) == id_bhvKoopaShellUnderwater
end
function mario_is_within_object_angles(m, o, range, direction) -- direction is true then we're checking a small range behind, otherwise we're checking the inverse of that range
local dx = o.oPosX - m.pos.x
local dz = o.oPosZ - m.pos.z
local dYaw = s16(o.oMoveAngleYaw - atan2s(dz, dx))
if (dYaw >= -range and dYaw <= range) then
return direction
else
return not direction
end
end
function should_push_or_pull_door(m, o)
local dx = o.oPosX - m.pos.x
local dz = o.oPosZ - m.pos.z
local dYaw = s16(o.oMoveAngleYaw - atan2s(dz, dx))
if (dYaw >= -0x4000 and dYaw <= 0x4000) then
return 0x00000001
else
return 0x00000002
end
end
function get_object_closest_to_point(type,point)
local closestObj = nil
local obj = obj_get_first(type)
local minDist = 0x20000
while obj ~= nil do
local objDist = vec3f_dist({x=obj.oPosX,y=obj.oPosY,z=obj.oPosZ}, point)
if objDist < minDist then
local rad = obj.hitboxRadius+16
local hei = obj.hitboxHeight+16
if (vec3f_dist({x=obj.oPosX,y=0,z=obj.oPosZ}, {x=point.x,y=0,z=point.z}) <= rad and point.y >= obj.oPosY and point.y <= obj.oPosY+hei) then
closestObj = obj
minDist = objDist
end
end
obj = obj_get_next(obj)
end
return closestObj
end
ObjectLists = {
[0] = OBJ_LIST_PLAYER,
[1] = OBJ_LIST_DESTRUCTIVE,
[2] = OBJ_LIST_GENACTOR,
[3] = OBJ_LIST_PUSHABLE,
[4] = OBJ_LIST_LEVEL,
[5] = OBJ_LIST_DEFAULT,
[6] = OBJ_LIST_SURFACE,
[7] = OBJ_LIST_POLELIKE,
[8] = OBJ_LIST_SPAWNER,
[9] = OBJ_LIST_UNIMPORTANT
}
ObjectHeightAddon = {
[id_bhvPokey] = 30,
[id_bhvPokeyBodyPart] = 50,
[id_bhvGoomba] = 30,
[id_bhvSmallBully] = 30,
[id_bhvBobomb] = 30,
[id_bhvBigBully] = 50,
[id_bhvBigChillBully] = 50,
[id_bhvBobombBuddy] = 50,
[id_bhvMips] = 30,
[id_bhvBoo] = 30,
[id_bhvDoor] = 50,
[id_bhvDoorWarp] = 50,
[id_bhvStarDoor] = 50,
[id_bhvBowser] = 80,
[id_bhvKingBobomb] = 120,
[id_bhvChuckya] = 120,
}
function get_any_object_closest_to_point(point)
local lastList = 0
local closestObj = nil
local obj = obj_get_first(ObjectLists[lastList])
local minDist = 0x20000
while obj ~= nil do
if (obj_is_valid_for_interaction(obj)) then
local objDist = vec3f_dist({x=obj.oPosX,y=obj.oPosY,z=obj.oPosZ}, point)
if objDist < minDist then
local offset = ObjectHeightAddon[get_id_from_behavior(obj.behavior)] ; if offset == nil then offset = 0 end
local rad = obj.hitboxRadius+16
local hei = obj.hitboxHeight+16+offset
if (vec3f_dist({x=obj.oPosX,y=0,z=obj.oPosZ}, {x=point.x,y=0,z=point.z}) <= rad and point.y >= obj.oPosY and point.y <= obj.oPosY+hei) then
closestObj = obj
minDist = objDist
end
end
end
local nextObj = obj_get_next(obj)
if (nextObj == nil) then
while nextObj == nil and lastList < 9 do
lastList = lastList + 1
nextObj = obj_get_first(ObjectLists[lastList])
end
end
obj = nextObj
end
return closestObj
end

Binary file not shown.

Binary file not shown.

View file

@ -1,373 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
-- localize functions to improve performance - _mquake_b_physics.lua
local collision_find_surface_on_ray,vec3f_dist,vec3f_sub,vec3f_dot,vec3f_project,vec3f_add,vec3f_copy,level_trigger_warp,vec3f_normalize,vec3f_length,rotate_in_xz,is_game_paused,vec3f_mul,clampf = collision_find_surface_on_ray,vec3f_dist,vec3f_sub,vec3f_dot,vec3f_project,vec3f_add,vec3f_copy,level_trigger_warp,vec3f_normalize,vec3f_length,rotate_in_xz,is_game_paused,vec3f_mul,clampf
-- Helper functions
local function SV_Trace(start,stop) -- only made for friction
local ray = collision_find_surface_on_ray(start.x,start.y,start.z,stop.x,stop.y,stop.z)
return (vec3f_dist(start,stop) - vec3f_dist(ray.hitPos,stop)) <= 0.05
end
-- initial version was bugged but x showed me how to properly use vec3f_project
-- otherwise entirely written by yours truly :3
function PHYS_CollideWithNormal(vel,norm,slamFactor,bounceFactor)
-- if (m.playerIndex ~= 0) then return end
-- First, define a temporary vel var
local _vel = {x=vel.x,y=vel.y,z=vel.z}
if (bounceFactor > 0) then
-- Bounce off a bit if ye want to!
vec3f_sub(_vel,vec3_scale(vec3_scale(norm,2.0 * vec3f_dot(norm,_vel)),bounceFactor))
end
if (slamFactor < 0) then
-- SLAM the vel against the normal with the factor (usually -1)
local v = vec3f_project(_vel, norm)
vec3f_add(_vel,vec3_scale(vec3f_project(_vel, norm), slamFactor))
end
-- Return the new velocity
return _vel
end
SV_PlayerMovement_Scale = function(m,prescaled)
-- if (m.playerIndex ~= 0) then return end
if (sv_stopmovement) then return end
if (prescaled) then
m.vel.x = cl_speedbuffer.x
m.vel.y = cl_speedbuffer.y
m.vel.z = cl_speedbuffer.z
else
cl_speedbuffer.x = m.vel.x
cl_speedbuffer.y = m.vel.y
cl_speedbuffer.z = m.vel.z
m.vel.x = m.vel.x * sv_scalerate
m.vel.y = m.vel.y * sv_scalerate
m.vel.z = m.vel.z * sv_scalerate
end
end
function SV_PlayerMovement_Store(m,store)
-- if (m.playerIndex ~= 0) then return end
if (m.playerIndex == 0) then
if (store) then
vec3f_copy(cl_upwarpfix_vel,m.vel)
vec3f_copy(cl_upwarpfix_pos,m.pos)
else
vec3f_copy(m.vel,cl_upwarpfix_vel)
vec3f_copy(m.pos,cl_upwarpfix_pos)
end
end
end
function SV_PlayerMovement_Relative(m)
-- if (m.playerIndex ~= 0) then return end
local obj = m.marioObj.platform
if (obj ~= nil) then
m.vel.y = m.vel.y + (obj.oVelY*4)
end
end
function SV_HandleSpecialFloors(m,bypassFloorCheck)
-- if (m.playerIndex ~= 0) then return end
if (m.floor ~= nil) then
local type = m.floor.type
if (type == SURFACE_VERTICAL_WIND and m.action ~= ACT_GROUND_POUND) then
m.vel.y = m.vel.y + 18
if (m.vel.y < -24) then
m.vel.y = -24
end
if (m.vel.y > 200) then
m.vel.y = 200
end
return true
end
if (type == SURFACE_HORIZONTAL_WIND) then
local pushAngle = m.floor.force << 8;
local amt = ifelse((m.action & ACT_FLAG_AIR) == 0,48,8)
m.vel.x = m.vel.x + (amt * sins(pushAngle))
m.vel.z = m.vel.z + (amt * coss(pushAngle))
return true
end
if (type == SURFACE_DEATH_PLANE or type == SURFACE_VERTICAL_WIND) and (m.pos.y < m.floorHeight + 2048) then
if (level_trigger_warp(m, WARP_OP_WARP_FLOOR) == 20 and (m.flags & MARIO_UNKNOWN_18) ~= 0) then
return true
end
end
if (type == SURFACE_BURNING) and (m.invincTimer == 0) and ((m.flags & MARIO_METAL_CAP == 0) and (((m.action & ACT_FLAG_AIR) == 0 and (m.input & INPUT_OFF_FLOOR) == 0) or bypassFloorCheck)) then
m.hurtCounter = 8
m.invincTimer = 15
cl_red = 128
end
if (type == SURFACE_INSTANT_QUICKSAND or type == SURFACE_INSTANT_MOVING_QUICKSAND) and (m.invincTimer == 0) and ((m.flags & MARIO_METAL_CAP == 0) and (((m.action & ACT_FLAG_AIR) == 0 and (m.input & INPUT_OFF_FLOOR) == 0) or bypassFloorCheck)) then
m.hurtCounter = 1
m.invincTimer = 15
cl_red = 128
end
end
return false
end
-- Player angle system
function GetAngleVectors(m)
local s = gPlayerSyncTable[m.playerIndex]
local localForwardDirection = vec3f_normalize({x=(m.area.camera.focus.x - m.area.camera.pos.x),y=(m.area.camera.focus.y - m.area.camera.pos.y), z=(m.area.camera.focus.z - m.area.camera.pos.z)})
if (m.playerIndex == 0) then
s.playerStopFix = sv_stopfix
s.playerFacingX = localForwardDirection.x
s.playerFacingY = localForwardDirection.y
s.playerFacingZ = localForwardDirection.z
-- s.playerFacingYaw = (-(m.marioObj.header.gfx.angle.y - m.area.camera.yaw))+0x8000
-- s.playerFacingPitch = -gLakituState.oldPitch
end
local forwardDirection = ifelse(m.playerIndex == 0,{x=localForwardDirection.x,y=localForwardDirection.y,z=localForwardDirection.z},{x=s.playerFacingX,y=s.playerFacingY,z=s.playerFacingZ})
local rightDirection = {x=0,y=0,z=0}
if (not s.playerStopFix) then
local preRemovalLen = vec3f_length(forwardDirection)
forwardDirection.y = 0
local postRemovalLen = vec3f_length(forwardDirection)
forwardDirection.x = forwardDirection.x * (preRemovalLen/postRemovalLen)
forwardDirection.z = forwardDirection.z * (preRemovalLen/postRemovalLen)
end
rotate_in_xz(rightDirection,forwardDirection,-0x4000)
return {
rawForward=localForwardDirection,
forward=forwardDirection,
right=rightDirection
}
end
-- Important Functions
-- Acceleration / Friction
local function SV_UserFriction(m)
-- if (m.playerIndex ~= 0) then return end
local speed = vec3f_length(m.vel)
if (speed <= 0.00001) then return end
local start = {x=(m.pos.x + (m.vel.x / speed * 16)),y=(m.pos.y + (m.vel.y / speed * 16)),z=(m.pos.z + (m.vel.z / speed * 16))}
local stop = {x=start.x,y=start.y,z=start.z-24}
local friction = 0
if (SV_Trace(start,stop)) then
friction = (sv_friction+ifelse(gPlayerSyncTable[m.playerIndex].playerCrouching,sv_crouchfriction_scale,0))*sv_edgefriction
else
friction = sv_friction+ifelse(gPlayerSyncTable[m.playerIndex].playerCrouching,sv_crouchfriction_scale,0)
end
friction = friction*SV_GetSurfaceStandableFrictionMultiplier(m.floor.type,m.area.terrainType)
local control = nil
if (speed <= sv_stopspeed) then
control = sv_stopspeed
else
control = speed
end
local newspeed = speed - sv_tickrate*control*friction
if (newspeed < 0) then newspeed = 0 end
if (newspeed > 0) then
newspeed = newspeed / speed
end
m.vel.x = m.vel.x * newspeed
m.vel.y = m.vel.y * newspeed
m.vel.z = m.vel.z * newspeed
end
local function SV_Accelerate(m,wishVel,wishDir,wishspeed)
-- if (m.playerIndex ~= 0) then return end
local addspeed,accelspeed,currentspeed = 0,0,0
currentspeed = vec3f_dot(m.vel,wishDir)
addspeed = wishspeed - currentspeed
if (addspeed <= 0) then return end
accelspeed = sv_accelerate * wishspeed * sv_tickrate
if (accelspeed > addspeed) then accelspeed = addspeed end
m.vel.x = m.vel.x + (accelspeed * wishDir.x)
m.vel.y = m.vel.y + (accelspeed * wishDir.y)
m.vel.z = m.vel.z + (accelspeed * wishDir.z)
end
local function SV_AirAccelerate(m,wishVel,wishDir,wishspeed)
-- if (m.playerIndex ~= 0) then return end
local addspeed,wishspd,accelspeed,currentspeed = 0,0,0,0
wishspd = wishspeed
if (wishspd > sv_playerclamp_air) then wishspd = sv_playerclamp_air end
currentspeed = vec3f_dot(m.vel,wishDir)
addspeed = wishspd - currentspeed
if (addspeed <= 0) then return end
accelspeed = (sv_airaccelerate_value * wishspd) * sv_tickrate
if (accelspeed > addspeed) then accelspeed = addspeed end
m.vel.x = m.vel.x + (accelspeed * wishDir.x)
m.vel.y = m.vel.y + (accelspeed * wishDir.y)
m.vel.z = m.vel.z + (accelspeed * wishDir.z)
end
-- Main movement functions
function SV_PlayerMovement(m)
-- if (m.playerIndex ~= 0) then return end
if (sv_stopmovement) then return end
local isPrediction = m.playerIndex ~= 0
-- if (isPrediction) then return end
local playerSpeed = ifelse(gPlayerSyncTable[m.playerIndex].playerCrouching,sv_playerspeed_crouch,sv_playerspeed)
local vecInput = {x=0,y=0,z=0}
if ((not is_game_paused()) and m.health > 0xFF and not cl_bowserthrow and not cl_bowserthrow) then
vecInput.x = m.controller.rawStickX
vecInput.y = m.controller.rawStickY
end
-- if (not isPrediction) then
vec3f_normalize(vecInput)
vec3f_mul(vecInput,m.controller.stickMag)
-- end
local fmove = (vecInput.y/32)*playerSpeed -- what are the maximums of these again?
local smove = (vecInput.x/32)*playerSpeed
-- local fmove = (vecInput.y/64)*playerSpeed -- what are the maximums of these again?
-- local smove = (vecInput.x/64)*playerSpeed
local wishVel = {x=0,y=0,z=0}
local wishDir = {x=0,y=0,z=0}
local AngledVectors = GetAngleVectors(m)
wishVel.x = (AngledVectors.forward.x * fmove) + (AngledVectors.right.x * smove)
wishVel.y = (AngledVectors.forward.y * fmove) + (AngledVectors.right.y * smove)
wishVel.z = (AngledVectors.forward.z * fmove) + (AngledVectors.right.z * smove)
if (not isPrediction) then
if (m.action == ACT_DM_GROUNDED_MOVEMENT or m.action == ACT_DM_GROUNDED_MOVEMENT_METAL or m.action == ACT_DM_GROUNDED_IDLE) then
wishVel.y = 0
if (m.floor ~= nil) then
local tempNormal = vec3_invert(m.floor.normal)
tempNormal.y = 0 ; vec3f_normalize(tempNormal)
local amount = (cl_grounddefacto * clampf(vec3f_dot(wishVel,tempNormal),0,1)) * m.floor.normal.y
vec3f_sub(wishVel,vec3_scale(vec3f_project(wishVel, m.floor.normal), amount))
vec3f_add(wishVel,vec3_scale(m.floor.normal, amount*0.1))
end
end
end
local wishspeed = vec3f_length(wishVel)
vec3f_copy(wishDir, wishVel)
vec3f_normalize(wishDir)
if wishspeed > sv_maxspeed then
wishVel.x = wishVel.x * (sv_maxspeed / wishspeed)
wishVel.y = wishVel.y * (sv_maxspeed / wishspeed)
wishVel.z = wishVel.z * (sv_maxspeed / wishspeed)
wishspeed = sv_maxspeed
end
if (m.action == ACT_DM_GROUNDED_MOVEMENT or m.action == ACT_DM_GROUNDED_MOVEMENT_METAL or m.action == ACT_DM_GROUNDED_IDLE) then
SV_UserFriction(m,wishVel,wishDir,wishspeed)
SV_Accelerate(m,wishVel,wishDir,wishspeed)
elseif (m.action == ACT_DM_AIR_MOVEMENT or m.action == ACT_DM_AIR_MOVEMENT_METAL) then
SV_AirAccelerate(m,wishVel,wishDir,wishspeed)
end
local finalVelLen = vec3f_length(m.vel)
if finalVelLen > sv_maxvelocity then
m.vel.x = m.vel.x * (sv_maxvelocity / finalVelLen)
m.vel.y = m.vel.y * (sv_maxvelocity / finalVelLen)
m.vel.z = m.vel.z * (sv_maxvelocity / finalVelLen)
end
end
function SV_WaterMovement(m)
-- if (m.playerIndex ~= 0) then return end
if (sv_stopmovement) then return end
local isPrediction = m.playerIndex ~= 0
local shellSpeed = mario_holding_underwater_shell(m)
local playerSpeed = ifelse(shellSpeed,sv_playerspeed_water_shell,sv_playerspeed_water)
local vecInput = {x=0,y=0,z=0}
if ((not is_game_paused()) and m.health > 0xFF) then
vecInput.x = m.controller.rawStickX
vecInput.y = m.controller.rawStickY
end
if (not isPrediction) then
vec3f_normalize(vecInput)
vec3f_mul(vecInput,m.controller.stickMag)
end
local fmove = (vecInput.y/32)*playerSpeed
local smove = (vecInput.x/32)*playerSpeed
local umove = 0
if (m.controller.buttonDown & A_BUTTON ~= 0) then umove = 1 end
local wishVel = {x=0,y=0,z=0}
local AngledVectors = GetAngleVectors(m)
wishVel.x = (AngledVectors.rawForward.x * fmove) + (AngledVectors.right.x * smove)
wishVel.y = (AngledVectors.rawForward.y * fmove) + (AngledVectors.right.y * smove)
wishVel.z = (AngledVectors.rawForward.z * fmove) + (AngledVectors.right.z * smove)
if (fmove < 0.1 and smove < 0.1 and umove == 0) then
wishVel.y = wishVel.y - 30
else
wishVel.y = wishVel.y + sv_upspeed_water * umove
end
local wishspeed = vec3f_length(wishVel)
local maxspeed = ifelse(shellSpeed,sv_playerspeed_water_shell,sv_maxspeed)
if (wishspeed > maxspeed) then
vec3f_mul(wishVel,maxspeed/wishspeed)
wishspeed = maxspeed
end
wishspeed = wishspeed * 0.85
--
-- water friction
--
local speed = vec3f_length(m.vel)
local newspeed = 0
if (speed > 0.00001) then
newspeed = speed - sv_tickrate * speed * sv_waterfriction
if (newspeed < 0) then newspeed = 0 end
vec3f_mul(m.vel,newspeed/speed)
end
--
-- water acceleration
--
if (wishspeed < 0.00001) then return end
local addspeed = wishspeed - newspeed
if (addspeed <= 0) then return end
vec3f_normalize(wishVel)
local accelspeed = (sv_accelerate * wishspeed) * sv_tickrate
if (accelspeed > addspeed) then accelspeed = addspeed end
m.vel.x = m.vel.x + (accelspeed * wishVel.x)
m.vel.y = m.vel.y + (accelspeed * wishVel.y)
m.vel.z = m.vel.z + (accelspeed * wishVel.z)
end

Binary file not shown.

Binary file not shown.

View file

@ -1,286 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
-- localize functions to improve performance - _mquake_c_moveset_functions.lua
local get_id_from_behavior,mario_grab_used_object,mario_throw_held_object,obj_is_grabbable,obj_is_attackable,obj_is_breakable_object,mario_drop_held_object,obj_get_nearest_object_with_behavior_id,vec3f_dot,vec3f_length,obj_check_hitbox_overlap,max,level_trigger_warp,absf_2 = get_id_from_behavior,mario_grab_used_object,mario_throw_held_object,obj_is_grabbable,obj_is_attackable,obj_is_breakable_object,mario_drop_held_object,obj_get_nearest_object_with_behavior_id,vec3f_dot,vec3f_length,obj_check_hitbox_overlap,max,level_trigger_warp,absf_2
local vec3f_add = vec3f_add
local set_mario_action = set_mario_action
function obj_activate_door(m,door,bhv)
if (m.action == ACT_DM_WATER_MOVEMENT) then return true end
if door ~= nil then
local flags = save_file_get_flags()
-- local bhv = get_id_from_behavior(door)
if bhv == id_bhvDoor then
local doorStars = door.oBehParams >> 24
if (doorStars <= save_file_get_total_star_count(get_current_save_file_num()-1,0,255)) then
door.oAction = 1
door.header.gfx.animInfo.animFrame = max(door.header.gfx.animInfo.animFrame, 25)
end
return true
elseif bhv == id_bhvDoorWarp then
local wDoorID = door.oBehParams >> 24
if (wDoorID == 1 and (flags & SAVE_FLAG_HAVE_KEY_2) == 0) then
return true
end
if (wDoorID == 2 and (flags & SAVE_FLAG_HAVE_KEY_1) == 0) then
return true
end
door.oAction = 2
door.header.gfx.animInfo.animFrame = max(door.header.gfx.animInfo.animFrame, 10)
m.interactObj = door
m.usedObj = door
m.actionArg = should_push_or_pull_door(m, door)
level_trigger_warp(m, WARP_OP_WARP_DOOR)
return true
elseif bhv == id_bhvStarDoor and door.oAction == 0 then
local doorStars = door.oBehParams >> 24
if (doorStars <= save_file_get_total_star_count(get_current_save_file_num()-1,0,255)) then
door.oInteractStatus = 0x00010000
end
return true
end
end
return false
end
function held_obj_update(m)
local obj = m.heldObj
local bhv = get_id_from_behavior(obj.behavior)
if (bhv == id_bhvBobomb) then
if (obj.oBobombFuseTimer >= 151) then
mario_drop_held_object(m)
end
end
if (bhv == id_bhvKoopaShellUnderwater) then
if (obj.oTimer >= 601 or m.action ~= ACT_DM_WATER_MOVEMENT) then
mario_drop_held_object(m)
end
obj.oTimer = obj.oTimer + 1
end
end
function mario_throw_object_ext(m,ang)
local obj = m.heldObj
local bhv = get_id_from_behavior(obj.behavior)
if (bhv == id_bhvBowser and cl_bowserthrow) then
local curFaceAngle = m.faceAngle.y
m.faceAngle.y = m.area.camera.yaw + 0x8000
mario_drop_held_object(m)
obj.oPosX = m.marioBodyState.heldObjLastPosition.x
obj.oPosY = m.marioBodyState.heldObjLastPosition.y
obj.oPosZ = m.marioBodyState.heldObjLastPosition.z
-- Todo ; How do we fix this shit maintaining the velocity?
m.marioObj.oAngleVelYaw = 0
m.marioObj.oMoveAnglePitch = 0
obj.oForwardVel = 0
obj.oVelY = 0
obj.oBowserHeldAngleVelYaw = clampf(absf_2(s16(cl_bowserthrow_previousYaw-curFaceAngle)),0x10,0x1000)
obj.oBowserHeldAnglePitch = clampf(-absf_2(s16(cl_bowserthrow_previousYaw-curFaceAngle)),-0x1000,-0x400)
network_send_object(obj,true)
return true
end
if (bhv == id_bhvJumpingBox) then
mario_drop_held_object(m)
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
vec3f_add(m.vel,vec3_scale(ang.forward,300))
vec3f_add(m.vel,{x=0,y=500,z=0})
obj.oPosX = m.pos.x
obj.oPosY = m.pos.y
obj.oPosZ = m.pos.z
return true
end
return false
end
function mario_drop_object_ext(m,ang)
local obj = m.heldObj
local bhv = get_id_from_behavior(obj.behavior)
if (bhv == id_bhvJumpingBox) then
return mario_throw_object_ext(m,ang)
end
return false
end
function mario_grab_used_object_ext(m,ang)
local o = m.usedObj
local bhv = get_id_from_behavior(o.behavior)
if (bhv == id_bhvBowser) then
if (not mario_is_within_object_angles(m, o, 0x2000, true)) then return false end
cl_bowserthrow = true
o.oForwardVel = 0
o.oVelY = 0
o.oBowserHeldAngleVelYaw = 0
o.oBowserHeldAnglePitch = 0
o.oMoveAnglePitch = 0
o.oMoveAngleYaw = 0
o.oForwardVelS32 = 0
o.oForwardVel = 0
m.marioObj.oAngleVelYaw = 0
m.marioObj.oMoveAnglePitch = 0
m.marioObj.oMoveAngleYaw = 0
m.marioObj.oForwardVelS32 = 0
m.marioObj.oForwardVel = 0
end
if (bhv == id_bhvKingBobomb) then
if (not mario_is_within_object_angles(m, o, 0x2000, true)) then return false end
mario_grab_used_object(m)
return false
end
if (bhv == id_bhvChuckya) then
if (not mario_is_within_object_angles(m, o, 0x2000, true)) then return false end
mario_grab_used_object(m)
return false
end
if (bhv == id_bhvKoopaShellUnderwater) then
if (m.action ~= ACT_DM_WATER_MOVEMENT) then return false end
o.oTimer = 0 -- ten seconds
end
mario_grab_used_object(m)
return o == m.heldObj
end
function mario_handle_grab_and_punch_custom(m)
if m.heldByObj ~= nil then return end
if m == nil then return end
local pressedB = (m.controller.buttonPressed & B_BUTTON) ~= 0
local pressedZ = (m.controller.buttonPressed & Z_TRIG) ~= 0
local ang = nil
if m.heldObj ~= nil then
if (ang == nil) then ang = GetAngleVectors(m) end
local obj = m.heldObj
if (cl_bowserthrow) then
m.marioBodyState.heldObjLastPosition.x = m.area.camera.pos.x + (ang.forward.x * (160+(obj.hitboxRadius*0.5)))
m.marioBodyState.heldObjLastPosition.y = m.area.camera.pos.y + (ang.forward.y * (160+(obj.hitboxRadius*0.5))) - (obj.hitboxHeight*0.5) + 64
m.marioBodyState.heldObjLastPosition.z = m.area.camera.pos.z + (ang.forward.z * (160+(obj.hitboxRadius*0.5)))
else
m.marioBodyState.heldObjLastPosition.x = m.area.camera.pos.x + (ang.rawForward.x * (160+(obj.hitboxRadius*0.5))) + (m.vel.x*0.25)
m.marioBodyState.heldObjLastPosition.y = m.area.camera.pos.y + ((ang.rawForward.y * (160+(obj.hitboxRadius*0.5))) + (m.vel.y*0.25)) - (obj.hitboxHeight*0.5)
m.marioBodyState.heldObjLastPosition.z = m.area.camera.pos.z + (ang.rawForward.z * (160+(obj.hitboxRadius*0.5))) + (m.vel.z*0.25)
end
end
m.controller.buttonPressed = m.controller.buttonPressed & ~(B_BUTTON|Z_TRIG)
if (pressedB) then
if (ang == nil) then ang = GetAngleVectors(m) end
if m.heldObj ~= nil then
if not mario_throw_object_ext(m,ang) then
local curFaceAngle = m.faceAngle.y
local obj = m.heldObj
m.faceAngle.y = m.area.camera.yaw + 0x8000
mario_throw_held_object(m)
obj.oPosX = m.marioBodyState.heldObjLastPosition.x
obj.oPosY = m.marioBodyState.heldObjLastPosition.y
obj.oPosZ = m.marioBodyState.heldObjLastPosition.z
obj.oVelX = (ang.rawForward.x * 160) + (m.vel.x*0.25)
obj.oVelY = (ang.rawForward.y * 160) + (m.vel.x*0.25)
obj.oVelZ = (ang.rawForward.z * 160) + (m.vel.x*0.25)
obj.oMoveAnglePitch = gLakituState.oldPitch
obj.oMoveAngleYaw = m.faceAngle.y
obj.oMoveAngleRoll = 0
obj.oFaceAnglePitch = 0
obj.oFaceAngleYaw = m.faceAngle.y
obj.oFaceAngleRoll = 0
m.faceAngle.y = curFaceAngle
end
elseif (cl_interacttimer == 0) then
-- play_character_sound(m,CHAR_SOUND_PUNCH_HOO)
cl_interacttimer = 15
m.marioBodyState.heldObjLastPosition.x = m.area.camera.pos.x + (ang.rawForward.x * 160)
m.marioBodyState.heldObjLastPosition.y = m.area.camera.pos.y + (ang.rawForward.y * 160)
m.marioBodyState.heldObjLastPosition.z = m.area.camera.pos.z + (ang.rawForward.z * 160)
local target = get_any_object_closest_to_point(m.marioBodyState.heldObjLastPosition)
if (target ~= nil) then
local bhv = get_id_from_behavior(target.behavior)
if (not obj_activate_door(m,target,bhv)) then
if (obj_is_grabbable(target)) then
m.interactObj = target
m.usedObj = target
if (not mario_grab_used_object_ext(m,ang)) then
m.interactObj = nil
m.usedObj = nil
end
elseif (obj_is_attackable(target) or obj_is_exclamation_box(target) or obj_is_bully(target) or obj_is_breakable_object(target)) then
m.interactObj = target
m.usedObj = target
target.oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | ATTACK_PUNCH
-- elseif (bhv == id_bhvMario) then
end
end
else
play_sound(CAM_SOUND_UNUSED_SELECT_FIXED, m.marioObj.header.gfx.cameraToObject)
end
end
end
if (pressedZ) then
if m.heldObj ~= nil then
if (not mario_drop_object_ext(m,ang)) then
local curFaceAngle = m.faceAngle.y
local obj = m.heldObj
m.faceAngle.y = m.area.camera.yaw + 0x8000
mario_drop_held_object(m)
obj.oPosX = m.marioBodyState.heldObjLastPosition.x
obj.oPosY = m.marioBodyState.heldObjLastPosition.y
obj.oPosZ = m.marioBodyState.heldObjLastPosition.z
obj.oMoveAnglePitch = gLakituState.oldPitch
obj.oMoveAngleYaw = m.faceAngle.y
obj.oMoveAngleRoll = 0
obj.oFaceAnglePitch = 0
obj.oFaceAngleYaw = m.faceAngle.y
obj.oFaceAngleRoll = 0
m.faceAngle.y = curFaceAngle
end
end
end
end
-- function obj_affect_nearest_door(m,bhv)
-- local door = obj_get_nearest_object_with_behavior_id(m.marioObj, bhv)
-- if door ~= nil and obj_check_hitbox_overlap(m.marioObj, door) and vec3f_dot(m.vel,{x=m.pos.x-door.oPosX,y=0,z=m.pos.z-door.oPosZ}) <= -0.1 and vec3f_length(m.vel) > 20 then
-- if bhv == id_bhvDoor then
-- door.oAction = 1
-- door.header.gfx.animInfo.animFrame = max(door.header.gfx.animInfo.animFrame, 20)
-- elseif bhv == id_bhvDoorWarp then
-- door.oAction = 2
-- door.header.gfx.animInfo.animFrame = max(door.header.gfx.animInfo.animFrame, 10)
-- m.interactObj = door
-- m.usedObj = door
-- m.actionArg = should_push_or_pull_door(m, door)
-- level_trigger_warp(m, WARP_OP_WARP_DOOR)
-- elseif bhv == id_bhvStarDoor and door.oAction == 0 then
-- door.oInteractStatus = 0x00010000
-- end
-- end
-- end

Binary file not shown.

Binary file not shown.

View file

@ -1,270 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
-- localize functions to improve performance - _mquake_d_actions.lua
local set_mario_action,vec3f_add,vec3f_length,perform_ground_step,vec3f_copy,perform_air_step = set_mario_action,vec3f_add,vec3f_length,perform_ground_step,vec3f_copy,perform_air_step
local function play_local_footstep_sounds(m,rate,max)
cl_footstepTimer = cl_footstepTimer + rate
if (cl_footstepTimer >= max) then
m.marioObj.header.gfx.animInfo.animFrame = 0
play_step_sound(m, 0, 1)
cl_footstepTimer = 0
end
end
--- @param m MarioState
act_dm_grounded_movement = function(m)
-- AngleVectors(m)
local metal_underwater = (m.flags & MARIO_METAL_CAP) ~= 0 and m.pos.y <= m.waterLevel-sv_playersubmergelevel
local crouch = gPlayerSyncTable[m.playerIndex].playerCrouching
if (metal_underwater and m.action ~= ACT_DM_GROUNDED_MOVEMENT_METAL) then
SV_PlayerMovement_Store(m,true)
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT_METAL, 0)
m.action = ACT_DM_GROUNDED_MOVEMENT_METAL
SV_PlayerMovement_Store(m,false)
-- return
elseif (m.action == ACT_DM_GROUNDED_MOVEMENT_METAL and not metal_underwater) then
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
m.action = ACT_DM_GROUNDED_MOVEMENT
-- return
end
if (m.floor ~= nil) then
if (m.floor.normal.y <= SV_GetSurfaceStandableMinimum(m.floor.type,m.area.terrainType)) then
SV_PlayerMovement_Relative(m)
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
act_dm_air_movement(m)
return
end
end
if (m.controller.buttonDown & A_BUTTON) ~= 0 and m.floor ~= nil then
set_character_animation(m, CHAR_ANIM_IDLE_HEAD_CENTER)
if (m.vel.y < 0) then m.vel.y = m.vel.y * 0.25 end
if (metal_underwater) then
vec3f_add(m.vel,vec3_qscale(m.floor.normal,-0.4,20,40,-0.4))
m.vel.y = m.vel.y + 100
else
vec3f_add(m.vel,vec3_qscale(m.floor.normal,-0.4,40,-0.4))
m.vel.y = m.vel.y + 110
end
if (m.vel.y > 320) then m.vel.y = 320 end
play_character_sound(m,CHAR_SOUND_YAH_WAH_HOO)
play_step_sound(m, 0, 1)
SV_PlayerMovement_Relative(m)
-- SV_PlayerMovement_Store(m,true)
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
act_dm_air_movement(m)
return
end
SV_PlayerMovement(m)
if (m.playerIndex == 0) then
set_character_animation(m, CHAR_ANIM_A_POSE)
if (not cl_bowserthrow) then
local len = vec3f_length(vec3_qscale(m.vel,1,0,1))
if (len < 1) then
m.faceAngle.y = m.area.camera.yaw + 0x8000
if (m.action == ACT_DM_GROUNDED_MOVEMENT) then m.action = ACT_DM_GROUNDED_IDLE end
else
play_local_footstep_sounds(m,len * 0.0625,60)
m.faceAngle.y = atan2s(m.vel.z, m.vel.x)
if (m.action == ACT_DM_GROUNDED_IDLE) then m.action = ACT_DM_GROUNDED_MOVEMENT end
end
end
else
local scale = m.forwardVel
if (scale < 5) then
set_character_animation(m, ifelse(crouch,CHAR_ANIM_CROUCHING,CHAR_ANIM_FIRST_PERSON))
else
play_step_sound(m, ifelse(crouch,26,9), ifelse(crouch,79,45))
set_character_anim_with_accel(m, ifelse(crouch,CHAR_ANIM_CRAWLING,CHAR_ANIM_RUNNING), scale*ifelse(crouch,0x4000,0x2400))
end
end
m.forwardVel = vec3f_length(vec3_qscale(m.vel,sv_scalerate,0,sv_scalerate))
SV_PlayerMovement_Scale(m,false)
local stepResult = perform_ground_step(m)
SV_PlayerMovement_Scale(m,true)
if (stepResult == GROUND_STEP_LEFT_GROUND) then
SV_PlayerMovement_Relative(m)
if (m.action == ACT_DM_GROUNDED_MOVEMENT_METAL) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT_METAL, 0)
else
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
end
end
if m.wall ~= nil and (stepResult == GROUND_STEP_HIT_WALL) then --or (stepResult == GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS) or (stepResult == GROUND_STEP_HIT_WALL_STOP_QSTEPS)) then
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.wall.normal,-1.0,0.0))
end
if (m.pos.y <= m.waterLevel-sv_playersubmergelevel and m.waterLevel > m.floorHeight + sv_playersubmergelevel) and (m.flags & MARIO_METAL_CAP) == 0 then
if (m.action == ACT_DM_GROUNDED_MOVEMENT_METAL) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT_METAL, 0)
else
set_mario_action(m, ACT_DM_WATER_MOVEMENT, 0)
end
end
-- SV_PlayerMovement_Store(m,true)
end
--- @param m MarioState
act_dm_air_movement = function(m)
-- AngleVectors(m)
local metal_underwater = (m.flags & MARIO_METAL_CAP) ~= 0 and m.pos.y <= m.waterLevel-sv_playersubmergelevel
local act = m.action
local crouch = gPlayerSyncTable[m.playerIndex].playerCrouching
if (metal_underwater and act ~= ACT_DM_AIR_MOVEMENT_METAL) then
SV_PlayerMovement_Store(m,true)
set_mario_action(m, ACT_DM_AIR_MOVEMENT_METAL, 0)
m.action = ACT_DM_AIR_MOVEMENT_METAL
SV_PlayerMovement_Store(m,false)
-- return
elseif (act == ACT_DM_AIR_MOVEMENT_METAL and not metal_underwater) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
m.action = ACT_DM_AIR_MOVEMENT
-- return
end
if (m.controller.buttonPressed & Z_TRIG) ~= 0 and (m.controller.buttonDown & A_BUTTON) == 0 and m.heldObj == nil and m.prevAction ~= ACT_DM_WATER_MOVEMENT then
if ((m.flags & MARIO_METAL_CAP) == 0) then
set_mario_action(m, ACT_GROUND_POUND, 2)
m.vel.x = m.vel.x * sv_scalerate
m.vel.z = m.vel.z * sv_scalerate
m.vel.y = -20 * sv_scalerate
m.forwardVel = vec3f_length(vec3_qscale(m.vel,1,0,1))
m.actionState = 2
return
else
m.vel.y = -200
end
end
SV_PlayerMovement(m)
if (m.playerIndex == 0) then
if (vec3f_length(vec3_qscale(m.vel,1,0,1)) < 1) then
m.faceAngle.y = m.area.camera.yaw + 0x8000
else
m.faceAngle.y = atan2s(m.vel.z, m.vel.x)
end
set_character_animation(m, CHAR_ANIM_A_POSE)
else
set_character_animation(m, ifelse(crouch,CHAR_ANIM_FAST_LONGJUMP,ifelse(m.vel.y < 0,CHAR_ANIM_DOUBLE_JUMP_FALL,CHAR_ANIM_DOUBLE_JUMP_RISE)))
end
if (metal_underwater) then
m.vel.y = m.vel.y - 6 ; if (m.vel.y < -400) then m.vel.y = -400 end
else
m.vel.y = m.vel.y - 12 ; if (m.vel.y < -600) then m.vel.y = -600 end
end
if ((m.flags & MARIO_WING_CAP) ~= 0 and (m.controller.buttonDown & A_BUTTON) ~= 0 and m.vel.y < 60) then m.vel.y = 60 end
local preStepYVel = m.vel.y
m.forwardVel = vec3f_length(vec3_qscale(m.vel,sv_scalerate,0,sv_scalerate))
SV_PlayerMovement_Scale(m,false)
local stepResult = perform_air_step(m,0)
SV_PlayerMovement_Scale(m,true)
if (stepResult == AIR_STEP_LANDED) then
if (m.floor ~= nil) then
if (m.floor.normal.y > SV_GetSurfaceStandableMinimum(m.floor.type,m.area.terrainType)) then
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.floor.normal,-1.0,0.1))
-- SV_PlayerMovement_Store(m,true)
if (m.playerIndex == 0) then
gLakituState.roll = gLakituState.roll + clampf(-0.75*preStepYVel,0,1000)
gLakituState.oldRoll = gLakituState.roll
end
if (m.action == ACT_DM_AIR_MOVEMENT_METAL) then
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT_METAL, 0)
else
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
end
return
else
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.floor.normal,-0.5,0.75))
m.pos.y = m.pos.y + 2
vec3f_add(m.pos,vec3_scale(m.floor.normal,4))
vec3f_add(m.vel,vec3_scale(m.floor.normal,4))
return
end
end
end
if (stepResult == AIR_STEP_HIT_WALL) and m.wall ~= nil then
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.wall.normal,-1.0,0.05))
end
if (m.pos.y <= m.waterLevel-sv_playersubmergelevel and m.waterLevel > m.floorHeight + sv_playersubmergelevel) and (m.flags & MARIO_METAL_CAP) == 0 then
if (m.action ~= ACT_DM_AIR_MOVEMENT_METAL) then
set_mario_action(m, ACT_DM_WATER_MOVEMENT, 0)
end
end
-- SV_PlayerMovement_Store(m,true)
end
act_dm_water_movement = function(m)
-- AngleVectors(m)
SV_WaterMovement(m)
SV_PlayerMovement_Store(m,true)
if (m.playerIndex == 0) then
if (vec3f_length(vec3_qscale(m.vel,1,0,1)) < 1) then
m.faceAngle.y = m.area.camera.yaw + 0x8000
else
m.faceAngle.y = atan2s(m.vel.z, m.vel.x)
end
set_character_animation(m, CHAR_ANIM_A_POSE)
else
local scale = m.forwardVel
if (scale < 10) then
set_character_animation(m, CHAR_ANIM_WATER_IDLE)
else
set_character_anim_with_accel(m, CHAR_ANIM_FLUTTERKICK, scale*0x800)
end
end
m.forwardVel = vec3f_length(vec3_qscale(m.vel,sv_scalerate,0,sv_scalerate))
SV_PlayerMovement_Scale(m,false)
local stepResult = perform_air_step(m,0)
SV_PlayerMovement_Scale(m,true)
if (stepResult == AIR_STEP_HIT_WALL) and m.wall ~= nil then
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.wall.normal,-1.0,0.05))
end
local isSnowy = ((m.area.terrainType & TERRAIN_MASK) == TERRAIN_SNOW)
if (m.area.camera.pos.y >= m.waterLevel - 10 and not isSnowy) or mario_holding_underwater_shell(m) then
m.healCounter = 1
elseif (not mario_holding_underwater_shell(m)) then
m.health = m.health - ifelse(isSnowy,3,1)
end
if (m.pos.y > m.waterLevel-sv_playersubmergelevel) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
return
end
end

Binary file not shown.

Binary file not shown.

View file

@ -1,376 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
-- localize functions to improve performance - _mquake_e_hook_functions.lua
local sins,coss,vec3f_copy,set_mario_action,perform_air_step,vec3f_dot,get_id_from_behavior,obj_get_first,obj_get_next,obj_get_nearest_object_with_behavior_id,vec3f_length,obj_check_hitbox_overlap = sins,coss,vec3f_copy,set_mario_action,perform_air_step,vec3f_dot,get_id_from_behavior,obj_get_first,obj_get_next,obj_get_nearest_object_with_behavior_id,vec3f_length,obj_check_hitbox_overlap
--- @param m MarioState
function active_player(m)
local np = gNetworkPlayers[m.playerIndex]
if m.playerIndex == 0 then
return 1
end
if not np.connected then
return 0
end
if np.currCourseNum ~= gNetworkPlayers[0].currCourseNum then
return 0
end
if np.currActNum ~= gNetworkPlayers[0].currActNum then
return 0
end
if np.currLevelNum ~= gNetworkPlayers[0].currLevelNum then
return 0
end
if np.currAreaIndex ~= gNetworkPlayers[0].currAreaIndex then
return 0
end
return is_player_active(m)
end
function on_set_mario_action(m)
if (m.playerIndex == 0) then
if (DM_ACTION_TRANSFERS[m.action] == 1) then
local yVel = m.vel.y * 4
local fVel = m.forwardVel * 4
local s = gPlayerSyncTable[m.playerIndex]
local direction = GetAngleVectors(m).forward
vec3f_copy(m.vel,vec3_scale(direction,m.forwardVel*4))
m.vel.y = yVel
local is_underwater = m.pos.y <= m.waterLevel-sv_playersubmergelevel
local metal_underwater = (m.flags & MARIO_METAL_CAP) ~= 0
if ((m.action & ACT_FLAG_AIR) ~= 0) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
return 1
elseif ((m.action & ACT_GROUP_SUBMERGED) ~= 0) then
if (not metal_underwater) and (is_underwater) then
set_mario_action(m, ACT_DM_WATER_MOVEMENT, 0)
return 1
end
if (metal_underwater) and (is_underwater) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT_METAL, 0)
return 1
end
end
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
return 1
end
if (DM_ACTION_FUNCTIONS[m.action] ~= nil) then
DM_ACTION_FUNCTIONS[m.action](m)
return 1
end
end
end
function allow_voice(m,s)
if (s == CHAR_SOUND_ON_FIRE or s == CHAR_SOUND_ATTACKED or s == CHAR_SOUND_EEUH) then
return 0
end
end
function override_defacto(m)
if m.action == ACT_DM_AIR_MOVEMENT or m.action == ACT_DM_GROUNDED_MOVEMENT or
m.action == ACT_DM_AIR_MOVEMENT_METAL or m.action == ACT_DM_GROUNDED_MOVEMENT_METAL or m.action == ACT_DM_GROUNDED_IDLE then
return 1
end
end
function on_player_connected(m)
gPlayerSyncTable[m.playerIndex].playerCrouching = false
gPlayerSyncTable[m.playerIndex].playerFacingX = 1
gPlayerSyncTable[m.playerIndex].playerFacingY = 0
gPlayerSyncTable[m.playerIndex].playerFacingZ = 0
end
function before_set_mario_action(m,incoming)
if (m.playerIndex == 0) then
if (DM_ACTION_PREFUNCS[incoming] ~= nil) then
return DM_ACTION_PREFUNCS[incoming](m)
elseif (DM_ACTIONS[incoming] ~= 1) then
m.controller.buttonPressed = 0
local is_underwater = m.pos.y <= m.waterLevel-sv_playersubmergelevel
local metal_underwater = (m.flags & MARIO_METAL_CAP) ~= 0
if ((incoming & ACT_FLAG_AIR) ~= 0) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT, 0)
return 1
elseif ((incoming & ACT_FLAG_SWIMMING) ~= 0) or ((incoming & ACT_GROUP_SUBMERGED) ~= 0) then
if (not metal_underwater) and (is_underwater) then
set_mario_action(m, ACT_DM_WATER_MOVEMENT, 0)
return 1
end
if (metal_underwater) and (is_underwater) then
set_mario_action(m, ACT_DM_AIR_MOVEMENT_METAL, 0)
return 1
end
end
set_mario_action(m, ACT_DM_GROUNDED_MOVEMENT, 0)
return 1
end
end
end
function before_phys_step(m)
local act = m.action
if (DM_ACTIONS[act] ~= 1) then return 0 end
if ((act == ACT_DM_AIR_MOVEMENT or act == ACT_DM_AIR_MOVEMENT_METAL or act == ACT_DM_WATER_MOVEMENT) and m.playerIndex == 0 and m.ceil ~= nil) then
local h = m.marioObj.hitboxHeight
if (m.ceilHeight <= m.pos.y+(h*0.5)) then
m.pos.y = m.ceilHeight - h
return 0
end
if (m.pos.y + h + 4 + sv_camerayoffset > m.ceilHeight and m.ceilHeight > m.pos.y + 16) then
SV_PlayerMovement_Scale(m,true)
vec3f_copy(m.vel, PHYS_CollideWithNormal(m.vel,m.ceil.normal,-1.0,0.05))
SV_PlayerMovement_Scale(m,false)
m.pos.y = m.pos.y - 1
return perform_air_step(m,0)
end
end
end
function on_interact(m,o,i,b)
if DM_ACTION_QPHYS[m.action] == 1 then
if (i == INTERACT_BOUNCE_TOP or i == INTERACT_BOUNCE_TOP2) then
if (o.oInteractStatus & INT_STATUS_WAS_ATTACKED) ~= 0 then
m.vel.y = 160
end
end
if (o.oInteractStatus & INT_STATUS_ATTACKED_MARIO) ~= 0 and m.health > 0xFF then
m.invincTimer = 30
gLakituState.roll = 2730*(m.hurtCounter*0.25)
gLakituState.oldRoll = gLakituState.roll
cl_red = 128
end
end
end
function allow_interact(m,o,i)
if DM_ACTION_QPHYS[m.action] == 1 then
if (i == INTERACT_POLE) then
if (vec3f_dot({x=o.oPosX-m.pos.x,y=0,z=o.oPosZ-m.pos.z},{x=m.vel.x,y=0,z=m.vel.z}) <= 0) then
return false
end
end
if (i == INTERACT_IGLOO_BARRIER) then
if (m.controller.buttonDown & Z_TRIG ~= 0) then
return false
end
end
end
end
function on_pvp(m,v)
if DM_ACTION_QPHYS[v.action] == 1 then
v.invincTimer = 30
if (v == gMarioStates[0]) then
gLakituState.roll = 2730*(v.hurtCounter*0.25)
gLakituState.oldRoll = gLakituState.roll
cl_red = 128
end
end
end
local function render_speed(w2,h2,textWidth,h_offset,hspeed_text,scale,height)
local scale1 = scale*0.5
djui_hud_set_color(0,0,0,100)
djui_hud_render_rect((w2*0.5) - (textWidth*scale1) - 1,(h2*h_offset),textWidth*scale + 2,height)
djui_hud_set_color(255,255,255,255)
djui_hud_print_text(hspeed_text, (w2*0.5) - (textWidth*scale1),(h2*h_offset),scale)
end
function render_hud_effects()
local m = gMarioStates[0]
if (m ~= nil) then
djui_hud_set_resolution(RESOLUTION_DJUI)
local w = djui_hud_get_screen_width()
local h = djui_hud_get_screen_height()
if (cl_red > 0) then
djui_hud_set_color(255,0,0,cl_red)
djui_hud_render_rect(0,0,w,h)
end
local c = m.area.camera
if (c ~= nil) then
if (c.pos.y < m.waterLevel) then
djui_hud_set_color(38,139,255,100)
djui_hud_render_rect(0,0,w,h)
end
end
if (m.health <= 0xFF or m.action == ACT_UNINITIALIZED or m.action == ACT_DISAPPEARED) then return end
djui_hud_set_resolution(RESOLUTION_N64)
djui_hud_set_font(FONT_NORMAL)
local w2 = djui_hud_get_screen_width()
local h2 = djui_hud_get_screen_height()
local hspeed = m.forwardVel*4 ; if (DM_ACTION_QPHYS[m.action] == 1) then hspeed = vec3f_length({x=m.vel.x,y=0,z=m.vel.z}) end
local hspeed_text = tostring(math.floor(hspeed))
local textWidth = djui_hud_measure_text(hspeed_text)
render_speed(w2,h2,textWidth,0.8,hspeed_text,0.5,15)
local vspeed = m.vel.y ; if (DM_ACTION_QPHYS[m.action] ~= 1) then vspeed = vspeed*4 end
local vspeed_text = tostring(math.floor(vspeed))
local vTextWidth = djui_hud_measure_text(vspeed_text)
render_speed(w2,h2,vTextWidth,0.75,vspeed_text,0.25,7.5)
if (m.capTimer > 0) then
local capTimer_Seconds = math.floor(m.capTimer * 0.03333333333333333)
local capText = "Cap Timer: " .. tostring(capTimer_Seconds)
local capWidth = djui_hud_measure_text(capText)
render_speed(w2,h2,capWidth,0.875,capText,0.5,15)
end
if (not sv_gunmod_loaded) then -- crosshair
-- djui_hud_set_color(0,0,0,255)
-- djui_hud_render_rect((w2*0.5) - 6,(h2*0.5) - 1,11,3)
-- djui_hud_render_rect((w2*0.5) - 2,(h2*0.5) - 5,3,11)
djui_hud_set_color(255,255,255,255)
djui_hud_render_rect((w2*0.5) - 5,(h2*0.5),9,1)
djui_hud_render_rect((w2*0.5) - 1,(h2*0.5) - 4,1,9)
end
end
end
function allow_pvp(m,v)
if (m.action == ACT_DM_AIR_MOVEMENT or m.action == ACT_DM_AIR_MOVEMENT_METAL or m.action == ACT_DM_WATER_MOVEMENT) then
return false
end
end
function on_object_render(o)
if (get_id_from_behavior(o.behavior) == id_bhvMario) then
local m = gMarioStates[0]
if (o == m.marioObj) then
o.header.gfx.shadowInvisible = true
o.header.gfx.disableAutomaticShadowPos = true
if (m.heldObj ~= nil) then
local cYaw = m.area.camera.yaw + 0x8000
local fA = m.faceAngle.y + 0x4000
local offsetX_FaceAngle = 40 * sins(fA)
local offsetZ_FaceAngle = 40 * coss(fA)
local factorY_CameraAngle = sins(gLakituState.oldPitch)
local offsetX_CameraAngle_Fixup = (sins(cYaw)) * factorY_CameraAngle
local offsetZ_CameraAngle_Fixup = (coss(cYaw)) * factorY_CameraAngle
local finalOffsetX = offsetX_FaceAngle + offsetX_CameraAngle_Fixup
local finalOffsetY = -60
local finalOffsetZ = offsetZ_FaceAngle + offsetZ_CameraAngle_Fixup
m.marioObj.header.gfx.pos.x = m.marioBodyState.heldObjLastPosition.x + finalOffsetX
m.marioObj.header.gfx.pos.y = m.marioBodyState.heldObjLastPosition.y + finalOffsetY
m.marioObj.header.gfx.pos.z = m.marioBodyState.heldObjLastPosition.z + finalOffsetZ
end
end
end
end
function on_level_init()
gLakituState.roll = 0 -- fix death angles through paintings
local lastList = 0
local obj = obj_get_first(ObjectLists[lastList])
while obj ~= nil do
obj.header.gfx.skipInViewCheck = true
local nextObj = obj_get_next(obj)
if (nextObj == nil) then
while nextObj == nil and lastList < 9 do
lastList = lastList + 1
nextObj = obj_get_first(ObjectLists[lastList])
end
end
obj = nextObj
end
end
function local_update()
local m = gMarioStates[0]
if (m == nil) then return end
if (cl_interacttimer > 0) then cl_interacttimer = cl_interacttimer - 1 end
if (cl_red > 0) then cl_red = cl_red - 32 end
-- set_override_fov(90)
m.marioObj.hookRender = 1
m.peakHeight = m.pos.y
set_first_person_enabled(true)
gFirstPersonCamera.fov = 90
if (m.heldObj ~= nil) then
held_obj_update(m)
end
if (DM_ACTION_QPHYS[m.action] == 1) then
if (m.controller.buttonDown & B_BUTTON) ~= 0 and (m.flags & MARIO_UNKNOWN_31) == 0 then
m.flags = m.flags | MARIO_UNKNOWN_31
elseif (m.flags & MARIO_UNKNOWN_31) ~= 0 then
m.flags = m.flags & ~MARIO_UNKNOWN_31
end
end
if ((m.flags & MARIO_CAP_IN_HAND) ~= 0) then
m.flags = (m.flags | MARIO_CAP_ON_HEAD) & ~MARIO_CAP_IN_HAND
end
if (cl_bowserthrow) then
cl_bowserthrow_previousYaw = m.faceAngle.y
cl_bowserthrow = m.heldObj ~= nil
m.faceAngle.y = m.area.camera.yaw + 0x8000
end
SV_HandleSpecialFloors(m,false)
local shouldCrouch = ((m.controller.buttonDown & Z_TRIG) ~= 0 and m.health > 0xFF) or m.action == ACT_GROUND_POUND
if (DM_ACTION_FORCEANGLE[m.action] ~= nil and not cl_bowserthrow) then
m.faceAngle.y = m.area.camera.yaw + (0x8000*DM_ACTION_FORCEANGLE[m.action])
end
if (DM_ACTIONS_CROUCHAIR[m.action] == 1) then
if (shouldCrouch ~= gPlayerSyncTable[m.playerIndex].playerCrouching) then
if (shouldCrouch) then
m.pos.y = m.pos.y + sv_crouchoffset
else
if (m.pos.y - sv_crouchoffset < m.floorHeight) then
m.pos.y = m.floorHeight
else
m.pos.y = m.pos.y - sv_crouchoffset
end
end
end
end
gPlayerSyncTable[m.playerIndex].playerCrouching = shouldCrouch
gFirstPersonCamera.offset.y = ifelse(shouldCrouch, sv_camerayoffset-sv_crouchoffset, sv_camerayoffset)
if (m.health <= 0xFF) then
gFirstPersonCamera.offset.y = -110
gLakituState.roll = 0
m.invincTimer = 0
cl_red = 192
else
gLakituState.roll = gLakituState.roll * 0.75
if (DM_ACTIONS_ALLOWGRAB[m.action] == 1) then
mario_handle_grab_and_punch_custom(m)
end
end
m.marioObj.hitboxHeight = ifelse(shouldCrouch, sv_playerheight-sv_crouchoffset, sv_playerheight)
local warp = obj_get_nearest_object_with_behavior_id(m.marioObj, id_bhvFadingWarp)
if warp ~= nil and m.heldObj == nil and m.action ~= ACT_TELEPORT_FADE_OUT and m.action ~= ACT_TELEPORT_FADE_IN and obj_check_hitbox_overlap(m.marioObj, warp) and vec3f_length(m.vel) < 1 and gPlayerSyncTable[m.playerIndex].playerCrouching then
m.interactObj = warp
m.usedObj = warp
set_mario_action(m, ACT_TELEPORT_FADE_OUT, 0)
end
end

Binary file not shown.

Binary file not shown.

View file

@ -1,27 +0,0 @@
-- _mquake_a_constants
-- _mquake_b_actions_predefine
-- _mquake_c_actions
-- _mquake_d_physics
-- _mquake_e_hooks
hook_mario_action(ACT_DM_GROUNDED_MOVEMENT, act_dm_grounded_movement)
hook_mario_action(ACT_DM_GROUNDED_IDLE, act_dm_grounded_movement)
hook_mario_action(ACT_DM_AIR_MOVEMENT, act_dm_air_movement)
hook_mario_action(ACT_DM_GROUNDED_MOVEMENT_METAL, act_dm_grounded_movement)
hook_mario_action(ACT_DM_AIR_MOVEMENT_METAL, act_dm_air_movement)
hook_mario_action(ACT_DM_WATER_MOVEMENT, act_dm_water_movement)
hook_event(HOOK_UPDATE, local_update)
hook_event(HOOK_ON_PLAYER_CONNECTED, on_player_connected)
hook_event(HOOK_OVERRIDE_PHYS_STEP_DEFACTO_SPEED, override_defacto)
hook_event(HOOK_CHARACTER_SOUND, allow_voice)
hook_event(HOOK_BEFORE_SET_MARIO_ACTION, before_set_mario_action)
hook_event(HOOK_ON_SET_MARIO_ACTION, on_set_mario_action)
hook_event(HOOK_ON_LEVEL_INIT, on_level_init)
hook_event(HOOK_BEFORE_PHYS_STEP, before_phys_step)
hook_event(HOOK_ALLOW_HAZARD_SURFACE, function(m) return false end)
hook_event(HOOK_ON_INTERACT, on_interact)
hook_event(HOOK_ALLOW_INTERACT, allow_interact)
hook_event(HOOK_ON_PVP_ATTACK, on_pvp)
hook_event(HOOK_ALLOW_PVP_ATTACK, allow_pvp)
hook_event(HOOK_ON_OBJECT_RENDER, on_object_render)
hook_event(HOOK_ON_HUD_RENDER_BEHIND, render_hud_effects)

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +1,6 @@
-- name: mQuake [Alpha] -- name: mQuake [Beta]
-- incompatible: moveset -- incompatible: moveset
-- description: Quake style physics.\nCreated by 0x2480 with help from Agent X -- description: Quake style physics.\nCreated by 0x2480 with help from Agent X
-- deluxe: true
-- mQuake uncompiled is no longer available publicly. If you wish to get the code, message me.

View file

@ -2295,6 +2295,8 @@ void init_single_mario(struct MarioState* m) {
m->area = gCurrentArea; m->area = gCurrentArea;
m->marioObj = gMarioObjects[m->playerIndex]; m->marioObj = gMarioObjects[m->playerIndex];
if (m->marioObj == NULL) { return; } if (m->marioObj == NULL) { return; }
m->marioObj->header.gfx.shadowInvisible = false;
m->marioObj->header.gfx.disableAutomaticShadowPos = false;
m->marioObj->header.gfx.animInfo.animID = -1; m->marioObj->header.gfx.animInfo.animID = -1;
vec3s_copy(m->faceAngle, spawnInfo->startAngle); vec3s_copy(m->faceAngle, spawnInfo->startAngle);
vec3s_set(m->angleVel, 0, 0, 0); vec3s_set(m->angleVel, 0, 0, 0);

View file

@ -9,22 +9,21 @@ void djui_panel_changelog_create(struct DjuiBase* caller) {
struct DjuiBase* body = djui_three_panel_get_body(panel); struct DjuiBase* body = djui_three_panel_get_body(panel);
{ {
snprintf(sChangelog, 1024, "Welcome back!\n\ snprintf(sChangelog, 1024, "Welcome back! - v0.1.2:\n\
v0.1.2:\n\
Changes:\n\ Changes:\n\
Disable sm64ex-coop Compatibility by default\n\ Disable sm64ex-coop Compatibility by default\n\
Restored Luigi's original color palette\n\ Restored Luigi's original color palette\n\
Made mario step code use his hitbox height instead of a constant number for his height\n\ Made mario step code use his hitbox height instead of a constant number for his height\n\
Hid Mario's shadow in First Person\n\ Hid Mario's shadow in First Person\n\
Cancelled First Person if Mario is flying\n\ Cancelled First Person if Mario is flying\n\
\n\ Updated language files\n\
Add --console launch parameter\n\
Fixes:\n\ Fixes:\n\
Reverted dialog cutscene changes to prevent softlocks\n\ Reverted dialog cutscene changes to prevent softlocks\n\
Fixed DynOS related crashes\n\ Fixed DynOS related crashes\n\
Fixed Mario's shadow not resetting\n\ Fixed Mario's shadow not resetting\n\
\n\ Mod Changes:\n\
Mods:\n\ Updated Gun Mod DX, Day Night Cycle, Character Select and mQuake\n\
Updated Gun Mod DX and Character Select\n\
Updated SiM description\n\ Updated SiM description\n\
Removed Flood and Cheats due to future plans with them" Removed Flood and Cheats due to future plans with them"
); );

View file

@ -707,10 +707,6 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup, bool reconnect
cnt->extStickX = 0; cnt->extStickX = 0;
cnt->extStickY = 0; cnt->extStickY = 0;
// reset shadow
gMarioStates[0].marioObj->header.gfx.shadowInvisible = false;
gMarioStates[0].marioObj->header.gfx.disableAutomaticShadowPos = false;
gFirstPersonCamera.enabled = false; gFirstPersonCamera.enabled = false;
gFirstPersonCamera.fov = FIRST_PERSON_DEFAULT_FOV; gFirstPersonCamera.fov = FIRST_PERSON_DEFAULT_FOV;
first_person_reset(); first_person_reset();

View file

@ -1,36 +0,0 @@
#!/usr/bin/env python3
import os
copy_directories = {
'sound/samples/sfx_mario/': [
'sound/samples/sfx_custom_luigi/',
'sound/samples/sfx_custom_wario/',
'sound/samples/sfx_custom_toad',
],
'sound/samples/sfx_mario_peach/': [
'sound/samples/sfx_custom_luigi_peach/',
'sound/samples/sfx_custom_wario_peach/',
'sound/samples/sfx_custom_toad_peach',
],
}
def copy_dir(source, destinations):
for filename in os.listdir(source):
if not filename.endswith('.aiff'):
continue
src = source + filename
shortened_name = filename.split('_')[0] + '.aiff'
for destination in destinations:
dst = destination + shortened_name
if os.path.exists(dst):
continue
print('Copying mario sounds to character sounds: ' + src + ' -> ' + dst)
os.system('cp ' + src + ' ' + dst)
def main():
for source in copy_directories:
copy_dir(source, copy_directories[source])
if __name__ == "__main__":
main()