Update [CS] Extra Characters

This commit is contained in:
Agent X 2024-07-01 11:45:25 -04:00
parent 95738ccfd1
commit 80d0c6209f
169 changed files with 42813 additions and 56 deletions

View File

@ -0,0 +1,36 @@
if not _G.charSelectExists then
local first = false
hook_event(HOOK_ON_LEVEL_INIT, function()
if not first then
first = true
play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource)
djui_chat_message_create("\\#ffffa0\\[CS] Extra Characters requires Character Select to be enabled.\nPlease rehost with it enabled.")
end
end)
return
end
--- @param m MarioState
--- Checks if a player is currently active
function active_player(m)
local np = gNetworkPlayers[m.playerIndex]
if m.playerIndex == 0 then
return true
end
if not np.connected then
return false
end
if np.currCourseNum ~= gNetworkPlayers[0].currCourseNum then
return false
end
if np.currActNum ~= gNetworkPlayers[0].currActNum then
return false
end
if np.currLevelNum ~= gNetworkPlayers[0].currLevelNum then
return false
end
if np.currAreaIndex ~= gNetworkPlayers[0].currAreaIndex then
return false
end
return true
end

Binary file not shown.

View File

@ -0,0 +1,206 @@
if not _G.charSelectExists then return end
E_MODEL_DAISY = smlua_model_util_get_id("daisy_geo")
local TEX_DAISY = get_texture_info("daisy_icon")
ACT_DAISY_JUMP = allocate_mario_action(ACT_GROUP_AIRBORNE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_MOVING)
VOICETABLE_DAISY = {
[CHAR_SOUND_ATTACKED] = {'daisy_attacked_1.ogg','daisy_attacked_2.ogg','daisy_attacked_3.ogg'},
[CHAR_SOUND_COUGHING1] = 'daisy_coughing1.ogg',
[CHAR_SOUND_COUGHING2] = 'daisy_coughing2.ogg',
[CHAR_SOUND_COUGHING3] = 'daisy_coughing3.ogg',
[CHAR_SOUND_DOH] = {'daisy_doh_1.ogg', 'daisy_doh_2.ogg'},
[CHAR_SOUND_DROWNING] = 'daisy_drowning_1.ogg',
[CHAR_SOUND_DYING] = 'daisy_dying.ogg',
[CHAR_SOUND_EEUH] = 'daisy_eeuh.ogg',
[CHAR_SOUND_GROUND_POUND_WAH] = 'daisy_ground_pound_wah.ogg',
[CHAR_SOUND_HAHA] = 'daisy_haha.ogg',
[CHAR_SOUND_HAHA_2] = 'daisy_haha_2.ogg',
[CHAR_SOUND_HERE_WE_GO] = 'daisy_here_we_go.ogg',
[CHAR_SOUND_HOOHOO] = 'daisy_hoohoo.ogg',
[CHAR_SOUND_HRMM] = 'daisy_hrmm.ogg',
[CHAR_SOUND_IMA_TIRED] = 'daisy_ima_tired.ogg',
[CHAR_SOUND_MAMA_MIA] = 'daisy_mama_mia.ogg',
[CHAR_SOUND_LETS_A_GO] = 'daisy_lets_a_go.ogg',
[CHAR_SOUND_ON_FIRE] = 'daisy_on_fire.ogg',
[CHAR_SOUND_OOOF] = 'daisy_oof.ogg',
[CHAR_SOUND_OOOF2] = 'daisy_ooof2.ogg',
[CHAR_SOUND_PANTING] = 'daisy_panting.ogg',
[CHAR_SOUND_PANTING_COLD] = 'daisy_panting_cold.ogg',
[CHAR_SOUND_PUNCH_HOO] = 'daisy_punch_hoo.ogg',
[CHAR_SOUND_PUNCH_WAH] = 'daisy_punch_wah.ogg',
[CHAR_SOUND_PUNCH_YAH] = 'daisy_punch_yah.ogg',
[CHAR_SOUND_SO_LONGA_BOWSER] = 'daisy_so_longa_bowser.ogg',
[CHAR_SOUND_SNORING1] = 'daisy_snoring1.ogg',
[CHAR_SOUND_SNORING2] = 'daisy_snoring2.ogg',
[CHAR_SOUND_SNORING3] = {'daisy_snoring2.ogg', 'daisy_snoring1.ogg', 'daisy_snoring3.ogg'},
[CHAR_SOUND_TWIRL_BOUNCE] = 'daisy_twirl_bounce.ogg',
[CHAR_SOUND_UH] = 'daisy_uh.ogg',
[CHAR_SOUND_UH2] = 'daisy_uh2.ogg',
[CHAR_SOUND_UH2_2] = 'daisy_uh2_2.ogg',
[CHAR_SOUND_WAAAOOOW] = 'daisy_waaaooow.ogg',
[CHAR_SOUND_WAH2] = 'daisy_wah2.ogg',
[CHAR_SOUND_WHOA] = 'daisy_whoa.ogg',
[CHAR_SOUND_YAHOO] = 'daisy_yahoo.ogg',
[CHAR_SOUND_YAWNING] = 'daisy_yawning.ogg',
[CHAR_SOUND_YAHOO_WAHA_YIPPEE] = { 'daisy_yahoo.ogg', 'daisy_yahoo2.ogg', 'daisy_yahoo3.ogg', 'daisy_yahoo4.ogg'},
[CHAR_SOUND_YAH_WAH_HOO] = { 'daisy_yah1.ogg', 'daisy_yah2.ogg', 'daisy_yah3.ogg'},
[CHAR_SOUND_HELLO] = 'daisy_double_jump.ogg'
}
--CAPS (Will be worked on in the future)--
--local capDAISY = {
--normal = smlua_model_util_get_id("daisys_cap_geo"),
--wing = smlua_model_util_get_id("daisys_wing_cap_geo"),
--metal = smlua_model_util_get_id("daisys_metal_cap_geo"),
--metalWing = smlua_model_util_get_id("daisys_metal_wing_cap_geo")
--}
local ANIMTABLE_DAISY = {
[CHAR_ANIM_RUNNING] = 'daisy_running',
[CHAR_ANIM_IDLE_HEAD_CENTER] = 'daisy_idle_head_center',
[CHAR_ANIM_IDLE_HEAD_LEFT] = 'daisy_idle_head_left',
[CHAR_ANIM_IDLE_HEAD_RIGHT] = 'daisy_idle_head_right',
[CHAR_ANIM_BACKWARD_KB] = 'daisy_backward_kb',
[CHAR_ANIM_FIRST_PERSON] = 'daisy_first_person',
[CHAR_ANIM_FLUTTERKICK] = 'daisy_flutterkick',
[CHAR_ANIM_FLUTTERKICK_WITH_OBJ] = 'daisy_flutterkick_with_obj',
[CHAR_ANIM_FORWARD_KB] = 'daisy_forward_kb',
[CHAR_ANIM_GROUND_BONK] = 'daisy_ground_bonk',
[CHAR_ANIM_GROUND_KICK] = 'daisy_ground_kick',
[CHAR_ANIM_GROUND_THROW] = 'daisy_ground_throw',
[CHAR_ANIM_HEAVY_THROW] = 'daisy_heavy_throw',
[CHAR_ANIM_MISSING_CAP] = 'daisy_missing_cap',
[CHAR_ANIM_PULL_DOOR_WALK_IN] = 'daisy_pull_door_walk_in',
[CHAR_ANIM_FIRST_PERSON] = 'daisy_first_person',
[CHAR_ANIM_RELEASE_BOWSER] = 'daisy_release_bowser',
[CHAR_ANIM_RETURN_FROM_STAR_DANCE] = 'daisy_return_from_star_dance',
[CHAR_ANIM_RETURN_STAR_APPROACH_DOOR] = 'daisy_return_star_approach_door',
[CHAR_ANIM_SLIDEFLIP_LAND] = 'daisy_sideflip_land',
[CHAR_ANIM_SLEEP_IDLE] = 'daisy_sleep_idle',
[CHAR_ANIM_START_SLEEP_SITTING] = 'daisy_sleep_sitting',
[CHAR_ANIM_SOFT_BACK_KB] = 'daisy_soft_back_kb',
[CHAR_ANIM_SOFT_FRONT_KB] = 'daisy_soft_front_kb',
[CHAR_ANIM_STAR_DANCE] = 'daisy_star_dance',
[CHAR_ANIM_START_CROUCHING] = 'daisy_start_crouch',
[CHAR_ANIM_STOP_CROUCHING] = 'daisy_stop_crouch',
[CHAR_ANIM_START_SLEEP_IDLE] = 'daisy_start_sleep',
[CHAR_ANIM_STOP_SLIDE] = 'daisy_stop_slide',
[CHAR_ANIM_SUMMON_STAR] = 'daisy_summon_star',
[CHAR_ANIM_SWIM_WITH_OBJ_PART1] = 'daisy_swim_with_obj1',
[CHAR_ANIM_SWIM_WITH_OBJ_PART2] = 'daisy_swim_with_obj2',
[CHAR_ANIM_TRIPLE_JUMP_LAND] = 'daisy_triple_jump_land',
[CHAR_ANIM_TURNING_PART1] = 'daisy_turning_part1',
[CHAR_ANIM_TURNING_PART2] = 'daisy_turning_part2',
[CHAR_ANIM_TWIRL_LAND] = 'daisy_twirl_land',
[CHAR_ANIM_WAKE_FROM_LYING] = 'daisy_wake_from_lying',
[CHAR_ANIM_WAKE_FROM_SLEEP] = 'daisy_wake_from_sleep',
[CHAR_ANIM_CREDITS_RAISE_HAND] = 'daisy_credits_raise_hand',
[CHAR_ANIM_CREDITS_RETURN_FROM_LOOK_UP] = 'daisy_credits_return_from_look_up',
[CHAR_ANIM_CREDITS_START_WALK_LOOK_UP] = 'daisy_credits_start_walk_look_up',
[CHAR_ANIM_CREDITS_TAKE_OFF_CAP] = 'daisy_credits_take_off_cap',
[CHAR_ANIM_DYING_FALL_OVER] = 'daisy_dying_fall_over',
[CHAR_ANIM_FALL_OVER_BACKWARDS] = 'daisy_fall_over_backwards',
[CHAR_ANIM_FAST_LEDGE_GRAB] = 'daisy_fast_ledge_grab',
--[CHAR_ANIM_FINAL_BOWSER_RAISE_HAND_SPIN] = 'daisy_final_bowser_raise_hand_spin',
[CHAR_ANIM_FIRST_PUNCH_FAST] = 'daisy_first_punch_fast',
[CHAR_ANIM_GENERAL_LAND] = 'daisy_general_land',
[CHAR_ANIM_HEAD_STUCK_IN_GROUND] = 'daisy_head_stuck_in_ground',
[CHAR_ANIM_LAND_FROM_DOUBLE_JUMP] = 'daisy_land_from_double_jump',
[CHAR_ANIM_LAND_FROM_SINGLE_JUMP] = 'daisy_land_from_single_jump',
[CHAR_ANIM_LAND_ON_STOMACH] = 'daisy_land_on_stomach',
[CHAR_ANIM_LEGS_STUCK_IN_GROUND] = 'daisy_legs_stuck_in_ground',
[CHAR_ANIM_PLACE_LIGHT_OBJ] = 'daisy_place_light_obj',
[CHAR_ANIM_PUSH_DOOR_WALK_IN] = 'daisy_push_door_walk_in',
[CHAR_ANIM_PUT_CAP_ON] = 'daisy_put_cap_on',
[CHAR_ANIM_RUN_WITH_LIGHT_OBJ] = 'daisy_run_with_light_obj',
[CHAR_ANIM_SECOND_PUNCH_FAST] = 'daisy_second_punch_fast',
[CHAR_ANIM_SHIVERING_RETURN_TO_IDLE] = 'daisy_shivering_returning_to_idle',
[CHAR_ANIM_SKID_ON_GROUND] = 'daisy_skid_on_ground',
[CHAR_ANIM_SLOW_LAND_FROM_DIVE] = 'daisy_slow_land_from_dive',
[CHAR_ANIM_SLOW_LEDGE_GRAB] = 'daisy_slow_ledge_grab',
[CHAR_ANIM_SLOW_WALK_WITH_LIGHT_OBJ] = 'daisy_slow_walk_with_light_obj',
[CHAR_ANIM_STAND_UP_FROM_LAVA_BOOST] = 'daisy_stand_up_from_lava_boost',
[CHAR_ANIM_STOP_SKID] = 'daisy_stop_skid',
[CHAR_ANIM_TAKE_CAP_OFF_THEN_ON] = 'daisy_take_cap_off_then_on',
[CHAR_ANIM_THROW_CATCH_KEY] = 'daisy_throw_catch_key',
[CHAR_ANIM_WALK_WITH_LIGHT_OBJ] = 'daisy_walk_with_light_obj',
[CHAR_ANIM_BOTTOM_STUCK_IN_GROUND] = 'daisy_bottom_stuck_in_ground',
--[CHAR_ANIM_CREDITS_PEACE_SIGN] = 'daisy_credits_peace_sign',
[CHAR_ANIM_FIRE_LAVA_BURN] = 'daisy_fire_lava_burn',
[CHAR_ANIM_GROUND_POUND] = 'daisy_ground_pound',
[CHAR_ANIM_GROUND_POUND_LANDING] = 'daisy_ground_pound_landing',
[CHAR_ANIM_TRIPLE_JUMP_GROUND_POUND] = 'daisy_triple_jump_ground_pound_anim',
[CHAR_ANIM_UNLOCK_DOOR] = 'daisy_unlock_door',
[CHAR_ANIM_SWINGING_BOWSER] = 'daisy_swinging_bowser',
[CHAR_ANIM_HOLDING_BOWSER] = 'daisy_holding_bowser',
[CHAR_ANIM_GRAB_BOWSER] = 'daisy_grab_bowser',
[CHAR_ANIM_BEND_KNESS_RIDING_SHELL] = 'daisy_dressjump',
}
local PALETTE_DAISY = {
[PANTS] = { r = 0xFF, g = 0xFF, b = 0xFF },
[SHIRT] = { r = 0xEF, g = 0xCA, b = 0x11 },
[GLOVES] = { r = 0xFF, g = 0xFF, b = 0xFF },
[SHOES] = { r = 0x00, g = 0x00, b = 0xFF },
[HAIR] = { r = 0xFF, g = 0x61, b = 0x00 },
[SKIN] = { r = 0xFD, g = 0xAE, b = 0x82 },
[CAP] = { r = 0xFF, g = 0x00, b = 0x00 },
[EMBLEM] = { r = 0x00, g = 0xFF, b = 0xFF }
}
CT_DAISY = _G.charSelect.character_add("Princess Daisy", "The ruler of the Sarasaland, a tomboyish princess who brings enthusiasm and energy to every adventure! Voiced by MorphiGalaxi", "Melzinoff & MorphiGalaxi", {r = 255, g = 97, b = 0}, E_MODEL_DAISY, CT_MARIO, TEX_DAISY)
-- _G.charSelect.character_add_caps(E_MODEL_DAISY, capDAISY)
_G.charSelect.character_add_voice(E_MODEL_DAISY, VOICETABLE_DAISY)
_G.charSelect.character_add_palette_preset(E_MODEL_DAISY, PALETTE_DAISY)
--- @param m MarioState
local function act_daisy_jump(m)
-- apply movement when using action
common_air_action_step(m, ACT_JUMP_LAND, CHAR_ANIM_BEND_KNESS_RIDING_SHELL, AIR_STEP_NONE)
-- setup when action starts (vertical speed and voiceline)
if m.actionTimer == 0 then
m.vel.y = 45
play_character_sound(m, CHAR_SOUND_HELLO)
end
set_mario_particle_flags(m, PARTICLE_LEAF, 0)
-- avoid issue with flying and then make the hover end after 2 secs or when stopping holding the button
if m.prevAction ~= ACT_TRIPLE_JUMP and (m.flags & MARIO_WING_CAP) ~= 0 then
if m.actionTimer >= 10 or (m.controller.buttonDown & A_BUTTON) == 0 then
set_mario_action(m, ACT_FREEFALL, 0)
end
else
if m.actionTimer >= 10 or (m.controller.buttonDown & A_BUTTON) == 0 then
set_mario_action(m, ACT_FREEFALL, 0)
end
end
-- increment the action timer to make the hover stop
m.actionTimer = m.actionTimer + 1
end
--- @param m MarioState
function daisy_update(m)
-- patch in custom animations
local anim = ANIMTABLE_DAISY[m.marioObj.header.gfx.animInfo.animID]
if anim ~= nil then
smlua_anim_util_set_animation(m.marioObj, anim)
end
if (m.input & INPUT_A_PRESSED) ~= 0 and m.vel.y < 10 and (
m.action == ACT_JUMP or
m.action == ACT_DOUBLE_JUMP or
m.action == ACT_TRIPLE_JUMP or
m.action == ACT_BACKFLIP or
m.action == ACT_SIDE_FLIP) then
set_mario_action(m, ACT_DAISY_JUMP, 0)
set_mario_particle_flags(m, PARTICLE_LEAF, 0)
end
end
hook_mario_action(ACT_DAISY_JUMP, act_daisy_jump)

