mirror of https://github.com/pmret/papermario.git
1852 lines
63 KiB
C
1852 lines
63 KiB
C
#include "common.h"
|
|
#include "effects.h"
|
|
#include "model.h"
|
|
#include "hud_element.h"
|
|
#include "script_api/battle.h"
|
|
#include "sprite/npc/Twink.h"
|
|
#include "sprite/npc/BattleMerlee.h"
|
|
#include "battle/action_cmd/flee.h"
|
|
#include "battle/battle.h"
|
|
#include "sprite/player.h"
|
|
|
|
extern HudScript HES_Happy;
|
|
extern HudScript HES_HPDrain;
|
|
|
|
extern EvtScript EVS_Player_Celebrate;
|
|
extern EvtScript EVS_Player_SimpleHit;
|
|
extern EvtScript EVS_Player_ComplexHit;
|
|
extern EvtScript EVS_Player_NoDamageHit;
|
|
|
|
extern PlayerCelebrationAnimOptions D_80280FC0;
|
|
|
|
BSS s32 D_8029FB90;
|
|
BSS f32 D_8029FB94;
|
|
BSS EffectInstance* BattleMerleeOrbEffect;
|
|
BSS EffectInstance* BattleMerleeWaveEffect;
|
|
BSS s32 RefundHudElem;
|
|
BSS s16 D_8029FBA4;
|
|
BSS s32 D_8029FBA8;
|
|
BSS s32 D_8029FBAC;
|
|
BSS s32 D_8029FBB0[3];
|
|
|
|
API_CALLABLE(func_802749F8);
|
|
|
|
void btl_set_player_idle_anims(void) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
ActorPart* actorPart = &battleStatus->playerActor->partsTable[0];
|
|
|
|
if (battleStatus->flags2 & BS_FLAGS2_PEACH_BATTLE) {
|
|
actorPart->idleAnimations = bPeachIdleAnims;
|
|
set_animation(0, 0, ANIM_Peach1_Walk);
|
|
} else if (!battleStatus->outtaSightActive) {
|
|
actorPart->idleAnimations = bMarioIdleAnims;
|
|
}
|
|
}
|
|
|
|
API_CALLABLE(IsPartnerImmobile) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
Actor* playerActor = battleStatus->playerActor;
|
|
s32 isImmobile = playerActor->debuff == STATUS_KEY_FEAR
|
|
|| playerActor->debuff == STATUS_KEY_DIZZY
|
|
|| playerActor->debuff == STATUS_KEY_PARALYZE
|
|
|| playerActor->debuff == STATUS_KEY_SLEEP
|
|
|| playerActor->debuff == STATUS_KEY_FROZEN
|
|
|| playerActor->debuff == STATUS_KEY_STOP;
|
|
|
|
if (playerActor->stoneStatus == STATUS_KEY_STONE) {
|
|
isImmobile = TRUE;
|
|
}
|
|
|
|
script->varTable[0] = isImmobile;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(ActivateDefend) {
|
|
ActorPart* actorPart = &gBattleStatus.playerActor->partsTable[0];
|
|
|
|
deduct_current_move_fp();
|
|
gBattleStatus.flags1 |= BS_FLAGS1_PLAYER_DEFENDING;
|
|
actorPart->idleAnimations = bMarioDefendAnims;
|
|
set_animation(0, 0, ANIM_Mario1_Crouch);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(DoesMarioStatusPreventHappyAnimation) {
|
|
Actor* player = gBattleStatus.playerActor;
|
|
|
|
show_action_rating(ACTION_RATING_LUCKY, player, player->currentPos.x, player->currentPos.y + 20.0f, player->currentPos.z);
|
|
sfx_play_sound(SOUND_3FC);
|
|
script->varTable[0] = FALSE;
|
|
if (player->debuff == STATUS_KEY_FEAR || player->debuff == STATUS_KEY_DIZZY || player->debuff == STATUS_KEY_PARALYZE ||
|
|
player->debuff == STATUS_KEY_SLEEP ||player->debuff == STATUS_KEY_FROZEN || player->debuff == STATUS_KEY_STOP) {
|
|
script->varTable[0] = TRUE;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(ChoosePlayerCelebrationAnim) {
|
|
PlayerCelebrationAnimOptions* pcao = &D_80280FC0;
|
|
PlayerData* playerData = &gPlayerData;
|
|
s32 temp;
|
|
s32 i;
|
|
|
|
if (rand_int(pcao->randomChance + pcao->hpBasedChance) < pcao->randomChance) {
|
|
temp = 0;
|
|
for (i = 0; i < 8; i++) {
|
|
temp += pcao->options[i * 2];
|
|
}
|
|
temp = rand_int(temp);
|
|
for (i = 0; i < 8; i++) {
|
|
temp -= pcao->options[i * 2];
|
|
if (temp <= 0) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
script->varTable[0] = pcao->options[i * 2 + 1];
|
|
} else {
|
|
s32* opts;
|
|
f32 healthRatio = playerData->curHP / (f32) playerData->curMaxHP;
|
|
|
|
if (healthRatio <= 0.25) {
|
|
opts = &pcao->options[16];
|
|
} else if (healthRatio <= 0.5) {
|
|
opts = &pcao->options[32];
|
|
} else if (healthRatio <= 0.75) {
|
|
opts = &pcao->options[48];
|
|
} else {
|
|
opts = &pcao->options[64];
|
|
}
|
|
|
|
temp = 0;
|
|
for (i = 0; i < 8; i++) {
|
|
temp += opts[i * 2];
|
|
}
|
|
temp = rand_int(temp);
|
|
for (i = 0; i < 8; i++) {
|
|
temp -= opts[i * 2];
|
|
if (temp <= 0) {
|
|
break;
|
|
}
|
|
}
|
|
script->varTable[0] = opts[i * 2 + 1];
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(SetFledBattleFlag) {
|
|
gBattleStatus.flags1 |= BS_FLAGS1_BATTLE_FLED;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(DetermineAutoRunAwaySuccess) {
|
|
Actor* player = gBattleStatus.playerActor;
|
|
s32 var;
|
|
|
|
if (gPlayerData.hasActionCommands) {
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
var = player->state.varTable[0];
|
|
if (var >= rand_int(100)) {
|
|
script->varTable[0] = TRUE;
|
|
} else {
|
|
script->varTable[0] = FALSE;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80260E38) {
|
|
btl_show_battle_message(BTL_MSG_ACTION_TIP_03, 60);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80260E5C) {
|
|
gBattleStatus.flags1 &= ~BS_FLAGS1_8000;
|
|
gBattleStatus.flags1 &= ~BS_FLAGS1_2000;
|
|
gBattleStatus.flags1 &= ~BS_FLAGS1_4000;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
// out LVar0: time caller should wait for coin spawns
|
|
API_CALLABLE(GiveRefund) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
Actor* player = battleStatus->playerActor;
|
|
s32 sellValue = gItemTable[battleStatus->moveArgument].sellValue;
|
|
f32 angle = 0.0f;
|
|
s32 delayTime = 0;
|
|
f32 posX, posY, posZ;
|
|
posY = player->currentPos.y + player->size.y;
|
|
|
|
if (player_team_is_ability_active(player, ABILITY_REFUND) && sellValue > 0) {
|
|
s32 i;
|
|
s32 iconPosX, iconPosY, iconPosZ;
|
|
|
|
// 75% of the item's sell value, rounded up
|
|
sellValue = (sellValue * 75 + 99) / 100;
|
|
|
|
for (i = 0; i < sellValue; i++) {
|
|
posX = player->currentPos.x;
|
|
posZ = player->currentPos.z;
|
|
|
|
make_item_entity(ITEM_COIN, posX, posY, posZ, ITEM_SPAWN_MODE_TOSS_FADE1, (i * 3) + 1, angle, 0);
|
|
add_coins(1);
|
|
angle += 30.0f;
|
|
}
|
|
|
|
delayTime = (i * 3) + 30;
|
|
|
|
posX = player->currentPos.x;
|
|
posY = player->currentPos.y;
|
|
posZ = player->currentPos.z;
|
|
get_screen_coords(gCurrentCameraID, posX, posY, posZ, &iconPosX, &iconPosY, &iconPosZ);
|
|
RefundHudElem = hud_element_create(&HES_Refund);
|
|
hud_element_set_render_pos(RefundHudElem, iconPosX + 36, iconPosY - 63);
|
|
}
|
|
|
|
script->varTable[0] = delayTime;
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(GiveRefundCleanup) {
|
|
s32 sellValue = gItemTable[gBattleStatus.moveArgument].sellValue;
|
|
|
|
if (player_team_is_ability_active(gBattleStatus.playerActor, ABILITY_REFUND) && sellValue > 0) {
|
|
hud_element_free(RefundHudElem);
|
|
}
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(LifeShroomShroudWorld) {
|
|
if (isInitialCall) {
|
|
mdl_set_all_fog_mode(FOG_MODE_1);
|
|
*gBackgroundFogModePtr = FOG_MODE_1;
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
script->functionTemp[0] = 20;
|
|
}
|
|
|
|
set_background_color_blend(0, 0, 0, ((20 - script->functionTemp[0]) * 12) & 0xFC);
|
|
|
|
script->functionTemp[0] -= 1;
|
|
do {} while (0); // TODO required to match
|
|
return (script->functionTemp[0] == 0) * ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(LifeShroomRevealWorld) {
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = 20;
|
|
btl_cam_unfreeze();
|
|
}
|
|
|
|
set_background_color_blend(0, 0, 0, (script->functionTemp[0] * 12) & 0xFC);
|
|
|
|
script->functionTemp[0] -= 1;
|
|
if (script->functionTemp[0] == 0) {
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(ConsumeLifeShroom) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
ItemData* item = &gItemTable[ITEM_LIFE_SHROOM];
|
|
|
|
playerData->curHP += item->potencyA;
|
|
if (playerData->curMaxHP < playerData->curHP) {
|
|
playerData->curHP = playerData->curMaxHP;
|
|
}
|
|
playerData->invItems[find_item(ITEM_LIFE_SHROOM)] = ITEM_NONE;
|
|
sort_items();
|
|
script->varTable[3] = item->potencyA;
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(RestorePreDefeatState) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
|
|
gBattleState = gDefeatedBattleState;
|
|
gBattleSubState = gDefeatedBattleSubstate;
|
|
battleStatus->flags1 |= BS_FLAGS1_SHOW_PLAYER_DECORATIONS;
|
|
|
|
// clear rush flags to initialize
|
|
battleStatus->rushFlags = RUSH_FLAG_NONE;
|
|
battleStatus->flags2 &= ~BS_FLAGS2_HAS_RUSH;
|
|
|
|
// set rush flags based on danger/peril status
|
|
if (!(battleStatus->flags2 & BS_FLAGS2_PEACH_BATTLE)) {
|
|
if (playerData->curHP <= PERIL_THRESHOLD && is_ability_active(ABILITY_MEGA_RUSH)) {
|
|
gBattleStatus.flags2 |= BS_FLAGS2_HAS_RUSH;
|
|
battleStatus->rushFlags |= RUSH_FLAG_MEGA;
|
|
}
|
|
|
|
if (playerData->curHP <= DANGER_THRESHOLD && is_ability_active(ABILITY_POWER_RUSH)) {
|
|
if (!(battleStatus->rushFlags & RUSH_FLAG_MEGA)) {
|
|
gBattleStatus.flags2 |= BS_FLAGS2_HAS_RUSH;
|
|
battleStatus->rushFlags |= RUSH_FLAG_POWER;
|
|
}
|
|
}
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80261388) {
|
|
s32 partnerActorExists = gBattleStatus.partnerActor != NULL;
|
|
|
|
script->varTable[0] = FALSE;
|
|
if (partnerActorExists) {
|
|
script->varTable[0] = TRUE;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(SetItemAsLifeShroom) {
|
|
gBattleStatus.moveArgument = ITEM_LIFE_SHROOM;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(PlayBattleMerleeGatherFX) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 var1 = evt_get_variable(script, *args++);
|
|
s32 var2 = evt_get_variable(script, *args++);
|
|
s32 var3 = evt_get_variable(script, *args++);
|
|
|
|
fx_energy_in_out(6, var1, var2 + 15, var3, 1.2f, 30);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(PlayBattleMerleeOrbFX) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 var1 = evt_get_variable(script, *args++);
|
|
s32 var2 = evt_get_variable(script, *args++);
|
|
s32 var3 = evt_get_variable(script, *args++);
|
|
|
|
fx_energy_orb_wave(9, var1, var2 + 15, var3, 5.0f, 15);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(BattleMerleeFadeStageToBlack) {
|
|
if (isInitialCall) {
|
|
mdl_set_all_fog_mode(FOG_MODE_1);
|
|
*gBackgroundFogModePtr = FOG_MODE_1;
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
script->functionTemp[0] = 25;
|
|
}
|
|
|
|
set_background_color_blend(0, 0, 0, ((25 - script->functionTemp[0]) * 10) & 0xFE);
|
|
script->functionTemp[0]--;
|
|
|
|
if (script->functionTemp[0] == 0) {
|
|
return ApiStatus_DONE2;
|
|
} else {
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
}
|
|
|
|
API_CALLABLE(BattleMerleeFadeStageFromBlack) {
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = 25;
|
|
}
|
|
|
|
set_background_color_blend(0, 0, 0, (script->functionTemp[0] * 10) & 0xFF);
|
|
|
|
script->functionTemp[0] -= 5;
|
|
if (script->functionTemp[0] == 0) {
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(BattleFadeInMerlee) {
|
|
Npc* merlee = get_npc_unsafe(NPC_BTL_MERLEE);
|
|
|
|
if (isInitialCall) {
|
|
sfx_play_sound(SOUND_24B);
|
|
merlee->alpha = 0;
|
|
}
|
|
|
|
merlee->alpha += 17;
|
|
if (merlee->alpha >= 255) {
|
|
merlee->alpha = 255;
|
|
return ApiStatus_DONE1;
|
|
}
|
|
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(BattleFadeOutMerlee) {
|
|
Npc* merlee = get_npc_unsafe(NPC_BTL_MERLEE);
|
|
|
|
merlee->alpha -= 17;
|
|
if (merlee->alpha == 0) {
|
|
merlee->alpha = 0;
|
|
return ApiStatus_DONE1;
|
|
}
|
|
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(BattleMerleeUpdateFX) {
|
|
Npc* merlee = get_npc_unsafe(NPC_BTL_MERLEE);
|
|
EnergyOrbWaveFXData* data;
|
|
|
|
if (isInitialCall) {
|
|
script->functionTemp[1] = 0;
|
|
D_8029FB94 = merlee->pos.y;
|
|
BattleMerleeOrbEffect = fx_energy_orb_wave(0, merlee->pos.x, merlee->pos.y, merlee->pos.z, 0.4f, 0);
|
|
BattleMerleeWaveEffect = fx_energy_orb_wave(3, merlee->pos.x, merlee->pos.y, merlee->pos.z, 0.00001f, 0);
|
|
D_8029FBA4 = 0;
|
|
D_8029FB90 = 12;
|
|
sfx_play_sound(SOUND_2074);
|
|
}
|
|
merlee->pos.y = D_8029FB94 + (sin_rad(DEG_TO_RAD(script->functionTemp[1])) * 3.0f);
|
|
|
|
script->functionTemp[1] += 10;
|
|
script->functionTemp[1] = clamp_angle(script->functionTemp[1]);
|
|
|
|
data = BattleMerleeOrbEffect->data.energyOrbWave;
|
|
data->pos.x = merlee->pos.x;
|
|
data->pos.y = merlee->pos.y + 16.0f;
|
|
data->pos.z = merlee->pos.z;
|
|
|
|
data = BattleMerleeWaveEffect->data.energyOrbWave;
|
|
data->pos.x = merlee->pos.x;
|
|
data->pos.y = merlee->pos.y + 16.0f;
|
|
data->pos.z = merlee->pos.z + 5.0f;
|
|
|
|
if (D_8029FBA4 == 2) {
|
|
BattleMerleeOrbEffect->data.energyOrbWave->scale = 0.00001f;
|
|
BattleMerleeWaveEffect->data.energyOrbWave->scale = 0.00001f;
|
|
BattleMerleeOrbEffect->flags |= FX_INSTANCE_FLAG_DISMISS;
|
|
BattleMerleeWaveEffect->flags |= FX_INSTANCE_FLAG_DISMISS;
|
|
return ApiStatus_DONE1;
|
|
}
|
|
|
|
if (D_8029FBA4 == 1) {
|
|
data = BattleMerleeOrbEffect->data.energyOrbWave;
|
|
data->scale += 0.35;
|
|
if (data->scale > 3.5) {
|
|
data->scale = 3.5f;
|
|
}
|
|
|
|
if (D_8029FB90 != 0) {
|
|
D_8029FB90--;
|
|
} else {
|
|
data = BattleMerleeWaveEffect->data.energyOrbWave;
|
|
data->scale += 0.5;
|
|
if (data->scale > 5.0) {
|
|
D_8029FBA4 = 2;
|
|
}
|
|
}
|
|
}
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(func_802619B4) {
|
|
D_8029FBA4 = 1;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(HasMerleeCastsLeft) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
|
|
script->varTable[0] = FALSE;
|
|
if (playerData->merleeCastsLeft > 0) {
|
|
script->varTable[0] = TRUE;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_802619E8) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 x = evt_get_variable(script, *args++);
|
|
s32 y = evt_get_variable(script, *args++);
|
|
s32 z = evt_get_variable(script, *args++);
|
|
s32 screenX;
|
|
s32 screenY;
|
|
s32 screenZ;
|
|
|
|
get_screen_coords(gCurrentCameraID, x, y, z, &screenX, &screenY, &screenZ);
|
|
|
|
screenX += 30;
|
|
screenY -= 19;
|
|
|
|
if (script->varTable[10] > 0) {
|
|
D_8029FBAC = hud_element_create(&HES_HPDrain);
|
|
hud_element_set_render_pos(D_8029FBAC, screenX, screenY);
|
|
screenY += 9;
|
|
}
|
|
|
|
if (script->varTable[11] > 0 || script->varTable[12] > 0) {
|
|
D_8029FBA8 = hud_element_create(&HES_Happy);
|
|
hud_element_set_render_pos(D_8029FBA8, screenX, screenY);
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80261B40) {
|
|
if (script->varTable[10] > 0) {
|
|
hud_element_free(D_8029FBAC);
|
|
}
|
|
if (script->varTable[11] > 0 || script->varTable[12] > 0) {
|
|
hud_element_free(D_8029FBA8);
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(FXRecoverHP) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 var1 = evt_get_variable(script, *args++);
|
|
s32 var2 = evt_get_variable(script, *args++);
|
|
s32 var3 = evt_get_variable(script, *args++);
|
|
s32 var4 = evt_get_variable(script, *args++);
|
|
|
|
fx_recover(0, var1, var2, var3, var4);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(FXRecoverFP) {
|
|
Bytecode* args = script->ptrReadPos;
|
|
s32 var1 = evt_get_variable(script, *args++);
|
|
s32 var2 = evt_get_variable(script, *args++);
|
|
s32 var3 = evt_get_variable(script, *args++);
|
|
s32 var4 = evt_get_variable(script, *args++);
|
|
|
|
fx_recover(1, var1, var2, var3, var4);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(IncrementPlayerHP) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
|
|
playerData->curHP++;
|
|
if (playerData->curHP > playerData->curMaxHP) {
|
|
playerData->curHP = playerData->curMaxHP;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(IncrementPlayerFP) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
|
|
playerData->curFP++;
|
|
if (playerData->curFP > playerData->curMaxFP) {
|
|
playerData->curFP = playerData->curMaxFP;
|
|
}
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80261D98) {
|
|
inflict_status_set_duration(get_actor(script->owner1.actorID), 4, 0, 1);
|
|
btl_update_ko_status();
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(GetLostHammerAndBootsLevel) {
|
|
PlayerData* playerData = &gPlayerData;
|
|
|
|
script->varTable[11] = playerData->bootsLevel;
|
|
script->varTable[12] = playerData->hammerLevel;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(func_80261DF4) {
|
|
ItemEntity* item = get_item_entity(script->varTable[10]);
|
|
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = 0;
|
|
script->functionTemp[1] = 0;
|
|
}
|
|
|
|
switch (script->functionTemp[1]) {
|
|
case 0:
|
|
script->functionTemp[0]--;
|
|
item->position.y += script->functionTemp[0];
|
|
if (item->position.y < 0.0f) {
|
|
item->position.y = 0.0f;
|
|
script->functionTemp[0] = 8;
|
|
script->functionTemp[1] = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
script->functionTemp[0]--;
|
|
item->position.y += script->functionTemp[0];
|
|
item->position.x += 1.5;
|
|
if (item->position.y < 0.0f) {
|
|
item->position.y = 0.0f;
|
|
script->functionTemp[0] = 4;
|
|
script->functionTemp[1] = 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
script->functionTemp[0]--;
|
|
item->position.y += script->functionTemp[0];
|
|
item->position.x += 1.2;
|
|
if (item->position.y < 0.0f) {
|
|
item->position.y = 0.0f;
|
|
script->functionTemp[1] = 3;
|
|
}
|
|
break;
|
|
case 3:
|
|
D_8029FBB0[0] = 20;
|
|
D_8029FBB0[1] = 20;
|
|
D_8029FBB0[2] = 20;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(func_80261FB4) {
|
|
ItemEntity* item = get_item_entity(script->varTable[10]);
|
|
Actor* player = gBattleStatus.playerActor;
|
|
s32 ft1;
|
|
f32 deltaX;
|
|
f32 deltaY;
|
|
f32 deltaZ;
|
|
|
|
if (isInitialCall) {
|
|
script->functionTemp[0] = 0;
|
|
script->functionTemp[1] = 10;
|
|
}
|
|
|
|
switch (script->functionTemp[0]) {
|
|
case 0:
|
|
ft1 = script->functionTemp[1];
|
|
deltaX = player->currentPos.x - item->position.x;
|
|
deltaY = player->currentPos.y + 12.0f - item->position.y;
|
|
deltaZ = player->currentPos.z - 5.0f - item->position.z;
|
|
|
|
item->position.x += deltaX / ft1;
|
|
item->position.y += deltaY / ft1;
|
|
item->position.z += deltaZ / ft1;
|
|
|
|
item->position.y += dist2D(item->position.x, item->position.y, player->currentPos.x,
|
|
player->currentPos.y + 12.0f) / 5.0f;
|
|
|
|
if (script->functionTemp[1] == 1) {
|
|
script->functionTemp[0] = script->functionTemp[1];
|
|
}
|
|
|
|
script->functionTemp[1]--;
|
|
break;
|
|
case 1:
|
|
return ApiStatus_DONE2;
|
|
}
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
API_CALLABLE(func_802620F8) {
|
|
// TODO get type correct
|
|
s32* temp_v1 = &D_8029FBB0[script->varTable[14]];
|
|
|
|
if (*temp_v1 != 0) {
|
|
(*temp_v1)--;
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript EVS_Mario_OnActorCreate = {
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_Peach_OnActorCreate = {
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_MarioEnterStage = {
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PLAYER_ENTRY)
|
|
EVT_CALL(SetBattleCamTarget, -80, 35, 8)
|
|
EVT_CALL(BattleCamTargetActor, ACTOR_PLAYER)
|
|
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 100)
|
|
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
|
EVT_CALL(RandInt, 100, LVar0)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_GT(50)
|
|
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 25)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Idle)
|
|
EVT_CASE_GT(20)
|
|
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
|
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_BeforeJump)
|
|
EVT_CALL(func_80273444, 18, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_BeforeJump)
|
|
EVT_WAIT(7)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CASE_DEFAULT
|
|
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 20)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(1.0))
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_162)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_GetUp)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_DustOff)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_END_SWITCH
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PeachEnterStage = {
|
|
EVT_CALL(FreezeBattleState, TRUE)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PLAYER_ENTRY)
|
|
EVT_CALL(SetBattleCamTarget, -80, 35, 8)
|
|
EVT_CALL(BattleCamTargetActor, ACTOR_PLAYER)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 100)
|
|
EVT_ADD(LVar1, 50)
|
|
EVT_CALL(SetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PARTNER)
|
|
EVT_CALL(SetAnimation, ACTOR_PARTNER, 0, ANIM_Twink_Angry)
|
|
EVT_CALL(FlyToGoal, ACTOR_PARTNER, 45, -10, 10)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 100)
|
|
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Peach1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 40)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Peach1_Walk)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(FreezeBattleState, FALSE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_Mario_HandlePhase = {
|
|
EVT_CALL(GetBattlePhase, LVar0)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_EQ(PHASE_EXECUTE_ACTION)
|
|
EVT_EXEC_WAIT(EVS_ExecuteMarioAction)
|
|
EVT_CASE_EQ(PHASE_FIRST_STRIKE)
|
|
EVT_EXEC_WAIT(EVS_PlayerFirstStrike)
|
|
EVT_CASE_EQ(PHASE_CELEBRATE)
|
|
EVT_EXEC_WAIT(EVS_Player_Celebrate)
|
|
EVT_CASE_EQ(PHASE_RUN_AWAY_START)
|
|
EVT_EXEC_WAIT(EVS_RunAwayStart)
|
|
EVT_CASE_EQ(PHASE_RUN_AWAY_FAIL)
|
|
EVT_EXEC_WAIT(EVS_RunAwayFail)
|
|
EVT_CASE_EQ(PHASE_DEATH)
|
|
EVT_EXEC_WAIT(EVS_PlayerDies)
|
|
EVT_CASE_EQ(PHASE_USE_LIFE_SHROOM)
|
|
EVT_EXEC_WAIT(EVS_UseLifeShroom)
|
|
EVT_CASE_EQ(PHASE_USE_DEFEND)
|
|
EVT_EXEC_WAIT(EVS_StartDefend)
|
|
EVT_CASE_EQ(PHASE_MERLEE_ATTACK_BONUS)
|
|
EVT_EXEC_WAIT(EVS_MerleeAttackBonus)
|
|
EVT_CASE_EQ(PHASE_MERLEE_DEFENSE_BONUS)
|
|
EVT_EXEC_WAIT(EVS_MerleeDefenseBonus)
|
|
EVT_CASE_EQ(PHASE_MERLEE_EXP_BONUS)
|
|
EVT_EXEC_WAIT(EVS_MerleeExpBonus)
|
|
EVT_CASE_EQ(PHASE_PLAYER_HAPPY)
|
|
EVT_EXEC_WAIT(EVS_PlayerHappy)
|
|
EVT_END_SWITCH
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_Peach_HandlePhase = {
|
|
EVT_CALL(GetBattlePhase, LVar0)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_EQ(PHASE_EXECUTE_ACTION)
|
|
EVT_EXEC_WAIT(EVS_ExecutePeachAction)
|
|
EVT_END_SWITCH
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_ExecuteMarioAction = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_4000, 0)
|
|
EVT_CALL(GetMenuSelection, LVar0, LVar1, LVar2)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_EQ(0)
|
|
EVT_CALL(LoadMoveScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_CASE_EQ(1)
|
|
EVT_CALL(LoadMoveScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_CASE_EQ(2)
|
|
EVT_CALL(LoadItemScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_CASE_EQ(8)
|
|
EVT_CALL(LoadStarPowerScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_END_SWITCH
|
|
EVT_CALL(EnablePlayerBlur, 0)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_ExecutePeachAction = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(GetMenuSelection, LVar0, LVar1, LVar2)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_EQ(8)
|
|
EVT_CALL(LoadStarPowerScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_END_SWITCH
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayerFirstStrike = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(GetMenuSelection, LVar0, LVar1, LVar2)
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_EQ(0)
|
|
EVT_CALL(LoadMoveScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_CASE_EQ(1)
|
|
EVT_CALL(LoadMoveScript)
|
|
EVT_EXEC_WAIT(LVar0)
|
|
EVT_END_SWITCH
|
|
EVT_CALL(EnablePlayerBlur, 0)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_StartDefend = {
|
|
EVT_CALL(ActivateDefend)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_Player_HandleEvent = {
|
|
EVT_CALL(GetLastEvent, ACTOR_PLAYER, LVarF)
|
|
EVT_SWITCH(LVarF)
|
|
EVT_CASE_NE(EVENT_32)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_END_SWITCH
|
|
EVT_CALL(CloseActionCommandInfo)
|
|
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_100, FALSE)
|
|
EVT_CALL(func_802693F0)
|
|
EVT_CALL(func_802749F8)
|
|
EVT_CALL(GetLastEvent, ACTOR_PLAYER, LVarF)
|
|
EVT_SWITCH(LVarF)
|
|
EVT_CASE_OR_EQ(EVENT_SPIKE_CONTACT)
|
|
EVT_CASE_OR_EQ(EVENT_SPIKE_DEATH)
|
|
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PLAYER_HIT_SPIKE)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 60)
|
|
EVT_ADD(LVar1, 40)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(0.1))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_HurtFoot, ANIM_Mario1_HurtFoot, ANIM_Mario1_HurtFoot)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 5, 0, 1)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_HurtFoot)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 30)
|
|
EVT_SET(LVar1, 0)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.4))
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 10, 0, 2)
|
|
EVT_SUB(LVar0, 20)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 7, 0, 2)
|
|
EVT_SUB(LVar0, 10)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 4, 0, 2)
|
|
EVT_IF_EQ(LVarF, 39)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_OR_EQ(EVENT_BURN_CONTACT)
|
|
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
|
|
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PLAYER_HIT_HAZARD)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 60)
|
|
EVT_ADD(LVar1, 40)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(0.1))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_MarioB3_BurnHurt, ANIM_MarioB3_BurnHurt, ANIM_MarioB3_BurnHurt)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 5, 0, 1)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar5, LVar6, LVar7)
|
|
EVT_ADD(LVar5, 5)
|
|
EVT_ADD(LVar6, 4)
|
|
EVT_ADD(LVar7, 5)
|
|
EVT_PLAY_EFFECT(EFFECT_RING_BLAST, 0, LVar5, LVar6, LVar7, EVT_FLOAT(1.5), 15)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar5, LVar6, LVar7)
|
|
EVT_ADD(LVar5, -5)
|
|
EVT_ADD(LVar6, 18)
|
|
EVT_ADD(LVar7, 5)
|
|
EVT_PLAY_EFFECT(EFFECT_RING_BLAST, 0, LVar5, LVar6, LVar7, EVT_FLOAT(1.5), 15)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_SET_CONST(LVar1, ANIM_MarioB3_BurnHurt)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 30)
|
|
EVT_SET(LVar1, 0)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.4))
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 10, 0, 2)
|
|
EVT_SUB(LVar0, 20)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 7, 0, 2)
|
|
EVT_SUB(LVar0, 10)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 4, 0, 2)
|
|
EVT_IF_EQ(LVarF, 36)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_OR_EQ(EVENT_SHOCK_HIT)
|
|
EVT_CASE_OR_EQ(EVENT_SHOCK_DEATH)
|
|
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PLAYER_HIT_HAZARD)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 60)
|
|
EVT_ADD(LVar1, 40)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(0.1))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_HurtFoot, ANIM_Mario1_HurtFoot, ANIM_Mario1_HurtFoot)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 5, 0, 1)
|
|
EVT_CALL(ShowShockEffect, ACTOR_SELF)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_HurtFoot)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(GetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 30)
|
|
EVT_SET(LVar1, 0)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.4))
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 10, 0, 2)
|
|
EVT_SUB(LVar0, 20)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 7, 0, 2)
|
|
EVT_SUB(LVar0, 10)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 4, 0, 2)
|
|
EVT_IF_EQ(LVarF, 38)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_EQ(EVENT_LUCKY)
|
|
EVT_CALL(DoesMarioStatusPreventHappyAnimation)
|
|
EVT_IF_EQ(LVar0, FALSE)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_AdjustCap)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_ELSE
|
|
EVT_WAIT(30)
|
|
EVT_END_IF
|
|
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 15, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0))
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CASE_EQ(EVENT_32)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 15, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0))
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
|
EVT_CASE_OR_EQ(EVENT_HIT)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_Hurt)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_ComplexHit)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
|
|
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_208C)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_Idle)
|
|
EVT_EXEC_WAIT(EVS_Player_NoDamageHit)
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_OR_EQ(EVENT_18)
|
|
EVT_CASE_OR_EQ(EVENT_BLOCK)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_208C)
|
|
EVT_SET_CONST(LVar0, 1)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_Crouch)
|
|
EVT_EXEC_WAIT(EVS_Player_NoDamageHit)
|
|
EVT_WAIT(10)
|
|
EVT_END_CASE_GROUP
|
|
EVT_CASE_EQ(EVENT_BURN_HIT)
|
|
EVT_SET_CONST(LVar1, ANIM_MarioB3_BurnHurt)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CASE_EQ(EVENT_FIRE_DEATH)
|
|
EVT_SET_CONST(LVar1, ANIM_MarioB3_BurnHurt)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_RETURN
|
|
EVT_CASE_EQ(EVENT_DEATH)
|
|
EVT_SET_CONST(LVar1, ANIM_Mario1_Hurt)
|
|
EVT_SET(LVar2, 0)
|
|
EVT_EXEC_WAIT(EVS_Player_SimpleHit)
|
|
EVT_RETURN
|
|
EVT_CASE_EQ(EVENT_RECOVER_FROM_KO)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.8))
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar7, LVar8, LVar9)
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_BeforeJump)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar7, LVar8, LVar9)
|
|
EVT_CALL(func_80273444, 15, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_BeforeJump)
|
|
EVT_CASE_DEFAULT
|
|
EVT_END_SWITCH
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_Player_Celebrate = {
|
|
EVT_SET(LVar0, 0)
|
|
EVT_LOOP(5)
|
|
EVT_ADD(LVar0, 72)
|
|
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(ChoosePlayerCelebrationAnim)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, LVar0)
|
|
EVT_WAIT(31)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_RunAwayNoCommand = {
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB3_Hustled)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_15D)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 8, 0, 0)
|
|
EVT_CALL(DetermineAutoRunAwaySuccess)
|
|
EVT_IF_EQ(LVar0, 1)
|
|
EVT_CALL(SetFledBattleFlag)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_15E)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, -240, 0, 10)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(16.0))
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_WAIT(5)
|
|
EVT_ELSE
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(1.0))
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Trip)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_162)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, -100, 0, 10)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(10.0))
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_SET(LVar3, 6)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CHILD_THREAD
|
|
EVT_LOOP(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.0))
|
|
EVT_WAIT(5)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_LOOP(10)
|
|
EVT_SUB(LVar0, LVar3)
|
|
EVT_SUB(LVar3, 1)
|
|
EVT_IF_LT(LVar3, 1)
|
|
EVT_SET(LVar3, 1)
|
|
EVT_END_IF
|
|
EVT_CALL(SetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_WAIT(15)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_DUST_OFF)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_GetUp)
|
|
EVT_WAIT(20)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_DustOff)
|
|
EVT_CHILD_THREAD
|
|
EVT_WAIT(7)
|
|
EVT_LOOP(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 8)
|
|
EVT_ADD(LVar1, 14)
|
|
EVT_ADD(LVar2, 5)
|
|
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
|
EVT_WAIT(5)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_WAIT(5)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_WAIT(10)
|
|
EVT_END_IF
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_RunAwayStart = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(GetActionCommandMode, LVar2)
|
|
EVT_IF_EQ(LVar2, ACTION_COMMAND_MODE_NOT_LEARNED)
|
|
EVT_EXEC_WAIT(EVS_RunAwayNoCommand)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_CALL(ShowActionHud, 1)
|
|
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
|
EVT_CALL(LoadActionCommand, ACTION_COMMAND_FLEE)
|
|
EVT_CALL(action_command_flee_init, LVar0)
|
|
EVT_CALL(SetupMashMeter, 1, 100, 0, 0, 0, 0)
|
|
EVT_CALL(func_80260E38)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB3_Hustled)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_15D)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(action_command_flee_start, 0, 60, 3)
|
|
EVT_CALL(func_80260E5C)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(5)
|
|
EVT_CALL(AddActorPos, ACTOR_PLAYER, 2, 0, 0)
|
|
EVT_WAIT(15)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 8, 0, 0)
|
|
EVT_CALL(GetActionSuccess, LVar0)
|
|
EVT_CALL(DetermineAutoRunAwaySuccess)
|
|
EVT_IF_EQ(LVar0, 1)
|
|
EVT_CALL(SetFledBattleFlag)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_15E)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, -240, 0, 10)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(16.0))
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_WAIT(5)
|
|
EVT_ELSE
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(1.0))
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Trip)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_162)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, -100, 0, 10)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(10.0))
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_SET(LVar3, 6)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CHILD_THREAD
|
|
EVT_LOOP(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.0))
|
|
EVT_WAIT(5)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_LOOP(10)
|
|
EVT_SUB(LVar0, LVar3)
|
|
EVT_SUB(LVar3, 1)
|
|
EVT_IF_LT(LVar3, 1)
|
|
EVT_SET(LVar3, 1)
|
|
EVT_END_IF
|
|
EVT_CALL(SetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_WAIT(15)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_DUST_OFF)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_GetUp)
|
|
EVT_WAIT(20)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_DustOff)
|
|
EVT_CHILD_THREAD
|
|
EVT_WAIT(7)
|
|
EVT_LOOP(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SUB(LVar0, 8)
|
|
EVT_ADD(LVar1, 14)
|
|
EVT_ADD(LVar2, 5)
|
|
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
|
EVT_WAIT(5)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_WAIT(5)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_WAIT(10)
|
|
EVT_END_IF
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_RunAwayFail = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0))
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0)
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayerDies = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Dying)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_24)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(EnablePlayerBlur, 1)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_371)
|
|
EVT_SET(LVar0, 0)
|
|
EVT_LOOP(30)
|
|
EVT_ADD(LVar0, 60)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, LVar0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_SET(LVar0, 0)
|
|
EVT_LOOP(10)
|
|
EVT_ADD(LVar0, 36)
|
|
EVT_CALL(SetActorYaw, ACTOR_PLAYER, LVar0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(EnablePlayerBlur, 0)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_3FB)
|
|
EVT_SET(LVar0, 0)
|
|
EVT_SET(LVar1, 1)
|
|
EVT_LOOP(0)
|
|
EVT_IF_EQ(LVar0, 90)
|
|
EVT_BREAK_LOOP
|
|
EVT_END_IF
|
|
EVT_ADD(LVar0, LVar1)
|
|
EVT_ADD(LVar1, 2)
|
|
EVT_IF_GT(LVar0, 90)
|
|
EVT_SET(LVar0, 90)
|
|
EVT_END_IF
|
|
EVT_CALL(SetActorRotation, ACTOR_PLAYER, LVar0, 0, 0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar1, 2)
|
|
EVT_CALL(SetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar2, 20)
|
|
EVT_PLAY_EFFECT(EFFECT_WALKING_DUST, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
|
EVT_WAIT(15)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript D_80287404 = {
|
|
EVT_IF_EQ(LVar1, 0)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_208D)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_UsePower)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 18)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0))
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_ADD(LVar1, 45)
|
|
EVT_SET(LVar3, LVar1)
|
|
EVT_ADD(LVar3, 10)
|
|
EVT_ADD(LVar3, 2)
|
|
EVT_PLAY_EFFECT(EFFECT_RADIAL_SHIMMER, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 30)
|
|
EVT_CALL(MakeItemEntity, LVarA, LVar0, LVar1, LVar2, 1, 0)
|
|
EVT_SET(LVarA, LVar0)
|
|
EVT_CALL(GiveRefund)
|
|
EVT_WAIT(LVar0)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GiveRefundCleanup)
|
|
EVT_CALL(RemoveItemEntity, LVarA)
|
|
EVT_ELSE
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_208D)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_UsePower)
|
|
EVT_WAIT(4)
|
|
EVT_ADD(LVar1, 45)
|
|
EVT_SET(LVar3, LVar1)
|
|
EVT_ADD(LVar3, 10)
|
|
EVT_ADD(LVar3, 2)
|
|
EVT_PLAY_EFFECT(EFFECT_RADIAL_SHIMMER, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 30)
|
|
EVT_CALL(MakeItemEntity, LVarA, LVar0, LVar1, LVar2, 1, 0)
|
|
EVT_SET(LVarA, LVar0)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(RemoveItemEntity, LVarA)
|
|
EVT_END_IF
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript D_80287708 = {
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
|
|
EVT_CALL(SetBattleCamTarget, -85, 1, 0)
|
|
EVT_CALL(SetBattleCamOffsetZ, 41)
|
|
EVT_CALL(SetBattleCamZoom, 248)
|
|
EVT_CALL(MoveBattleCamOver, 30)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_UsePower)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar1, 45)
|
|
EVT_CALL(MakeItemEntity, LVarA, LVar0, LVar1, LVar2, 1, 0)
|
|
EVT_SET(LVarE, LVar0)
|
|
EVT_CALL(GiveRefund)
|
|
EVT_WAIT(LVar0)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GiveRefundCleanup)
|
|
EVT_CALL(RemoveItemEntity, LVarE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript D_80287834 = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(SetGoalToHome, ACTOR_PLAYER)
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(8.0))
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
|
|
EVT_CALL(PlayerRunToGoal, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayEatFX = {
|
|
EVT_THREAD
|
|
EVT_LOOP(4)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2095)
|
|
EVT_WAIT(10)
|
|
EVT_END_LOOP
|
|
EVT_END_THREAD
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Eat)
|
|
EVT_WAIT(45)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayDrinkFX = {
|
|
EVT_THREAD
|
|
EVT_LOOP(4)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2095)
|
|
EVT_WAIT(10)
|
|
EVT_END_LOOP
|
|
EVT_END_THREAD
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Drink)
|
|
EVT_WAIT(45)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_UseLifeShroom = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(func_80261388)
|
|
EVT_IF_EQ(LVar0, 1)
|
|
EVT_CALL(DispatchEvent, ACTOR_PARTNER, EVENT_LIFE_SHROOM_PROC)
|
|
EVT_CALL(SetActorFlagBits, ACTOR_PARTNER, ACTOR_FLAG_NO_SHADOW, 1)
|
|
EVT_SET(LVar0, 255)
|
|
EVT_LOOP(10)
|
|
EVT_SUB(LVar0, 25)
|
|
EVT_IF_LT(LVar0, 0)
|
|
EVT_SET(LVar0, 0)
|
|
EVT_END_IF
|
|
EVT_CALL(SetPartAlpha, ACTOR_PARTNER, -1, LVar0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(SetPartAlpha, ACTOR_PARTNER, -1, 0)
|
|
EVT_END_IF
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(LifeShroomShroudWorld)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(MakeItemEntity, ITEM_LIFE_SHROOM, LVar0, LVar1, LVar2, 1, 0)
|
|
EVT_SET(LVarA, LVar0)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SET(LVar3, 30)
|
|
EVT_SET(LVar4, 16)
|
|
EVT_LOOP(LVar3)
|
|
EVT_ADD(LVar4, 8)
|
|
EVT_IF_GT(LVar4, 255)
|
|
EVT_SET(LVar4, 255)
|
|
EVT_END_IF
|
|
EVT_ADDF(LVar1, EVT_FLOAT(1.0))
|
|
EVT_CALL(SetItemPos, LVarA, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_SET(LVar3, LVar0)
|
|
EVT_SET(LVar4, LVar1)
|
|
EVT_SET(LVar5, LVar2)
|
|
EVT_CALL(SetItemAsLifeShroom)
|
|
EVT_CALL(GiveRefund)
|
|
EVT_IF_GT(LVar0, 0)
|
|
EVT_WAIT(LVar0)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GiveRefundCleanup)
|
|
EVT_END_IF
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_372)
|
|
EVT_ADD(LVar4, 15)
|
|
EVT_PLAY_EFFECT(EFFECT_ENERGY_IN_OUT, 3, LVar3, LVar4, LVar5, EVT_FLOAT(1.0))
|
|
EVT_SET(LVar0, LVarF)
|
|
EVT_LOOP(4)
|
|
EVT_CALL(SetItemFlags, LVarA, 64, 1)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(SetItemFlags, LVarA, 64, 0)
|
|
EVT_WAIT(8)
|
|
EVT_END_LOOP
|
|
EVT_CALL(RemoveEffect, LVar0)
|
|
EVT_CALL(RemoveItemEntity, LVarA)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2055)
|
|
EVT_PLAY_EFFECT(EFFECT_STARS_SHIMMER, 1, LVar3, LVar4, LVar5, 70, 70, 10, 20)
|
|
EVT_WAIT(20)
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_373)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_PLAY_EFFECT(EFFECT_STARS_SHIMMER, 2, LVar0, LVar1, LVar2, 50, 20, 32, 30)
|
|
EVT_WAIT(40)
|
|
EVT_PLAY_EFFECT(EFFECT_STARS_SHIMMER, 2, LVar0, LVar1, LVar2, 30, 50, 32, 30)
|
|
EVT_CHILD_THREAD
|
|
EVT_LOOP(3)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, 1, 0, 0)
|
|
EVT_WAIT(4)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, -1, 0, 0)
|
|
EVT_WAIT(4)
|
|
EVT_END_LOOP
|
|
EVT_LOOP(3)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, 1, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, -1, 0, 0)
|
|
EVT_WAIT(2)
|
|
EVT_END_LOOP
|
|
EVT_LOOP(7)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, 1, 0, 0)
|
|
EVT_WAIT(1)
|
|
EVT_CALL(SetActorDispOffset, ACTOR_PLAYER, -1, 0, 0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_WAIT(50)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(LifeShroomRevealWorld)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_374)
|
|
EVT_CALL(SetActorRotation, ACTOR_PLAYER, 0, 0, 0)
|
|
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
|
EVT_CALL(ConsumeLifeShroom)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar1, 25)
|
|
EVT_PLAY_EFFECT(EFFECT_RECOVER, 0, LVar0, LVar1, LVar2, LVar3)
|
|
EVT_CALL(FreezeBattleCam, 0)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(MoveBattleCamOver, 15)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(func_80261388)
|
|
EVT_IF_EQ(LVar0, 1)
|
|
EVT_CALL(SetActorFlagBits, ACTOR_PARTNER, ACTOR_FLAG_NO_SHADOW, 0)
|
|
EVT_SET(LVar0, 0)
|
|
EVT_LOOP(10)
|
|
EVT_ADD(LVar0, 25)
|
|
EVT_IF_GT(LVar0, 255)
|
|
EVT_SET(LVar0, 255)
|
|
EVT_END_IF
|
|
EVT_CALL(SetPartAlpha, ACTOR_PARTNER, -1, LVar0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(DispatchEvent, ACTOR_PARTNER, EVENT_REVIVE)
|
|
EVT_CALL(SetPartAlpha, ACTOR_PARTNER, -1, 255)
|
|
EVT_END_IF
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CHILD_THREAD
|
|
EVT_LOOP(5)
|
|
EVT_WAIT(2)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 2, LVar0, LVar1, LVar2, 20, 20, EVT_FLOAT(1.0), 10, 50)
|
|
EVT_END_LOOP
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_160)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FLOAT(1.0))
|
|
EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(1.0))
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_SET(LVar1, 0)
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 20, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Land)
|
|
EVT_WAIT(4)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_CALL(RestorePreDefeatState)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_MerleeRunOut = {
|
|
EVT_CALL(HasMerleeCastsLeft)
|
|
EVT_IF_EQ(LVar0, 1)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_WAIT(15)
|
|
EVT_CALL(ShowMessageBox, BTL_MSG_MERLEE_DONE, 60)
|
|
EVT_CALL(WaitForMessageBoxDone)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_MerleeAttackBonus = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(BattleMerleeFadeStageToBlack)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
|
|
EVT_CALL(SetBattleCamTarget, 0, 80, 0)
|
|
EVT_CALL(SetBattleCamOffsetZ, 0)
|
|
EVT_CALL(SetBattleCamZoom, 246)
|
|
EVT_CALL(MoveBattleCamOver, 20)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(CreateNpc, NPC_BTL_MERLEE, ANIM_BattleMerlee_Gather)
|
|
EVT_CALL(SetNpcFlagBits, NPC_BTL_MERLEE, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE)
|
|
EVT_CALL(SetNpcRenderMode, NPC_BTL_MERLEE, 34)
|
|
EVT_CALL(SetNpcPos, NPC_BTL_MERLEE, 0, 65, 20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleMerleeUpdateFX)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(BattleFadeInMerlee)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(SetNpcAnimation, NPC_BTL_MERLEE, ANIM_BattleMerlee_Release)
|
|
EVT_CALL(func_802619B4)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(MoveBattleCamOver, 4)
|
|
EVT_CALL(BattleMerleeFadeStageFromBlack)
|
|
EVT_WAIT(20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleFadeOutMerlee)
|
|
EVT_CALL(DeleteNpc, NPC_BTL_MERLEE)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2075)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeGatherFX, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeOrbFX, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 18, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Land)
|
|
EVT_WAIT(4)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(ShowMessageBox, 0, 60)
|
|
EVT_CALL(WaitForMessageBoxDone)
|
|
EVT_EXEC_WAIT(EVS_MerleeRunOut)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_MerleeDefenseBonus = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(BattleMerleeFadeStageToBlack)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
|
|
EVT_CALL(SetBattleCamTarget, 0, 80, 0)
|
|
EVT_CALL(SetBattleCamOffsetZ, 0)
|
|
EVT_CALL(SetBattleCamZoom, 246)
|
|
EVT_CALL(MoveBattleCamOver, 20)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(CreateNpc, NPC_BTL_MERLEE, ANIM_BattleMerlee_Gather)
|
|
EVT_CALL(SetNpcFlagBits, NPC_BTL_MERLEE, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE)
|
|
EVT_CALL(SetNpcRenderMode, NPC_BTL_MERLEE, 34)
|
|
EVT_CALL(SetNpcPos, NPC_BTL_MERLEE, 0, 65, 20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleMerleeUpdateFX)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(BattleFadeInMerlee)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(SetNpcAnimation, NPC_BTL_MERLEE, ANIM_BattleMerlee_Release)
|
|
EVT_CALL(func_802619B4)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(MoveBattleCamOver, 4)
|
|
EVT_CALL(BattleMerleeFadeStageFromBlack)
|
|
EVT_WAIT(20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleFadeOutMerlee)
|
|
EVT_CALL(DeleteNpc, NPC_BTL_MERLEE)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2075)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeGatherFX, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeOrbFX, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
|
|
EVT_IF_FLAG(LVar0, STATUS_FLAGS_IMMOBILIZED)
|
|
EVT_WAIT(22)
|
|
EVT_ELSE
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 18, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Land)
|
|
EVT_WAIT(4)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Idle)
|
|
EVT_END_IF
|
|
EVT_CALL(ShowMessageBox, 1, 60)
|
|
EVT_CALL(WaitForMessageBoxDone)
|
|
EVT_EXEC_WAIT(EVS_MerleeRunOut)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_MerleeExpBonus = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(BattleMerleeFadeStageToBlack)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
|
|
EVT_CALL(SetBattleCamTarget, 0, 80, 0)
|
|
EVT_CALL(SetBattleCamOffsetZ, 0)
|
|
EVT_CALL(SetBattleCamZoom, 246)
|
|
EVT_CALL(MoveBattleCamOver, 20)
|
|
EVT_WAIT(10)
|
|
EVT_CALL(CreateNpc, NPC_BTL_MERLEE, ANIM_BattleMerlee_Gather)
|
|
EVT_CALL(SetNpcFlagBits, NPC_BTL_MERLEE, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE)
|
|
EVT_CALL(SetNpcRenderMode, NPC_BTL_MERLEE, 34)
|
|
EVT_CALL(SetNpcPos, NPC_BTL_MERLEE, 0, 65, 20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleMerleeUpdateFX)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(BattleFadeInMerlee)
|
|
EVT_WAIT(30)
|
|
EVT_CALL(SetNpcAnimation, NPC_BTL_MERLEE, ANIM_BattleMerlee_Release)
|
|
EVT_CALL(func_802619B4)
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(MoveBattleCamOver, 4)
|
|
EVT_CALL(BattleMerleeFadeStageFromBlack)
|
|
EVT_WAIT(20)
|
|
EVT_CHILD_THREAD
|
|
EVT_CALL(BattleFadeOutMerlee)
|
|
EVT_CALL(DeleteNpc, NPC_BTL_MERLEE)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_2075)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeGatherFX, LVar0, LVar1, LVar2)
|
|
EVT_CALL(PlayBattleMerleeOrbFX, LVar0, LVar1, LVar2)
|
|
EVT_WAIT(15)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
|
EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_Land)
|
|
EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_80273444, 18, 0, 0)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Land)
|
|
EVT_WAIT(4)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(ShowMessageBox, 2, 60)
|
|
EVT_CALL(WaitForMessageBoxDone)
|
|
EVT_EXEC_WAIT(EVS_MerleeRunOut)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayerHappy = {
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
|
EVT_CALL(UseBattleCamPresetWait, BTL_CAM_DEFAULT)
|
|
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_ThumbsUp)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_CALL(func_802619E8, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 0)
|
|
EVT_ADD(LVar1, 35)
|
|
EVT_SET(LVar3, LVarA)
|
|
EVT_ADD(LVar3, LVarB)
|
|
EVT_IF_GT(LVar3, 0)
|
|
EVT_CALL(FXRecoverHP, LVar0, LVar1, LVar2, LVar3)
|
|
EVT_END_IF
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar0, 20)
|
|
EVT_ADD(LVar1, 25)
|
|
EVT_IF_GT(LVarC, 0)
|
|
EVT_CALL(FXRecoverFP, LVar0, LVar1, LVar2, LVarC)
|
|
EVT_END_IF
|
|
EVT_SET(LVar3, LVarA)
|
|
EVT_ADD(LVar3, LVarB)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar1, 25)
|
|
EVT_CALL(ShowStartRecoveryShimmer, LVar0, LVar1, LVar2, LVar3)
|
|
EVT_WAIT(10)
|
|
EVT_SET(LVar0, LVarA)
|
|
EVT_IF_GT(LVar0, 0)
|
|
EVT_LOOP(LVar0)
|
|
EVT_CALL(IncrementPlayerHP)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_END_IF
|
|
EVT_SET(LVar0, LVarB)
|
|
EVT_IF_GT(LVar0, 0)
|
|
EVT_LOOP(LVar0)
|
|
EVT_CALL(IncrementPlayerHP)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_END_IF
|
|
EVT_SET(LVar0, LVarC)
|
|
EVT_IF_GT(LVar0, 0)
|
|
EVT_LOOP(LVar0)
|
|
EVT_CALL(IncrementPlayerFP)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_END_IF
|
|
EVT_WAIT(30)
|
|
EVT_CALL(SetAnimation, ACTOR_SELF, 0, ANIM_Mario1_Idle)
|
|
EVT_CALL(func_80261B40)
|
|
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_ApplyDizzyAttack = {
|
|
EVT_SET(LVar0, 0)
|
|
EVT_LOOP(40)
|
|
EVT_ADD(LVar0, 72)
|
|
EVT_CALL(SetActorRotation, ACTOR_ENEMY0, 0, LVar0, 0)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(func_80261D98)
|
|
EVT_CALL(SetActorRotation, ACTOR_ENEMY0, 0, 0, 0)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_PlayerRegainAbility = {
|
|
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVarF, LVar1, LVar2)
|
|
EVT_LOOP(LVar0)
|
|
EVT_ADD(LVarF, 3)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(GetLostHammerAndBootsLevel)
|
|
EVT_SWITCH(LVarA)
|
|
EVT_CASE_EQ(2)
|
|
EVT_SET(LVarE, 0)
|
|
EVT_SET(LVarA, ITEM_ITEMS_ICON)
|
|
EVT_CASE_EQ(1)
|
|
EVT_SET(LVarE, 1)
|
|
EVT_SWITCH(LVarC)
|
|
EVT_CASE_EQ(0)
|
|
EVT_SET(LVarA, ITEM_HAMMER1_ICON)
|
|
EVT_CASE_EQ(1)
|
|
EVT_SET(LVarA, ITEM_HAMMER2_ICON)
|
|
EVT_CASE_EQ(2)
|
|
EVT_SET(LVarA, ITEM_HAMMER3_ICON)
|
|
EVT_END_SWITCH
|
|
EVT_CASE_EQ(0)
|
|
EVT_SET(LVarE, 2)
|
|
EVT_SWITCH(LVarB)
|
|
EVT_CASE_EQ(0)
|
|
EVT_SET(LVarA, ITEM_BOOTS1_ICON)
|
|
EVT_CASE_EQ(1)
|
|
EVT_SET(LVarA, ITEM_BOOTS2_ICON)
|
|
EVT_CASE_EQ(2)
|
|
EVT_SET(LVarA, ITEM_BOOTS3_ICON)
|
|
EVT_END_SWITCH
|
|
EVT_END_SWITCH
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVarF, 24)
|
|
EVT_ADD(LVar1, 150)
|
|
EVT_CALL(MakeItemEntity, LVarA, LVarF, LVar1, LVar2, 1, 0)
|
|
EVT_SET(LVarA, LVar0)
|
|
EVT_CALL(func_80261DF4)
|
|
EVT_CALL(func_802620F8)
|
|
EVT_CALL(func_80261FB4)
|
|
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
|
EVT_ADD(LVar1, 20)
|
|
EVT_PLAY_EFFECT(EFFECT_STARS_SHIMMER, 0, LVar0, LVar1, LVar2, 30, 30, 10, 30)
|
|
EVT_CALL(RemoveItemEntity, LVarA)
|
|
EVT_CALL(FreezeBattleState, FALSE)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|