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 #
#==============================================================================#
# 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
_ := $(shell $(PYTHON) $(TOOLS_DIR)/copy_extended_sounds.py)
@ -997,11 +982,6 @@ export LANG := C
# 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
ifeq ($(STRICT),1)
CC_CHECK_CFLAGS += -Werror

View file

@ -81,6 +81,6 @@ end
-- Global Variables --
----------------------
modVersion = "1.5.2"
modVersion = "1.5.3"
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
-- 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
--- @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)
play_sound(SOUND_OBJ_SNOWMAN_EXPLODE, obj.header.gfx.cameraToObject)
obj_mark_for_deletion(obj)
obj_spawn_loot_yellow_coins(obj, obj.oNumLootCoins, 20)
network_send_object(obj, false)
return true
end
@ -294,6 +295,13 @@ function hurt_bully(obj, bulletObj)
return true
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 bulletObj Object
function hurt_king_bobomb(obj, bulletObj)
@ -324,8 +332,8 @@ end
--- @param bulletObj Object
function hurt_yoshi(_, bulletObj)
bulletObj.oAction = 2
bullet_ricochet(bulletObj)
bulletObj.oAction = 2
djui_chat_message_create("\\#a0ffa0\\Yoshi\\#dcdcdc\\: no lol")
play_sound(SOUND_MENU_MESSAGE_APPEAR, gGlobalSoundSource)

View file

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

View file

@ -1,5 +1,5 @@
-- 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
if SM64COOPDX_VERSION == nil then return end
@ -40,6 +40,7 @@ gShootableHitboxes = {
[id_bhvBigBully] = hurt_bully,
[id_bhvSmallChillBully] = hurt_bully,
[id_bhvBigChillBully] = hurt_bully,
[id_bhvMoneybag] = hurt_moneybag,
[id_bhvKingBobomb] = hurt_king_bobomb,
[id_bhvBowser] = hurt_bowser,
[id_bhvYoshi] = hurt_yoshi
@ -293,7 +294,7 @@ local function on_gm_command(msg)
return on_give_command(args[2] or "")
end
if msg:gsub("%s+", "") == "" then
if msg:gsub("%s+", "") == "" and (network_is_server() or network_is_moderator()) then
gGlobalSyncTable.gunModEnabled = not gGlobalSyncTable.gunModEnabled
djui_chat_message_create("[Gun Mod] Status: " .. on_or_off(gGlobalSyncTable.gunModEnabled))
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
-- 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->marioObj = gMarioObjects[m->playerIndex];
if (m->marioObj == NULL) { return; }
m->marioObj->header.gfx.shadowInvisible = false;
m->marioObj->header.gfx.disableAutomaticShadowPos = false;
m->marioObj->header.gfx.animInfo.animID = -1;
vec3s_copy(m->faceAngle, spawnInfo->startAngle);
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);
{
snprintf(sChangelog, 1024, "Welcome back!\n\
v0.1.2:\n\
snprintf(sChangelog, 1024, "Welcome back! - v0.1.2:\n\
Changes:\n\
Disable sm64ex-coop Compatibility by default\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\
Hid Mario's shadow in First Person\n\
Cancelled First Person if Mario is flying\n\
\n\
Updated language files\n\
Add --console launch parameter\n\
Fixes:\n\
Reverted dialog cutscene changes to prevent softlocks\n\
Fixed DynOS related crashes\n\
Fixed Mario's shadow not resetting\n\
\n\
Mods:\n\
Updated Gun Mod DX and Character Select\n\
Mod Changes:\n\
Updated Gun Mod DX, Day Night Cycle, Character Select and mQuake\n\
Updated SiM description\n\
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->extStickY = 0;
// reset shadow
gMarioStates[0].marioObj->header.gfx.shadowInvisible = false;
gMarioStates[0].marioObj->header.gfx.disableAutomaticShadowPos = false;
gFirstPersonCamera.enabled = false;
gFirstPersonCamera.fov = FIRST_PERSON_DEFAULT_FOV;
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()