File diff suppressed because it is too large Load Diff

View File

@ -1,62 +1,33 @@
-- name: [CS] Extra Characters
-- description: [CS] Extra Characters\nBy Coop Deluxe Team\n\nThis Character Select pack adds other characters from the Mario series! Currently, The only character that has been added is just \\#ff46a1\\Toadette\\#dcdcdc\\.
-- description: [CS] Extra Characters\nBy Coop Deluxe Team\n\nThis Character Select pack adds other characters from the Mario series!
-- pausable: true
if not _G.charSelectExists then
local first = false
hook_event(HOOK_ON_LEVEL_INIT, function()
if not first then
first = true
play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource)
djui_chat_message_create("\\#ffffa0\\Extra Characters requires Character Select to be enabled.\nPlease rehost with it enabled.")
end
end)
return
if not _G.charSelectExists then return end
--- @param m MarioState
local function mario_update(m)
if active_player(m) == 0 then return end
local voiceTable = _G.charSelect.character_get_voice(m)
if voiceTable == VOICETABLE_TOADETTE or voiceTable == VOICETABLE_PEACH or voiceTable == VOICETABLE_DAISY or voiceTable == VOICETABLE_YOSHI then
_G.charSelect.voice.snore(m)
end
if obj_has_model_extended(m.marioObj, E_MODEL_PEACH_PLAYER) ~= 0 then
peach_update(m)
elseif obj_has_model_extended(m.marioObj, E_MODEL_DAISY) ~= 0 then
daisy_update(m)
end
end
local E_MODEL_TOADETTE = smlua_model_util_get_id("toadette_geo")
--- @param m MarioState
--- @param sound CharacterSound
local function character_sound(m, sound)
local voiceTable = _G.charSelect.character_get_voice(m)
if voiceTable == VOICETABLE_TOADETTE or voiceTable == VOICETABLE_PEACH or voiceTable == VOICETABLE_DAISY or voiceTable == VOICETABLE_YOSHI then
return _G.charSelect.voice.sound(m, sound)
end
end
local TEX_TOADETTE = get_texture_info("toadette_icon")
local VOICETABLE_TOADETTE = {
[CHAR_SOUND_ATTACKED] = "toadette_hurt_hard.ogg",
[CHAR_SOUND_GROUND_POUND_WAH] = "toadette_wah.ogg",
[CHAR_SOUND_HAHA] = "toadette_haahaa.ogg",
[CHAR_SOUND_HAHA_2] = "toadette_haahaa.ogg",
[CHAR_SOUND_HERE_WE_GO] = "toadette_here_we_go.ogg",
[CHAR_SOUND_HOOHOO] = "toadette_jump.ogg",
[CHAR_SOUND_ON_FIRE] = "toadette_burning.ogg",
[CHAR_SOUND_OOOF] = "toadette_oof.ogg",
[CHAR_SOUND_OOOF2] = "toadette_oof_2.ogg",
[CHAR_SOUND_PUNCH_HOO] = "toadette_hoo.ogg",
[CHAR_SOUND_PUNCH_WAH] = "toadette_wah.ogg",
[CHAR_SOUND_PUNCH_YAH] = "toadette_yah.ogg",
[CHAR_SOUND_SO_LONGA_BOWSER] = "toadette_bowser.ogg",
[CHAR_SOUND_TWIRL_BOUNCE] = "toadette_boing.ogg",
[CHAR_SOUND_WAAAOOOW] = "toadette_fall.ogg",
[CHAR_SOUND_WAH2] = "toadette_jump.ogg",
[CHAR_SOUND_WHOA] = "toadette_woah.ogg",
[CHAR_SOUND_YAHOO] = "toadette_yahoo.ogg",
[CHAR_SOUND_YAHOO_WAHA_YIPPEE] = {"toadette_yahoo.ogg", "toadette_yippee.ogg"},
[CHAR_SOUND_YAH_WAH_HOO] = {"toadette_yah.ogg", "toadette_wah.ogg", "toadette_hoo.ogg"},
[CHAR_SOUND_OKEY_DOKEY] = "toadette_okay.ogg",
[CHAR_SOUND_LETS_A_GO] = "toadette_lets_a_go.ogg",
[CHAR_SOUND_DYING] = "toadette_dead.ogg",
[CHAR_SOUND_DROWNING] = "toadette_drowning.ogg",
[CHAR_SOUND_EEUH] = "toadette_eugh.ogg",
[CHAR_SOUND_MAMA_MIA] = "toadette_ooh.ogg",
[CHAR_SOUND_DOH] = "toadette_oof.ogg",
[CHAR_SOUND_HRMM] = "toadette_pickup.ogg",
[CHAR_SOUND_PANTING] = "toadette_pant.ogg",
[CHAR_SOUND_UH] = "toadette_oof.ogg"
}
_G.charSelect.character_add("Toadette", {"A female toad who debutted in", "2003 as a partner for Toad in", "Mario Kart: Double Dash!"}, "Toadette", { r = 255, g = 70, b = 161 }, E_MODEL_TOADETTE, CT_TOAD, TEX_TOADETTE)
_G.charSelect.character_add_voice(E_MODEL_TOADETTE, VOICETABLE_TOADETTE)
hook_event(HOOK_MARIO_UPDATE, function (m)
if _G.charSelect.character_get_voice(m) == VOICETABLE_TOADETTE then _G.charSelect.voice.snore(m) end
end)
hook_event(HOOK_CHARACTER_SOUND, function (m, sound)
if _G.charSelect.character_get_voice(m) == VOICETABLE_TOADETTE then return _G.charSelect.voice.sound(m, sound) end
end)
hook_event(HOOK_MARIO_UPDATE, mario_update)
hook_event(HOOK_CHARACTER_SOUND, character_sound)

View File

@ -0,0 +1,211 @@
if not _G.charSelectExists then return end
E_MODEL_PEACH_PLAYER = smlua_model_util_get_id("peach_player_geo")
local TEX_PEACH = get_texture_info("peach_player_icon")
ACT_PEACH_FLOAT = allocate_mario_action(ACT_GROUP_AIRBORNE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_MOVING)
VOICETABLE_PEACH = {
[CHAR_SOUND_ATTACKED] = "peach_attacked.ogg",
[CHAR_SOUND_COUGHING1] = "peach_coughing1.ogg",
[CHAR_SOUND_COUGHING2] = "peach_coughing2.ogg",
[CHAR_SOUND_COUGHING3] = "peach_coughing3.ogg",
[CHAR_SOUND_DOH] = "peach_doh.ogg",
[CHAR_SOUND_DROWNING] = "peach_drowning.ogg",
[CHAR_SOUND_DYING] = "peach_dying.ogg",
[CHAR_SOUND_EEUH] = "peach_euuh.ogg",
[CHAR_SOUND_GROUND_POUND_WAH] = "peach_ground_pound_wah.ogg",
[CHAR_SOUND_HAHA] = "peach_haha.ogg",
[CHAR_SOUND_HAHA_2] = "peach_haha.ogg",
[CHAR_SOUND_HERE_WE_GO] = "peach_herewego.ogg",
[CHAR_SOUND_HOOHOO] = "peach_hoohoo.ogg",
[CHAR_SOUND_HRMM] = "peach_hrmm.ogg",
[CHAR_SOUND_IMA_TIRED] = "peach_imatired.ogg",
[CHAR_SOUND_MAMA_MIA] = "peach_mamamia.ogg",
[CHAR_SOUND_LETS_A_GO] = "peach_letsago.ogg",
[CHAR_SOUND_ON_FIRE] = "peach_on_fire.ogg",
[CHAR_SOUND_OOOF] = "peach_ooof.ogg",
[CHAR_SOUND_OOOF2] = "peach_ooof2.ogg",
[CHAR_SOUND_PANTING] = "peach_panting.ogg",
[CHAR_SOUND_PANTING_COLD] = "peach_panting_cold.ogg",
[CHAR_SOUND_PUNCH_HOO] = "peach_punch_hoo.ogg",
[CHAR_SOUND_PUNCH_WAH] = "peach_punch_wah.ogg",
[CHAR_SOUND_PUNCH_YAH] = "peach_punch_yah.ogg",
[CHAR_SOUND_SO_LONGA_BOWSER] = "peach_solonga_bowser.ogg",
[CHAR_SOUND_SNORING1] = "peach_snoring1.ogg",
[CHAR_SOUND_SNORING2] = "peach_snoring2.ogg",
[CHAR_SOUND_SNORING3] = {"peach_snoring2.ogg", "peach_snoring1.ogg", "peach_snoring3.ogg"},
[CHAR_SOUND_TWIRL_BOUNCE] = "peach_twirl_bounce.ogg",
[CHAR_SOUND_UH] = "peach_uh.ogg",
[CHAR_SOUND_UH2] = "peach_uh2.ogg",
[CHAR_SOUND_UH2_2] = "peach_uh2_2.ogg",
[CHAR_SOUND_WAAAOOOW] = "peach_waaaooow.ogg",
[CHAR_SOUND_WAH2] = "peach_ground_pound_wah.ogg",
[CHAR_SOUND_WHOA] = "peach_whoa.ogg",
[CHAR_SOUND_YAHOO] = "peach_yahoo.ogg",
[CHAR_SOUND_YAWNING] = "peach_yawning.ogg",
[CHAR_SOUND_YAHOO_WAHA_YIPPEE] = { "peach_yahoo.ogg", "peach_yahoo1.ogg", "peach_yahoo2.ogg", "peach_yahoo3.ogg", "peach_yahoo4.ogg", "peach_yahoo5.ogg" },
[CHAR_SOUND_YAH_WAH_HOO] = { "peach_yah_wah_hoo1.ogg", "peach_yah_wah_hoo2.ogg", "peach_yah_wha_hoo3.ogg"},
[CHAR_SOUND_HELLO] = "peach_float.ogg"
}
-- CAPS (Will be worked on in the future)
-- local capPEACH = {
-- normal = smlua_model_util_get_id("peachs_cap_geo"),
-- wing = smlua_model_util_get_id("peachs_wing_cap_geo"),
-- metal = smlua_model_util_get_id("peachs_metal_cap_geo"),
-- metalWing = smlua_model_util_get_id("peachs_metal_wing_cap_geo")
-- }
ANIMTABLE_PEACH = {
[CHAR_ANIM_RUNNING] = "peach_running",
[CHAR_ANIM_IDLE_HEAD_CENTER] = "peach_idle_head_center",
[CHAR_ANIM_IDLE_HEAD_LEFT] = "peach_idle_head_left",
[CHAR_ANIM_IDLE_HEAD_RIGHT] = "peach_idle_head_right",
[CHAR_ANIM_BACKWARD_KB] = "peach_backward_kb",
[CHAR_ANIM_FIRST_PERSON] = "peach_first_person",
[CHAR_ANIM_FLUTTERKICK] = "peach_flutterkick",
[CHAR_ANIM_FLUTTERKICK_WITH_OBJ] = "peach_flutterkick_with_obj",
[CHAR_ANIM_FORWARD_KB] = "peach_forward_kb",
[CHAR_ANIM_GROUND_BONK] = "peach_ground_bonk",
[CHAR_ANIM_GROUND_KICK] = "peach_ground_kick",
[CHAR_ANIM_GROUND_THROW] = "peach_ground_throw",
[CHAR_ANIM_HEAVY_THROW] = "peach_heavy_throw",
[CHAR_ANIM_MISSING_CAP] = "peach_missing_cap",
[CHAR_ANIM_PULL_DOOR_WALK_IN] = "peach_pull_door_walk_in",
[CHAR_ANIM_FIRST_PERSON] = "peach_first_person",
[CHAR_ANIM_RELEASE_BOWSER] = "peach_release_bowser",
[CHAR_ANIM_RETURN_FROM_STAR_DANCE] = "peach_return_from_star_dance",
[CHAR_ANIM_RETURN_STAR_APPROACH_DOOR] = "peach_return_star_approach_door",
[CHAR_ANIM_SLIDEFLIP_LAND] = "peach_sideflip_land",
[CHAR_ANIM_SLEEP_IDLE] = "peach_sleep_idle",
[CHAR_ANIM_START_SLEEP_SITTING] = "peach_sleep_sitting",
[CHAR_ANIM_SOFT_BACK_KB] = "peach_soft_back_kb",
[CHAR_ANIM_SOFT_FRONT_KB] = "peach_soft_front_kb",
[CHAR_ANIM_STAR_DANCE] = "peach_star_dance",
[CHAR_ANIM_START_CROUCHING] = "peach_start_crouch",
[CHAR_ANIM_STOP_CROUCHING] = "peach_stop_crouch",
[CHAR_ANIM_START_SLEEP_IDLE] = "peach_start_sleep",
[CHAR_ANIM_STOP_SLIDE] = "peach_stop_slide",
[CHAR_ANIM_SUMMON_STAR] = "peach_summon_star",
[CHAR_ANIM_SWIM_WITH_OBJ_PART1] = "peach_swim_with_obj1",
[CHAR_ANIM_SWIM_WITH_OBJ_PART2] = "peach_swim_with_obj2",
[CHAR_ANIM_TRIPLE_JUMP_LAND] = "peach_triple_jump_land",
[CHAR_ANIM_TURNING_PART1] = "peach_turning_part1",
[CHAR_ANIM_TURNING_PART2] = "peach_turning_part2",
[CHAR_ANIM_TWIRL_LAND] = "peach_twirl_land",
[CHAR_ANIM_WAKE_FROM_LYING] = "peach_wake_from_lying",
[CHAR_ANIM_WAKE_FROM_SLEEP] = "peach_wake_from_sleep",
[CHAR_ANIM_CREDITS_RAISE_HAND] = "peach_credits_raise_hand",
[CHAR_ANIM_CREDITS_RETURN_FROM_LOOK_UP] = "peach_credits_return_from_look_up",
[CHAR_ANIM_CREDITS_START_WALK_LOOK_UP] = "peach_credits_start_walk_look_up",
[CHAR_ANIM_CREDITS_TAKE_OFF_CAP] = "peach_credits_take_off_cap",
[CHAR_ANIM_DYING_FALL_OVER] = "peach_dying_fall_over",
[CHAR_ANIM_FALL_OVER_BACKWARDS] = "peach_fall_over_backwards",
[CHAR_ANIM_FAST_LEDGE_GRAB] = "peach_fast_ledge_grab",
-- [CHAR_ANIM_FINAL_BOWSER_RAISE_HAND_SPIN] = "peach_final_bowser_raise_hand_spin",
[CHAR_ANIM_FIRST_PUNCH_FAST] = "peach_first_punch_fast",
[CHAR_ANIM_GENERAL_LAND] = "peach_general_land",
[CHAR_ANIM_HEAD_STUCK_IN_GROUND] = "peach_head_stuck_in_ground",
[CHAR_ANIM_LAND_FROM_DOUBLE_JUMP] = "peach_land_from_double_jump",
[CHAR_ANIM_LAND_FROM_SINGLE_JUMP] = "peach_land_from_single_jump",
[CHAR_ANIM_LAND_ON_STOMACH] = "peach_land_on_stomach",
[CHAR_ANIM_LEGS_STUCK_IN_GROUND] = "peach_legs_stuck_in_ground",
[CHAR_ANIM_PLACE_LIGHT_OBJ] = "peach_place_light_obj",
[CHAR_ANIM_PUSH_DOOR_WALK_IN] = "peach_push_door_walk_in",
[CHAR_ANIM_PUT_CAP_ON] = "peach_put_cap_on",
[CHAR_ANIM_RUN_WITH_LIGHT_OBJ] = "peach_run_with_light_obj",
[CHAR_ANIM_SECOND_PUNCH_FAST] = "peach_second_punch_fast",
[CHAR_ANIM_SHIVERING_RETURN_TO_IDLE] = "peach_shivering_returning_to_idle",
[CHAR_ANIM_SKID_ON_GROUND] = "peach_skid_on_ground",
[CHAR_ANIM_SLOW_LAND_FROM_DIVE] = "peach_slow_land_from_dive",
[CHAR_ANIM_SLOW_LEDGE_GRAB] = "peach_slow_ledge_grab",
[CHAR_ANIM_SLOW_WALK_WITH_LIGHT_OBJ] = "peach_slow_walk_with_light_obj",
[CHAR_ANIM_STAND_UP_FROM_LAVA_BOOST] = "peach_stand_up_from_lava_boost",
[CHAR_ANIM_STOP_SKID] = "peach_stop_skid",
[CHAR_ANIM_TAKE_CAP_OFF_THEN_ON] = "peach_take_cap_off_then_on",
[CHAR_ANIM_THROW_CATCH_KEY] = "peach_throw_catch_key",
[CHAR_ANIM_WALK_WITH_LIGHT_OBJ] = "peach_walk_with_light_obj",
[CHAR_ANIM_BOTTOM_STUCK_IN_GROUND] = "peach_bottom_stuck_in_ground",
-- [CHAR_ANIM_CREDITS_PEACE_SIGN] = "peach_credits_peace_sign",
[CHAR_ANIM_FIRE_LAVA_BURN] = "peach_fire_lava_burn",
[CHAR_ANIM_GROUND_POUND] = "peach_ground_pound",
[CHAR_ANIM_GROUND_POUND_LANDING] = "peach_ground_pound_landing",
[CHAR_ANIM_TRIPLE_JUMP_GROUND_POUND] = "peach_triple_jump_ground_pound_anim",
[CHAR_ANIM_UNLOCK_DOOR] = "peach_unlock_door",
[CHAR_ANIM_SWINGING_BOWSER] = "peach_swinging_bowser",
[CHAR_ANIM_HOLDING_BOWSER] = "peach_holding_bowser",
[CHAR_ANIM_GRAB_BOWSER] = "peach_grab_bowser",
[CHAR_ANIM_BEND_KNESS_RIDING_SHELL] = "peach_dressfloating"
}
local PALETTE_PEACH = {
[PANTS] = { r = 0xFF, g = 0x50, b = 0x96 },
[SHIRT] = { r = 0xF8, g = 0xC8, b = 0xBB },
[GLOVES] = { r = 0xFF, g = 0xFF, b = 0xFF },
[SHOES] = { r = 0x00, g = 0x00, b = 0xFF },
[HAIR] = { r = 0xFF, g = 0xD3, b = 0x02 },
[SKIN] = { r = 0xFE, g = 0xC1, b = 0x79 },
[CAP] = { r = 0xFF, g = 0xFF, b = 0x00 },
[EMBLEM] = { r = 0x00, g = 0x82, b = 0xFF }
}
CT_PEACH = _G.charSelect.character_add("Princess Peach", "The ruler of the Mushroom Kingdom, always ready to help Mario in his adventures and save her kingdom from the evil clutches of King Bowser! Voiced by SuperKirbyLover", "Melzinoff & SuperKirbyLover", {r = 239, g = 128, b = 177}, E_MODEL_PEACH_PLAYER, CT_MARIO, TEX_PEACH)
-- _G.charSelect.character_add_caps(E_MODEL_PEACH, capPEACH)
_G.charSelect.character_add_voice(E_MODEL_PEACH_PLAYER, VOICETABLE_PEACH)
_G.charSelect.character_add_palette_preset(E_MODEL_PEACH_PLAYER, PALETTE_PEACH)
--- @param m MarioState
local function act_peach_float(m)
-- apply movement when using action
common_air_action_step(m, ACT_JUMP_LAND, CHAR_ANIM_BEND_KNESS_RIDING_SHELL, AIR_STEP_NONE)
-- setup when action starts (horizontal speed and voiceline)
if m.actionTimer == 0 then
if m.forwardVel > 20 then
mario_set_forward_vel(m, 20)
end
play_character_sound(m, CHAR_SOUND_HELLO)
end
-- block all y movement when using the move
m.vel.y = 0
set_mario_particle_flags(m, PARTICLE_SPARKLES, 0)
-- avoid issue with flying and then make the hover end after 2 secs or when stopping holding the button
if m.prevAction ~= ACT_TRIPLE_JUMP and (m.flags & MARIO_WING_CAP) ~= 0 then
if m.actionTimer >= 50 or (m.controller.buttonDown & A_BUTTON) == 0 then
set_mario_action(m, ACT_FREEFALL, 0)
end
else
if m.actionTimer >= 50 or (m.controller.buttonDown & A_BUTTON) == 0 then
set_mario_action(m, ACT_FREEFALL, 0)
end
end
-- increment the action timer to make the hover stop
m.actionTimer = m.actionTimer + 1
end
--- @param m MarioState
function peach_update(m)
-- patch in custom animations
local anim = ANIMTABLE_PEACH[m.marioObj.header.gfx.animInfo.animID]
if anim ~= nil then
smlua_anim_util_set_animation(m.marioObj, anim)
end
if (m.input & INPUT_A_PRESSED) ~= 0 and m.vel.y < -15 and (
m.action == ACT_JUMP or
m.action == ACT_DOUBLE_JUMP or
m.action == ACT_TRIPLE_JUMP or
m.action == ACT_LONG_JUMP or
m.action == ACT_BACKFLIP or
m.action == ACT_SIDE_FLIP or
m.action == ACT_WALL_KICK_AIR) then
set_mario_action(m, ACT_PEACH_FLOAT, 0)
end
end
hook_mario_action(ACT_PEACH_FLOAT, act_peach_float)

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More