From ae00fea1700a6934b91609aeb7390b5384b83ade Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Mon, 25 Oct 2021 12:44:55 +0100 Subject: [PATCH] Add new EVT macros (#482) * add tools and new macros * change EVT_OP enum names * first file * convert some files * stuff * EVT_PTR * src/battle/item * src/battle * tool changes * clouds.inc.c * src/evt * foliage.inc.c * bitwise ops * staticentitydata vars * add diff_evt.py * use evt macros in dro_01 * evt macro docs * whoops * fix some warnings --- diff_evt.py | 166 + include/evt.h | 109 +- include/script_api/common.h | 2 +- include/script_api/macros.h | 509 ++ include/variables.h | 13 + make_expected.sh | 2 + src/16c8e0.c | 230 +- src/battle/area_kmr_part_1/actor/goomba.c | 686 +-- src/battle/area_kmr_part_1/actor/paragoomba.c | 1385 +++--- .../area_kmr_part_1/actor/spiked_goomba.c | 729 ++- src/battle/area_kmr_part_1/stage/clouds.inc.c | 116 +- src/battle/area_kmr_part_1/stage/kmr_02.c | 14 +- src/battle/area_kmr_part_1/stage/kmr_03.c | 28 +- src/battle/area_kmr_part_1/stage/kmr_04.c | 29 +- src/battle/area_kmr_part_1/stage/kmr_05.c | 17 +- src/battle/area_kmr_part_1/stage/kmr_06.c | 32 +- src/battle/item/UseItem.inc.c | 196 +- src/battle/item/coconut.c | 104 +- src/battle/item/dizzy_dial.c | 100 +- src/battle/item/dried_shroom.c | 46 +- src/battle/item/dusty_hammer.c | 90 +- src/battle/item/egg_missile.c | 86 +- src/battle/item/electro_pop.c | 64 +- src/battle/item/fire_flower.c | 124 +- src/battle/item/food.c | 276 +- src/battle/item/fright_jar.c | 108 +- src/battle/item/hustle_drink.c | 156 +- src/battle/item/insecticide_herb.c | 122 +- src/battle/item/life_shroom.c | 218 +- src/battle/item/mushroom.c | 256 +- src/battle/item/mystery.c | 92 +- src/battle/item/pebble.c | 90 +- src/battle/item/please_come_back.c | 26 +- src/battle/item/pow_block.c | 150 +- src/battle/item/repel_gel.c | 38 +- src/battle/item/shooting_star.c | 142 +- src/battle/item/sleepy_sheep.c | 296 +- src/battle/item/snowman_doll.c | 136 +- src/battle/item/stone_cap.c | 28 +- src/battle/item/stop_watch.c | 68 +- src/battle/item/strange_cake.c | 169 +- src/battle/item/super_soda.c | 226 +- src/battle/item/tasty_tonic.c | 76 +- src/battle/item/thunder_bolt.c | 66 +- src/battle/item/thunder_rage.c | 78 +- src/battle/item/ultra_shroom.c | 52 +- src/battle/item/unknown_item.c | 48 +- src/battle/item/volt_shroom.c | 42 +- src/battle/partner/goombario.c | 1896 ++++---- src/evt/cam_api.c | 20 +- src/evt/evt.c | 102 +- src/evt/fa4c0_len_3bf0.c | 8 +- src/evt/fx_api.c | 8 +- src/evt/msg_api.h | 22 + src/world/area_dro/dro_01/95B7E0.c | 4194 +++++++++-------- src/world/area_dro/dro_01/95E7A0.c | 12 +- src/world/area_dro/dro_02/9694C0.c | 14 +- src/world/area_flo/flo_18/CDC6A0.c | 74 +- src/world/area_flo/flo_19/CE36F0.c | 18 +- src/world/area_flo/flo_24/CF0980.c | 12 +- src/world/common/foliage.inc.c | 342 +- src/world/partner/goombaria.c | 32 +- src/world/partner/goombario.c | 62 +- src/world/partner/goompa.c | 32 +- tools/build/cc_dsl/compile_script.py | 82 +- tools/build/configure.py | 10 +- tools/disasm_script.py | 340 +- tools/fix_bad_evt_changes.py | 41 + tools/update_evts.py | 169 + 69 files changed, 8231 insertions(+), 7095 deletions(-) create mode 100755 diff_evt.py create mode 100644 include/script_api/macros.h create mode 100644 src/evt/msg_api.h create mode 100644 tools/fix_bad_evt_changes.py create mode 100755 tools/update_evts.py diff --git a/diff_evt.py b/diff_evt.py new file mode 100755 index 0000000000..63c263b2eb --- /dev/null +++ b/diff_evt.py @@ -0,0 +1,166 @@ +#!/usr/bin/env python3 + +import argparse +import queue +import time +import subprocess + +from diff import Display, debounced_fs_watch +from colorama import Fore, Back, Style + +from tools.update_evts import parse_symbol_addrs +from tools.disasm_script import ScriptDisassembler, get_constants + +parser = argparse.ArgumentParser( + description="Diff EVT macros." +) + +parser.add_argument( + "start", + help="Symbol name or ROM address to start diffing from.", +) + +parser.add_argument( + "-w", + "--watch", + action="store_true", + help="Watch for file changes and update the diff automatically." +) + +parser.add_argument( + "-m", + "--make", + action="store_true", + help="Run ninja automatically." +) + +parser.add_argument( + "-o", + action="store_true", + help="Ignored for compatibility with diff.py." +) + +class EvtDisplay(Display): + def __init__(self, start): + self.config = None + self.base_lines = None + self.mydump = None + self.emsg = None + self.last_refresh_key = None + self.last_diff_output = None + + self.start = start + + def run_diff(self): + if self.emsg is not None: + return (self.emsg, self.emsg) + + symbols = parse_symbol_addrs() + + if self.start in symbols: + start = symbols[self.start].rom_addr + else: + try: + start = int(self.start, base=0) + except ValueError: + print("Start symbol name is not known or is an invalid address.") + exit(2) + + with open("ver/current/build/papermario.z64", "rb") as f: + f.seek(start) + current = ScriptDisassembler(f, romstart=start, prelude=False).disassemble() + + with open("ver/current/baserom.z64", "rb") as f: + f.seek(start) + target = ScriptDisassembler(f, romstart=start, prelude=False).disassemble() + + current = current.splitlines() + target = target.splitlines() + + score = 0 + output = "" + + for i in range(max(len(current), len(target))): + if i >= len(current): + current.append("") + if i >= len(target): + target.append("") + + current_line = current[i][4:] + target_line = target[i][4:] + + output += Style.RESET_ALL + + if current_line != target_line: + output += Fore.RED + score += 10 + else: + output += Style.DIM + + output += f"{target_line:<60} {current_line:<60}\n" + + output = f"{'TARGET':<60} {f'CURRENT ({score})':<60}\n" + output + + refresh_key = (current, target) + return (output, refresh_key) + +class FakeConfig(): + def __init__(self, args): + self.make = args.make + self.source_extensions = ["c", "h"] + +def run_ninja(): + return subprocess.run( + ["ninja", "ver/current/build/papermario.z64"], + stderr=subprocess.PIPE, + stdout=subprocess.PIPE, + ) + +def main(): + args = parser.parse_args() + get_constants() + + display = EvtDisplay(args.start) + + if args.watch: + if not args.make: + yn = input( + "Warning: watch-mode (-w) enabled without auto-ninja (-m). " + "You will have to run ninja manually. Ok? (Y/n) " + ) + if yn.lower() == "n": + return + if args.make: + watch_sources = ["src", "include"] + else: + watch_sources = ["ver/current/build/papermario.z64"] + q = queue.Queue() + debounced_fs_watch(watch_sources, q, FakeConfig(args), FakeConfig(args)) + display.run_async(q) + last_build = 0.0 + try: + while True: + t = q.get() + if t is None: + break + if t < last_build: + continue + last_build = time.time() + if args.make: + display.progress("Building...") + ret = run_ninja() + if ret.returncode != 0: + display.update( + ret.stderr.decode("utf-8-sig", "replace") + or ret.stdout.decode("utf-8-sig", "replace"), + error=True, + ) + continue + display.update(last_build, error=False) + except KeyboardInterrupt: + display.terminate() + else: + display.run_sync() + +if __name__ == "__main__": + main() diff --git a/include/evt.h b/include/evt.h index 32475f62a9..d7c68257bd 100644 --- a/include/evt.h +++ b/include/evt.h @@ -15,8 +15,8 @@ enum { EVT_OP_LOOP, ///< Args: number of repeats (0 = infinite) EVT_OP_END_LOOP, EVT_OP_BREAK_LOOP, - EVT_OP_SLEEP_FRAMES, - EVT_OP_SLEEP_SECS, + EVT_OP_WAIT_FRAMES, + EVT_OP_WAIT_SECS, EVT_OP_IF_EQ, ///< Args: a, b EVT_OP_IF_NE, ///< Args: a, b EVT_OP_IF_LT, ///< Args: a, b @@ -27,60 +27,60 @@ enum { EVT_OP_IF_NOT_FLAG, ///< Args: a, b EVT_OP_ELSE, EVT_OP_END_IF, - EVT_OP_MATCH, ///< Args: expression to test against - EVT_OP_MATCH_CONST, ///< Args: value to test against + EVT_OP_SWITCH, ///< Args: expression to test against + EVT_OP_SWITCH_CONST, ///< Args: value to test against EVT_OP_CASE_EQ, ///< Args: expression to test for EVT_OP_CASE_NE, ///< Args: expression to test for EVT_OP_CASE_LT, ///< Args: expression to test for EVT_OP_CASE_GT, ///< Args: expression to test for EVT_OP_CASE_LE, ///< Args: expression to test for EVT_OP_CASE_GE, ///< Args: expression to test for - EVT_OP_CASE_ELSE, - EVT_OP_CASE_MULTI_OR_EQ, ///< Args: expression to test for - EVT_OP_CASE_MULTI_AND_EQ, ///< Args: expression to test for + EVT_OP_CASE_DEFAULT, + EVT_OP_CASE_OR_EQ, ///< Args: expression to test for + EVT_OP_CASE_AND_EQ, ///< Args: expression to test for EVT_OP_CASE_FLAG, ///< Args: expression to test for - EVT_OP_END_CASE_MULTI, ///< Ends the case block of EVT_OP_CASE_MULTI_OR_EQ condition(s). + EVT_OP_END_CASE_GROUP, ///< Ends the case block of EVT_OP_CASE_OR_EQ condition(s). EVT_OP_CASE_RANGE, ///< Args: from, to - EVT_OP_BREAK_MATCH, - EVT_OP_END_MATCH, + EVT_OP_BREAK_SWITCH, + EVT_OP_END_SWITCH, EVT_OP_SET, ///< Args: container, expression EVT_OP_SET_CONST, ///< Args: container, value - EVT_OP_SET_F, ///< Args: container, expression + EVT_OP_SETF, ///< Args: container, expression EVT_OP_ADD, ///< Args: container, expression to increment by EVT_OP_SUB, ///< Args: container, expression to decrement by EVT_OP_MUL, ///< Args: container, expression to multiply by EVT_OP_DIV, ///< Integer division. Args: container, expression to divide by EVT_OP_MOD, ///< Args: container, expression to divide by - EVT_OP_ADD_F, ///< Args: container, expression to increment by - EVT_OP_SUB_F, ///< Args: container, expression to decrement by - EVT_OP_MUL_F, ///< Args: container, expression to multiply by - EVT_OP_DIV_F, ///< Args: container, expression to divide by - EVT_OP_USE_BUFFER, ///< Args: s32* - EVT_OP_BUFFER_READ_1, /// Args: container - EVT_OP_BUFFER_READ_2, /// Args: container, container - EVT_OP_BUFFER_READ_3, /// Args: container, container, container - EVT_OP_BUFFER_READ_4, /// Args: container, container, container, container - EVT_OP_BUFFER_PEEK, ///< Args: index, container - EVT_OP_USE_BUFFER_F, ///< Identical to USE_BUFFER. Args: f32* - EVT_OP_BUFFER_READ_1_F, /// Args: container - EVT_OP_BUFFER_READ_2_F, /// Args: container, container - EVT_OP_BUFFER_READ_3_F, /// Args: container, container, container - EVT_OP_BUFFER_READ_4_F, /// Args: container, container, container, container - EVT_OP_BUFFER_PEEK_F, ///< Args: index, container + EVT_OP_ADDF, ///< Args: container, expression to increment by + EVT_OP_SUBF, ///< Args: container, expression to decrement by + EVT_OP_MULF, ///< Args: container, expression to multiply by + EVT_OP_DIVF, ///< Args: container, expression to divide by + EVT_OP_USE_BUF, ///< Args: s32* + EVT_OP_BUF_READ1, /// Args: container + EVT_OP_BUF_READ2, /// Args: container, container + EVT_OP_BUF_READ3, /// Args: container, container, container + EVT_OP_BUF_READ4, /// Args: container, container, container, container + EVT_OP_BUF_PEEK, ///< Args: index, container + EVT_OP_USE_FBUF, ///< Identical to USE_BUFFER. Args: f32* + EVT_OP_FBUF_READ1, /// Args: container + EVT_OP_FBUF_READ2, /// Args: container, container + EVT_OP_FBUF_READ3, /// Args: container, container, container + EVT_OP_FBUF_READ4, /// Args: container, container, container, container + EVT_OP_FBUF_PEEK, ///< Args: index, container EVT_OP_USE_ARRAY, ///< Args: *s32 EVT_OP_USE_FLAGS, ///< Args: *s32 EVT_OP_NEW_ARRAY, ///< Allocates a new array. Args: length, s32* - EVT_OP_AND, ///< Args: container, expression to bitwise AND with - EVT_OP_AND_CONST, ///< Args: container, value to bitwise AND with - EVT_OP_OR, ///< Args: container, expression to bitwise OR with - EVT_OP_OR_CONST, ///< Args: container, value to bitwise OR with + EVT_OP_BITWISE_AND, ///< Args: container, expression to bitwise AND with + EVT_OP_BITWISE_AND_CONST, ///< Args: container, value to bitwise AND with + EVT_OP_BITWISE_OR, ///< Args: container, expression to bitwise OR with + EVT_OP_BITWISE_OR_CONST, ///< Args: container, value to bitwise OR with EVT_OP_CALL, ///< Args: *function, ... - EVT_OP_SPAWN_SCRIPT, ///< Args: EvtSource* - EVT_OP_SPAWN_GET_ID, ///< Args: EvtSource*, container - EVT_OP_AWAIT_SCRIPT, ///< Spawns a script and waits for it to return before continuing. Args: EvtSource* + EVT_OP_EXEC, ///< Args: EvtSource* + EVT_OP_EXEC_GET_TID, ///< Args: EvtSource*, container + EVT_OP_EXEC_WAIT, ///< Spawns a script and waits for it to return before continuing. Args: EvtSource* EVT_OP_BIND_TRIGGER, ///< Args: EvtSource*, trigger flags, s32 target, 1, Trigger* EVT_OP_UNBIND, ///< Unbinds any triggers bound to this script. - EVT_OP_KILL_SCRIPT, ///< Args: ScriptID + EVT_OP_KILL_THREAD, ///< Args: ScriptID EVT_OP_JUMP, ///< Args: EvtSource* EVT_OP_SET_PRIORITY, ///< Args: priority EVT_OP_SET_TIMESCALE, ///< Args: timescale @@ -90,13 +90,13 @@ enum { EVT_OP_RESUME_GROUP, ///< Args: group EVT_OP_SUSPEND_OTHERS, ///< Args: group EVT_OP_RESUME_OTHERS, ///< Args: group - EVT_OP_SUSPEND_SCRIPT, ///< Args: ScriptID - EVT_OP_RESUME_SCRIPT, ///< Args: ScriptID - EVT_OP_DOES_SCRIPT_EXIST, ///< Args: ScriptID, container - EVT_OP_SPAWN_THREAD, - EVT_OP_END_SPAWN_THREAD, - EVT_OP_PARALLEL_THREAD, ///< Parallel threads are killed as soon as the parent script returns. - EVT_OP_END_PARALLEL_THREAD, + EVT_OP_SUSPEND_THREAD, ///< Args: ScriptID + EVT_OP_RESUME_THREAD, ///< Args: ScriptID + EVT_OP_IS_THREAD_RUNNING, ///< Args: ScriptID, container + EVT_OP_THREAD, + EVT_OP_END_THREAD, + EVT_OP_CHILD_THREAD, ///< Parallel threads are killed as soon as the parent script returns. + EVT_OP_END_CHILD_THREAD, EVT_OP_90, EVT_OP_DEBUG_PRINT, ///< Args: expression EVT_OP_92, @@ -104,6 +104,7 @@ enum { EVT_OP_94, }; +// deprecated, use those in script_api/macros.h instead #define EVT_VAR(v) ((v - 30000000)) #define EVT_MAP_VAR(v) ((v - 50000000)) #define EVT_FLAG(v) ((v - 70000000)) @@ -114,17 +115,17 @@ enum { #define EVT_SAVE_VAR(v) ((v - 170000000)) #define EVT_ARRAY(v) ((v - 190000000)) #define EVT_ARRAY_FLAG(v) ((v - 210000000)) -#define EVT_FIXED(v) (((v * 1024.0f) + -230000000)) // See evt_float_to_fixed_var -#define EVT_LIMIT -250000000 // TODO better name -#define MAKE_ENTITY_END 0x80000000 - +#define EVT_FIXED(v) (((v * 1024.0f) + -230000000)) // See evt_float_to_fixed_var +#define EVT_PTR(sym) (Bytecode) &sym +#define EVT_LIMIT -250000000 // TODO better name +#define MAKE_ENTITY_END 0x80000000 +// deprecated, use enum GSW/GSWF #define EVT_STORY_PROGRESS EVT_SAVE_VAR(0) #define EVT_SAVE_FLAG_PLACES_VISITED EVT_SAVE_FLAG(0x7AA) #define EVT_SAVE_FLAG_TUTORIAL_GOT_STAR_PIECE EVT_SAVE_FLAG(101) #define EVT_WORLD_LOCATION EVT_SAVE_VAR(425) - /* Return type of evt_execute_next_command */ #define EVT_CONTINUE 0 /* Continue to next command */ #define EVT_ABORT 1 /* Quit execution */ @@ -138,18 +139,4 @@ typedef s32 ApiStatus; #define ApiStatus_REPEAT 3 /* Call again immediately */ #define ApiStatus_FINISH 255 /* Corresponds to EVT_FINISH */ -#define EVT_CMD(opcode, argv...) \ - opcode, \ - /* argc */ (sizeof((Bytecode[]){argv})/sizeof(Bytecode)), \ - ##argv - -#define EXIT_WALK_SCRIPT(walkDistance, exitIdx, map, entryIdx) \ - SCRIPT({ \ - group 0x1B; \ - UseExitHeading(walkDistance, exitIdx); \ - spawn ExitWalk; \ - GotoMap(map, entryIdx); \ - sleep 100; \ - }) - #endif diff --git a/include/script_api/common.h b/include/script_api/common.h index a3d1f90eed..ae0c5c0339 100644 --- a/include/script_api/common.h +++ b/include/script_api/common.h @@ -2,7 +2,7 @@ #define _SCRIPT_API_COMMON_H_ #include "common_structs.h" -#include "evt.h" +#include "macros.h" ApiStatus FadeBackgroundToBlack(Evt* script, s32 isInitialCall); ApiStatus UnfadeBackgroundFromBlack(Evt* script, s32 isInitialCall); diff --git a/include/script_api/macros.h b/include/script_api/macros.h new file mode 100644 index 0000000000..97590ca7bb --- /dev/null +++ b/include/script_api/macros.h @@ -0,0 +1,509 @@ +#ifndef _SCRIPT_API_MACROS_H_ +#define _SCRIPT_API_MACROS_H_ + +#include "evt.h" + +/****** EXPRESSIONS ***************************************************************************************************/ + +/// Expressions in EVT instructions should be one of the following types: +/// - Integer literals (as-is, s32) +/// - Float literals (EVT_FLOAT) - cast to int where a float is not accepted +/// - Pointers, string literals (EVT_ADDR) +/// - Variables (LW, GW, LSW, GSW, UW) +/// - Flags (LF, GF, LSWF, GSWF, UF) +/// This is implemented in `evt_get_variable` and `evt_get_float_variable`. + +/// Decimal constant. +/// Despite the name, "floats" are actually stored as fixed-point values. +#define EVT_FLOAT(DOUBLE) (((Bytecode)(DOUBLE * 1024.0f) + -230000000)) + +/// Address/pointer constant. +#define EVT_ADDR(sym) (((Bytecode) &((sym)))) + +/// Local Word. A variable local to the current thread. +/// LWs are copied to any threads created by this one (EVT_EXEC, EVT_EXEC_WAIT, EVT_THREAD, EVT_CHILD_THREAD). +/// Additionally, EVT_EXEC_WAIT copies LWs back from the spawned thread when it completes. +/// +/// Range: `0 <= v < 0x10` +/// Star Rod equivalent: `*Var[v]`. +#define LW(INDEX) ((((INDEX)) - 30000000)) + +/// Global Word. A variable global to all threads. +/// Cleared upon entering a new map. +/// +/// Range: `0 <= v < 0x10` +/// Star Rod equivalent: `*MapVar[v]`. +#define GW(INDEX) ((((INDEX)) - 50000000)) + +/// Local Flag. A boolean variable local to the current thread. +/// LFs are copied to any threads created by this one (EVT_EXEC, EVT_EXEC_WAIT, EVT_THREAD, EVT_CHILD_THREAD). +/// Additionally, EVT_EXEC_WAIT copies LFs back from the spawned thread when it completes. +/// +/// Range: `0 <= v < 0x60` +/// Star Rod equivalent: `*Flag[v]`. +#define LF(INDEX) ((((INDEX)) - 70000000)) + +/// Global Flag. A boolean variable global to all threads. +/// Cleared upon entering a new map. +/// +/// Range: `0 <= v < 0x60` +/// Star Rod equivalent: `*MapFlag[v]`. +#define GF(INDEX) ((((INDEX)) - 90000000)) + +/// Local Save World Flag. A boolean variable local to the current world area, saved in the savefile. +/// Cleared upon entering a new world area. +/// +/// Used to track whether items that respawn, such as coins, Goomnuts, or Koopa Leaves, have been collected. +/// +/// Range: `0 <= v < 0x100` +/// Star Rod equivalent: `*AreaFlag[v]`. +#define LSWF(INDEX) ((((INDEX)) - 110000000)) + +/// Global Save World Flag. A boolean variable saved in the savefile. +/// +/// Used to track whether badges, items, etc. have been collected or whether NPCs have been interacted with. +/// +/// Range: `0 <= v < 0x800` +/// Star Rod equivalent: `*SaveFlag[v]`. +#define GSWF(INDEX) ((((INDEX)) - 130000000)) + +/// Local Saved **Byte**. A variable local to the current world area, saved in the savefile. +/// Cleared upon a new world area. +/// +/// Rarely used. Most common use is for NPCs with dialogue that changes depending on the number of times you have +/// interacted with them in their 'recent memory' (i.e. until you leave the area). +/// +/// Range: `0 <= v < 0x10` +/// Star Rod equivalent: `*AreaByte[v]`. +#define LSW(INDEX) ((((INDEX)) - 150000000)) + +/// Global Saved **Byte**. A variable saved in the save file. +/// +/// Used for almost all savefile state. +#define GSW(INDEX) (((((INDEX)) - 170000000)) + +// TODO(docs): figure out what 'U' might stand for in UW and UF +/// **Array** Word. A variable stored within the current thread's array. +/// You can load an array with EVT_USE_ARRAY or temporarily allocate one with EVT_MALLOC_ARRAY, then get/set values with +/// the `UW(index)` macro. +/// +/// Range: `0 <= v` +/// Star Rod equivalent: `*Array[v]`. +#define UW(INDEX) ((((INDEX)) - 190000000)) + +/// **Array** Flag. A boolean variable stored within the current thread's flag array. +/// The flag array is distinct from the word array (unlike EVT_USE_BUF and EVT_USE_FBUF). +/// +/// Range: `0 <= v` +/// Star Rod equivalent: `*Array[v]`. +#define UF(INDEX) ((((v)) - 210000000)) + +/// An entity index. Entities are assigned indices in the order they are created with EVT_CALL(MakeEntity, ...). +/// Supported in EVT_BIND_TRIGGER and EVT_BIND_PADLOCK only. +#define EVT_ENTITY_INDEX(entityIndex) (((((entityIndex)) + 0x400))) + + +/****** INSTRUCTIONS **************************************************************************************************/ + +/// On each frame, the EVT manager will continue executing commands in all threads until a blocking command is +/// encountered. This means that if you have a thread that loops but does not block between iterations, the game will +/// freeze! Avoid this by inserting a blocking command such as EVT_WAIT_FRAMES(1) in the loop body. +/// +/// Also note that threads are never executed in parallel. If your EVT script lacks blocking commands, it will be +/// executed all in one go, and race conditions cannot occur. +/// +/// The following subset of EVT commands are blocking: +/// - EVT_EXEC_WAIT +/// - EVT_WAIT_FRAMES +/// - EVT_WAIT_SECONDS +/// - EVT_CALL (if function returns ApiStatus_BLOCK) + +/// In EVT scripts, instructions are stored contiguously in the following structs: +/// struct { +/// Bytecode opcode; +/// Bytecode argc; +/// Bytecode argv[argc]; +/// } +/// This macro expands to the given opcode and argv, with argc calculated automatically. +#define EVT_CMD(opcode, argv...) \ + opcode, \ + (sizeof((Bytecode[]){argv})/sizeof(Bytecode)), \ + ##argv + +/// Signals the end of EVT script data. A script missing this will likely crash on load. +#define EVT_END EVT_CMD(EVT_OP_END), + +/// Kills the current EVT thread. +/// A script missing a return will live - but do nothing - forever, or until something else kills it (e.g. leaving the map). +#define EVT_RETURN EVT_CMD(EVT_OP_RETURN), + +/// Jumps to a given instruction pointer and begins execution from there. +/// You can jump to a different EVT source and labels etc. will be loaded as expected. +/// The timescale for the current thread is also reset to the global default. +#define EVT_JUMP(EVT_SOURCE) EVT_CMD(EVT_OP_JUMP, (Bytecode) EVT_SOURCE), + +/// Marks this point in the script as a EVT_GOTO target. +/// +/// Range: `0 <= LABEL_ID <= 0x16` +#define EVT_LABEL(LABEL_ID) EVT_CMD(EVT_OP_LABEL, LABEL_ID), + +/// Moves execution to the given label. +/// +/// Range: `0 <= LABEL_ID <= 0x16` +#define EVT_GOTO(LABEL_ID) EVT_CMD(EVT_OP_GOTO, LABEL_ID), + +/// Marks the beginning of a loop. +/// +/// EVT_LOOP(TIMES) +/// ... +/// EVT_END_LOOP +/// +/// The variable or value given in `TIMES` is decremented upon each loop iteration. +/// After the "1" iteration completes, the loop exits. +/// Use EVT_LOOP(0) for an infinite loop; make sure it breaks or blocks to avoid a freeze. +/// +/// Up to 8 loops may be nested within a single script. +#define EVT_LOOP(TIMES) EVT_CMD(EVT_OP_LOOP, TIMES), + +/// Marks the end of a loop. +#define EVT_END_LOOP EVT_CMD(EVT_OP_END_LOOP), + +/// Breaks out of the innermost loop. +#define EVT_BREAK_LOOP EVT_CMD(EVT_OP_BREAK_LOOP), + +/// Blocks for the given number of frames. +#define EVT_WAIT_FRAMES(NUM_FRAMES) EVT_CMD(EVT_OP_WAIT_FRAMES, NUM_FRAMES), + +/// Blocks for the given number of seconds. +#define EVT_WAIT_SECS(NUM_SECONDS) EVT_CMD(EVT_OP_WAIT_SECS, NUM_SECONDS), + +/// Marks the beginning of an if statement that only executes if `LVAR == RVAR`. +/// +/// EVT_IF_EQ(LVAR, RVAR) +/// ... +/// EVT_ELSE +/// ... +/// EVT_END_IF +/// +/// The EVT_ELSE block is optional. +#define EVT_IF_EQ(LVAR, RVAR) EVT_CMD(EVT_OP_IF_EQ, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if `LVAR != RVAR`. +#define EVT_IF_NE(LVAR, RVAR) EVT_CMD(EVT_OP_IF_NE, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if `LVAR < RVAR`. +#define EVT_IF_LT(LVAR, RVAR) EVT_CMD(EVT_OP_IF_LT, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if `LVAR <= RVAR`. +#define EVT_IF_GT(LVAR, RVAR) EVT_CMD(EVT_OP_IF_GT, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if `LVAR > RVAR`. +#define EVT_IF_LE(LVAR, RVAR) EVT_CMD(EVT_OP_IF_LE, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if `LVAR >= RVAR`. +#define EVT_IF_GE(LVAR, RVAR) EVT_CMD(EVT_OP_IF_GE, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if the RVAR flag is set on LVAR, +/// i.e. `(LVAR & RVAR) != 1`. +#define EVT_IF_FLAG(LVAR, RVAR) EVT_CMD(EVT_OP_IF_FLAG, LVAR, RVAR), + +/// Marks the beginning of an if statement that only executes if the RVAR flag is unset on LVAR, +/// i.e. `(LVAR & RVAR) == 0`. +#define EVT_IF_NOT_FLAG(LVAR, RVAR) EVT_CMD(EVT_OP_IF_NOT_FLAG, LVAR, RVAR), + +/// Marks the end of an if statement and the start of the else block. +#define EVT_ELSE EVT_CMD(EVT_OP_ELSE), + +/// Marks the end of an if statement or an else block. +#define EVT_END_IF EVT_CMD(EVT_OP_END_IF), + +/// Marks the start of a switch statement. +/// +/// EVT_SWITCH(LVAR) +/// EVT_CASE_EQ(RVAR) +/// ... +/// EVT_END_SWITCH +/// +/// Unlike C, EVT switch statements do not have fallthrough by default. +/// If you want to opt-in to fallthrough, use EVT_CASE_OR_EQ. +/// +/// Up to 8 switch statements may be nested within a single script. +#define EVT_SWITCH(LVAR) EVT_CMD(EVT_OP_SWITCH, LVAR), + +/// Marks the start of a switch statement where the given value is treated as-is instead of using evt_get_variable. +/// That is, `EVT_SWITCH_CONST(LW(0))` will switch over the value `0xFE363C80` instead of the value contained +/// within `LW(0)`. +#define EVT_SWITCH_CONST(LCONST) EVT_CMD(EVT_OP_SWITCH_CONST, LCONST), + +/// Marks the start of a switch case that executes only if `LVAR == RVAR`. It also marks the end of any previous case. +#define EVT_CASE_EQ(RVAR) EVT_CMD(EVT_OP_CASE_EQ, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR != RVAR`. It also marks the end of any previous case. +#define EVT_CASE_NE(RVAR) EVT_CMD(EVT_OP_CASE_NE, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR < RVAR`. It also marks the end of any previous case. +#define EVT_CASE_LT(RVAR) EVT_CMD(EVT_OP_CASE_LT, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR <= RVAR`. It also marks the end of any previous case. +#define EVT_CASE_GT(RVAR) EVT_CMD(EVT_OP_CASE_GT, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR > RVAR`. It also marks the end of any previous case. +#define EVT_CASE_LE(RVAR) EVT_CMD(EVT_OP_CASE_LE, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR >= RVAR`. It also marks the end of any previous case. +#define EVT_CASE_GE(RVAR) EVT_CMD(EVT_OP_CASE_GE, RVAR), + +/// Marks the start of a switch case that executes unconditionally. It also marks the end of any previous case. +#define EVT_CASE_DEFAULT EVT_CMD(EVT_OP_CASE_DEFAULT), + +/// Marks the start of a switch case that executes only if `LVAR == RVAR`. It also marks the end of any previous case. +/// Unlike EVT_CASE_EQ, EVT_CASE_OR_EQ will fallthrough to the next case until EVT_END_CASE_GROUP is reached. +#define EVT_CASE_OR_EQ(RVAR) EVT_CMD(EVT_OP_CASE_OR_EQ, RVAR), + +/// Marks the start of a switch case that executes only if `LVAR == RVAR`. It also marks the end of any previous case. +/// Similar to EVT_CASE_OR_EQ, EVT_CASE_AND_EQ has fallthrough. However, if `LVAR != RVAR`, fallthrough does not apply. +#define EVT_CASE_AND_EQ(RVAR) EVT_CMD(EVT_OP_CASE_AND_EQ, RVAR), + +/// Marks the start of a switch case that executes only if the `RVAR` flag is set on `LVAR`, i.e. `(LVAR & RVAR) != 1`. +/// It also marks the end of any previous case. +#define EVT_CASE_FLAG(RVAR) EVT_CMD(EVT_OP_CASE_FLAG, RVAR), + +/// Marks the end of a switch case group (EVT_CASE_OR_EQ and/or EVT_CASE_AND_EQ), stopping fallthrough. +#define EVT_END_CASE_GROUP EVT_CMD(EVT_OP_END_CASE_GROUP), + +/// Marks the start of a switch case that executes only if `MIN <= LVAR <= MAX` (inclusive). +/// It also marks the end of any previous case. +#define EVT_CASE_RANGE(MIN, MAX) EVT_CMD(EVT_OP_CASE_RANGE, MIN, MAX), + +/// Marks the end of a switch statement and any case. +#define EVT_END_SWITCH EVT_CMD(EVT_OP_END_SWITCH), + +/// Sets the given variable to a given value casted to an integer. +#define EVT_SET(VAR, INT_VALUE) EVT_CMD(EVT_OP_SET, VAR, (Bytecode) INT_VALUE), + +/// Sets the given variable to a given value, skipping the evt_get_variable call. +/// That is, `EVT_SET_CONST(LW(0), LW(1))` will set `LW(0)` to `0xFE363C81` instead of copying the value of +/// `LW(1)` into `LW(0)`. +#define EVT_SET_CONST(VAR, CONST) EVT_CMD(EVT_OP_SET_CONST, VAR, (Bytecode) CONST), + +/// Sets the given variable to a given value, but supports EVT_FLOATs. +#define EVT_SETF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_SETF, VAR, FLOAT_VALUE), + +// Basic arithmetic operations. +#define EVT_ADD(VAR, INT_VALUE) EVT_CMD(EVT_OP_ADD, VAR, INT_VALUE), +#define EVT_SUB(VAR, INT_VALUE) EVT_CMD(EVT_OP_SUB, VAR, INT_VALUE), +#define EVT_MUL(VAR, INT_VALUE) EVT_CMD(EVT_OP_MUL, VAR, INT_VALUE), +#define EVT_DIV(VAR, INT_VALUE) EVT_CMD(EVT_OP_DIV, VAR, INT_VALUE), +#define EVT_MOD(VAR, INT_VALUE) EVT_CMD(EVT_OP_MOD, VAR, INT_VALUE), + +// Basic floating-point arithmetic operations. +#define EVT_ADDF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_ADDF, VAR, FLOAT_VALUE), +#define EVT_SUBF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_SUBF, VAR, FLOAT_VALUE), +#define EVT_MULF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_MULF, VAR, FLOAT_VALUE), +#define EVT_DIVF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_DIVF, VAR, FLOAT_VALUE), + +/// Loads a s32 pointer for use with subsequent EVT_BUF_READ commands. +#define EVT_USE_BUF(INT_PTR) EVT_CMD(EVT_OP_USE_BUF, (Bytecode) INT_PTR), + +/// Consumes the next s32 from the buffer and stores it in the given variable. +#define EVT_BUF_READ1(VAR) EVT_CMD(EVT_OP_BUF_READ1, VAR), + +/// Consumes the next two s32s from the buffer and stores them in the given variables. +#define EVT_BUF_READ2(VAR1, VAR2) EVT_CMD(EVT_OP_BUF_READ2, VAR1, VAR2), + +/// Consumes the next three s32s from the buffer and stores them in the given variables. +#define EVT_BUF_READ3(VAR1, VAR2, VAR3) EVT_CMD(EVT_OP_BUF_READ3, VAR1, VAR2, VAR3), + +/// Consumes the next four s32s from the buffer and stores them in the given variables. +#define EVT_BUF_READ4(VAR1, VAR2, VAR3, VAR4) EVT_CMD(EVT_OP_BUF_READ4, VAR1, VAR2, VAR3, VAR4), + +/// Gets the s32 at the given offset of the buffer and stores it in the given variable, without consuming it. +#define EVT_BUF_PEEK(OFFSET, VAR) EVT_CMD(EVT_OP_BUF_PEEK, OFFSET, VAR), + +/// Identical to EVT_USE_BUF. Beware that the int buffer and the float buffer are not distinct. +#define EVT_USE_FBUF(FLOAT_PTR) EVT_CMD(EVT_OP_USE_FBUF, (Bytecode) FLOAT_PTR), + +/// Consumes the next f32 from the buffer and stores it in the given variable. +#define EVT_FBUF_READ1(VAR) EVT_CMD(EVT_OP_FBUF_READ1, VAR), + +/// Consumes the next two f32s from the buffer and stores them in the given variables. +#define EVT_FBUF_READ2(VAR1, VAR2) EVT_CMD(EVT_OP_FBUF_READ2, VAR1, VAR2), + +/// Consumes the next three f32s from the buffer and stores them in the given variables. +#define EVT_FBUF_READ3(VAR1, VAR2, VAR3) EVT_CMD(EVT_OP_FBUF_READ3, VAR1, VAR2, VAR3), + +/// Consumes the next four f32s from the buffer and stores them in the given variables. +#define EVT_FBUF_READ4(VAR1, VAR2, VAR3, VAR4) EVT_CMD(EVT_OP_FBUF_READ4, VAR1, VAR2, VAR3, VAR4), + +/// Gets the f32 at the given offset of the buffer and stores it in the given variable, without consuming it. +#define EVT_FBUF_PEEK(OFFSET, VAR) EVT_CMD(EVT_OP_FBUF_PEEK, OFFSET, VAR), + +/// Loads an s32 array pointer into the current thread for use with `UW(INDEX)`. +#define EVT_USE_ARRAY(INT_PTR) EVT_CMD(EVT_OP_USE_ARRAY, (Bytecode) INT_PTR), + +/// Loads an s32 array pointer into the current thread for use with `UF(INDEX)`. +/// Flags are stored in a 'packed' structure where indices refer to bits. +#define EVT_USE_FLAG_ARRAY(PACKED_FLAGS_PTR) EVT_CMD(EVT_OP_USE_FLAG_ARRAY, (Bytecode) PACKED_FLAGS_PTR), + +/// Allocates a new array of the given size for use with `UW(INDEX)`. +/// EVT scripts do not have to worry about freeing this array. +#define EVT_MALLOC_ARRAY(SIZE, OUT_PTR_VAR) EVT_CMD(EVT_OP_MALLOC_ARRAY, SIZE, OUT_PTR_VAR), + +/// `VAR &= VALUE` +#define EVT_BITWISE_AND(VAR, VALUE) EVT_CMD(EVT_OP_BITWISE_AND, VAR, VALUE), + +/// `VAR |= VALUE` +#define EVT_BITWISE_OR(VAR, VALUE) EVT_CMD(EVT_OP_BITWISE_OR, VAR, VALUE), + +/// `VAR &= CONST`, but CONST is treated as-is rather than dereferenced with evt_get_variable. +#define EVT_BITWISE_AND_CONST(VAR, CONST) EVT_CMD(EVT_OP_BITWISE_AND_CONST, VAR, CONST), + +/// `VAR |= CONST`, but CONST is treated as-is rather than dereferenced with evt_get_variable. +#define EVT_BITWISE_OR_CONST(VAR, CONST) EVT_CMD(EVT_OP_BITWISE_OR_CONST, VAR, CONST), + +/// Launches a new thread. +/// The following values are copied from the current thread to the new thread: +/// - LFs +/// - LWs +/// - Array pointer +/// - Flag array pointer +/// - Priority +/// - Group +#define EVT_EXEC(EVT_SOURCE) EVT_CMD(EVT_OP_EXEC, (Bytecode) EVT_SOURCE), + +/// Identical to EVT_EXEC, but the newly-launched thread ID is stored in OUTVAR. +/// The other thread may be interacted with using EVT_KILL_THREAD, EVT_SUSPEND_THREAD, EVT_RESUME_THREAD, and +/// EVT_IS_THREAD_RUNNING. +#define EVT_EXEC_GET_TID(EVT_SOURCE, OUTVAR) EVT_CMD(EVT_OP_EXEC_GET_TID, (Bytecode) EVT_SOURCE, OUTVAR), + +/// Launches a new child thread. +/// Blocks for at least one frame unless the child thread is made to have a higher priority than the parent. +/// +/// The following values are inherited and then copied back to the parent thread upon completion: +/// - LFs +/// - LWs +/// - Array pointer +/// - Flag array pointer +/// - Priority +/// - Group +/// +/// Child threads are killed, suspended, and resumed as their parents are, for example, a different thread using +/// EVT_KILL_THREAD to kill a parent thread would also kill its child thread(s) launched by this command. +#define EVT_EXEC_WAIT(EVT_SOURCE) EVT_CMD(EVT_OP_EXEC_WAIT, (Bytecode) EVT_SOURCE), + +/// Sets up a script to launch when a particular event is triggered. +/// +/// Valid triggers: +/// - TRIGGER_WALL_PUSH +/// - TRIGGER_FLOOR_TOUCH +/// - TRIGGER_WALL_PRESS_A (displays "!" icon above player) +/// - TRIGGER_FLOOR_JUMP +/// - TRIGGER_WALL_TOUCH +/// - TRIGGER_FLOOR_PRESS_A +/// - TRIGGER_WALL_HAMMER +/// - TRIGGER_GAME_FLAG_SET (TODO: rename) +/// - TRIGGER_AREA_FLAG_SET (TODO: rename) +/// - TRIGGER_CEILING_TOUCH +/// - TRIGGER_FLOOR_ABOVE +/// - TRIGGER_POINT_BOMB (takes Vec3f* instead of collider ID) +/// +/// For the `COLLIDER_ID` param, the following values are accepted: +/// - Collider ID +/// - Entity ID (use EVT_ENTITY_INDEX) +/// - Pointer to a Vec3f (for TRIGGER_POINT_BOMB only) +/// +/// Only one thread will run for a trigger at once. +#define EVT_BIND_TRIGGER(EVT_SOURCE, TRIGGER, COLLIDER_ID, UNK_A3, TRIGGER_PTR_OUTVAR) \ + EVT_CMD(EVT_OP_BIND_TRIGGER, (Bytecode) EVT_SOURCE, TRIGGER, (Bytecode) COLLIDER_ID, UNK_A3, TRIGGER_PTR_OUTVAR), + +/// Similar to EVT_BIND_TRIGGER, but also takes arguments for the item list to show. +#define EVT_BIND_PADLOCK(EVT_SOURCE, TRIGGER, COLLIDER_ID, ITEM_LIST, UNK_A3, TRIGGER_PTR_OUTVAR) \ + EVT_CMD(EVT_OP_BIND_PADLOCK, (Bytecode) EVT_SOURCE, TRIGGER, COLLIDER_ID, (Bytecode) ITEM_LIST, UNK_A3, TRIGGER_PTR_OUTVAR), + +/// Unbinds the current thread from the trigger it was bound to, if any. +#define EVT_UNBIND EVT_CMD(EVT_OP_UNBIND), + +/// Kills a thread by its thread ID. +#define EVT_KILL_THREAD(TID) EVT_CMD(EVT_OP_KILL_THREAD, TID), + +/// Sets the current thread's priority. Higher-priority threads execute before lower-priority threads on each frame. +#define EVT_SET_PRIORITY(PRIORITY) EVT_CMD(EVT_OP_SET_PRIORITY, PRIORITY), + +/// Sets the current thread's timescale. This is a multiplier applied to EVT_WAIT_FRAMES and EVT_WAIT_SECONDS. +#define EVT_SET_TIMESCALE(TIMESCALE) EVT_CMD(EVT_OP_SET_TIMESCALE, TIMESCALE), + +/// Sets the current thread's group. Group value meanings are currently not known. +#define EVT_SET_GROUP(GROUP) EVT_CMD(EVT_OP_SET_GROUP, GROUP), + +/// Suspends all threads in a group. +#define EVT_SUSPEND_GROUP(GROUP) EVT_CMD(EVT_OP_SUSPEND_GROUP, GROUP), + +/// Resumes all threads in a group. +#define EVT_RESUME_GROUP(GROUP) EVT_CMD(EVT_OP_RESUME_GROUP, GROUP), + +/// Suspends all threads in a group, except the current thread. +#define EVT_SUSPEND_OTHERS(GROUP) EVT_CMD(EVT_OP_SUSPEND_OTHERS, GROUP), + +/// Resumes all threads in a group, except the current thread. +#define EVT_RESUME_OTHERS(GROUP) EVT_CMD(EVT_OP_RESUME_OTHERS, GROUP), + +/// Suspends all threads in a group, except the current thread. +#define EVT_SUSPEND_THREAD(TID) EVT_CMD(EVT_OP_SUSPEND_THREAD, TID), + +/// Resumes a thread by its thread ID. +#define EVT_RESUME_THREAD(TID) EVT_CMD(EVT_OP_RESUME_THREAD, TID), + +/// Sets OUTVAR to TRUE/FALSE depending on whether a thread with the given ID exists (i.e. has not been killed). +#define EVT_IS_THREAD_RUNNING(TID, OUTVAR) EVT_CMD(EVT_OP_IS_THREAD_RUNNING, TID, OUTVAR), + +/// Marks the start of a thread block. Commands between this and a matching EVT_END_THREAD +/// will be executed on their own, new thread instead of on the current thread. +#define EVT_THREAD EVT_CMD(EVT_OP_THREAD), + +/// Marks the end of a thread block. +#define EVT_END_THREAD EVT_CMD(EVT_OP_END_THREAD), + +/// Marks the start of a child thread block. Commands between this and a matching EVT_END_CHILD_THREAD +/// will be executed as a new child thread instead of on the current thread. +/// +/// Child threads are killed if the parent thread dies, so the following script does NOT set the player's position: +/// +/// EVT_CHILD_THREAD +/// EVT_WAIT_SECONDS(1) // child thread will be killed whilst waiting +/// EVT_CALL(SetPlayerPos, 0, -1000, 0) // will not be executed +/// EVT_END_CHILD_THREAD +/// EVT_RETURN // parent thread dies +/// +#define EVT_CHILD_THREAD EVT_CMD(EVT_OP_CHILD_THREAD), + +/// Marks the end of a child thread block. +#define EVT_END_CHILD_THREAD EVT_CMD(EVT_OP_END_CHILD_THREAD), + +/// Calls a given C EVT API function with any number of arguments. +/// +/// An API function has the following signature: +/// +/// ApiStatus ApiFunction(Evt* thread, s32 isInitialCall); +/// +/// This function could then be called with the following command: +/// +/// EVT_CALL(ApiFunction) +/// +/// The given arguments can be accessed from the API function using `thread->ptrReadPos`. +#define EVT_CALL(FUNC, ...) EVT_CMD(EVT_OP_CALL, (Bytecode) FUNC, ##__VA_ARGS__), + + +/****** COMMON SCRIPTS ************************************************************************************************/ + +#define EXIT_WALK_SCRIPT(walkDistance, exitIdx, map, entryIdx) \ + { \ + EVT_SET_GROUP(0x1B) \ + EVT_CALL(UseExitHeading, walkDistance, exitIdx) \ + EVT_EXEC(ExitWalk) \ + EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \ + EVT_WAIT_FRAMES(100) \ + EVT_RETURN \ + EVT_END \ + } + +#endif diff --git a/include/variables.h b/include/variables.h index 7aa54cc0f4..e92fdb6cc2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -398,5 +398,18 @@ extern s32 bMarioIdleAnims[]; extern s32 bMarioDefendAnims[]; extern s32 bPeachIdleAnims[]; +// TODO: name these entity symbols +extern StaticEntityData D_802E9A18; // entitySaveBlock +extern StaticEntityData D_802E9BB0; +extern StaticEntityData D_802E9BD4; // entityBlueSwitch +extern StaticEntityData D_802E9BF8; // entityHugeBlueSwitch +extern StaticEntityData D_802E9C1C; +extern StaticEntityData D_802E9C8C; +extern StaticEntityData D_802E9CB0; +extern StaticEntityData D_802E9CD4; +extern StaticEntityData D_802E9CF8; +extern StaticEntityData D_802E9D1C; +extern StaticEntityData D_802E9D40; +extern StaticEntityData D_802E9D64; #endif diff --git a/make_expected.sh b/make_expected.sh index 6a39a2b149..06d441bc7f 100755 --- a/make_expected.sh +++ b/make_expected.sh @@ -1,3 +1,5 @@ +rm -rf ver/*/expected + mkdir -p ver/us/expected/ver/us cp -r ver/us/build ver/us/expected/ver/us diff --git a/src/16c8e0.c b/src/16c8e0.c index 6a0684d02f..1d8ca6db71 100644 --- a/src/16c8e0.c +++ b/src/16c8e0.c @@ -22,123 +22,157 @@ extern f32 D_8029EFB0; extern f32 D_8029EFB4; extern f32 D_8029EFB8; -EvtSource BtlPutPartnerAway = SCRIPT({ - DispatchEvent(ACTOR_PARTNER, 62); - parallel { - EVT_VAR(0) = 1.0; - loop 10 { - SetActorScale(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(0), 1.0); - EVT_VAR(0) -= 0.1005859375; - sleep 1; - } - } - EnablePartnerBlur(); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_E); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - SetActorJumpGravity(ACTOR_PARTNER, 1.0); - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_PARTNER, 10, 0, 0, 1); - DisablePartnerBlur(); -}); +EvtSource BtlPutPartnerAway = { + EVT_CALL(DispatchEvent, 256, 62) + EVT_CHILD_THREAD + EVT_SETF(EVT_VAR(0), EVT_FIXED(1.0)) + EVT_LOOP(10) + EVT_CALL(SetActorScale, 256, EVT_VAR(0), EVT_VAR(0), EVT_FIXED(1.0)) + EVT_SUBF(EVT_VAR(0), EVT_FIXED(0.1005859375)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_CHILD_THREAD + EVT_CALL(EnablePartnerBlur) + EVT_CALL(PlaySoundAtActor, 0, 14) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.0)) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, 256, 10, 0, 0, 1) + EVT_CALL(DisablePartnerBlur) + EVT_RETURN + EVT_END +}; -EvtSource BtlBringPartnerOut = SCRIPT({ - parallel { - EVT_VAR(0) = 0.1005859375; - loop 20 { - SetActorScale(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(0), 1.0); - EVT_VAR(0) += 0.05078125; - sleep 1; - } - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_D); - GetGoalPos(256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_PARTNER, 1.0); - if (EVT_VAR(1) == 0) { - JumpToGoal(ACTOR_PARTNER, 20, 0, 0, 1); - } else { - JumpToGoal(ACTOR_PARTNER, 20, 0, 0, 1); - } - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - ForceHomePos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); -}); +EvtSource BtlBringPartnerOut = { + EVT_CHILD_THREAD + EVT_SETF(EVT_VAR(0), EVT_FIXED(0.1005859375)) + EVT_LOOP(20) + EVT_CALL(SetActorScale, 256, EVT_VAR(0), EVT_VAR(0), EVT_FIXED(1.0)) + EVT_ADDF(EVT_VAR(0), EVT_FIXED(0.05078125)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_CALL(PlaySoundAtActor, 0, 13) + EVT_CALL(GetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.0)) + EVT_IF_EQ(EVT_VAR(1), 0) + EVT_CALL(JumpToGoal, 256, 20, 0, 0, 1) + EVT_ELSE + EVT_CALL(JumpToGoal, 256, 20, 0, 0, 1) + EVT_END_IF + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(ForceHomePos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_RETURN + EVT_END +}; s8 D_80280CE0[] = { 0, 0, 0, 0 }; s32 D_80280CE4 = -1; -EvtSource CamPreset_B = SCRIPT({ - func_80248DD0(); -}); +EvtSource CamPreset_B = { + EVT_CALL(func_80248DD0) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_F = SCRIPT({ - func_80248DE4(); -}); +EvtSource CamPreset_F = { + EVT_CALL(func_80248DE4) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_M = SCRIPT({ - func_80249804(); -}); +EvtSource CamPreset_M = { + EVT_CALL(func_80249804) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_G = SCRIPT({ - func_8024A214(); -}); +EvtSource CamPreset_G = { + EVT_CALL(func_8024A214) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_I = SCRIPT({ - func_8024A990(); -}); +EvtSource CamPreset_I = { + EVT_CALL(func_8024A990) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_H = SCRIPT({ - func_8024AFE4(); -}); +EvtSource CamPreset_H = { + EVT_CALL(func_8024AFE4) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_N = SCRIPT({ - func_8024B5FC(); -}); +EvtSource CamPreset_N = { + EVT_CALL(func_8024B5FC) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_C = SCRIPT({ - func_8024B9A0(); -}); +EvtSource CamPreset_C = { + EVT_CALL(func_8024B9A0) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_D = SCRIPT({ - func_8024BDA4(); -}); +EvtSource CamPreset_D = { + EVT_CALL(func_8024BDA4) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_E = SCRIPT({ - func_8024C180(); -}); +EvtSource CamPreset_E = { + EVT_CALL(func_8024C180) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_J = SCRIPT({ - func_8024C570(); -}); +EvtSource CamPreset_J = { + EVT_CALL(func_8024C570) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_K = SCRIPT({ - func_8024C944(); -}); +EvtSource CamPreset_K = { + EVT_CALL(func_8024C944) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_L = SCRIPT({ - func_8024CB68(); -}); +EvtSource CamPreset_L = { + EVT_CALL(func_8024CB68) + EVT_RETURN + EVT_END +}; -EvtSource CamPreset_A = SCRIPT({ - func_8024E9B0(0, 15, 0); - func_8024E748(2, 550); - func_8024E748(3, 100); - func_8024E748(4, 8); -}); +EvtSource CamPreset_A = { + EVT_CALL(func_8024E9B0, 0, 15, 0) + EVT_CALL(func_8024E748, 2, 550) + EVT_CALL(func_8024E748, 3, 100) + EVT_CALL(func_8024E748, 4, 8) + EVT_RETURN + EVT_END +}; -EvtSource D_80280EB8 = SCRIPT({ - SetCamPerspective(CAM_BATTLE, 6, 25, 16, 1024); - SetCamViewport(CAM_BATTLE, 12, 20, 296, 200); - SetCamBGColor(CAM_BATTLE, 0, 0, 0); - SetCamEnabled(CAM_BATTLE, TRUE); - sleep 1; - InitVirtualEntityList(); - InitAnimatedModels(); - func_802CABE8(CAM_BATTLE, 0, 240, 100, 8); - func_802CAE50(CAM_BATTLE, -75, 35, 0); - BattleCamTargetActor(ACTOR_PLAYER); - func_8024CE9C(); -}); +EvtSource D_80280EB8 = { + EVT_CALL(SetCamPerspective, 1, 6, 25, 16, 1024) + EVT_CALL(SetCamViewport, 1, 12, 20, 296, 200) + EVT_CALL(SetCamBGColor, 1, 0, 0, 0) + EVT_CALL(SetCamEnabled, 1, 1) + EVT_WAIT_FRAMES(1) + EVT_CALL(InitVirtualEntityList) + EVT_CALL(InitAnimatedModels) + EVT_CALL(func_802CABE8, 1, 0, 240, 100, 8) + EVT_CALL(func_802CAE50, 1, -75, 35, 0) + EVT_CALL(BattleCamTargetActor, 0) + EVT_CALL(func_8024CE9C) + EVT_RETURN + EVT_END +}; void get_dpad_input_radial(f32* angle, f32* magnitude) { BattleStatus* battleStatus = &gBattleStatus; diff --git a/src/battle/area_kmr_part_1/actor/goomba.c b/src/battle/area_kmr_part_1/actor/goomba.c index d82852dbed..b3b1e0bf9e 100644 --- a/src/battle/area_kmr_part_1/actor/goomba.c +++ b/src/battle/area_kmr_part_1/actor/goomba.c @@ -106,351 +106,351 @@ EvtSource N(takeTurn_8021A300); EvtSource N(idle_802197F8); EvtSource N(handleEvent_80219AD4); -EvtSource N(init_802197AC) = SCRIPT({ - BindTakeTurn(ACTOR_SELF, N(takeTurn_8021A300)); - BindIdle(ACTOR_SELF, N(idle_802197F8)); - BindHandleEvent(ACTOR_SELF, N(handleEvent_80219AD4)); -}); +EvtSource N(init_802197AC) = { + EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021A300))) + EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_802197F8))) + EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_80219AD4))) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_802197F8) = SCRIPT({ -10: - RandInt(80, EVT_VAR(0)); - EVT_VAR(0) += 80; - loop EVT_VAR(0) { - 0: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 0; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_80219760)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_80219714)); - loop 20 { - 1: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 1; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_80219760)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_80219714)); - loop 80 { - 2: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 2; - } - sleep 1; - } - goto 10; -}); +EvtSource N(idle_802197F8) = { + EVT_LABEL(10) + EVT_CALL(RandInt, 80, EVT_VAR(0)) + EVT_ADD(EVT_VAR(0), 80) + EVT_LOOP(EVT_VAR(0)) + EVT_LABEL(0) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_80219760))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_80219714))) + EVT_LOOP(20) + EVT_LABEL(1) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(1) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_80219760))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_80219714))) + EVT_LOOP(80) + EVT_LABEL(2) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(2) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; -EvtSource N(handleEvent_80219AD4) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - GetLastEvent(ACTOR_SELF, EVT_VAR(0)); - match EVT_VAR(0) { - EVENT_HIT_COMBO, EVENT_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoNormalHit; - } - == EVENT_BURN_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoBurnHit; - } - == EVENT_BURN_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoBurnHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoDeath; - return; - } - == EVENT_SPIN_SMASH_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoSpinSmashHit; - } - == EVENT_SPIN_SMASH_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoSpinSmashHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_SHOCK_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoJumpBack; - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - } - == EVENT_SHOCK_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_STAR_BEAM, 23, EVENT_IMMUNE, EVENT_AIR_LIFT_FAILED { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_idle; - await DoImmune; - } - == EVENT_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoNormalHit; - sleep 10; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_END_FIRST_STRIKE { - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 4.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - HPBarToHome(ACTOR_SELF); - } - == EVENT_RECOVER_STATUS { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_idle; - await DoRecover; - } - == EVENT_SCARE_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_run; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_pain; - await DoScareAway; - return; - } - == EVENT_BEGIN_AIR_LIFT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_run; - await DoAirLift; - } - == EVENT_BLOW_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoBlowAway; - return; - } - else { - } - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(handleEvent_80219AD4) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(9) + EVT_CASE_OR_EQ(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_END_CASE_GROUP + EVT_CASE_EQ(14) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_CASE_EQ(36) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(11) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_CASE_EQ(33) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(47) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoJumpBack) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CASE_EQ(38) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(19) + EVT_CASE_OR_EQ(23) + EVT_CASE_OR_EQ(25) + EVT_CASE_OR_EQ(31) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_idle) + EVT_EXEC_WAIT(DoImmune) + EVT_END_CASE_GROUP + EVT_CASE_EQ(32) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_WAIT_FRAMES(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(53) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(4.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(HPBarToHome, ACTOR_SELF) + EVT_CASE_EQ(49) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_idle) + EVT_EXEC_WAIT(DoRecover) + EVT_CASE_EQ(57) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_run) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoScareAway) + EVT_RETURN + EVT_CASE_EQ(58) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_run) + EVT_EXEC_WAIT(DoAirLift) + EVT_CASE_EQ(22) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoBlowAway) + EVT_RETURN + EVT_CASE_DEFAULT + EVT_END_SWITCH + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; #include "anglestuff.inc.c" -EvtSource N(takeTurn_8021A300) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetTargetActor(ACTOR_SELF, ACTOR_PLAYER); - UseBattleCamPreset(63); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToTarget(ACTOR_SELF); - AddGoalPos(ACTOR_SELF, 50, 0, 0); - SetActorSpeed(ACTOR_SELF, 6.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorDispOffset(ACTOR_SELF, 0, -1, 0); - sleep 1; - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16); - match EVT_VAR(0) { - HIT_RESULT_MISS, HIT_RESULT_LUCKY { - EVT_VAR(10) = EVT_VAR(0); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 10; - EVT_VAR(1) = 10; - EVT_VAR(2) += 3; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_asleep); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 5, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 7, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain); - sleep 5; - if (EVT_VAR(10) == 5) { - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0); - } - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) = 0; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 2.0); - spawn { - sleep 4; - EVT_VAR(0) = 180; - loop 4 { - EVT_VAR(0) -= 45; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 15, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy); - sleep 5; - UseBattleCamPreset(2); - YieldTurn(); - SetActorYaw(ACTOR_SELF, 180); - AddActorDecoration(ACTOR_SELF, 1, 0, 2); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - SetActorYaw(ACTOR_SELF, 0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - RemoveActorDecoration(ACTOR_SELF, 1, 0); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); - return; - } - else { - SetGoalToTarget(ACTOR_SELF); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pre_headbonk); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - sleep 1; - } - } - EnemyDamageTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32); - match EVT_VAR(0) { - HIT_RESULT_HIT, 2 { - UseBattleCamPreset(2); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 40; - EVT_VAR(1) = 0; - SetActorJumpGravity(ACTOR_SELF, 1.8); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, TRUE, FALSE); - EVT_VAR(0) += 30; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 8, FALSE, TRUE, FALSE); - EVT_VAR(0) += 20; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 6, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - sleep 3; - YieldTurn(); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - } - } - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(takeTurn_8021A300) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER) + EVT_CALL(UseBattleCamPreset, 63) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(6.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -1, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(6) + EVT_CASE_OR_EQ(5) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 10) + EVT_SET(EVT_VAR(1), 10) + EVT_ADD(EVT_VAR(2), 3) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_asleep) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 5, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 7, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain) + EVT_WAIT_FRAMES(5) + EVT_IF_EQ(EVT_VAR(10), 5) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0) + EVT_END_IF + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(2.0)) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 180) + EVT_LOOP(4) + EVT_SUB(EVT_VAR(0), 45) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy) + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(YieldTurn) + EVT_CALL(SetActorYaw, ACTOR_SELF, 180) + EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(SetActorYaw, ACTOR_SELF, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pre_headbonk) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_END_SWITCH + EVT_CALL(EnemyDamageTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 40) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.8)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 30) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 20) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_WAIT_FRAMES(3) + EVT_CALL(YieldTurn) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/area_kmr_part_1/actor/paragoomba.c b/src/battle/area_kmr_part_1/actor/paragoomba.c index 82f0efa63c..e61d53e4ef 100644 --- a/src/battle/area_kmr_part_1/actor/paragoomba.c +++ b/src/battle/area_kmr_part_1/actor/paragoomba.c @@ -188,365 +188,368 @@ EvtSource N(takeTurn_8021D74C); EvtSource N(idle_8021CE24); EvtSource N(handleEvent_8021D158); -EvtSource N(init_8021CDD8) = SCRIPT({ - BindTakeTurn(ACTOR_SELF, N(takeTurn_8021D74C)); - BindIdle(ACTOR_SELF, N(idle_8021CE24)); - BindHandleEvent(ACTOR_SELF, N(handleEvent_8021D158)); -}); +EvtSource N(init_8021CDD8) = { + EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021D74C))) + EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021CE24))) + EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021D158))) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_8021CE24) = SCRIPT({ -10: - RandInt(80, EVT_VAR(0)); - EVT_VAR(0) += 80; - loop EVT_VAR(0) { - 0: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 0; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 5; - SetActorIdleSpeed(ACTOR_SELF, 0.6); - SetIdleAnimations(ACTOR_SELF, 2, N(idleAnimations_8021CD74)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleFlyToGoal(ACTOR_SELF, 0, -5, 0); - loop 20 { - 1: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 1; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 5; - SetActorIdleSpeed(ACTOR_SELF, 0.6); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleFlyToGoal(ACTOR_SELF, 0, -5, 0); - SetIdleAnimations(ACTOR_SELF, 2, N(idleAnimations_8021CD28)); - loop 40 { - 2: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 2; - } - sleep 1; - } - goto 10; -}); +EvtSource N(idle_8021CE24) = { + EVT_LABEL(10) + EVT_CALL(RandInt, 80, EVT_VAR(0)) + EVT_ADD(EVT_VAR(0), 80) + EVT_LOOP(EVT_VAR(0)) + EVT_LABEL(0) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(0.6)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 2, EVT_PTR(N(idleAnimations_8021CD74))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleFlyToGoal, ACTOR_SELF, 0, -5, 0) + EVT_LOOP(20) + EVT_LABEL(1) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(1) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(0.6)) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleFlyToGoal, ACTOR_SELF, 0, -5, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 2, EVT_PTR(N(idleAnimations_8021CD28))) + EVT_LOOP(40) + EVT_LABEL(2) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(2) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; -EvtSource N(8021D0E0) = SCRIPT({ - ResetAllActorSounds(ACTOR_SELF); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 7.0); - FlyToGoal(ACTOR_SELF, 0, 1, 11); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_idle); -}); +EvtSource N(8021D0E0) = { + EVT_CALL(ResetAllActorSounds, ACTOR_SELF) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(7.0)) + EVT_CALL(FlyToGoal, ACTOR_SELF, 0, 1, 11) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_idle) + EVT_RETURN + EVT_END +}; EvtSource N(8021DF64); -EvtSource N(handleEvent_8021D158) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, 0); - GetLastEvent(ACTOR_SELF, EVT_VAR(0)); - match EVT_VAR(0) { - EVENT_HIT_COMBO, EVENT_HIT { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_pain; - await DoNormalHit; - GetBattlePhase(EVT_VAR(0)); - if (EVT_VAR(0) == 1) { - GetEncounterState(EVT_VAR(0)); - if (EVT_VAR(0) == 4) { - await N(8021DF64); - } - } - } - == EVENT_BURN_HIT { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_paragoomba_default_burn_dead; - await DoBurnHit; - } - == EVENT_BURN_DEATH { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_paragoomba_default_burn_dead; - await DoBurnHit; - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_burn_dead; - await DoDeath; - return; - } - == EVENT_FALL_TRIGGER { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_pain; - await DoNormalHit; - await N(8021DF64); - } - == 15 { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_paragoomba_default_burn_dead; - await DoBurnHit; - await N(8021DF64); - } - == EVENT_SHOCK_HIT { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_pain; - await DoJumpBack; - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_dizzy); - await N(8021D0E0); - } - == EVENT_SHOCK_DEATH { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_dead; - await DoDeath; - return; - } - == EVENT_STAR_BEAM, 23, EVENT_IMMUNE, EVENT_AIR_LIFT_FAILED { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_idle; - await DoImmune; - } - == EVENT_DEATH { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_pain; - await DoNormalHit; - sleep 10; - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_dead; - await DoDeath; - return; - } - == EVENT_BEGIN_FIRST_STRIKE { - SetActorPos(ACTOR_SELF, 20, 0, 0); - HPBarToCurrent(ACTOR_SELF); - } - == EVENT_END_FIRST_STRIKE { - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run); - await N(8021D0E0); - HPBarToHome(ACTOR_SELF); - } - == EVENT_RECOVER_STATUS { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_idle; - await DoRecover; - } - == EVENT_SCARE_AWAY { - SetActorFlagBits(ACTOR_SELF, 512, 0); - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_run; - EVT_VAR(2) = (const) NPC_ANIM_paragoomba_default_pain; - await DoScareAway; - return; - } - == EVENT_BEGIN_AIR_LIFT { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_run; - await DoAirLift; - } - == EVENT_BLOW_AWAY { - EVT_VAR(0) = (const) 2; - EVT_VAR(1) = (const) NPC_ANIM_paragoomba_default_pain; - await DoBlowAway; - return; - } - else { - } - } - EnableIdleScript(ACTOR_SELF, -1); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(handleEvent_8021D158) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(9) + EVT_CASE_OR_EQ(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_CALL(GetBattlePhase, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 1) + EVT_CALL(GetEncounterState, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 4) + EVT_EXEC_WAIT(N(8021DF64)) + EVT_END_IF + EVT_END_IF + EVT_END_CASE_GROUP + EVT_CASE_EQ(14) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_paragoomba_default_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_CASE_EQ(36) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_paragoomba_default_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_burn_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(12) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_EXEC_WAIT(N(8021DF64)) + EVT_CASE_EQ(15) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_paragoomba_default_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_EXEC_WAIT(N(8021DF64)) + EVT_CASE_EQ(47) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoJumpBack) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_dizzy) + EVT_EXEC_WAIT(N(8021D0E0)) + EVT_CASE_EQ(38) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(19) + EVT_CASE_OR_EQ(23) + EVT_CASE_OR_EQ(25) + EVT_CASE_OR_EQ(31) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_idle) + EVT_EXEC_WAIT(DoImmune) + EVT_END_CASE_GROUP + EVT_CASE_EQ(32) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_WAIT_FRAMES(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(56) + EVT_CALL(SetActorPos, ACTOR_SELF, 20, 0, 0) + EVT_CALL(HPBarToCurrent, ACTOR_SELF) + EVT_CASE_EQ(53) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run) + EVT_EXEC_WAIT(N(8021D0E0)) + EVT_CALL(HPBarToHome, ACTOR_SELF) + EVT_CASE_EQ(49) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_idle) + EVT_EXEC_WAIT(DoRecover) + EVT_CASE_EQ(57) + EVT_CALL(SetActorFlagBits, ACTOR_SELF, 512, 0) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_run) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoScareAway) + EVT_RETURN + EVT_CASE_EQ(58) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_run) + EVT_EXEC_WAIT(DoAirLift) + EVT_CASE_EQ(22) + EVT_SET_CONST(EVT_VAR(0), 0x00000002) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_paragoomba_default_pain) + EVT_EXEC_WAIT(DoBlowAway) + EVT_RETURN + EVT_CASE_DEFAULT + EVT_END_SWITCH + EVT_CALL(EnableIdleScript, ACTOR_SELF, -1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; -EvtSource N(takeTurn_8021D74C) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, 0); - SetTargetActor(ACTOR_SELF, ACTOR_PLAYER); - SetGoalToTarget(ACTOR_SELF); - UseBattleCamPreset(63); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run); - SetGoalToTarget(ACTOR_SELF); - AddGoalPos(ACTOR_SELF, 50, 0, 0); - SetActorSpeed(ACTOR_SELF, 6.0); - FlyToGoal(ACTOR_SELF, 0, -4, 0); - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16); - match EVT_VAR(0) { - HIT_RESULT_MISS, HIT_RESULT_LUCKY { - EVT_VAR(10) = EVT_VAR(0); - sleep 10; - UseBattleCamPreset(66); - SetBattleCamZoom(300); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - PlaySoundAtActor(ACTOR_SELF, 0x20E0); - SetActorSounds(ACTOR_SELF, 2, 0, 0); - SetActorSpeed(ACTOR_SELF, 5.0); - SetActorJumpGravity(ACTOR_SELF, 1.8); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack); - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, FALSE, FALSE); - PlaySoundAtActor(ACTOR_SELF, SOUND_UNUSED_2C1); - SetActorSounds(ACTOR_SELF, 1, 0, 0); - SetGoalToTarget(ACTOR_SELF); - EVT_VAR(0) -= 80; - EVT_VAR(1) = 20; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorSpeed(ACTOR_SELF, 8.0); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack); - FlyToGoal(ACTOR_SELF, 0, -10, 4); - spawn { - loop 4 { - PlaySoundAtActor(ACTOR_SELF, 0x20DF); - sleep 4; - } - } - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_aim); - AddActorDecoration(ACTOR_SELF, 2, 0, 2); - SetAnimationRate(ACTOR_SELF, 2, 3.0); - sleep 10; - if (EVT_VAR(10) == 5) { - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0); - } - sleep 10; - SetAnimationRate(ACTOR_SELF, 2, 1.0); - UseBattleCamPreset(2); - ResetAllActorSounds(ACTOR_SELF); - YieldTurn(); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run); - SetActorYaw(ACTOR_SELF, 180); - await N(8021D0E0); - SetActorYaw(ACTOR_SELF, 0); - RemoveActorDecoration(ACTOR_SELF, 2, 0); - EnableIdleScript(ACTOR_SELF, -1); - UseIdleAnimation(ACTOR_SELF, TRUE); - return; - } - else { - sleep 10; - UseBattleCamPreset(66); - SetBattleCamZoom(300); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - PlaySoundAtActor(ACTOR_SELF, 0x20E0); - SetActorSounds(ACTOR_SELF, 2, 0, 0); - SetActorSpeed(ACTOR_SELF, 5.0); - SetActorJumpGravity(ACTOR_SELF, 1.8); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack); - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, FALSE, FALSE); - PlaySoundAtActor(ACTOR_SELF, SOUND_UNUSED_2C1); - SetActorSounds(ACTOR_SELF, 1, 0, 0); - SetGoalToTarget(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack); - FlyToGoal(ACTOR_SELF, 0, -10, 0); - } - } - sleep 2; - EnemyDamageTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32); - match EVT_VAR(0) { - HIT_RESULT_HIT, 2 { - UseBattleCamPreset(2); - SetGoalToTarget(ACTOR_SELF); - AddGoalPos(ACTOR_SELF, 50, 10, 0); - SetActorSpeed(ACTOR_SELF, 6.0); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run); - FlyToGoal(ACTOR_SELF, 0, -10, 0); - ResetAllActorSounds(ACTOR_SELF); - sleep 5; - YieldTurn(); - SetAnimation(ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run); - await N(8021D0E0); - } - } - EnableIdleScript(ACTOR_SELF, -1); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(takeTurn_8021D74C) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(UseBattleCamPreset, 63) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(6.0)) + EVT_CALL(FlyToGoal, ACTOR_SELF, 0, -4, 0) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(6) + EVT_CASE_OR_EQ(5) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_WAIT_FRAMES(10) + EVT_CALL(UseBattleCamPreset, 66) + EVT_CALL(SetBattleCamZoom, 300) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 8416) + EVT_CALL(SetActorSounds, -127, 2, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(5.0)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.8)) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE) + EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_UNUSED_2C1) + EVT_CALL(SetActorSounds, -127, 1, 0, 0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_SUB(EVT_VAR(0), 80) + EVT_SET(EVT_VAR(1), 20) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack) + EVT_CALL(FlyToGoal, ACTOR_SELF, 0, -10, 4) + EVT_THREAD + EVT_LOOP(4) + EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 8415) + EVT_WAIT_FRAMES(4) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_aim) + EVT_CALL(AddActorDecoration, ACTOR_SELF, 2, 0, 2) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 2, EVT_FIXED(3.0)) + EVT_WAIT_FRAMES(10) + EVT_IF_EQ(EVT_VAR(10), 5) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0) + EVT_END_IF + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 2, EVT_FIXED(1.0)) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(ResetAllActorSounds, ACTOR_SELF) + EVT_CALL(YieldTurn) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run) + EVT_CALL(SetActorYaw, ACTOR_SELF, 180) + EVT_EXEC_WAIT(N(8021D0E0)) + EVT_CALL(SetActorYaw, ACTOR_SELF, 0) + EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 2, 0) + EVT_CALL(EnableIdleScript, ACTOR_SELF, -1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_WAIT_FRAMES(10) + EVT_CALL(UseBattleCamPreset, 66) + EVT_CALL(SetBattleCamZoom, 300) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 8416) + EVT_CALL(SetActorSounds, -127, 2, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(5.0)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.8)) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE) + EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_UNUSED_2C1) + EVT_CALL(SetActorSounds, -127, 1, 0, 0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_attack) + EVT_CALL(FlyToGoal, ACTOR_SELF, 0, -10, 0) + EVT_END_SWITCH + EVT_WAIT_FRAMES(2) + EVT_CALL(EnemyDamageTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 10, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(6.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run) + EVT_CALL(FlyToGoal, ACTOR_SELF, 0, -10, 0) + EVT_CALL(ResetAllActorSounds, ACTOR_SELF) + EVT_WAIT_FRAMES(5) + EVT_CALL(YieldTurn) + EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_paragoomba_default_run) + EVT_EXEC_WAIT(N(8021D0E0)) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(EnableIdleScript, ACTOR_SELF, -1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; EvtSource N(8021E584); #include "common/StartRumbleWithParams.inc.c" -EvtSource N(8021DF64) = SCRIPT({ - func_8027D32C(-127); - SetPartFlags(ACTOR_SELF, 2, 131077); - SetPartFlags(ACTOR_SELF, 3, 1179652); - SetPartFlags(ACTOR_SELF, 4, 1179652); - SetPartFlags(ACTOR_SELF, 1, 8388612); - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPartPos(ACTOR_SELF, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPartDispOffset(ACTOR_SELF, 3, -9, 7, -2); - SetPartPos(ACTOR_SELF, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPartDispOffset(ACTOR_SELF, 4, 11, 7, -2); - GetLastEvent(ACTOR_SELF, EVT_VAR(0)); - if (EVT_VAR(0) == 15) { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_burn_dead); - } else { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain); - } - SetActorSounds(ACTOR_SELF, 2, 769, 0); - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) = 0; - SetActorJumpGravity(ACTOR_SELF, 0.8); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 15, FALSE, TRUE, FALSE); - N(StartRumbleWithParams)(100, 10); - spawn { - ShakeCam(1, 0, 5, 0.3); - } - ResetActorSounds(ACTOR_SELF, 2); - GetLastEvent(ACTOR_SELF, EVT_VAR(3)); - if (EVT_VAR(3) == 15) { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain); - GetActorPos(ACTOR_SELF, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(4) += 10; - EVT_VAR(5) += 5; - PlayEffect(0x27, 0, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 1.0, 10, 0, 0, 0, 0, 0, 0, 0); - } - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, TRUE, FALSE); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - loop 10 { - SetPartFlagBits(ACTOR_SELF, 3, 1, 1); - SetPartFlagBits(ACTOR_SELF, 4, 1, 1); - sleep 1; - SetPartFlagBits(ACTOR_SELF, 3, 1, 0); - SetPartFlagBits(ACTOR_SELF, 4, 1, 0); - sleep 1; - } - SetPartFlagBits(ACTOR_SELF, 3, 1, 1); - SetPartFlagBits(ACTOR_SELF, 4, 1, 1); - GetIndexFromHome(ACTOR_SELF, EVT_VAR(0)); - EVT_VAR(0) %= 4; - SetGoalToIndex(ACTOR_SELF, EVT_VAR(0)); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetHomePos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorFlagBits(ACTOR_SELF, 512, 0); - SetStatusTable(ACTOR_SELF, N(statusTable_8021CB18)); - SetActorType(ACTOR_SELF, ACTOR_TYPE_GOOMBA); - await N(8021E584); - SetActorFlagBits(ACTOR_SELF, 4096, 1); - HPBarToHome(ACTOR_SELF); - ResetAllActorSounds(-127); -}); +EvtSource N(8021DF64) = { + EVT_CALL(func_8027D32C, -127) + EVT_CALL(SetPartFlags, ACTOR_SELF, 2, 131077) + EVT_CALL(SetPartFlags, ACTOR_SELF, 3, 1179652) + EVT_CALL(SetPartFlags, ACTOR_SELF, 4, 1179652) + EVT_CALL(SetPartFlags, ACTOR_SELF, 1, 8388612) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPartPos, ACTOR_SELF, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPartDispOffset, ACTOR_SELF, 3, -9, 7, -2) + EVT_CALL(SetPartPos, ACTOR_SELF, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPartDispOffset, ACTOR_SELF, 4, 11, 7, -2) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 15) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_burn_dead) + EVT_ELSE + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain) + EVT_END_IF + EVT_CALL(SetActorSounds, -127, 2, 769, 0) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(0.8)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE) + EVT_CALL(N(StartRumbleWithParams), 100, 10) + EVT_THREAD + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(0.3)) + EVT_END_THREAD + EVT_CALL(ResetActorSounds, -127, 2) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(3)) + EVT_IF_EQ(EVT_VAR(3), 15) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_ADD(EVT_VAR(4), 10) + EVT_ADD(EVT_VAR(5), 5) + EVT_CALL(PlayEffect, 0x27, 0, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), EVT_FIXED(1.0), 10, 0, 0, 0, 0, 0, 0, 0) + EVT_END_IF + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_LOOP(10) + EVT_CALL(SetPartFlagBits, -127, 3, 1, 1) + EVT_CALL(SetPartFlagBits, -127, 4, 1, 1) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPartFlagBits, -127, 3, 1, 0) + EVT_CALL(SetPartFlagBits, -127, 4, 1, 0) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetPartFlagBits, -127, 3, 1, 1) + EVT_CALL(SetPartFlagBits, -127, 4, 1, 1) + EVT_CALL(GetIndexFromHome, -127, EVT_VAR(0)) + EVT_MOD(EVT_VAR(0), 4) + EVT_CALL(SetGoalToIndex, -127, EVT_VAR(0)) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetHomePos, -127, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorFlagBits, ACTOR_SELF, 512, 0) + EVT_CALL(SetStatusTable, -127, EVT_PTR(N(statusTable_8021CB18))) + EVT_CALL(SetActorType, -127, 7) + EVT_EXEC_WAIT(N(8021E584)) + EVT_CALL(SetActorFlagBits, ACTOR_SELF, 4096, 1) + EVT_CALL(HPBarToHome, ACTOR_SELF) + EVT_CALL(ResetAllActorSounds, ACTOR_SELF) + EVT_RETURN + EVT_END +}; // Copy of goomba.c follows.................. // TODO: deduplicate @@ -581,351 +584,351 @@ EvtSource N(takeTurn_8021F0D8); EvtSource N(idle_8021E5D0); EvtSource N(handleEvent_8021E8AC); -EvtSource N(8021E584) = SCRIPT({ - BindTakeTurn(ACTOR_SELF, N(takeTurn_8021F0D8)); - BindIdle(ACTOR_SELF, N(idle_8021E5D0)); - BindHandleEvent(ACTOR_SELF, N(handleEvent_8021E8AC)); -}); +EvtSource N(8021E584) = { + EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021F0D8))) + EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021E5D0))) + EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021E8AC))) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_8021E5D0) = SCRIPT({ -10: - RandInt(80, EVT_VAR(0)); - EVT_VAR(0) += 80; - loop EVT_VAR(0) { - 0: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 0; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021E538)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021E4EC)); - loop 20 { - 1: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 1; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021E538)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021E4EC)); - loop 80 { - 2: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 2; - } - sleep 1; - } - goto 10; -}); +EvtSource N(idle_8021E5D0) = { + EVT_LABEL(10) + EVT_CALL(RandInt, 80, EVT_VAR(0)) + EVT_ADD(EVT_VAR(0), 80) + EVT_LOOP(EVT_VAR(0)) + EVT_LABEL(0) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021E538))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021E4EC))) + EVT_LOOP(20) + EVT_LABEL(1) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(1) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021E538))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021E4EC))) + EVT_LOOP(80) + EVT_LABEL(2) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(2) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; -EvtSource N(handleEvent_8021E8AC) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - GetLastEvent(ACTOR_SELF, EVT_VAR(0)); - match EVT_VAR(0) { - EVENT_HIT_COMBO, EVENT_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoNormalHit; - } - == EVENT_BURN_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoBurnHit; - } - == EVENT_BURN_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoBurnHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_burn_dead; - await DoDeath; - return; - } - == EVENT_SPIN_SMASH_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoSpinSmashHit; - } - == EVENT_SPIN_SMASH_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoSpinSmashHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_SHOCK_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoJumpBack; - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - } - == EVENT_SHOCK_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_STAR_BEAM, 23, EVENT_IMMUNE, EVENT_AIR_LIFT_FAILED { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_idle; - await DoImmune; - } - == EVENT_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoNormalHit; - sleep 10; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_dead; - await DoDeath; - return; - } - == EVENT_END_FIRST_STRIKE { - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 4.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - HPBarToHome(ACTOR_SELF); - } - == EVENT_RECOVER_STATUS { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_idle; - await DoRecover; - } - == EVENT_SCARE_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_run; - EVT_VAR(2) = (const) NPC_ANIM_goomba_normal_pain; - await DoScareAway; - return; - } - == EVENT_BEGIN_AIR_LIFT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_run; - await DoAirLift; - } - == EVENT_BLOW_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_goomba_normal_pain; - await DoBlowAway; - return; - } - else { - } - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(handleEvent_8021E8AC) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(9) + EVT_CASE_OR_EQ(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_END_CASE_GROUP + EVT_CASE_EQ(14) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_CASE_EQ(36) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_pain) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoBurnHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_burn_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(11) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_CASE_EQ(33) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(47) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoJumpBack) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CASE_EQ(38) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(19) + EVT_CASE_OR_EQ(23) + EVT_CASE_OR_EQ(25) + EVT_CASE_OR_EQ(31) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_idle) + EVT_EXEC_WAIT(DoImmune) + EVT_END_CASE_GROUP + EVT_CASE_EQ(32) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_WAIT_FRAMES(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(53) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(4.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(HPBarToHome, ACTOR_SELF) + EVT_CASE_EQ(49) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_idle) + EVT_EXEC_WAIT(DoRecover) + EVT_CASE_EQ(57) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_run) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoScareAway) + EVT_RETURN + EVT_CASE_EQ(58) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_run) + EVT_EXEC_WAIT(DoAirLift) + EVT_CASE_EQ(22) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_goomba_normal_pain) + EVT_EXEC_WAIT(DoBlowAway) + EVT_RETURN + EVT_CASE_DEFAULT + EVT_END_SWITCH + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; #include "anglestuff.inc.c" -EvtSource N(takeTurn_8021F0D8) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetTargetActor(ACTOR_SELF, ACTOR_PLAYER); - UseBattleCamPreset(63); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToTarget(ACTOR_SELF); - AddGoalPos(ACTOR_SELF, 50, 0, 0); - SetActorSpeed(ACTOR_SELF, 6.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorDispOffset(ACTOR_SELF, 0, -1, 0); - sleep 1; - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16); - match EVT_VAR(0) { - HIT_RESULT_MISS, HIT_RESULT_LUCKY { - EVT_VAR(10) = EVT_VAR(0); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 10; - EVT_VAR(1) = 10; - EVT_VAR(2) += 3; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_asleep); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 5, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 7, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain); - sleep 5; - if (EVT_VAR(10) == 5) { - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0); - } - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) = 0; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 2.0); - spawn { - sleep 4; - EVT_VAR(0) = 180; - loop 4 { - EVT_VAR(0) -= 45; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 15, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy); - sleep 5; - UseBattleCamPreset(2); - YieldTurn(); - SetActorYaw(ACTOR_SELF, 180); - AddActorDecoration(ACTOR_SELF, 1, 0, 2); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - SetActorYaw(ACTOR_SELF, 0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - RemoveActorDecoration(ACTOR_SELF, 1, 0); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); - return; - } - else { - SetGoalToTarget(ACTOR_SELF); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pre_headbonk); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - sleep 1; - } - } - EnemyDamageTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32); - match EVT_VAR(0) { - HIT_RESULT_HIT, 2 { - UseBattleCamPreset(2); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 40; - EVT_VAR(1) = 0; - SetActorJumpGravity(ACTOR_SELF, 1.8); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, TRUE, FALSE); - EVT_VAR(0) += 30; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 8, FALSE, TRUE, FALSE); - EVT_VAR(0) += 20; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 6, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle); - sleep 3; - YieldTurn(); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - } - } - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(takeTurn_8021F0D8) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER) + EVT_CALL(UseBattleCamPreset, 63) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(6.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -1, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(6) + EVT_CASE_OR_EQ(5) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 10) + EVT_SET(EVT_VAR(1), 10) + EVT_ADD(EVT_VAR(2), 3) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_asleep) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 5, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 7, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pain) + EVT_WAIT_FRAMES(5) + EVT_IF_EQ(EVT_VAR(10), 5) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0) + EVT_END_IF + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(2.0)) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 180) + EVT_LOOP(4) + EVT_SUB(EVT_VAR(0), 45) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_dizzy) + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(YieldTurn) + EVT_CALL(SetActorYaw, ACTOR_SELF, 180) + EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(SetActorYaw, ACTOR_SELF, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_pre_headbonk) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_END_SWITCH + EVT_CALL(EnemyDamageTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 1, 32) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 40) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.8)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 30) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 20) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_idle) + EVT_WAIT_FRAMES(3) + EVT_CALL(YieldTurn) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_goomba_normal_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/area_kmr_part_1/actor/spiked_goomba.c b/src/battle/area_kmr_part_1/actor/spiked_goomba.c index 7e4caea8e1..11fd99dba1 100644 --- a/src/battle/area_kmr_part_1/actor/spiked_goomba.c +++ b/src/battle/area_kmr_part_1/actor/spiked_goomba.c @@ -106,373 +106,372 @@ EvtSource N(takeTurn_8021BDDC); EvtSource N(idle_8021B1B8); EvtSource N(handleEvent_8021B494); -EvtSource N(init_8021B16C) = SCRIPT({ - BindTakeTurn(ACTOR_SELF, N(takeTurn_8021BDDC)); - BindIdle(ACTOR_SELF, N(idle_8021B1B8)); - BindHandleEvent(ACTOR_SELF, N(handleEvent_8021B494)); -}); +EvtSource N(init_8021B16C) = { + EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021BDDC))) + EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021B1B8))) + EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021B494))) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_8021B1B8) = SCRIPT({ -10: - RandInt(80, EVT_VAR(0)); - EVT_VAR(0) += 80; - loop EVT_VAR(0) { - 0: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 0; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021B120)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021B0D4)); - loop 20 { - 1: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 1; - } - sleep 1; - } - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 5; - SetActorIdleSpeed(ACTOR_SELF, 1.0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021B120)); - SetIdleGoal(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - IdleRunToGoal(ACTOR_SELF, 0); - SetIdleAnimations(ACTOR_SELF, 1, N(idleAnimations_8021B0D4)); - loop 80 { - 2: - GetStatusFlags(ACTOR_SELF, EVT_VAR(1)); - if (EVT_VAR(1) & 3526656) { - sleep 1; - goto 2; - } - sleep 1; - } - goto 10; -}); +EvtSource N(idle_8021B1B8) = { + EVT_LABEL(10) + EVT_CALL(RandInt, 80, EVT_VAR(0)) + EVT_ADD(EVT_VAR(0), 80) + EVT_LOOP(EVT_VAR(0)) + EVT_LABEL(0) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021B120))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021B0D4))) + EVT_LOOP(20) + EVT_LABEL(1) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(1) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 5) + EVT_CALL(SetActorIdleSpeed, ACTOR_SELF, EVT_FIXED(1.0)) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021B120))) + EVT_CALL(SetIdleGoal, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(IdleRunToGoal, -127, 0) + EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021B0D4))) + EVT_LOOP(80) + EVT_LABEL(2) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(1)) + EVT_IF_FLAG(EVT_VAR(1), 0x35D000) + EVT_WAIT_FRAMES(1) + EVT_GOTO(2) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; -EvtSource N(handleEvent_8021B494) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - GetLastEvent(ACTOR_SELF, EVT_VAR(0)); - match EVT_VAR(0) { - EVENT_HIT_COMBO, EVENT_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoNormalHit; - } - == EVENT_BURN_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_burn_dead; - EVT_VAR(2) = (const) NPC_ANIM_spiked_goomba_default_burn_pain; - await DoBurnHit; - } - == EVENT_BURN_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_burn_dead; - EVT_VAR(2) = (const) NPC_ANIM_spiked_goomba_default_burn_pain; - await DoBurnHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_burn_pain; - await DoDeath; - return; - } - == EVENT_SPIN_SMASH_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoSpinSmashHit; - } - == EVENT_SPIN_SMASH_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoSpinSmashHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_dead; - await DoDeath; - return; - } - == EVENT_SHOCK_HIT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoJumpBack; - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_dizzy); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - } - == EVENT_SHOCK_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_electrocute; - await DoShockHit; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_dead; - await DoDeath; - return; - } - == EVENT_STAR_BEAM, 23, EVENT_IMMUNE, EVENT_AIR_LIFT_FAILED { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_idle; - await DoImmune; - } - == EVENT_DEATH { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoNormalHit; - sleep 10; - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_dead; - await DoDeath; - return; - } - == EVENT_END_FIRST_STRIKE { - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 4.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - HPBarToHome(ACTOR_SELF); - } - == EVENT_RECOVER_STATUS { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_idle; - await DoRecover; - } - == EVENT_SCARE_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_run; - EVT_VAR(2) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoScareAway; - return; - } - == EVENT_BEGIN_AIR_LIFT { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_run; - await DoAirLift; - } - == EVENT_BLOW_AWAY { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_spiked_goomba_default_pain; - await DoBlowAway; - return; - } - == EVENT_SPIKE_TAUNT { - GetStatusFlags(ACTOR_SELF, EVT_VAR(0)); - if (EVT_VAR(0) !& 3526656) { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_laugh); - } - sleep 10; - GetActorPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetStatusFlags(ACTOR_SELF, EVT_VAR(3)); - if (EVT_VAR(3) & 524288) { - EVT_VAR(1) += 10; - } else { - EVT_VAR(1) += 26; - } - PlayEffect(0x1A, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20, 0, 0, 0, 0, 0, 0, 0, 0); - sleep 20; - } - else { - } - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(handleEvent_8021B494) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(GetLastEvent, ACTOR_SELF, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(9) + EVT_CASE_OR_EQ(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_END_CASE_GROUP + EVT_CASE_EQ(14) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_burn_dead) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_spiked_goomba_default_burn_pain) + EVT_EXEC_WAIT(DoBurnHit) + EVT_CASE_EQ(36) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_burn_dead) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_spiked_goomba_default_burn_pain) + EVT_EXEC_WAIT(DoBurnHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_burn_pain) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(11) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_CASE_EQ(33) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoSpinSmashHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(47) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoJumpBack) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_dizzy) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CASE_EQ(38) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_electrocute) + EVT_EXEC_WAIT(DoShockHit) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(19) + EVT_CASE_OR_EQ(23) + EVT_CASE_OR_EQ(25) + EVT_CASE_OR_EQ(31) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_idle) + EVT_EXEC_WAIT(DoImmune) + EVT_END_CASE_GROUP + EVT_CASE_EQ(32) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoNormalHit) + EVT_WAIT_FRAMES(10) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_dead) + EVT_EXEC_WAIT(DoDeath) + EVT_RETURN + EVT_CASE_EQ(53) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(4.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(HPBarToHome, ACTOR_SELF) + EVT_CASE_EQ(49) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_idle) + EVT_EXEC_WAIT(DoRecover) + EVT_CASE_EQ(57) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_run) + EVT_SET_CONST(EVT_VAR(2), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoScareAway) + EVT_RETURN + EVT_CASE_EQ(58) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_run) + EVT_EXEC_WAIT(DoAirLift) + EVT_CASE_EQ(22) + EVT_SET_CONST(EVT_VAR(0), 0x00000001) + EVT_SET_CONST(EVT_VAR(1), NPC_ANIM_spiked_goomba_default_pain) + EVT_EXEC_WAIT(DoBlowAway) + EVT_RETURN + EVT_CASE_EQ(27) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(0)) + EVT_IF_NOT_FLAG(EVT_VAR(0), 0x35D000) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_laugh) + EVT_END_IF + EVT_WAIT_FRAMES(10) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetStatusFlags, ACTOR_SELF, EVT_VAR(3)) + EVT_IF_FLAG(EVT_VAR(3), 0x80000) + EVT_ADD(EVT_VAR(1), 10) + EVT_ELSE + EVT_ADD(EVT_VAR(1), 26) + EVT_END_IF + EVT_CALL(PlayEffect, 0x1A, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(20) + EVT_CASE_DEFAULT + EVT_END_SWITCH + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; #include "anglestuff.inc.c" -EvtSource N(takeTurn_8021BDDC) = SCRIPT({ - UseIdleAnimation(ACTOR_SELF, FALSE); - EnableIdleScript(ACTOR_SELF, FALSE); - SetTargetActor(ACTOR_SELF, ACTOR_PLAYER); - UseBattleCamPreset(63); - BattleCamTargetActor(ACTOR_SELF); - func_8024ECF8(-1, 1, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run); - SetGoalToTarget(ACTOR_SELF); - AddGoalPos(ACTOR_SELF, 50, 0, 0); - SetActorSpeed(ACTOR_SELF, 6.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - SetActorDispOffset(ACTOR_SELF, 0, -1, 0); - sleep 1; - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16); - match EVT_VAR(0) { - HIT_RESULT_MISS, HIT_RESULT_LUCKY { - EVT_VAR(10) = EVT_VAR(0); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 10; - EVT_VAR(1) = 10; - EVT_VAR(2) += 3; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_sleep); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 5, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, -2, 0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - SetActorDispOffset(ACTOR_SELF, 0, 7, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_pain); - sleep 5; - if (EVT_VAR(10) == 5) { - EnemyTestTarget(ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0); - } - sleep 5; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) = 0; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_SELF, 2.0); - spawn { - sleep 4; - EVT_VAR(0) = 180; - loop 4 { - EVT_VAR(0) -= 45; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - } - JumpToGoal(ACTOR_SELF, 15, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_dizzy); - sleep 5; - UseBattleCamPreset(2); - YieldTurn(); - SetActorYaw(ACTOR_SELF, 180); - AddActorDecoration(ACTOR_SELF, 1, 0, 2); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - SetActorYaw(ACTOR_SELF, 0); - sleep 5; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - SetActorJumpGravity(ACTOR_SELF, 1.6); - JumpToGoal(ACTOR_SELF, 5, FALSE, TRUE, FALSE); - RemoveActorDecoration(ACTOR_SELF, 1, 0); - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); - return; - } - else { - SetGoalToTarget(ACTOR_SELF); - SetActorJumpGravity(ACTOR_SELF, 1.2); - spawn { - GetActorPos(ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)); - EVT_VAR(0) = 0; - loop 16 { - GetActorPos(ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)); - N(AngleCalculate)(EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)); - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - EVT_VAR(1) = EVT_VAR(4); - EVT_VAR(2) = EVT_VAR(5); - EVT_VAR(3) = EVT_VAR(6); - sleep 1; - } - } - spawn { - sleep 6; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - } - JumpToGoal(ACTOR_SELF, 16, FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3, 0.5, 1.0); - sleep 1; - } - } - EnemyDamageTarget(ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 2, 32); - match EVT_VAR(0) { - HIT_RESULT_HIT, 2 { - UseBattleCamPreset(2); - SetActorScale(ACTOR_SELF, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 40; - EVT_VAR(1) = 0; - SetActorJumpGravity(ACTOR_SELF, 1.8); - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 10, FALSE, TRUE, FALSE); - EVT_VAR(0) += 30; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 8, FALSE, TRUE, FALSE); - EVT_VAR(0) += 20; - SetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_SELF, 6, FALSE, TRUE, FALSE); - GetLastDamage(0, EVT_VAR(0)); - if (EVT_VAR(0) > 0) { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_laugh); - sleep 15; - } else { - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle); - sleep 3; - } - YieldTurn(); - SetAnimationRate(ACTOR_SELF, 1, 2.0); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run); - SetGoalToHome(ACTOR_SELF); - SetActorSpeed(ACTOR_SELF, 8.0); - RunToGoal(ACTOR_SELF, 0, FALSE); - SetAnimationRate(ACTOR_SELF, 1, 1.0); - } - } - EnableIdleScript(ACTOR_SELF, TRUE); - UseIdleAnimation(ACTOR_SELF, TRUE); -}); +EvtSource N(takeTurn_8021BDDC) = { + EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 0) + EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER) + EVT_CALL(UseBattleCamPreset, 63) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(func_8024ECF8, -1, 1, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(6.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -1, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 1, 16) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(6) + EVT_CASE_OR_EQ(5) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 10) + EVT_SET(EVT_VAR(1), 10) + EVT_ADD(EVT_VAR(2), 3) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_sleep) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 5, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 7, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_pain) + EVT_WAIT_FRAMES(5) + EVT_IF_EQ(EVT_VAR(10), 5) + EVT_CALL(EnemyTestTarget, ACTOR_SELF, EVT_VAR(0), ((0x80000000)), 0, 0, 0) + EVT_END_IF + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(2.0)) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 180) + EVT_LOOP(4) + EVT_SUB(EVT_VAR(0), 45) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_dizzy) + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(YieldTurn) + EVT_CALL(SetActorYaw, ACTOR_SELF, 180) + EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_CALL(SetActorYaw, ACTOR_SELF, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.6)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE) + EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0) + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.2)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(1), EVT_VAR(2), EVT_VAR(0)) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(16) + EVT_CALL(GetActorPos, ACTOR_SELF, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6)) + EVT_CALL(N(AngleCalculate), EVT_VAR(1), EVT_VAR(2), EVT_VAR(4), EVT_VAR(5), EVT_VAR(0)) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, EVT_VAR(0)) + EVT_SET(EVT_VAR(1), EVT_VAR(4)) + EVT_SET(EVT_VAR(2), EVT_VAR(5)) + EVT_SET(EVT_VAR(3), EVT_VAR(6)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(6) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_END_THREAD + EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_headbonk) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_END_SWITCH + EVT_CALL(EnemyDamageTarget, ACTOR_SELF, EVT_VAR(0), ((0)), 0, 0, 2, 32) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 40) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FIXED(1.8)) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 30) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE) + EVT_ADD(EVT_VAR(0), 20) + EVT_CALL(SetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE) + EVT_CALL(GetLastDamage, 0, EVT_VAR(0)) + EVT_IF_GT(EVT_VAR(0), 0) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_laugh) + EVT_WAIT_FRAMES(15) + EVT_ELSE + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_idle) + EVT_WAIT_FRAMES(3) + EVT_END_IF + EVT_CALL(YieldTurn) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_spiked_goomba_default_run) + EVT_CALL(SetGoalToHome, ACTOR_SELF) + EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FIXED(8.0)) + EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE) + EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FIXED(1.0)) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(EnableIdleScript, ACTOR_SELF, 1) + EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/area_kmr_part_1/stage/clouds.inc.c b/src/battle/area_kmr_part_1/stage/clouds.inc.c index 3975edc989..5aa77587bb 100644 --- a/src/battle/area_kmr_part_1/stage/clouds.inc.c +++ b/src/battle/area_kmr_part_1/stage/clouds.inc.c @@ -1,59 +1,65 @@ #include "common/UnkAngleFunc2.inc.c" -EvtSource N(clouds1) = SCRIPT({ - EVT_VAR(10) = EVT_VAR(0); - EVT_VAR(7) = EVT_VAR(2); - EVT_VAR(7) *= 10; -0: - EVT_VAR(7) += 4; - if (EVT_VAR(7) > 3599) { - EVT_VAR(7) -= 3600; - } - N(UnkAngleFunc2)(EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - TranslateModel(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - RotateModel(EVT_VAR(10), EVT_VAR(3), 0, 1, 0); - sleep 1; - goto 0; -}); +EvtSource N(clouds1) = { + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_SET(EVT_VAR(7), EVT_VAR(2)) + EVT_MUL(EVT_VAR(7), 10) + EVT_LABEL(0) + EVT_ADD(EVT_VAR(7), 4) + EVT_IF_GT(EVT_VAR(7), 3599) + EVT_SUB(EVT_VAR(7), 3600) + EVT_END_IF + EVT_CALL(N(UnkAngleFunc2), EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(TranslateModel, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(RotateModel, EVT_VAR(10), EVT_VAR(3), 0, 1, 0) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_RETURN + EVT_END +}; -EvtSource N(clouds2) = SCRIPT({ - EVT_VAR(10) = EVT_VAR(0); - EVT_VAR(11) = EVT_VAR(3); - EVT_VAR(12) = EVT_VAR(4); - EVT_VAR(7) = EVT_VAR(2); - EVT_VAR(7) *= 10; -0: - EVT_VAR(7) += 4; - if (EVT_VAR(7) > 3599) { - EVT_VAR(7) -= 3600; - } - N(UnkAngleFunc2)(EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - EVT_VAR(1) += (float) EVT_VAR(11); - EVT_VAR(2) += (float) EVT_VAR(12); - TranslateModel(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - RotateModel(EVT_VAR(10), EVT_VAR(3), 0, 1, 0); - sleep 1; - goto 0; -}); +EvtSource N(clouds2) = { + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_SET(EVT_VAR(11), EVT_VAR(3)) + EVT_SET(EVT_VAR(12), EVT_VAR(4)) + EVT_SET(EVT_VAR(7), EVT_VAR(2)) + EVT_MUL(EVT_VAR(7), 10) + EVT_LABEL(0) + EVT_ADD(EVT_VAR(7), 4) + EVT_IF_GT(EVT_VAR(7), 3599) + EVT_SUB(EVT_VAR(7), 3600) + EVT_END_IF + EVT_CALL(N(UnkAngleFunc2), EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_ADDF(EVT_VAR(1), EVT_VAR(11)) + EVT_ADDF(EVT_VAR(2), EVT_VAR(12)) + EVT_CALL(TranslateModel, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(RotateModel, EVT_VAR(10), EVT_VAR(3), 0, 1, 0) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_RETURN + EVT_END +}; -EvtSource N(clouds3) = SCRIPT({ - EVT_VAR(10) = EVT_VAR(0); - EVT_VAR(11) = EVT_VAR(3); - EVT_VAR(12) = EVT_VAR(4); - EVT_VAR(13) = EVT_VAR(5); - EVT_VAR(7) = EVT_VAR(2); - EVT_VAR(7) *= 10; -0: - EVT_VAR(7) += 4; - if (EVT_VAR(7) > 3599) { - EVT_VAR(7) -= 3600; - } - N(UnkAngleFunc2)(EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - EVT_VAR(0) += (float) EVT_VAR(11); - EVT_VAR(1) += (float) EVT_VAR(12); - EVT_VAR(2) += (float) EVT_VAR(13); - TranslateModel(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - RotateModel(EVT_VAR(10), EVT_VAR(3), 0, 1, 0); - sleep 1; - goto 0; -}); +EvtSource N(clouds3) = { + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_SET(EVT_VAR(11), EVT_VAR(3)) + EVT_SET(EVT_VAR(12), EVT_VAR(4)) + EVT_SET(EVT_VAR(13), EVT_VAR(5)) + EVT_SET(EVT_VAR(7), EVT_VAR(2)) + EVT_MUL(EVT_VAR(7), 10) + EVT_LABEL(0) + EVT_ADD(EVT_VAR(7), 4) + EVT_IF_GT(EVT_VAR(7), 3599) + EVT_SUB(EVT_VAR(7), 3600) + EVT_END_IF + EVT_CALL(N(UnkAngleFunc2), EVT_VAR(7), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_ADDF(EVT_VAR(0), EVT_VAR(11)) + EVT_ADDF(EVT_VAR(1), EVT_VAR(12)) + EVT_ADDF(EVT_VAR(2), EVT_VAR(13)) + EVT_CALL(TranslateModel, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(RotateModel, EVT_VAR(10), EVT_VAR(3), 0, 1, 0) + EVT_WAIT_FRAMES(1) + EVT_GOTO(0) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/area_kmr_part_1/stage/kmr_02.c b/src/battle/area_kmr_part_1/stage/kmr_02.c index 44f973a649..8d7741604a 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_02.c +++ b/src/battle/area_kmr_part_1/stage/kmr_02.c @@ -3,12 +3,16 @@ #define NAMESPACE b_area_kmr_part_1_kmr_02 -EvtSource N(beforeBattle_8021FDA0) = SCRIPT({ - SetSpriteShading(-1); -}); +EvtSource N(beforeBattle_8021FDA0) = { + EVT_CALL(SetSpriteShading, -1) + EVT_RETURN + EVT_END +}; -EvtSource N(afterBattle_8021FDC0) = SCRIPT({ -}); +EvtSource N(afterBattle_8021FDC0) = { + EVT_RETURN + EVT_END +}; Stage NAMESPACE = { .texture = "kmr_tex", diff --git a/src/battle/area_kmr_part_1/stage/kmr_03.c b/src/battle/area_kmr_part_1/stage/kmr_03.c index 143a797aa0..66bff62f74 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_03.c +++ b/src/battle/area_kmr_part_1/stage/kmr_03.c @@ -5,20 +5,22 @@ #include "clouds.inc.c" -EvtSource N(beforeBattle_80220188) = SCRIPT({ - SetSpriteShading(-1); +EvtSource N(beforeBattle_80220188) = { + EVT_CALL(SetSpriteShading, -1) + EVT_SET(EVT_VAR(0), 1) + EVT_SET(EVT_VAR(2), 0) + EVT_EXEC(N(clouds1)) + EVT_SET(EVT_VAR(0), 4) + EVT_SET(EVT_VAR(2), 70) + EVT_EXEC(N(clouds1)) + EVT_RETURN + EVT_END +}; - EVT_VAR(0) = 1; // model - EVT_VAR(2) = 0; // speed - spawn N(clouds1); - - EVT_VAR(0) = 4; - EVT_VAR(2) = 70; - spawn N(clouds1); -}); - -EvtSource N(afterBattle_80220200) = SCRIPT({ -}); +EvtSource N(afterBattle_80220200) = { + EVT_RETURN + EVT_END +}; s32 N(foregroundModelList_80220210)[] = { 0x00000027, 0x0000002B, 0x00000000, diff --git a/src/battle/area_kmr_part_1/stage/kmr_04.c b/src/battle/area_kmr_part_1/stage/kmr_04.c index 1066584bc9..4cd5df8574 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_04.c +++ b/src/battle/area_kmr_part_1/stage/kmr_04.c @@ -5,21 +5,22 @@ #include "clouds.inc.c" -EvtSource N(beforeBattle_802205D8) = SCRIPT({ - SetSpriteShading(-1); +EvtSource N(beforeBattle_802205D8) = { + EVT_CALL(SetSpriteShading, -1) + EVT_SET(EVT_VAR(0), 1) + EVT_SET(EVT_VAR(2), 0) + EVT_EXEC(N(clouds1)) + EVT_SET(EVT_VAR(0), 4) + EVT_SET(EVT_VAR(2), 70) + EVT_EXEC(N(clouds1)) + EVT_RETURN + EVT_END +}; - EVT_VAR(0) = 1; - EVT_VAR(2) = 0; - spawn N(clouds1); - - EVT_VAR(0) = 4; - EVT_VAR(2) = 70; - spawn N(clouds1); -}); - -EvtSource N(afterBattle_80220650) = SCRIPT({ - -}); +EvtSource N(afterBattle_80220650) = { + EVT_RETURN + EVT_END +}; s32 N(foregroundModelList_80220660)[] = { 0x00000024, 0x00000020, 0x00000000, diff --git a/src/battle/area_kmr_part_1/stage/kmr_05.c b/src/battle/area_kmr_part_1/stage/kmr_05.c index b359c897b6..2aa447fd30 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_05.c +++ b/src/battle/area_kmr_part_1/stage/kmr_05.c @@ -5,14 +5,17 @@ #include "clouds.inc.c" -EvtSource N(beforeBattle_80220A28) = SCRIPT({ - SetSpriteShading(-1); - EnableModel(27, 0); -}); +EvtSource N(beforeBattle_80220A28) = { + EVT_CALL(SetSpriteShading, -1) + EVT_CALL(EnableModel, 27, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(afterBattle_80220A5C) = SCRIPT({ - -}); +EvtSource N(afterBattle_80220A5C) = { + EVT_RETURN + EVT_END +}; s32 N(foregroundModelList_80220A6C)[] = { 0x00000020, 0x00000024, 0x00000000, diff --git a/src/battle/area_kmr_part_1/stage/kmr_06.c b/src/battle/area_kmr_part_1/stage/kmr_06.c index bfcc36bbec..d7277a42f4 100644 --- a/src/battle/area_kmr_part_1/stage/kmr_06.c +++ b/src/battle/area_kmr_part_1/stage/kmr_06.c @@ -6,23 +6,23 @@ #include "clouds.inc.c" #include "common/UnkFogFunc.inc.c" -EvtSource N(beforeBattle_80220E28) = SCRIPT({ - SetSpriteShading(-1); +EvtSource N(beforeBattle_80220E28) = { + EVT_CALL(SetSpriteShading, -1) + EVT_CALL(N(UnkFogFunc)) + EVT_SET(EVT_VAR(0), 1) + EVT_SET(EVT_VAR(2), 0) + EVT_EXEC(N(clouds1)) + EVT_SET(EVT_VAR(0), 4) + EVT_SET(EVT_VAR(2), 70) + EVT_EXEC(N(clouds1)) + EVT_RETURN + EVT_END +}; - N(UnkFogFunc)(); - - EVT_VAR(0) = 1; - EVT_VAR(2) = 0; - spawn N(clouds1); - - EVT_VAR(0) = 4; - EVT_VAR(2) = 70; - spawn N(clouds1); -}); - -EvtSource N(afterBattle_80220EAC) = SCRIPT({ - -}); +EvtSource N(afterBattle_80220EAC) = { + EVT_RETURN + EVT_END +}; s32 N(foregroundModelList_80220EBC)[] = { 0x0000001D, 0x00000022, 0x00000021, 0x00000000, diff --git a/src/battle/item/UseItem.inc.c b/src/battle/item/UseItem.inc.c index 7bfce3229d..5dbf19a138 100644 --- a/src/battle/item/UseItem.inc.c +++ b/src/battle/item/UseItem.inc.c @@ -1,107 +1,103 @@ #include "common.h" /// Provide arg `TRUE` on `EVT_VAR(1)` to disable refunding. -EvtSource N(UseItemWithEffect) = SCRIPT({ - if (EVT_VAR(1) == 0) { - UseBattleCamPreset(69); // Nice - sleep 10; +EvtSource N(UseItemWithEffect) = { + EVT_IF_EQ(EVT_VAR(1), 0) + EVT_CALL(UseBattleCamPreset, 69) + EVT_WAIT_FRAMES(10) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_208D) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_GOT_ITEM) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 18) + EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FIXED(4.0)) + EVT_CALL(SetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(PlayerRunToGoal, 0) + EVT_ADD(EVT_VAR(1), 45) + EVT_SET(EVT_VAR(3), EVT_VAR(1)) + EVT_ADD(EVT_VAR(3), 10) + EVT_ADD(EVT_VAR(3), 2) + EVT_CALL(PlayEffect, 0x33, 1, EVT_VAR(0), EVT_VAR(3), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(MakeItemEntity, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_CALL(N(GiveRefund)) + EVT_WAIT_FRAMES(EVT_VAR(0)) + EVT_WAIT_FRAMES(15) + EVT_CALL(N(GiveRefundCleanup)) + EVT_CALL(RemoveItemEntity, EVT_VAR(10)) + EVT_ELSE + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_208D) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_GOT_ITEM) + EVT_WAIT_FRAMES(4) + EVT_ADD(EVT_VAR(1), 45) + EVT_SET(EVT_VAR(3), EVT_VAR(1)) + EVT_ADD(EVT_VAR(3), 10) + EVT_ADD(EVT_VAR(3), 2) + EVT_CALL(PlayEffect, 0x33, 1, EVT_VAR(0), EVT_VAR(3), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(MakeItemEntity, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_WAIT_FRAMES(15) + EVT_CALL(RemoveItemEntity, EVT_VAR(10)) + EVT_END_IF + EVT_RETURN + EVT_END +}; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_208D); - SetAnimation(ACTOR_PLAYER, 0, ANIM_GOT_ITEM); - GetActorPos(ACTOR_PLAYER, $x, $y, $z); - $x += 18; - SetActorSpeed(ACTOR_PLAYER, 4.0); - SetGoalPos(ACTOR_PLAYER, $x, $y, $z); - PlayerRunToGoal(ACTOR_PLAYER); +EvtSource N(UseItem) = { + EVT_CALL(UseBattleCamPreset, 19) + EVT_CALL(SetBattleCamTarget, -85, 1, 0) + EVT_CALL(SetBattleCamOffsetZ, 41) + EVT_CALL(SetBattleCamZoom, 248) + EVT_CALL(MoveBattleCamOver, 30) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_GOT_ITEM) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 45) + EVT_CALL(MakeItemEntity, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(14), EVT_VAR(0)) + EVT_CALL(N(GiveRefund)) + EVT_WAIT_FRAMES(EVT_VAR(0)) + EVT_WAIT_FRAMES(15) + EVT_CALL(N(GiveRefundCleanup)) + EVT_CALL(RemoveItemEntity, EVT_VAR(14)) + EVT_RETURN + EVT_END +}; - $y += 45; - $effectY = $y; - $effectY += 10; - $effectY += 2; - PlayEffect(0x33, 1, $x, $effectY, $z, 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - MakeItemEntity(EVT_VAR(10), $x, $y, $z, 1, 0); - EVT_VAR(10) = $x; +EvtSource N(PlayerGoHome) = { + EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE) + EVT_CALL(SetGoalToHome, ACTOR_PLAYER) + EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FIXED(8.0)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_RUNNING) + EVT_CALL(PlayerRunToGoal, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE) + EVT_RETURN + EVT_END +}; - N(GiveRefund)(); - sleep $x; +EvtSource N(EatItem) = { + EVT_THREAD + EVT_LOOP(4) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_2095) + EVT_WAIT_FRAMES(10) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_EAT) + EVT_WAIT_FRAMES(45) + EVT_RETURN + EVT_END +}; - sleep 15; - - N(GiveRefundCleanup)(); - RemoveItemEntity(EVT_VAR(10)); - } else { - // No refund. - - GetActorPos(ACTOR_PLAYER, $x, $y, $z); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_208D); - SetAnimation(ACTOR_PLAYER, 0, ANIM_GOT_ITEM); - sleep 4; - - $y += 45; - $effectY = $y; - $effectY += 10; - $effectY += 2; - PlayEffect(0x33, 1, $x, $effectY, $z, 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - MakeItemEntity(EVT_VAR(10), $x, $y, $z, 1, 0); - EVT_VAR(10) = $x; - - sleep 15; - RemoveItemEntity(EVT_VAR(10)); - } -}); - -EvtSource N(UseItem) = SCRIPT({ - UseBattleCamPreset(19); - SetBattleCamTarget(-85, 1, 0); - SetBattleCamOffsetZ(41); - SetBattleCamZoom(248); - MoveBattleCamOver(30); - sleep 10; - - SetAnimation(ACTOR_PLAYER, 0, ANIM_GOT_ITEM); - GetActorPos(ACTOR_PLAYER, $x, $y, $z); - $y += 45; - MakeItemEntity(EVT_VAR(10), $x, $y, $z, 1, 0); - EVT_VAR(14) = $x; - - N(GiveRefund)(); - sleep $x; - - sleep 15; - - N(GiveRefundCleanup)(); - RemoveItemEntity(EVT_VAR(14)); -}); - -EvtSource N(PlayerGoHome) = SCRIPT({ - UseIdleAnimation(ACTOR_PLAYER, 0); - SetGoalToHome(ACTOR_PLAYER); - SetActorSpeed(ACTOR_PLAYER, 8.0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_RUNNING); - PlayerRunToGoal(ACTOR_PLAYER); - - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - UseIdleAnimation(ACTOR_PLAYER, 1); -}); - -EvtSource N(EatItem) = SCRIPT({ - spawn { - loop 4 { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_2095); - sleep 10; - } - } - SetAnimation(ACTOR_PLAYER, 0, ANIM_EAT); - sleep 45; -}); - -EvtSource N(DrinkItem) = SCRIPT({ - spawn { - loop 4 { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_2095); - sleep 10; - } - } - SetAnimation(ACTOR_PLAYER, 0, ANIM_DRINK); - sleep 45; -}); +EvtSource N(DrinkItem) = { + EVT_THREAD + EVT_LOOP(4) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_2095) + EVT_WAIT_FRAMES(10) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_DRINK) + EVT_WAIT_FRAMES(45) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/coconut.c b/src/battle/item/coconut.c index 243d7723f5..04ee3c8c5e 100644 --- a/src/battle/item/coconut.c +++ b/src/battle/item/coconut.c @@ -45,61 +45,49 @@ s32 N(modelCommandList)[] = { 0x00000004, 0x0000000D, 0x00000001, sizeof(N(displayList)) / sizeof(s32), &N(displayList), 0x00000002, 0x00000000, }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_COCONUT; - - await N(UseItemWithEffect); - - UseBattleCamPreset(3); - MoveBattleCamOver(15); - - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - PlaySound(SOUND_THROW); - sleep 3; - - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - - $x = 1.0; - MultiplyByActorScale($x); - SetVirtualEntityScale(EVT_VAR(10), $x, $x, $x); - - GetActorPos(ACTOR_PLAYER, $x, $y, $z); - EVT_VAR(3) = 20; - EVT_VAR(4) = 42; - EVT_VAR(5) = 5; - MultiplyVec3ByActorScale(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - $x += EVT_VAR(3); - $y += EVT_VAR(4); - $z += EVT_VAR(5); - SetVirtualEntityPosition(EVT_VAR(10), $x, $y, $z); - - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, $x, $y, $z); - - spawn { - $x = 0; - loop 18 { - $x += -60; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, $x); - sleep 1; - } - } - - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.8); - $z += 5; - VirtualEntityJumpTo(EVT_VAR(10), $x, $y, $z, 18); - - GetItemPower(ITEM_COCONUT, $damage, EVT_VAR(4)); - ApplyShrinkFromOwner($damage); - ItemDamageEnemy(EVT_VAR(9), 0x18000000, 0, $damage, 32); - - // Bounce off - $x += 60; - $y += 0; - VirtualEntityJumpTo(EVT_VAR(10), $x, $y, $z, 16); - - DeleteVirtualEntity(EVT_VAR(10)); - - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x000000AC) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 15) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_CALL(PlaySound, SOUND_THROW) + EVT_WAIT_FRAMES(3) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_SETF(EVT_VAR(0), EVT_FIXED(1.0)) + EVT_CALL(MultiplyByActorScale, EVT_VAR(0)) + EVT_CALL(SetVirtualEntityScale, EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(3), 20) + EVT_SET(EVT_VAR(4), 42) + EVT_SET(EVT_VAR(5), 5) + EVT_CALL(MultiplyVec3ByActorScale, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_ADD(EVT_VAR(0), EVT_VAR(3)) + EVT_ADD(EVT_VAR(1), EVT_VAR(4)) + EVT_ADD(EVT_VAR(2), EVT_VAR(5)) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), -60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.8)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18) + EVT_CALL(GetItemPower, ITEM_COCONUT, EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(ApplyShrinkFromOwner, EVT_VAR(3)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(9), 402653184, 0, EVT_VAR(3), 32) + EVT_ADD(EVT_VAR(0), 60) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 16) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/dizzy_dial.c b/src/battle/item/dizzy_dial.c index 338b8af0dc..a7c1d9216a 100644 --- a/src/battle/item/dizzy_dial.c +++ b/src/battle/item/dizzy_dial.c @@ -45,52 +45,54 @@ ApiStatus N(func_802A1270_727B80)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_DIZZY_DIAL; - await N(UseItemWithEffect); - UseBattleCamPreset(2); - MoveBattleCamOver(20); - sleep 10; - spawn { - sleep 5; - AddBattleCamZoom(0xFFFFFF06); - MoveBattleCamOver(80); - func_8024ECF8(0, 0, 1); - sleep 80; - AddBattleCamZoom(250); - MoveBattleCamOver(3); - func_8024ECF8(0, 0, 1); - } - N(func_802A1270_727B80)(); - spawn { - StartRumble(8); - ShakeCam(1, 0, 2, 1.0); - ShakeCam(1, 0, 2, 4.0); - ShakeCam(1, 0, 2, 3.0); - ShakeCam(1, 0, 2, 2.0); - ShakeCam(1, 0, 2, 1.0); - ShakeCam(1, 0, 2, 0.5); - sleep 10; - UseBattleCamPreset(3); - MoveBattleCamOver(10); - func_8024ECF8(0, 0, 0); - } - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetItemPower(ITEM_DIZZY_DIAL, EVT_VAR(0), EVT_VAR(1)); - MakeStatusField(EVT_VAR(0), 0x40000, 100, EVT_VAR(0)); - func_80252B3C(EVT_VAR(0), 0x50000000, EVT_VAR(0), 0, 32); -1: - sleep 5; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - sleep 30; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000009A) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_WAIT_FRAMES(10) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(AddBattleCamZoom, -250) + EVT_CALL(MoveBattleCamOver, 80) + EVT_CALL(func_8024ECF8, 0, 0, 1) + EVT_WAIT_FRAMES(80) + EVT_CALL(AddBattleCamZoom, 250) + EVT_CALL(MoveBattleCamOver, 3) + EVT_CALL(func_8024ECF8, 0, 0, 1) + EVT_END_THREAD + EVT_CALL(N(func_802A1270_727B80)) + EVT_THREAD + EVT_CALL(StartRumble, 8) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(4.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(3.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(2.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_WAIT_FRAMES(10) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 10) + EVT_CALL(func_8024ECF8, 0, 0, 0) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetItemPower, ITEM_DIZZY_DIAL, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(MakeStatusField, EVT_VAR(0), 262144, 100, EVT_VAR(0)) + EVT_CALL(func_80252B3C, EVT_VAR(0), 1342177280, EVT_VAR(0), 0, 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/dried_shroom.c b/src/battle/item/dried_shroom.c index 1b486af11d..a8b67642db 100644 --- a/src/battle/item/dried_shroom.c +++ b/src/battle/item/dried_shroom.c @@ -27,25 +27,27 @@ ApiStatus N(func_802A12FC_71CFDC)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_DRIED_SHROOM; - await N(UseItemWithEffect); - await N(EatItem); - SetAnimation(ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A123C_71CF1C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1); - N(func_802A12FC_71CFDC)(); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) += 5; - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000008D) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A123C_71CF1C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1) + EVT_CALL(N(func_802A12FC_71CFDC)) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/dusty_hammer.c b/src/battle/item/dusty_hammer.c index 73cfdb6cb4..d644cb3672 100644 --- a/src/battle/item/dusty_hammer.c +++ b/src/battle/item/dusty_hammer.c @@ -44,47 +44,49 @@ s32 N(modelCommandList)[] = { 0x00000004, 0x0000000D, 0x00000001, sizeof(N(displayList)) / sizeof(s32), &N(displayList), 0x00000002, 0x00000000, }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) 0x86; - await N(UseItemWithEffect); - UseBattleCamPreset(3); - MoveBattleCamOver(15); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - PlaySound(SOUND_THROW); - sleep 3; - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - EVT_VAR(0) = 1.0; - MultiplyByActorScale(EVT_VAR(0)); - SetVirtualEntityScale(EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(3) = 20; - EVT_VAR(4) = 42; - EVT_VAR(5) = 5; - MultiplyVec3ByActorScale(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) += EVT_VAR(3); - EVT_VAR(1) += EVT_VAR(4); - EVT_VAR(2) += EVT_VAR(5); - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - EVT_VAR(0) = 0; - loop 18 { - EVT_VAR(0) += 0xFFFFFFC4; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.80078125); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18); - GetItemPower(ITEM_DUSTY_HAMMER, EVT_VAR(3), EVT_VAR(4)); - ApplyShrinkFromOwner(EVT_VAR(3)); - ItemDamageEnemy(EVT_VAR(9), 0x18000000, 0, EVT_VAR(3), 32); - EVT_VAR(0) += 40; - EVT_VAR(1) += 10; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - DeleteVirtualEntity(EVT_VAR(10)); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000086) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 15) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_CALL(PlaySound, SOUND_THROW) + EVT_WAIT_FRAMES(3) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_SETF(EVT_VAR(0), EVT_FIXED(1.0)) + EVT_CALL(MultiplyByActorScale, EVT_VAR(0)) + EVT_CALL(SetVirtualEntityScale, EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(3), 20) + EVT_SET(EVT_VAR(4), 42) + EVT_SET(EVT_VAR(5), 5) + EVT_CALL(MultiplyVec3ByActorScale, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_ADD(EVT_VAR(0), EVT_VAR(3)) + EVT_ADD(EVT_VAR(1), EVT_VAR(4)) + EVT_ADD(EVT_VAR(2), EVT_VAR(5)) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), -60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.8)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18) + EVT_CALL(GetItemPower, ITEM_DUSTY_HAMMER, EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(ApplyShrinkFromOwner, EVT_VAR(3)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(9), 402653184, 0, EVT_VAR(3), 32) + EVT_ADD(EVT_VAR(0), 40) + EVT_ADD(EVT_VAR(1), 10) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/egg_missile.c b/src/battle/item/egg_missile.c index f0aee0d1e9..cb92ceefad 100644 --- a/src/battle/item/egg_missile.c +++ b/src/battle/item/egg_missile.c @@ -139,45 +139,47 @@ s32 N(modelCommandList)[] = { 0x00000002, 0x00000000, }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_EGG_MISSILE; - await N(UseItemWithEffect); - UseBattleCamPreset(3); - MoveBattleCamOver(15); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - PlaySound(SOUND_THROW); - sleep 3; - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) += 42; - EVT_VAR(2) += 5; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - EVT_VAR(0) = 0; - loop 18 { - EVT_VAR(0) += 60; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetVirtualEntityJumpGravity(EVT_VAR(10), 1.0); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18); - DeleteVirtualEntity(EVT_VAR(10)); - PlaySound(SOUND_UNKNOWN_2010); - N(func_802A123C_71CF1C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - StartRumble(5); - ShakeCam(1, 0, 2, 0.75); - ShakeCam(1, 0, 5, 1.5); - ShakeCam(1, 0, 4, 1.2001953125); - ShakeCam(1, 0, 2, 0.4501953125); - } - GetItemPower(ITEM_EGG_MISSILE, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x18000202, 0, EVT_VAR(0), 32); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0xC8) + EVT_EXEC_WAIT(battle_item_egg_missile_UseItemWithEffect) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 15) + EVT_CALL(SetAnimation, 0, 0, 65558) + EVT_CALL(PlaySound, 1018) + EVT_WAIT_FRAMES(3) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), battle_item_egg_missile_modelCommandList) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_ADD(EVT_VAR(1), 42) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, -127) + EVT_CALL(GetGoalPos, -127, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), 60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(1.0)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_CALL(PlaySound, 8208) + EVT_CALL(battle_item_egg_missile_func_802A123C_71CF1C, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_CALL(StartRumble, 5) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.75)) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.5)) + EVT_CALL(ShakeCam, 1, 0, 4, EVT_FIXED(1.2001953125)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.4501953125)) + EVT_END_THREAD + EVT_CALL(GetItemPower, 200, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 402653698, 0, EVT_VAR(0), 32) + EVT_EXEC_WAIT(battle_item_egg_missile_PlayerGoHome) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/electro_pop.c b/src/battle/item/electro_pop.c index 2a56c2ac00..40277efa90 100644 --- a/src/battle/item/electro_pop.c +++ b/src/battle/item/electro_pop.c @@ -84,34 +84,36 @@ ApiStatus N(func_802A14F0_730A90)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_ELECTRO_POP; - await N(UseItemWithEffect); - await N(EatItem); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - PlayEffect(0x57, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - PlaySound(SOUND_UNKNOWN_379); - GetItemPower(ITEM_VOLT_SHROOM, EVT_VAR(0), EVT_VAR(1)); - N(func_802A123C_7307DC)(); - sleep 40; - N(func_802A14F0_730A90)(); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) += 25; - N(func_802A133C_7308DC)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - N(AddFP)(EVT_VAR(3)); - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - ShowMessageBox(16, 60); - WaitForMessageBoxDone(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x000000CC) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(PlayEffect, 0x57, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlaySound, SOUND_UNKNOWN_379) + EVT_CALL(GetItemPower, ITEM_VOLT_SHROOM, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(N(func_802A123C_7307DC)) + EVT_WAIT_FRAMES(40) + EVT_CALL(N(func_802A14F0_730A90)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(N(func_802A133C_7308DC), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(N(AddFP), EVT_VAR(3)) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 16, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/fire_flower.c b/src/battle/item/fire_flower.c index d888dbc26c..5266704ef6 100644 --- a/src/battle/item/fire_flower.c +++ b/src/battle/item/fire_flower.c @@ -34,64 +34,66 @@ ApiStatus N(func_802A1378_716FD8)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_FIRE_FLOWER; - await N(UseItemWithEffect); - N(FadeBackgroundToBlack)(); - PlaySound(SOUND_UNKNOWN_377); - SetAnimation(ACTOR_PLAYER, 0, ANIM_PLANT); - spawn { - sleep 50; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - sleep 35; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - sleep 10; - GetActorPos(ACTOR_PLAYER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) = 40; - MultiplyByActorScale(EVT_VAR(0)); - EVT_VAR(3) += EVT_VAR(0); - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 10; - SetActorSpeed(ACTOR_PLAYER, 2.0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_RUNNING); - SetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - PlayerRunToGoal(ACTOR_PLAYER); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - spawn { - N(func_802A123C_716E9C)(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - sleep 25; - loop 12 { - sleep 1; - PlaySound(SOUND_UNKNOWN_202C); - sleep 2; - PlaySound(SOUND_UNKNOWN_202D); - sleep 1; - } - } - sleep 80; - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetItemPower(ITEM_FIRE_FLOWER, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x38000002, 0, EVT_VAR(0), 32); -1: - sleep 5; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - N(func_802A1378_716FD8)(); - sleep 30; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000080) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(N(FadeBackgroundToBlack)) + EVT_CALL(PlaySound, SOUND_UNKNOWN_377) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_PLANT) + EVT_THREAD + EVT_WAIT_FRAMES(50) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_WAIT_FRAMES(35) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_WAIT_FRAMES(10) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_SET(EVT_VAR(0), 40) + EVT_CALL(MultiplyByActorScale, EVT_VAR(0)) + EVT_ADD(EVT_VAR(3), EVT_VAR(0)) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 10) + EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FIXED(2.0)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_RUNNING) + EVT_CALL(SetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(PlayerRunToGoal, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(N(func_802A123C_716E9C), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_WAIT_FRAMES(25) + EVT_LOOP(12) + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySound, SOUND_UNKNOWN_202C) + EVT_WAIT_FRAMES(2) + EVT_CALL(PlaySound, SOUND_UNKNOWN_202D) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(80) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetItemPower, ITEM_FIRE_FLOWER, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939524098, 0, EVT_VAR(0), 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(N(func_802A1378_716FD8)) + EVT_WAIT_FRAMES(30) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/food.c b/src/battle/item/food.c index 6a78f68c34..508a34f1ca 100644 --- a/src/battle/item/food.c +++ b/src/battle/item/food.c @@ -95,140 +95,144 @@ ApiStatus N(func_802A15A0_733670)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(script6) = SCRIPT({ - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - sleep 10; - EVT_VAR(1) = EVT_VAR(15); - await N(UseItem); - EVT_VAR(14) = EVT_VAR(10); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - spawn { - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - CreateVirtualEntity(EVT_VAR(10), 0x80283EE8); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 30; - EVT_VAR(2) += 5; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetVirtualEntityFlags(EVT_VAR(10), 32); - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 45; - MakeItemEntity(EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0); - EVT_VAR(14) = EVT_VAR(0); - loop 25 { - GetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A123C_73330C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - RemoveItemEntity(EVT_VAR(14)); - } - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetBattleCamTarget(0xFFFFFF83, 1, 0); - SetBattleCamOffsetZ(41); - SetBattleCamZoom(248); - MoveBattleCamOver(25); - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.400390625); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25); - AddBattleCamZoom(100); - MoveBattleCamOver(30); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) > 0) { - N(func_802A12EC_7333BC)(EVT_VAR(11)); - } - sleep 30; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - sleep 20; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - sleep 10; -}); +EvtSource N(script6) = { + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180) + EVT_WAIT_FRAMES(10) + EVT_SET(EVT_VAR(1), EVT_VAR(15)) + EVT_EXEC_WAIT(N(UseItem)) + EVT_SET(EVT_VAR(14), EVT_VAR(10)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), 0x80283EE8) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 30) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetVirtualEntityFlags, EVT_VAR(10), 32) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 45) + EVT_CALL(MakeItemEntity, EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(14), EVT_VAR(0)) + EVT_LOOP(25) + EVT_CALL(GetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A123C_73330C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(RemoveItemEntity, EVT_VAR(14)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetBattleCamTarget, -125, 1, 0) + EVT_CALL(SetBattleCamOffsetZ, 41) + EVT_CALL(SetBattleCamZoom, 248) + EVT_CALL(MoveBattleCamOver, 25) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.4)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25) + EVT_CALL(AddBattleCamZoom, 100) + EVT_CALL(MoveBattleCamOver, 30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(N(func_802A12EC_7333BC), EVT_VAR(11)) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_WAIT_FRAMES(20) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0) + EVT_WAIT_FRAMES(10) + EVT_RETURN + EVT_END +}; -EvtSource N(main) = SCRIPT({ - EVT_VAR(14) = EVT_VAR(1); - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(10) = EVT_VAR(1); - N(func_802A15A0_733670)(EVT_VAR(10)); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - if (EVT_VAR(0) == ACTOR_PARTNER) { - await N(script6); - return; - } - EVT_VAR(1) = EVT_VAR(14); - await N(UseItemWithEffect); - if (EVT_VAR(13) == 0) { - await N(EatItem); - } else { - await N(DrinkItem); - } - if (EVT_VAR(15) == 1) { - SetAnimation(ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE); - } - if (EVT_VAR(11) > 0) { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A1378_733448)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - } - if (EVT_VAR(11) < 0) { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A1378_733448)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - } - if (EVT_VAR(12) > 0) { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) += 25; - N(func_802A1438_733508)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(12)); - } - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) != 0) { - N(AddHP)(EVT_VAR(11)); - } - if (EVT_VAR(12) != 0) { - N(AddFP)(EVT_VAR(12)); - } - if (EVT_VAR(15) == 0) { - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - } else { - sleep 30; - } - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET(EVT_VAR(14), EVT_VAR(1)) + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(10), EVT_VAR(1)) + EVT_CALL(N(func_802A15A0_733670), EVT_VAR(10)) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 256) + EVT_EXEC_WAIT(N(script6)) + EVT_RETURN + EVT_END_IF + EVT_SET(EVT_VAR(1), EVT_VAR(14)) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_IF_EQ(EVT_VAR(13), 0) + EVT_EXEC_WAIT(N(EatItem)) + EVT_ELSE + EVT_EXEC_WAIT(N(DrinkItem)) + EVT_END_IF + EVT_IF_EQ(EVT_VAR(15), 1) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE) + EVT_END_IF + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A1378_733448), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_END_IF + EVT_IF_LT(EVT_VAR(11), 0) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A1378_733448), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_END_IF + EVT_IF_GT(EVT_VAR(12), 0) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(N(func_802A1438_733508), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(12)) + EVT_END_IF + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_NE(EVT_VAR(11), 0) + EVT_CALL(N(AddHP), EVT_VAR(11)) + EVT_END_IF + EVT_IF_NE(EVT_VAR(12), 0) + EVT_CALL(N(AddFP), EVT_VAR(12)) + EVT_END_IF + EVT_IF_EQ(EVT_VAR(15), 0) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_ELSE + EVT_WAIT_FRAMES(30) + EVT_END_IF + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/fright_jar.c b/src/battle/item/fright_jar.c index 538c8f7be2..459d67b2eb 100644 --- a/src/battle/item/fright_jar.c +++ b/src/battle/item/fright_jar.c @@ -22,56 +22,58 @@ ApiStatus N(func_802A12D4_72BBE4)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_FRIGHT_JAR; - await N(UseItemWithEffect); - N(FadeBackgroundToBlack)(); - spawn { - sleep 5; - UseBattleCamPreset(2); - MoveBattleCamOver(50); - } - SetAnimation(ACTOR_PLAYER, 0, ANIM_CROUCH); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_367); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0xFFFFFFD8; - EVT_VAR(1) += 5; - EVT_VAR(3) = 0.7001953125; - loop 5 { - PlayEffect(0x61, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), 25, 0, 0, 0, 0, 0, 0, 0); - EVT_VAR(0) += 5; - EVT_VAR(3) += 0.150390625; - sleep 7; - } - PlayEffect(0x61, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.5, 60, 0, 0, 0, 0, 0, 0, 0); - sleep 20; - loop 4 { - AddBattleCamZoom(0xFFFFFF9C); - MoveBattleCamOver(2); - sleep 2; - AddBattleCamZoom(100); - MoveBattleCamOver(2); - sleep 2; - } - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - func_80269EAC(21); - ItemAfflictEnemy(EVT_VAR(0), 0x70001000, 0, 100, 0, 32); -1: - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_WALKING); - N(func_802A12D4_72BBE4)(); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000098) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(N(FadeBackgroundToBlack)) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 50) + EVT_END_THREAD + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_CROUCH) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_367) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), -40) + EVT_ADD(EVT_VAR(1), 5) + EVT_SETF(EVT_VAR(3), EVT_FIXED(0.7)) + EVT_LOOP(5) + EVT_CALL(PlayEffect, 0x61, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), 25, 0, 0, 0, 0, 0, 0, 0) + EVT_ADD(EVT_VAR(0), 5) + EVT_ADDF(EVT_VAR(3), EVT_FIXED(0.15)) + EVT_WAIT_FRAMES(7) + EVT_END_LOOP + EVT_CALL(PlayEffect, 0x61, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.5), 60, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(20) + EVT_LOOP(4) + EVT_CALL(AddBattleCamZoom, -100) + EVT_CALL(MoveBattleCamOver, 2) + EVT_WAIT_FRAMES(2) + EVT_CALL(AddBattleCamZoom, 100) + EVT_CALL(MoveBattleCamOver, 2) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(func_80269EAC, 21) + EVT_CALL(ItemAfflictEnemy, EVT_VAR(0), 1879052288, 0, 100, 0, 32) + EVT_LABEL(1) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_WALKING) + EVT_CALL(N(func_802A12D4_72BBE4)) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/hustle_drink.c b/src/battle/item/hustle_drink.c index 3aa92a2077..fea51d85f2 100644 --- a/src/battle/item/hustle_drink.c +++ b/src/battle/item/hustle_drink.c @@ -36,80 +36,82 @@ ApiStatus N(func_802A12C4_726224)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_HUSTLE_DRINK; - await N(UseItemWithEffect); - await N(DrinkItem); - SetAnimation(ACTOR_PLAYER, 0, ANIM_SQUISH); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - N(func_802A12C4_726224)(); - N(func_802A123C_72619C)(); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - UseBattleCamPreset(13); - BattleCamTargetActor(ACTOR_SELF); - MoveBattleCamOver(20); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_369); - spawn { - loop 2 { - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.1005859375, 1.0, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.2001953125, 0.9501953125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.30078125, 0.900390625, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3505859375, 0.8505859375, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.380859375, 0.80078125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.400390625, 0.80078125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.30078125, 0.8505859375, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.2001953125, 0.900390625, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.1005859375, 0.9501953125, 1.0); - sleep 1; - } - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.1005859375, 1.0, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.2001953125, 0.9501953125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.30078125, 0.900390625, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.3505859375, 0.8505859375, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.380859375, 0.80078125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.400390625, 0.80078125, 1.0); - sleep 1; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_208E); - SetActorScale(ACTOR_SELF, 0.900390625, 1.30078125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 0.900390625, 1.2001953125, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 0.9501953125, 1.1005859375, 1.0); - sleep 1; - SetActorScale(ACTOR_SELF, 1.0, 1.0, 1.0); - sleep 1; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - loop 10 { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_369); - PlayEffect(0x6, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x6, 1, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - sleep 4; - } - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_RUNNING); - UseBattleCamPreset(2); - MoveBattleCamOver(20); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000091) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(DrinkItem)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_SQUISH) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(N(func_802A12C4_726224)) + EVT_CALL(N(func_802A123C_72619C)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(UseBattleCamPreset, 13) + EVT_CALL(BattleCamTargetActor, ACTOR_SELF) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_369) + EVT_THREAD + EVT_LOOP(2) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.2), EVT_FIXED(0.95), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.9), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.35), EVT_FIXED(0.85), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.38), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.4), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.85), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.2), EVT_FIXED(0.9), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(0.95), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.1), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.2), EVT_FIXED(0.95), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.3), EVT_FIXED(0.9), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.35), EVT_FIXED(0.85), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.38), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.4), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_208E) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(0.9), EVT_FIXED(1.3), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(0.9), EVT_FIXED(1.2), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(0.95), EVT_FIXED(1.1), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_LOOP(10) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_369) + EVT_CALL(PlayEffect, 0x6, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x6, 1, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(4) + EVT_END_LOOP + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_RUNNING) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/insecticide_herb.c b/src/battle/item/insecticide_herb.c index 8b18b81c26..ccc5ee0a76 100644 --- a/src/battle/item/insecticide_herb.c +++ b/src/battle/item/insecticide_herb.c @@ -93,63 +93,65 @@ s32 N(modelCommandList)[] = { 0x00000004, 0x0000000D, 0x00000001, sizeof(N(displayList)) / sizeof(s32), &N(displayList), 0x00000002, 0x00000000, }; -EvtSource script = SCRIPT({ - EVT_VAR(10) = (const) ITEM_INSECTICIDE_HERB; - await N(UseItemWithEffect); - UseBattleCamPreset(3); - MoveBattleCamOver(15); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - PlaySound(SOUND_THROW); - sleep 3; - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - EVT_VAR(0) = 1.0; - MultiplyByActorScale(EVT_VAR(0)); - SetVirtualEntityScale(EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(3) = 20; - EVT_VAR(4) = 42; - EVT_VAR(5) = 5; - MultiplyVec3ByActorScale(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) += EVT_VAR(3); - EVT_VAR(1) += EVT_VAR(4); - EVT_VAR(2) += EVT_VAR(5); - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - EVT_VAR(0) = 0; - loop 18 { - EVT_VAR(0) += 0xFFFFFFC4; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.80078125); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18); - PlayEffect(0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - EVT_VAR(0) -= 10; - PlayEffect(0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - EVT_VAR(0) += 20; - PlayEffect(0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - spawn { - N(func_802A12E0_72AA30)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 3; - N(func_802A12E0_72AA30)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 3; - N(func_802A12E0_72AA30)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - } - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - N(func_802A123C_72A98C)(); - DeleteVirtualEntity(EVT_VAR(10)); - if (EVT_VAR(9) == 0) { - ItemDamageEnemy(EVT_VAR(0), 0, 0, 0, 32); - } else { - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - N(func_802A1280_72A9D0)(); - } - await N(PlayerGoHome); -}); +EvtSource script = { + EVT_SET_CONST(EVT_VAR(10), 0x00000087) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 15) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_CALL(PlaySound, SOUND_THROW) + EVT_WAIT_FRAMES(3) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_SETF(EVT_VAR(0), EVT_FIXED(1.0)) + EVT_CALL(MultiplyByActorScale, EVT_VAR(0)) + EVT_CALL(SetVirtualEntityScale, EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(3), 20) + EVT_SET(EVT_VAR(4), 42) + EVT_SET(EVT_VAR(5), 5) + EVT_CALL(MultiplyVec3ByActorScale, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_ADD(EVT_VAR(0), EVT_VAR(3)) + EVT_ADD(EVT_VAR(1), EVT_VAR(4)) + EVT_ADD(EVT_VAR(2), EVT_VAR(5)) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), -60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.8)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18) + EVT_CALL(PlayEffect, 0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_SUB(EVT_VAR(0), 10) + EVT_CALL(PlayEffect, 0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_ADD(EVT_VAR(0), 20) + EVT_CALL(PlayEffect, 0x7, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_THREAD + EVT_CALL(N(func_802A12E0_72AA30), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(3) + EVT_CALL(N(func_802A12E0_72AA30), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(3) + EVT_CALL(N(func_802A12E0_72AA30), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(N(func_802A123C_72A98C)) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_IF_EQ(EVT_VAR(9), 0) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 0, 0, 0, 32) + EVT_ELSE + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(N(func_802A1280_72A9D0)) + EVT_END_IF + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/life_shroom.c b/src/battle/item/life_shroom.c index b086d33176..eb157b426b 100644 --- a/src/battle/item/life_shroom.c +++ b/src/battle/item/life_shroom.c @@ -84,111 +84,115 @@ ApiStatus N(func_802A1484_72E9B4)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(script6) = SCRIPT({ - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - sleep 10; - EVT_VAR(1) = EVT_VAR(15); - await N(UseItem); - EVT_VAR(14) = EVT_VAR(10); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - spawn { - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - CreateVirtualEntity(EVT_VAR(10), 0x80283EE8); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 30; - EVT_VAR(2) += 5; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetVirtualEntityFlags(EVT_VAR(10), 32); - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 45; - MakeItemEntity(EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0); - EVT_VAR(14) = EVT_VAR(0); - loop 25 { - GetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A123C_72E76C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - RemoveItemEntity(EVT_VAR(14)); - } - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetBattleCamTarget(0xFFFFFF83, 1, 0); - SetBattleCamOffsetZ(41); - SetBattleCamZoom(248); - MoveBattleCamOver(25); - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.400390625); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25); - AddBattleCamZoom(100); - MoveBattleCamOver(30); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) > 0) { - N(func_802A12EC_72E81C)(EVT_VAR(11)); - } - sleep 30; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - sleep 20; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - sleep 10; -}); +EvtSource N(script6) = { + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180) + EVT_WAIT_FRAMES(10) + EVT_SET(EVT_VAR(1), EVT_VAR(15)) + EVT_EXEC_WAIT(N(UseItem)) + EVT_SET(EVT_VAR(14), EVT_VAR(10)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), 0x80283EE8) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 30) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetVirtualEntityFlags, EVT_VAR(10), 32) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 45) + EVT_CALL(MakeItemEntity, EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(14), EVT_VAR(0)) + EVT_LOOP(25) + EVT_CALL(GetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A123C_72E76C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(RemoveItemEntity, EVT_VAR(14)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetBattleCamTarget, -125, 1, 0) + EVT_CALL(SetBattleCamOffsetZ, 41) + EVT_CALL(SetBattleCamZoom, 248) + EVT_CALL(MoveBattleCamOver, 25) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.4)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25) + EVT_CALL(AddBattleCamZoom, 100) + EVT_CALL(MoveBattleCamOver, 30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(N(func_802A12EC_72E81C), EVT_VAR(11)) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_WAIT_FRAMES(20) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0) + EVT_WAIT_FRAMES(10) + EVT_RETURN + EVT_END +}; -EvtSource N(main) = SCRIPT({ - EVT_VAR(15) = EVT_VAR(1); - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(10) = EVT_VAR(1); - N(func_802A1484_72E9B4)(EVT_VAR(10)); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - if (EVT_VAR(0) == ACTOR_PARTNER) { - await N(script6); - return; - } - EVT_VAR(10) = (const) ITEM_LIFE_SHROOM; - EVT_VAR(1) = EVT_VAR(15); - await N(UseItemWithEffect); - await N(EatItem); - N(func_802A1438_72E968)(); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A1378_72E8A8)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET(EVT_VAR(15), EVT_VAR(1)) + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(10), EVT_VAR(1)) + EVT_CALL(N(func_802A1484_72E9B4), EVT_VAR(10)) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 256) + EVT_EXEC_WAIT(N(script6)) + EVT_RETURN + EVT_END_IF + EVT_SET_CONST(EVT_VAR(10), 0x00000095) + EVT_SET(EVT_VAR(1), EVT_VAR(15)) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(N(func_802A1438_72E968)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A1378_72E8A8), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/mushroom.c b/src/battle/item/mushroom.c index d654c239b0..9e28385184 100644 --- a/src/battle/item/mushroom.c +++ b/src/battle/item/mushroom.c @@ -83,130 +83,134 @@ ApiStatus N(func_802A15A0_715DF0)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(script6) = SCRIPT({ - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - sleep 10; - EVT_VAR(1) = EVT_VAR(15); - await N(UseItem); - EVT_VAR(14) = EVT_VAR(10); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - spawn { - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - CreateVirtualEntity(EVT_VAR(10), 0x80283EE8); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 30; - EVT_VAR(2) += 5; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetVirtualEntityFlags(EVT_VAR(10), 32); - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 45; - MakeItemEntity(EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0); - EVT_VAR(14) = EVT_VAR(0); - loop 25 { - GetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A123C_715A8C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - RemoveItemEntity(EVT_VAR(14)); - } - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetBattleCamTarget(0xFFFFFF83, 1, 0); - SetBattleCamOffsetZ(41); - SetBattleCamZoom(248); - MoveBattleCamOver(25); - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.400390625); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25); - AddBattleCamZoom(100); - MoveBattleCamOver(30); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) > 0) { - N(func_802A12EC_715B3C)(EVT_VAR(11)); - } - sleep 30; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - sleep 20; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - sleep 10; -}); +EvtSource N(script6) = { + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180) + EVT_WAIT_FRAMES(10) + EVT_SET(EVT_VAR(1), EVT_VAR(15)) + EVT_EXEC_WAIT(N(UseItem)) + EVT_SET(EVT_VAR(14), EVT_VAR(10)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), 0x80283EE8) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 30) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetVirtualEntityFlags, EVT_VAR(10), 32) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 45) + EVT_CALL(MakeItemEntity, EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(14), EVT_VAR(0)) + EVT_LOOP(25) + EVT_CALL(GetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A123C_715A8C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(RemoveItemEntity, EVT_VAR(14)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetBattleCamTarget, -125, 1, 0) + EVT_CALL(SetBattleCamOffsetZ, 41) + EVT_CALL(SetBattleCamZoom, 248) + EVT_CALL(MoveBattleCamOver, 25) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.4)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25) + EVT_CALL(AddBattleCamZoom, 100) + EVT_CALL(MoveBattleCamOver, 30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(N(func_802A12EC_715B3C), EVT_VAR(11)) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_WAIT_FRAMES(20) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0) + EVT_WAIT_FRAMES(10) + EVT_RETURN + EVT_END +}; -EvtSource N(main) = SCRIPT({ - EVT_VAR(14) = EVT_VAR(1); - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(10) = EVT_VAR(1); - N(func_802A15A0_715DF0)(EVT_VAR(10)); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - if (EVT_VAR(0) == ACTOR_PARTNER) { - await N(script6); - return; - } - EVT_VAR(1) = EVT_VAR(14); - await N(UseItemWithEffect); - await N(EatItem); - if (EVT_VAR(15) == 1) { - SetAnimation(ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE); - } - if (EVT_VAR(11) > 0) { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A1378_715BC8)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - } - if (EVT_VAR(12) > 0) { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) += 25; - N(func_802A1438_715C88)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(12)); - } - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) != 0) { - N(AddHP)(EVT_VAR(11)); - } - if (EVT_VAR(12) != 0) { - N(AddFP)(EVT_VAR(12)); - } - if (EVT_VAR(15) == 0) { - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - } else { - sleep 30; - } - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET(EVT_VAR(14), EVT_VAR(1)) + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(10), EVT_VAR(1)) + EVT_CALL(N(func_802A15A0_715DF0), EVT_VAR(10)) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 256) + EVT_EXEC_WAIT(N(script6)) + EVT_RETURN + EVT_END_IF + EVT_SET(EVT_VAR(1), EVT_VAR(14)) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_IF_EQ(EVT_VAR(15), 1) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_STICK_OUT_TONGUE) + EVT_END_IF + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A1378_715BC8), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_END_IF + EVT_IF_GT(EVT_VAR(12), 0) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(N(func_802A1438_715C88), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(12)) + EVT_END_IF + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_NE(EVT_VAR(11), 0) + EVT_CALL(N(AddHP), EVT_VAR(11)) + EVT_END_IF + EVT_IF_NE(EVT_VAR(12), 0) + EVT_CALL(N(AddFP), EVT_VAR(12)) + EVT_END_IF + EVT_IF_EQ(EVT_VAR(15), 0) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_ELSE + EVT_WAIT_FRAMES(30) + EVT_END_IF + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/mystery.c b/src/battle/item/mystery.c index fe77fa2852..f8ad479496 100644 --- a/src/battle/item/mystery.c +++ b/src/battle/item/mystery.c @@ -273,48 +273,50 @@ s32 N(D_802A229C_72D84C)[8] = { 0x0000008A, 0x0000008C, 0x00000085, 0x0000008A }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_MYSTERY; - await N(UseItemWithEffect); - spawn { - sleep 220; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_3F3); - } - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_368); - N(func_802A13E4_72C994)(); - sleep 2; - if (EVT_VAR(0) != ITEM_PEBBLE) { - jump UseMystery; - return; - } - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 150; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetOwnerTarget(0, 0); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - EVT_VAR(0) = 0; - loop 18 { - EVT_VAR(0) += 0xFFFFFFC4; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.6005859375); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 12); - spawn { - EVT_VAR(0) += 60; - EVT_VAR(1) += 0; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 16); - DeleteVirtualEntity(EVT_VAR(10)); - } - SetTargetActor(ACTOR_SELF, 0); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A188C_72CE3C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetBattleFlagBits(32, 1); - DispatchDamagePlayerEvent(1, EVENT_HIT); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000096) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_THREAD + EVT_WAIT_FRAMES(220) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_3F3) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_368) + EVT_CALL(N(func_802A13E4_72C994)) + EVT_WAIT_FRAMES(2) + EVT_IF_NE(EVT_VAR(0), 133) + EVT_JUMP(EVT_PTR(UseMystery)) + EVT_RETURN + EVT_END_IF + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 150) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetOwnerTarget, 0, 0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), -60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.6)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 12) + EVT_THREAD + EVT_ADD(EVT_VAR(0), 60) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 16) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_END_THREAD + EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A188C_72CE3C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetBattleFlagBits, 32, 1) + EVT_CALL(DispatchDamagePlayerEvent, 1, EVENT_HIT) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/pebble.c b/src/battle/item/pebble.c index 0fa6b9b72f..f5c7333ebe 100644 --- a/src/battle/item/pebble.c +++ b/src/battle/item/pebble.c @@ -44,47 +44,49 @@ s32 N(modelCommandList)[] = { 0x00000004, 0x0000000D, 0x00000001, sizeof(N(displayList)) / sizeof(s32), &N(displayList), 0x00000002, 0x00000000, }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_PEBBLE; - await N(UseItemWithEffect); - UseBattleCamPreset(3); - MoveBattleCamOver(15); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - PlaySound(SOUND_THROW); - sleep 3; - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - EVT_VAR(0) = 1.0; - MultiplyByActorScale(EVT_VAR(0)); - SetVirtualEntityScale(EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(3) = 20; - EVT_VAR(4) = 42; - EVT_VAR(5) = 5; - MultiplyVec3ByActorScale(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) += EVT_VAR(3); - EVT_VAR(1) += EVT_VAR(4); - EVT_VAR(2) += EVT_VAR(5); - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - EVT_VAR(0) = 0; - loop 18 { - EVT_VAR(0) += 0xFFFFFFC4; - SetVirtualEntityRotation(EVT_VAR(10), 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.80078125); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18); - GetItemPower(ITEM_PEBBLE, EVT_VAR(3), EVT_VAR(4)); - ApplyShrinkFromOwner(EVT_VAR(3)); - ItemDamageEnemy(EVT_VAR(9), 0x18000000, 0, EVT_VAR(3), 32); - EVT_VAR(0) += 60; - EVT_VAR(1) += 0; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 16); - DeleteVirtualEntity(EVT_VAR(10)); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000085) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 15) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_CALL(PlaySound, SOUND_THROW) + EVT_WAIT_FRAMES(3) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_SETF(EVT_VAR(0), EVT_FIXED(1.0)) + EVT_CALL(MultiplyByActorScale, EVT_VAR(0)) + EVT_CALL(SetVirtualEntityScale, EVT_VAR(10), EVT_VAR(0), EVT_VAR(0), EVT_VAR(0)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(3), 20) + EVT_SET(EVT_VAR(4), 42) + EVT_SET(EVT_VAR(5), 5) + EVT_CALL(MultiplyVec3ByActorScale, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_ADD(EVT_VAR(0), EVT_VAR(3)) + EVT_ADD(EVT_VAR(1), EVT_VAR(4)) + EVT_ADD(EVT_VAR(2), EVT_VAR(5)) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(18) + EVT_ADD(EVT_VAR(0), -60) + EVT_CALL(SetVirtualEntityRotation, EVT_VAR(10), 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.8)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 18) + EVT_CALL(GetItemPower, ITEM_PEBBLE, EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(ApplyShrinkFromOwner, EVT_VAR(3)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(9), 402653184, 0, EVT_VAR(3), 32) + EVT_ADD(EVT_VAR(0), 60) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 16) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/please_come_back.c b/src/battle/item/please_come_back.c index edc9a1753b..bc52695493 100644 --- a/src/battle/item/please_come_back.c +++ b/src/battle/item/please_come_back.c @@ -4,16 +4,18 @@ #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_DIZZY_DIAL; - await N(UseItemWithEffect); - SetGoalToHome(ACTOR_PLAYER); - SetJumpAnimations(ACTOR_PLAYER, 0, ANIM_MIDAIR_STILL, ANIM_MIDAIR, ANIM_10009); - SetActorSpeed(ACTOR_PLAYER, 4.0); - SetActorJumpGravity(ACTOR_PLAYER, 1.80078125); - func_80273444(4, 0, 0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_8000B); - sleep 8; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000009A) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(SetGoalToHome, ACTOR_PLAYER) + EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_MIDAIR_STILL, ANIM_MIDAIR, ANIM_10009) + EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FIXED(4.0)) + EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FIXED(1.8)) + EVT_CALL(func_80273444, 4, 0, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_8000B) + EVT_WAIT_FRAMES(8) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/pow_block.c b/src/battle/item/pow_block.c index 533f0ff7e3..2ec1f70c71 100644 --- a/src/battle/item/pow_block.c +++ b/src/battle/item/pow_block.c @@ -47,77 +47,79 @@ ApiStatus N(func_802A1318_718B68)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_P_O_W_BLOCK; - await N(UseItemWithEffect); - sleep 10; - MakeEntity(0x802EA2E0, -40, 60, 0, 0, MAKE_ENTITY_END); - EVT_VAR(10) = EVT_VAR(0); - N(func_802A1318_718B68)(); - PlayEffect(0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -30, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -40, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - spawn { - sleep 15; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_HIT_BLOCK); - N(func_802A123C_718A8C)(); - PlayEffect(0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -30, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -40, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - StartRumble(4); - ShakeCam(1, 0, 2, 1.0); - ShakeCam(1, 0, 2, 3.0); - ShakeCam(1, 0, 2, 6.0); - ShakeCam(1, 0, 2, 5.0); - ShakeCam(1, 0, 2, 4.0); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_2030); - ShakeCam(1, 0, 2, 3.0); - ShakeCam(1, 0, 2, 2.0); - ShakeCam(1, 0, 2, 1.0); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 0.2001953125); - } - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 30; - SetActorSpeed(ACTOR_PLAYER, 4.0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_RUNNING); - SetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - PlayerRunToGoal(ACTOR_PLAYER); - sleep 5; - SetJumpAnimations(ACTOR_PLAYER, 0, ANIM_MIDAIR_STILL, ANIM_MIDAIR, ANIM_10009); - SetActorJumpGravity(ACTOR_PLAYER, 0.6005859375); - SetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_80273444(20, 0, 0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetItemPower(ITEM_P_O_W_BLOCK, EVT_VAR(3), EVT_VAR(4)); - ApplyShrinkFromOwner(EVT_VAR(3)); - func_80269EAC(22); - ItemDamageEnemy(EVT_VAR(0), 0x38000400, 0, EVT_VAR(3), 32); -1: - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - PlayEffect(0x7, 2, -70, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -60, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -70, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x7, 2, -70, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0); - N(func_802A12E4_718B34)(); - sleep 30; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000090) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_WAIT_FRAMES(10) + EVT_CALL(MakeEntity, 0x802EA2E0, -40, 60, 0, 0, MAKE_ENTITY_END) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_CALL(N(func_802A1318_718B68)) + EVT_CALL(PlayEffect, 0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -30, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -40, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_THREAD + EVT_WAIT_FRAMES(15) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HIT_BLOCK) + EVT_CALL(N(func_802A123C_718A8C)) + EVT_CALL(PlayEffect, 0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -30, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -40, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -40, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(StartRumble, 4) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(3.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(6.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(5.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(4.0)) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_2030) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(3.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(2.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.2)) + EVT_END_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 30) + EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FIXED(4.0)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_RUNNING) + EVT_CALL(SetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(PlayerRunToGoal, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_MIDAIR_STILL, ANIM_MIDAIR, ANIM_10009) + EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FIXED(0.6)) + EVT_CALL(SetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_80273444, 20, 0, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetItemPower, ITEM_P_O_W_BLOCK, EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(ApplyShrinkFromOwner, EVT_VAR(3)) + EVT_CALL(func_80269EAC, 22) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939525120, 0, EVT_VAR(3), 32) + EVT_LABEL(1) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(PlayEffect, 0x7, 2, -70, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -60, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -70, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x7, 2, -70, 55, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(N(func_802A12E4_718B34)) + EVT_WAIT_FRAMES(30) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/repel_gel.c b/src/battle/item/repel_gel.c index 08c7037ef4..84a27fc97c 100644 --- a/src/battle/item/repel_gel.c +++ b/src/battle/item/repel_gel.c @@ -16,22 +16,24 @@ ApiStatus N(func_802A123C_72DDAC)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_REPEL_GEL; - await N(UseItemWithEffect); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_375); - SetAnimation(ACTOR_PLAYER, 0, ANIM_30008); - sleep 45; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - PlayEffect(0x33, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_376); - GetItemPower(ITEM_REPEL_GEL, EVT_VAR(0), EVT_VAR(1)); - N(func_802A123C_72DDAC)(); - sleep 20; - ShowMessageBox(17, 60); - WaitForMessageBoxDone(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000097) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_375) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_30008) + EVT_WAIT_FRAMES(45) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(PlayEffect, 0x33, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_376) + EVT_CALL(GetItemPower, ITEM_REPEL_GEL, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(N(func_802A123C_72DDAC)) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 17, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/shooting_star.c b/src/battle/item/shooting_star.c index aff99045b4..5511e5b2a3 100644 --- a/src/battle/item/shooting_star.c +++ b/src/battle/item/shooting_star.c @@ -93,73 +93,75 @@ ApiStatus N(func_802A14D4_71DC44)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_SHOOTING_STAR; - await N(UseItemWithEffect); - spawn { - sleep 5; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - } - N(func_802A1444_71DBB4)(); - spawn { - EVT_VAR(0) = 0; - loop 10 { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_259); - N(func_802A123C_71D9AC)(); - EVT_VAR(0) += 1; - sleep 5; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_25A); - N(func_802A123C_71D9AC)(); - EVT_VAR(0) += 1; - sleep 5; - } - } - spawn { - EVT_VAR(0) = 0; - sleep 50; - loop 10 { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_25C); - EVT_VAR(0) += 1; - sleep 5; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_25D); - EVT_VAR(0) += 1; - sleep 5; - } - } - spawn { - loop 5 { - sleep 15; - StartRumble(8); - ShakeCam(1, 0, 5, 1.0); - } - } - sleep 90; - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A1388_71DAF8)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetItemPower(ITEM_SHOOTING_STAR, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x38000100, 0, EVT_VAR(0), 32); -1: - sleep 10; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - sleep 20; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - await N(PlayerGoHome); - spawn { - N(func_802A14D4_71DC44)(); - } - sleep 30; -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000083) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_END_THREAD + EVT_CALL(N(func_802A1444_71DBB4)) + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(10) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_259) + EVT_CALL(N(func_802A123C_71D9AC)) + EVT_ADD(EVT_VAR(0), 1) + EVT_WAIT_FRAMES(5) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_25A) + EVT_CALL(N(func_802A123C_71D9AC)) + EVT_ADD(EVT_VAR(0), 1) + EVT_WAIT_FRAMES(5) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_WAIT_FRAMES(50) + EVT_LOOP(10) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_25C) + EVT_ADD(EVT_VAR(0), 1) + EVT_WAIT_FRAMES(5) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_25D) + EVT_ADD(EVT_VAR(0), 1) + EVT_WAIT_FRAMES(5) + EVT_END_LOOP + EVT_END_THREAD + EVT_THREAD + EVT_LOOP(5) + EVT_WAIT_FRAMES(15) + EVT_CALL(StartRumble, 8) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(90) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A1388_71DAF8), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetItemPower, ITEM_SHOOTING_STAR, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939524352, 0, EVT_VAR(0), 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(10) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(20) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_THREAD + EVT_CALL(N(func_802A14D4_71DC44)) + EVT_END_THREAD + EVT_WAIT_FRAMES(30) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/sleepy_sheep.c b/src/battle/item/sleepy_sheep.c index 1911c65181..9080caf587 100644 --- a/src/battle/item/sleepy_sheep.c +++ b/src/battle/item/sleepy_sheep.c @@ -335,153 +335,155 @@ s32 N(modelCommandList)[] = { 0x00000002, 0x00000000, }; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_SLEEPY_SHEEP; - await N(UseItemWithEffect); - UseBattleCamPreset(19); - SetBattleCamTarget(0xFFFFFFBD, 0xFFFFFFF1, 0xFFFFFFFB); - SetBattleCamOffsetZ(45); - SetBattleCamZoom(169); - MoveBattleCamOver(50); - spawn { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_364); - loop 7 { - StartRumble(2); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 1.5); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 0.2001953125); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 2.0); - ShakeCam(1, 0, 2, 1.5); - ShakeCam(1, 0, 2, 1.0); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 0.25); - sleep 2; - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 1.5); - ShakeCam(1, 0, 2, 0.5); - ShakeCam(1, 0, 2, 0.2001953125); - } - } - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 32; - ShowEmote(0, EMOTE_QUESTION, -45, 20, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - sleep 30; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - spawn { - N(func_802A123C_71E88C)(); - } - InitTargetIterator(); - spawn { - sleep 40; - N(func_802A1740_71ED90)(); - N(func_802A1848_71EE98)(); - } - UseBattleCamPreset(2); - MoveBattleCamOver(20); - sleep 8; - SetJumpAnimations(ACTOR_PLAYER, 0, ANIM_1002B, ANIM_1002B, ANIM_MIDAIR); - SetActorJumpGravity(ACTOR_PLAYER, 1.80078125); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_80273444(15, 0, 0); - spawn { - sleep 5; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - } - sleep 40; - CreateVirtualEntity(EVT_VAR(10), N(modelCommandList)); - EVT_VAR(7) = 0xFFFFFF38; - EVT_VAR(8) = 0; - EVT_VAR(9) = 0; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)); - SetVirtualEntityScale(EVT_VAR(10), 0.7109375, 0.7109375, 0.7109375); - SetVirtualEntityMoveSpeed(EVT_VAR(10), 7.0); - SetVirtualEntityJumpGravity(EVT_VAR(10), 1.400390625); - SetOwnerTarget(0, 0); - SetGoalToTarget(ACTOR_PLAYER); - GetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 60; - VirtualEntityMoveTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - GetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_HIT_BLOCK); - spawn { - SetAnimation(ACTOR_PLAYER, 0, ANIM_SHOCK_STILL); - SetActorScale(ACTOR_PLAYER, 1.2001953125, 0.900390625, 1.0); - sleep 1; - SetActorScale(ACTOR_PLAYER, 1.30078125, 0.80078125, 1.0); - sleep 3; - SetActorScale(ACTOR_PLAYER, 1.2001953125, 0.900390625, 1.0); - sleep 1; - SetActorScale(ACTOR_PLAYER, 1.0, 1.0, 1.0); - } - PlayEffect(0x6, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - sleep 2; - SetVirtualEntityJumpGravity(EVT_VAR(10), 1.400390625); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 60; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - PlayEffect(0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - EVT_VAR(0) += 20; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - PlayEffect(0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - EVT_VAR(0) += 10; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - PlayEffect(0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - sleep 5; - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 270; - VirtualEntityMoveTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0); - DeleteVirtualEntity(EVT_VAR(10)); - } - sleep 30; - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetItemPower(ITEM_SLEEPY_SHEEP, EVT_VAR(0), EVT_VAR(1)); - MakeStatusField(EVT_VAR(0), 4096, 100, EVT_VAR(0)); - func_80252B3C(EVT_VAR(0), 0x50000000, EVT_VAR(0), 0, 32); -1: - sleep 5; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - sleep 30; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000008F) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(UseBattleCamPreset, 19) + EVT_CALL(SetBattleCamTarget, -67, -15, -5) + EVT_CALL(SetBattleCamOffsetZ, 45) + EVT_CALL(SetBattleCamZoom, 169) + EVT_CALL(MoveBattleCamOver, 50) + EVT_THREAD + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_364) + EVT_LOOP(7) + EVT_CALL(StartRumble, 2) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.2)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(2.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.25)) + EVT_WAIT_FRAMES(2) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(1.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.5)) + EVT_CALL(ShakeCam, 1, 0, 2, EVT_FIXED(0.2)) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 32) + EVT_CALL(ShowEmote, 0, EMOTE_QUESTION, -45, 20, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180) + EVT_THREAD + EVT_CALL(N(func_802A123C_71E88C)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_THREAD + EVT_WAIT_FRAMES(40) + EVT_CALL(N(func_802A1740_71ED90)) + EVT_CALL(N(func_802A1848_71EE98)) + EVT_END_THREAD + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_WAIT_FRAMES(8) + EVT_CALL(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_1002B, ANIM_1002B, ANIM_MIDAIR) + EVT_CALL(SetActorJumpGravity, ACTOR_PLAYER, EVT_FIXED(1.8)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_80273444, 15, 0, 0) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0) + EVT_END_THREAD + EVT_WAIT_FRAMES(40) + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), EVT_PTR(N(modelCommandList))) + EVT_SET(EVT_VAR(7), -200) + EVT_SET(EVT_VAR(8), 0) + EVT_SET(EVT_VAR(9), 0) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)) + EVT_CALL(SetVirtualEntityScale, EVT_VAR(10), EVT_FIXED(0.71), EVT_FIXED(0.71), EVT_FIXED(0.71)) + EVT_CALL(SetVirtualEntityMoveSpeed, EVT_VAR(10), EVT_FIXED(7.0)) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(1.4)) + EVT_CALL(SetOwnerTarget, 0, 0) + EVT_CALL(SetGoalToTarget, ACTOR_PLAYER) + EVT_CALL(GetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 60) + EVT_CALL(VirtualEntityMoveTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(GetGoalPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HIT_BLOCK) + EVT_THREAD + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_SHOCK_STILL) + EVT_CALL(SetActorScale, ACTOR_PLAYER, EVT_FIXED(1.2), EVT_FIXED(0.9), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_PLAYER, EVT_FIXED(1.3), EVT_FIXED(0.8), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(3) + EVT_CALL(SetActorScale, ACTOR_PLAYER, EVT_FIXED(1.2), EVT_FIXED(0.9), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, ACTOR_PLAYER, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_CALL(PlayEffect, 0x6, 3, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(1.4)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 60) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(PlayEffect, 0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_ADD(EVT_VAR(0), 20) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(PlayEffect, 0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_ADD(EVT_VAR(0), 10) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(PlayEffect, 0x6, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(5) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 270) + EVT_CALL(VirtualEntityMoveTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0) + EVT_CALL(DeleteVirtualEntity, EVT_VAR(10)) + EVT_END_THREAD + EVT_WAIT_FRAMES(30) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetItemPower, ITEM_SLEEPY_SHEEP, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(MakeStatusField, EVT_VAR(0), 4096, 100, EVT_VAR(0)) + EVT_CALL(func_80252B3C, EVT_VAR(0), 1342177280, EVT_VAR(0), 0, 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; s32 D_802A3E88_7214D8[] = { 0, 0 diff --git a/src/battle/item/snowman_doll.c b/src/battle/item/snowman_doll.c index a058d95df1..5572e5e288 100644 --- a/src/battle/item/snowman_doll.c +++ b/src/battle/item/snowman_doll.c @@ -35,70 +35,72 @@ ApiStatus N(func_802A13B8_71C1E8)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_SNOWMAN_DOLL; - await N(UseItemWithEffect); - N(FadeBackgroundToBlack)(); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_363); - spawn { - loop 45 { - RandInt(300, EVT_VAR(0)); - EVT_VAR(0) -= 150; - EVT_VAR(1) = 170; - RandInt(50, EVT_VAR(2)); - EVT_VAR(2) -= 25; - PlayEffect(0xE, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 60, 0, 0, 0, 0, 0, 0, 0, 0, 0); - sleep 2; - } - } - sleep 10; - UseBattleCamPreset(3); - MoveBattleCamOver(50); - sleep 50; - PlayEffect(0x60, 0, 0, 0, 20, 1.0, 160, 0, 0, 0, 0, 0, 0, 0); - spawn { - sleep 17; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_202E); - StartRumble(9); - ShakeCam(1, 0, 5, 1.0); - sleep 46; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_202E); - StartRumble(9); - ShakeCam(1, 0, 5, 1.0); - sleep 25; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_202E); - StartRumble(9); - ShakeCam(1, 0, 5, 1.0); - sleep 25; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_202E); - StartRumble(9); - ShakeCam(1, 0, 5, 1.0); - } - sleep 15; - StartRumble(10); - ShakeCam(1, 0, 5, 1.0); - ShakeCam(1, 0, 10, 2.0); - ShakeCam(1, 0, 5, 1.0); - sleep 110; - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A123C_71C06C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetItemPower(ITEM_SNOWMAN_DOLL, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x38000008, 0, EVT_VAR(0), 32); - sleep 5; -1: - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 30; - N(func_802A13B8_71C1E8)(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000081) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(N(FadeBackgroundToBlack)) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_363) + EVT_THREAD + EVT_LOOP(45) + EVT_CALL(RandInt, 300, EVT_VAR(0)) + EVT_SUB(EVT_VAR(0), 150) + EVT_SET(EVT_VAR(1), 170) + EVT_CALL(RandInt, 50, EVT_VAR(2)) + EVT_SUB(EVT_VAR(2), 25) + EVT_CALL(PlayEffect, 0xE, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 60, 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(10) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 50) + EVT_WAIT_FRAMES(50) + EVT_CALL(PlayEffect, 0x60, 0, 0, 0, 20, EVT_FIXED(1.0), 160, 0, 0, 0, 0, 0, 0, 0) + EVT_THREAD + EVT_WAIT_FRAMES(17) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_202E) + EVT_CALL(StartRumble, 9) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(46) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_202E) + EVT_CALL(StartRumble, 9) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(25) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_202E) + EVT_CALL(StartRumble, 9) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(25) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_202E) + EVT_CALL(StartRumble, 9) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_WAIT_FRAMES(15) + EVT_CALL(StartRumble, 10) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_CALL(ShakeCam, 1, 0, 10, EVT_FIXED(2.0)) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(110) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A123C_71C06C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetItemPower, ITEM_SNOWMAN_DOLL, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939524104, 0, EVT_VAR(0), 32) + EVT_WAIT_FRAMES(5) + EVT_LABEL(1) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(30) + EVT_CALL(N(func_802A13B8_71C1E8)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/stone_cap.c b/src/battle/item/stone_cap.c index 4befed314a..10df048a1d 100644 --- a/src/battle/item/stone_cap.c +++ b/src/battle/item/stone_cap.c @@ -47,16 +47,18 @@ ApiStatus N(func_802A123C_7217DC)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_STONE_CAP; - await N(UseItemWithEffect); - PlaySound(SOUND_UNKNOWN_361); - SetAnimation(ACTOR_PLAYER, 0, ANIM_30009); - sleep 30; - SetAnimation(ACTOR_PLAYER, 0, ANIM_CROUCH); - GetItemPower(ITEM_STONE_CAP, EVT_VAR(0), EVT_VAR(1)); - PlaySound(SOUND_UNKNOWN_362); - N(func_802A123C_7217DC)(); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 20; -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000088) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(PlaySound, SOUND_UNKNOWN_361) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_30009) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_CROUCH) + EVT_CALL(GetItemPower, ITEM_STONE_CAP, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(PlaySound, SOUND_UNKNOWN_362) + EVT_CALL(N(func_802A123C_7217DC)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(20) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/stop_watch.c b/src/battle/item/stop_watch.c index ac350fbd06..71aa60c61c 100644 --- a/src/battle/item/stop_watch.c +++ b/src/battle/item/stop_watch.c @@ -22,36 +22,38 @@ ApiStatus N(func_802A12D4_7270A4)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_STOP_WATCH; - await N(UseItemWithEffect); - spawn { - sleep 5; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - } - N(FadeBackgroundToBlack)(); - PlayEffect(0x62, 0, 0, 0, 0, 1.0, 200, 0, 0, 0, 0, 0, 0, 0); - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_246); - sleep 200; - UseBattleCamPreset(3); - MoveBattleCamOver(20); - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - GetItemPower(ITEM_STOP_WATCH, EVT_VAR(0), EVT_VAR(1)); - MakeStatusField(EVT_VAR(0), 0x200000, 100, EVT_VAR(0)); - func_80252B3C(EVT_VAR(0), 0x50000000, EVT_VAR(0), 0, 32); -1: - sleep 5; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - N(func_802A12D4_7270A4)(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000092) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_END_THREAD + EVT_CALL(N(FadeBackgroundToBlack)) + EVT_CALL(PlayEffect, 0x62, 0, 0, 0, 0, EVT_FIXED(1.0), 200, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_246) + EVT_WAIT_FRAMES(200) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(GetItemPower, ITEM_STOP_WATCH, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(MakeStatusField, EVT_VAR(0), 2097152, 100, EVT_VAR(0)) + EVT_CALL(func_80252B3C, EVT_VAR(0), 1342177280, EVT_VAR(0), 0, 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(N(func_802A12D4_7270A4)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/strange_cake.c b/src/battle/item/strange_cake.c index 4aa44e7829..d18047a8c7 100644 --- a/src/battle/item/strange_cake.c +++ b/src/battle/item/strange_cake.c @@ -321,89 +321,94 @@ s32 N(D_802A2858_732B58)[] = { 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x000000000 }; -EvtSource N(script6) = SCRIPT({ - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - if (EVT_VAR(1) == 211) { - EVT_VAR(10) = (const) ITEM_KOOKY_COOKIE; - EVT_VAR(1) = 0; - await N(UseItemWithEffect); - await N(EatItem); - N(func_802A1A8C_731D8C)(); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 20; - EVT_VAR(1) += 25; - N(func_802A18D8_731BD8)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - N(AddFP)(EVT_VAR(3)); - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_GOT_ITEM); - } else { - EVT_VAR(10) = (const) ITEM_STRANGE_CAKE; - EVT_VAR(1) = 0; - await N(UseItemWithEffect); - await N(EatItem); - SetAnimation(ACTOR_PLAYER, 0, ANIM_GOT_ITEM); - } - sleep 10; - spawn { - sleep 220; - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_3F3); - } - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_368); - N(func_802A13E4_7316E4)(); - sleep 2; - match EVT_VAR(0) { - == 0 { - await N(script7); - } - == 1 { - await N(script8); - } - == 2 { - await N(script9); - } - } - await N(PlayerGoHome); -}); +EvtSource N(script6) = { + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_IF_EQ(EVT_VAR(1), 211) + EVT_SET_CONST(EVT_VAR(10), 0xD3) + EVT_SET(EVT_VAR(1), 0) + EVT_EXEC_WAIT(battle_item_strange_cake_UseItemWithEffect) + EVT_EXEC_WAIT(battle_item_strange_cake_EatItem) + EVT_CALL(battle_item_strange_cake_func_802A1A8C_731D8C) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 20) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(battle_item_strange_cake_func_802A18D8_731BD8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(battle_item_strange_cake_AddFP, EVT_VAR(3)) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, 0, 0, 65586) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(SetAnimation, 0, 0, 65538) + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, 0, 0, 65567) + EVT_ELSE + EVT_SET_CONST(EVT_VAR(10), 0xD2) + EVT_SET(EVT_VAR(1), 0) + EVT_EXEC_WAIT(battle_item_strange_cake_UseItemWithEffect) + EVT_EXEC_WAIT(battle_item_strange_cake_EatItem) + EVT_CALL(SetAnimation, 0, 0, 65567) + EVT_END_IF + EVT_WAIT_FRAMES(10) + EVT_THREAD + EVT_WAIT_FRAMES(220) + EVT_CALL(PlaySoundAtActor, 0, 1011) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, 0, 872) + EVT_CALL(battle_item_strange_cake_func_802A13E4_7316E4) + EVT_WAIT_FRAMES(2) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_EXEC_WAIT(battle_item_strange_cake_script7) + EVT_CASE_EQ(1) + EVT_EXEC_WAIT(battle_item_strange_cake_script8) + EVT_CASE_EQ(2) + EVT_EXEC_WAIT(battle_item_strange_cake_script9) + EVT_END_SWITCH + EVT_EXEC_WAIT(battle_item_strange_cake_PlayerGoHome) + EVT_RETURN + EVT_END +}; -EvtSource N(script7) = SCRIPT({ - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - PlayEffect(0x57, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - N(func_802A1AD8_731DD8)(); - sleep 20; - ShowMessageBox(16, 60); - WaitForMessageBoxDone(); -}); +EvtSource N(script7) = { + EVT_CALL(SetAnimation, 0, 0, 65538) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(PlayEffect, 87, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(battle_item_strange_cake_func_802A1AD8_731DD8) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 16, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_RETURN + EVT_END +}; -EvtSource N(script8) = SCRIPT({ - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - PlayEffect(0x33, 6, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.0, 30, 0, 0, 0, 0, 0, 0, 0); - N(func_802A1B14_731E14)(); - sleep 20; - ShowMessageBox(17, 60); - WaitForMessageBoxDone(); -}); +EvtSource N(script8) = { + EVT_CALL(SetAnimation, 0, 0, 65538) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(PlayEffect, 51, 6, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.0), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(battle_item_strange_cake_func_802A1B14_731E14) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 17, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_RETURN + EVT_END +}; -EvtSource N(script9) = SCRIPT({ - SetAnimation(ACTOR_PLAYER, 0, ANIM_30004); - SetGoalToTarget(ACTOR_PLAYER); - GetGoalPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn DoSleepHit; - N(func_802A1B68_731E68)(); - sleep 20; - ShowMessageBox(11, 60); - WaitForMessageBoxDone(); -}); +EvtSource N(script9) = { + EVT_CALL(SetAnimation, 0, 0, 196612) + EVT_CALL(SetGoalToTarget, 0) + EVT_CALL(GetGoalPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_EXEC(DoSleepHit) + EVT_CALL(battle_item_strange_cake_func_802A1B68_731E68) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 11, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/super_soda.c b/src/battle/item/super_soda.c index 2b149489b0..103fc3db0b 100644 --- a/src/battle/item/super_soda.c +++ b/src/battle/item/super_soda.c @@ -83,115 +83,119 @@ ApiStatus N(func_802A1418_7250F8)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(script6) = SCRIPT({ - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - sleep 10; - EVT_VAR(1) = EVT_VAR(15); - await N(UseItem); - EVT_VAR(14) = EVT_VAR(10); - SetAnimation(ACTOR_PLAYER, 0, ANIM_THROW); - spawn { - sleep 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - } - CreateVirtualEntity(EVT_VAR(10), 0x80283EE8); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 30; - EVT_VAR(2) += 5; - SetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetVirtualEntityFlags(EVT_VAR(10), 32); - spawn { - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 45; - MakeItemEntity(EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0); - EVT_VAR(14) = EVT_VAR(0); - loop 25 { - GetVirtualEntityPosition(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - N(func_802A123C_724F1C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - RemoveItemEntity(EVT_VAR(14)); - } - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetBattleCamTarget(0xFFFFFF83, 1, 0); - SetBattleCamOffsetZ(41); - SetBattleCamZoom(248); - MoveBattleCamOver(25); - SetVirtualEntityJumpGravity(EVT_VAR(10), 0.400390625); - EVT_VAR(2) += 5; - VirtualEntityJumpTo(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25); - AddBattleCamZoom(100); - MoveBattleCamOver(30); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - if (EVT_VAR(11) > 0) { - N(func_802A12EC_724FCC)(EVT_VAR(11)); - } - sleep 30; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)); - sleep 20; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - sleep 10; -}); +EvtSource N(script6) = { + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 180) + EVT_WAIT_FRAMES(10) + EVT_SET(EVT_VAR(1), EVT_VAR(15)) + EVT_EXEC_WAIT(N(UseItem)) + EVT_SET(EVT_VAR(14), EVT_VAR(10)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THROW) + EVT_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_END_THREAD + EVT_CALL(CreateVirtualEntity, EVT_VAR(10), 0x80283EE8) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 30) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(SetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetVirtualEntityFlags, EVT_VAR(10), 32) + EVT_THREAD + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 45) + EVT_CALL(MakeItemEntity, EVT_VAR(14), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 0) + EVT_SET(EVT_VAR(14), EVT_VAR(0)) + EVT_LOOP(25) + EVT_CALL(GetVirtualEntityPosition, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802A123C_724F1C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(RemoveItemEntity, EVT_VAR(14)) + EVT_END_THREAD + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetGoalPos, ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetBattleCamTarget, -125, 1, 0) + EVT_CALL(SetBattleCamOffsetZ, 41) + EVT_CALL(SetBattleCamZoom, 248) + EVT_CALL(MoveBattleCamOver, 25) + EVT_CALL(SetVirtualEntityJumpGravity, EVT_VAR(10), EVT_FIXED(0.4)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(VirtualEntityJumpTo, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 25) + EVT_CALL(AddBattleCamZoom, 100) + EVT_CALL(MoveBattleCamOver, 30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_IF_GT(EVT_VAR(11), 0) + EVT_CALL(N(func_802A12EC_724FCC), EVT_VAR(11)) + EVT_END_IF + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(11)) + EVT_WAIT_FRAMES(20) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, ACTOR_PLAYER, 0) + EVT_WAIT_FRAMES(10) + EVT_RETURN + EVT_END +}; -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_SUPER_SODA; - await N(UseItemWithEffect); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - if (EVT_VAR(0) == ACTOR_PLAYER) { - PlaySoundAtActor(ACTOR_PLAYER, SOUND_UNKNOWN_2095); - SetAnimation(ACTOR_PLAYER, 0, ANIM_DRINK); - sleep 45; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A1418_7250F8)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - N(AddFP)(5); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - N(func_802A1378_725058)(ACTOR_PLAYER); - sleep 20; - } else { - EVT_VAR(11) = 0; - EVT_VAR(12) = 0; - EVT_VAR(15) = 0; - await N(script6); - } - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000009B) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_UNKNOWN_2095) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_DRINK) + EVT_WAIT_FRAMES(45) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A1418_7250F8), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(N(AddFP), 5) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(N(func_802A1378_725058), 0) + EVT_WAIT_FRAMES(20) + EVT_ELSE + EVT_SET(EVT_VAR(11), 0) + EVT_SET(EVT_VAR(12), 0) + EVT_SET(EVT_VAR(15), 0) + EVT_EXEC_WAIT(N(script6)) + EVT_END_IF + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/tasty_tonic.c b/src/battle/item/tasty_tonic.c index 395717d2c8..3178690a3d 100644 --- a/src/battle/item/tasty_tonic.c +++ b/src/battle/item/tasty_tonic.c @@ -29,40 +29,42 @@ ApiStatus N(func_802A123C_72223C)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_TASTY_TONIC; - await N(UseItemWithEffect); - InitTargetIterator(); - GetOwnerTarget(EVT_VAR(0), EVT_VAR(1)); - if (EVT_VAR(0) == 0) { - await N(DrinkItem); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) += 5; - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - N(func_802A123C_72223C)(ACTOR_PLAYER); - sleep 20; - } else { - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 20; - sleep 30; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) += 5; - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5); - N(func_802A123C_72223C)(ACTOR_PARTNER); - sleep 20; - } - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x89) + EVT_EXEC_WAIT(battle_item_tasty_tonic_UseItemWithEffect) + EVT_CALL(InitTargetIterator) + EVT_CALL(GetOwnerTarget, EVT_VAR(0), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_EXEC_WAIT(battle_item_tasty_tonic_DrinkItem) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_CALL(SetAnimation, 0, 0, 65586) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetAnimation, 0, 0, 65538) + EVT_CALL(GetActorPos, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(battle_item_tasty_tonic_func_802A123C_72223C, 0) + EVT_WAIT_FRAMES(20) + EVT_ELSE + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 20) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 5) + EVT_CALL(battle_item_tasty_tonic_func_802A123C_72223C, 256) + EVT_WAIT_FRAMES(20) + EVT_END_IF + EVT_EXEC_WAIT(battle_item_tasty_tonic_PlayerGoHome) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/thunder_bolt.c b/src/battle/item/thunder_bolt.c index 21d59d68de..a886db9683 100644 --- a/src/battle/item/thunder_bolt.c +++ b/src/battle/item/thunder_bolt.c @@ -51,35 +51,37 @@ ApiStatus N(func_802A1420_722F60)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_THUNDER_BOLT; - await N(UseItemWithEffect); - spawn { - sleep 5; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - } - N(FadeBackgroundToBlack)(); - PlaySound(SOUND_UNKNOWN_365); - sleep 10; - InitTargetIterator(); - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - N(func_802A123C_722D7C)(); - sleep 5; - StartRumble(10); - ShakeCam(1, 0, 5, 1.0); - GetItemPower(ITEM_THUNDER_RAGE, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x38000020, 0, EVT_VAR(0), 32); -1: - sleep 5; - UseBattleCamPreset(3); - MoveBattleCamOver(20); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 30; - N(func_802A1420_722F60)(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x84) + EVT_EXEC_WAIT(battle_item_thunder_bolt_UseItemWithEffect) + EVT_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_END_THREAD + EVT_CALL(battle_item_thunder_bolt_FadeBackgroundToBlack) + EVT_CALL(PlaySound, 869) + EVT_WAIT_FRAMES(10) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, -127) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(battle_item_thunder_bolt_func_802A123C_722D7C) + EVT_WAIT_FRAMES(5) + EVT_CALL(StartRumble, 10) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_CALL(GetItemPower, 130, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939524128, 0, EVT_VAR(0), 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(SetAnimation, 0, 0, 65538) + EVT_WAIT_FRAMES(30) + EVT_CALL(battle_item_thunder_bolt_func_802A1420_722F60) + EVT_EXEC_WAIT(battle_item_thunder_bolt_PlayerGoHome) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/thunder_rage.c b/src/battle/item/thunder_rage.c index 2f7fbedd52..f76e62a28d 100644 --- a/src/battle/item/thunder_rage.c +++ b/src/battle/item/thunder_rage.c @@ -51,41 +51,43 @@ ApiStatus N(func_802A1354_71B4F4)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_THUNDER_RAGE; - await N(UseItemWithEffect); - parallel { - sleep 5; - UseBattleCamPreset(2); - MoveBattleCamOver(20); - } - N(FadeBackgroundToBlack)(); - PlaySound(SOUND_UNKNOWN_365); - sleep 10; - InitTargetIterator(); -0: - SetGoalToTarget(ACTOR_SELF); - ItemCheckHit(EVT_VAR(0), 0x10000000, 0, EVT_VAR(0), 0); - if (EVT_VAR(0) == 6) { - goto 1; - } - N(func_802A1354_71B4F4)(); - sleep 5; - StartRumble(10); - ShakeCam(1, 0, 5, 1.0); - SetGoalToTarget(ACTOR_SELF); - GetItemPower(ITEM_THUNDER_RAGE, EVT_VAR(0), EVT_VAR(1)); - ItemDamageEnemy(EVT_VAR(0), 0x38000020, 0, EVT_VAR(0), 32); -1: - sleep 5; - ChooseNextTarget(0, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - goto 0; - } - UseBattleCamPreset(3); - MoveBattleCamOver(20); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 30; - N(func_802A12D4_71B474)(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x00000082) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CHILD_THREAD + EVT_WAIT_FRAMES(5) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 20) + EVT_END_CHILD_THREAD + EVT_CALL(N(FadeBackgroundToBlack)) + EVT_CALL(PlaySound, SOUND_UNKNOWN_365) + EVT_WAIT_FRAMES(10) + EVT_CALL(InitTargetIterator) + EVT_LABEL(0) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(ItemCheckHit, EVT_VAR(0), 268435456, 0, EVT_VAR(0), 0) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_GOTO(1) + EVT_END_IF + EVT_CALL(N(func_802A1354_71B4F4)) + EVT_WAIT_FRAMES(5) + EVT_CALL(StartRumble, 10) + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_CALL(SetGoalToTarget, ACTOR_SELF) + EVT_CALL(GetItemPower, ITEM_THUNDER_RAGE, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(ItemDamageEnemy, EVT_VAR(0), 939524128, 0, EVT_VAR(0), 32) + EVT_LABEL(1) + EVT_WAIT_FRAMES(5) + EVT_CALL(ChooseNextTarget, 0, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(MoveBattleCamOver, 20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(30) + EVT_CALL(N(func_802A12D4_71B474)) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/ultra_shroom.c b/src/battle/item/ultra_shroom.c index f4c0bf0969..7605b51dee 100644 --- a/src/battle/item/ultra_shroom.c +++ b/src/battle/item/ultra_shroom.c @@ -26,28 +26,30 @@ ApiStatus N(func_802A12FC_723A7C)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_SUPER_SHROOM; - await N(UseItemWithEffect); - AddBattleCamZoom(50); - MoveBattleCamOver(20); - await N(EatItem); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A123C_7239BC)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - N(func_802A12FC_723A7C)(); - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) += 5; - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000008C) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_CALL(AddBattleCamZoom, 50) + EVT_CALL(MoveBattleCamOver, 20) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A123C_7239BC), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(N(func_802A12FC_723A7C)) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/unknown_item.c b/src/battle/item/unknown_item.c index cb2d8b4870..b04def88ff 100644 --- a/src/battle/item/unknown_item.c +++ b/src/battle/item/unknown_item.c @@ -26,26 +26,28 @@ ApiStatus N(func_802A12FC_72453C)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_ULTRA_SHROOM; - await N(UseItemWithEffect); - await N(EatItem); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 0; - EVT_VAR(1) += 35; - N(func_802A123C_72447C)(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - func_802D7520(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20); - N(func_802A12FC_72453C)(); - sleep 10; - SetAnimation(ACTOR_PLAYER, 0, ANIM_THUMBS_UP); - sleep 30; - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) += 5; - func_802D75D8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - sleep 20; - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000008E) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 0) + EVT_ADD(EVT_VAR(1), 35) + EVT_CALL(N(func_802A123C_72447C), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D7520, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20) + EVT_CALL(N(func_802A12FC_72453C)) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_THUMBS_UP) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(func_802D75D8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 20) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/item/volt_shroom.c b/src/battle/item/volt_shroom.c index 99a0212258..cb4d7905cf 100644 --- a/src/battle/item/volt_shroom.c +++ b/src/battle/item/volt_shroom.c @@ -13,23 +13,25 @@ ApiStatus N(func_802A123C_71AA2C)(Evt* script, s32 isInitialCall) { #include "UseItem.inc.c" -EvtSource N(main) = SCRIPT({ - EVT_VAR(10) = (const) ITEM_VOLT_SHROOM; - await N(UseItemWithEffect); - await N(EatItem); - SetAnimation(ACTOR_PLAYER, 0, ANIM_10002); - GetActorPos(ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(3) = 20; - MultiplyByActorScale(EVT_VAR(3)); - EVT_VAR(1) += EVT_VAR(3); - EVT_VAR(3) = 1.0; - MultiplyByActorScale(EVT_VAR(3)); - PlayEffect(0x57, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), 30, 0, 0, 0, 0, 0, 0, 0); - PlaySound(SOUND_UNKNOWN_379); - GetItemPower(ITEM_VOLT_SHROOM, EVT_VAR(0), EVT_VAR(1)); - N(func_802A123C_71AA2C)(); - sleep 20; - ShowMessageBox(16, 60); - WaitForMessageBoxDone(); - await N(PlayerGoHome); -}); +EvtSource N(main) = { + EVT_SET_CONST(EVT_VAR(10), 0x0000008B) + EVT_EXEC_WAIT(N(UseItemWithEffect)) + EVT_EXEC_WAIT(N(EatItem)) + EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_10002) + EVT_CALL(GetActorPos, ACTOR_PLAYER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SET(EVT_VAR(3), 20) + EVT_CALL(MultiplyByActorScale, EVT_VAR(3)) + EVT_ADD(EVT_VAR(1), EVT_VAR(3)) + EVT_SETF(EVT_VAR(3), EVT_FIXED(1.0)) + EVT_CALL(MultiplyByActorScale, EVT_VAR(3)) + EVT_CALL(PlayEffect, 0x57, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), 30, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlaySound, SOUND_UNKNOWN_379) + EVT_CALL(GetItemPower, ITEM_VOLT_SHROOM, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(N(func_802A123C_71AA2C)) + EVT_WAIT_FRAMES(20) + EVT_CALL(ShowMessageBox, 16, 60) + EVT_CALL(WaitForMessageBoxDone) + EVT_EXEC_WAIT(N(PlayerGoHome)) + EVT_RETURN + EVT_END +}; diff --git a/src/battle/partner/goombario.c b/src/battle/partner/goombario.c index b1c1489cf9..9966cffef3 100644 --- a/src/battle/partner/goombario.c +++ b/src/battle/partner/goombario.c @@ -317,683 +317,700 @@ ActorDesc N(goombario) = { .statusMessageOffset = { 10, 20 }, }; -EvtSource N(init_802392F0) = SCRIPT({ - BindTakeTurn(ACTOR_PARTNER, N(takeTurn_802396D8)); - BindIdle(ACTOR_PARTNER, N(idle_80239350)); - BindHandleEvent(ACTOR_PARTNER, N(handleEvent_80239360)); - BindNextTurn(256, N(nextTurn_80239A3C)); -}); +EvtSource N(init_802392F0) = { + EVT_CALL(BindTakeTurn, 256, battle_partner_goombario_takeTurn_802396D8) + EVT_CALL(BindIdle, 256, battle_partner_goombario_idle_80239350) + EVT_CALL(BindHandleEvent, 256, battle_partner_goombario_handleEvent_80239360) + EVT_CALL(BindNextTurn, 256, battle_partner_goombario_nextTurn_80239A3C) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_80239350) = SCRIPT({ +EvtSource N(idle_80239350) = { + EVT_RETURN + EVT_END +}; -}); +EvtSource N(handleEvent_80239360) = { + EVT_CALL(UseIdleAnimation, 256, 0) + EVT_CALL(CloseActionCommandInfo) + EVT_CALL(GetLastEvent, 256, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(9) + EVT_CASE_OR_EQ(10) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_SET_CONST(EVT_VAR(2), 0x9000A) + EVT_EXEC_WAIT(0x802977BC) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80296014) + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(23) + EVT_CASE_OR_EQ(25) + EVT_CALL(PlaySoundAtActor, 256, 8332) + EVT_SET_CONST(EVT_VAR(0), 0x1) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80297814) + EVT_END_CASE_GROUP + EVT_CASE_EQ(42) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_SET(EVT_VAR(2), 12) + EVT_EXEC_WAIT(0x80294FE4) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80296014) + EVT_CASE_EQ(44) + EVT_SET_CONST(EVT_VAR(1), 0x9000B) + EVT_SET(EVT_VAR(2), 12) + EVT_SET_CONST(EVT_VAR(3), 0x9000C) + EVT_EXEC_WAIT(0x80294C68) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80296014) + EVT_CASE_EQ(14) + EVT_SET_CONST(EVT_VAR(1), 0x9000B) + EVT_SET_CONST(EVT_VAR(2), 0x9000C) + EVT_EXEC_WAIT(0x8029621C) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80296014) + EVT_CASE_EQ(47) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_SET(EVT_VAR(2), 12) + EVT_EXEC_WAIT(0x80295744) + EVT_CASE_EQ(51) + EVT_CALL(battle_partner_goombario_StopGlowing) + EVT_SET_CONST(EVT_VAR(1), 0x9000A) + EVT_EXEC_WAIT(0x80296014) + EVT_CASE_EQ(52) + EVT_SET_CONST(EVT_VAR(0), 0x1) + EVT_SET_CONST(EVT_VAR(1), 0x90001) + EVT_SET_CONST(EVT_VAR(2), 0x90003) + EVT_SET(EVT_VAR(3), 0) + EVT_EXEC_WAIT(0x80295EC4) + EVT_CASE_OR_EQ(24) + EVT_CASE_OR_EQ(26) + EVT_CALL(PlaySoundAtActor, 256, 8332) + EVT_SET_CONST(EVT_VAR(0), 0x1) + EVT_SET_CONST(EVT_VAR(1), 0x9000E) + EVT_EXEC_WAIT(0x80297814) + EVT_WAIT_FRAMES(10) + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_END_SWITCH + EVT_CALL(UseIdleAnimation, 256, 1) + EVT_RETURN + EVT_END +}; -EvtSource N(handleEvent_80239360) = SCRIPT({ - UseIdleAnimation(ACTOR_PARTNER, FALSE); - CloseActionCommandInfo(); - GetLastEvent(ACTOR_PARTNER, EVT_VAR(0)); - match EVT_VAR(0) { - EVENT_HIT_COMBO, EVENT_HIT { - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - EVT_VAR(2) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x802977BC; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80296014; - } - 23, EVENT_IMMUNE { - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_208C); - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80297814; - } - == EVENT_SPIKE_CONTACT { - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - EVT_VAR(2) = 12; - await 0x80294FE4; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80296014; - } - == EVENT_BURN_CONTACT { - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_burn_pain; - EVT_VAR(2) = 12; - EVT_VAR(3) = (const) NPC_ANIM_battle_goombario_default_burn_dead; - await 0x80294C68; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80296014; - } - == EVENT_BURN_HIT { - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_burn_pain; - EVT_VAR(2) = (const) NPC_ANIM_battle_goombario_default_burn_dead; - await 0x8029621C; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80296014; - } - == EVENT_SHOCK_HIT { - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - EVT_VAR(2) = 12; - await 0x80295744; - } - == 51 { - N(StopGlowing)(); - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_pain; - await 0x80296014; - } - == 52 { - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_idle; - EVT_VAR(2) = (const) NPC_ANIM_battle_goombario_default_run; - EVT_VAR(3) = 0; - await 0x80295EC4; - } - 24, EVENT_BLOCK { - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_208C); - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_block; - await 0x80297814; - sleep 10; - } - else { - } - } - UseIdleAnimation(ACTOR_PARTNER, TRUE); -}); +EvtSource N(takeTurn_802396D8) = { + EVT_CALL(GetBattlePhase, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(1) + EVT_EXEC_WAIT(battle_partner_goombario_8023993C) + EVT_CASE_EQ(0) + EVT_EXEC_WAIT(battle_partner_goombario_802397E0) + EVT_CASE_EQ(5) + EVT_EXEC_WAIT(battle_partner_goombario_80239784) + EVT_CASE_EQ(3) + EVT_EXEC_WAIT(battle_partner_goombario_8023994C) + EVT_CASE_EQ(7) + EVT_EXEC_WAIT(battle_partner_goombario_80239988) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(takeTurn_802396D8) = SCRIPT({ - GetBattlePhase(EVT_VAR(0)); - match EVT_VAR(0) { - == 1 { - await N(8023993C); - } - == HIT_RESULT_HIT { - await N(802397E0); - } - == HIT_RESULT_LUCKY { - await N(80239784); - } - == 3 { - await N(8023994C); - } - == HIT_RESULT_HIT_STATIC { - await N(80239988); - } - } -}); +EvtSource N(80239784) = { + EVT_SET_CONST(EVT_VAR(0), 0x1) + EVT_SET_CONST(EVT_VAR(1), 0x90010) + EVT_SET_CONST(EVT_VAR(2), 0x90011) + EVT_SET_CONST(EVT_VAR(3), 0x90001) + EVT_EXEC_WAIT(0x80294720) + EVT_RETURN + EVT_END +}; -EvtSource N(80239784) = SCRIPT({ - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_celebrate; - EVT_VAR(2) = (const) NPC_ANIM_battle_goombario_default_celebrate_still; - EVT_VAR(3) = (const) NPC_ANIM_battle_goombario_default_idle; - await 0x80294720; -}); +EvtSource N(802397E0) = { + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802694A4, 1) + EVT_CALL(SetBattleFlagBits, 16384, 0) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(8) + EVT_CALL(LoadStarPowerScript) + EVT_EXEC_WAIT(EVT_VAR(0)) + EVT_RETURN + EVT_CASE_EQ(2) + EVT_CALL(LoadItemScript) + EVT_EXEC_WAIT(EVT_VAR(0)) + EVT_RETURN + EVT_END_SWITCH + EVT_SWITCH(EVT_VAR(2)) + EVT_CASE_EQ(131) + EVT_EXEC_WAIT(battle_partner_goombario_8023A754) + EVT_CASE_EQ(132) + EVT_EXEC_WAIT(battle_partner_goombario_8023ADC4) + EVT_CASE_EQ(133) + EVT_EXEC_WAIT(battle_partner_goombario_8023B45C) + EVT_CASE_EQ(134) + EVT_EXEC_WAIT(battle_partner_goombario_8023C5B8) + EVT_CASE_EQ(135) + EVT_EXEC_WAIT(battle_partner_goombario_8023C90C) + EVT_CASE_EQ(136) + EVT_EXEC_WAIT(battle_partner_goombario_8023BB9C) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(802397E0) = SCRIPT({ - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802694A4(1); - SetBattleFlagBits(16384, 0); - match EVT_VAR(0) { - == 8 { - LoadStarPowerScript(); - await 0xFE363C80; - return; - } - == 2 { - LoadItemScript(); - await 0xFE363C80; - return; - } - } - match EVT_VAR(2) { - == 131 { - await N(8023A754); - } - == 132 { - await N(8023ADC4); - } - == 133 { - await N(8023B45C); - } - == 134 { - await N(8023C5B8); - } - == 135 { - await N(8023C90C); - } - == 136 { - await N(8023BB9C); - } - } -}); +EvtSource N(8023993C) = { + EVT_RETURN + EVT_END +}; -EvtSource N(8023993C) = SCRIPT({ +EvtSource N(8023994C) = { + EVT_SET_CONST(EVT_VAR(0), 0x1) + EVT_SET_CONST(EVT_VAR(1), 0x90003) + EVT_EXEC_WAIT(0x80294AFC) + EVT_RETURN + EVT_END +}; -}); +EvtSource N(80239988) = { + EVT_CALL(UseIdleAnimation, 256, 0) + EVT_CALL(SetGoalToHome, 256) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(6.0)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(SetActorYaw, 256, 0) + EVT_CALL(RunToGoal, 256, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(UseIdleAnimation, 256, 1) + EVT_RETURN + EVT_END +}; -EvtSource N(8023994C) = SCRIPT({ - EVT_VAR(0) = (const) 1; - EVT_VAR(1) = (const) NPC_ANIM_battle_goombario_default_run; - await 0x80294AFC; -}); +EvtSource N(nextTurn_80239A3C) = { + EVT_CALL(GetBattlePhase, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(10) + EVT_IF_EQ(EVT_SAVE_FLAG(1817), 0) + EVT_CALL(UseIdleAnimation, 256, 0) + EVT_CALL(UseBattleCamPreset, 14) + EVT_CALL(BattleCamTargetActor, -127) + EVT_CALL(MoveBattleCamOver, 20) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetActorYaw, 0, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 180) + EVT_WAIT_FRAMES(5) + EVT_CALL(ActorSpeak, 721082, 256, 0, 589839, 589825) + EVT_CALL(SetActorYaw, 0, 150) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 120) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 90) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 60) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 30) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorYaw, 0, 0) + EVT_WAIT_FRAMES(5) + EVT_SET(EVT_SAVE_FLAG(1817), 1) + EVT_CALL(UseIdleAnimation, 256, 1) + EVT_END_IF + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(80239988) = SCRIPT({ - UseIdleAnimation(ACTOR_PARTNER, FALSE); - SetGoalToHome(ACTOR_PARTNER); - SetActorSpeed(ACTOR_PARTNER, 6.0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - SetActorYaw(ACTOR_PARTNER, 0); - RunToGoal(ACTOR_PARTNER, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - UseIdleAnimation(ACTOR_PARTNER, 1); -}); +EvtSource N(80239CA8) = { + EVT_CALL(func_80280818) + EVT_CALL(UseBattleCamPreset, 51) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_CALL(SetActorRotationOffset, -127, 0, 12, 0) + EVT_SET(EVT_VAR(0), 180) + EVT_LOOP(3) + EVT_ADD(EVT_VAR(0), 60) + EVT_CALL(SetActorRotation, -127, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetActorRotation, -127, 0, 0, 0) + EVT_CALL(SetActorRotationOffset, -127, 0, 0, 0) + EVT_END_THREAD + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 30) + EVT_SET(EVT_VAR(1), 0) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.2001953125)) + EVT_CALL(battle_partner_goombario_func_80238000_6F10E0) + EVT_CALL(JumpToGoal, 256, EVT_VAR(0), 0, 1, 0) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorRotation, -127, 0, 0, 0) + EVT_CALL(SetActorDispOffset, -127, 0, 0, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(AddGoalPos, 256, -10, 0, 0) + EVT_CALL(JumpToGoal, 256, 6, 0, 0, 1) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetAnimation, -127, 1, 589825) + EVT_CALL(SetActorDispOffset, -127, 0, 0, 0) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetGoalToHome, 256) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(8.0)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(RunToGoal, 256, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_RETURN + EVT_END +}; -EvtSource N(nextTurn_80239A3C) = SCRIPT({ - GetBattlePhase(EVT_VAR(0)); - match EVT_VAR(0) { - == 10 { - if (EVT_SAVE_FLAG(1817) == 0) { - UseIdleAnimation(ACTOR_PARTNER, 0); - UseBattleCamPreset(14); - BattleCamTargetActor(ACTOR_SELF); - MoveBattleCamOver(20); - sleep 10; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 180); - sleep 5; - ActorSpeak(721082, 256, 0, 589839, 589825); - SetActorYaw(ACTOR_PLAYER, 150); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 120); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 90); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 60); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 30); - sleep 1; - SetActorYaw(ACTOR_PLAYER, 0); - sleep 5; - EVT_SAVE_FLAG(1817) = 1; - UseIdleAnimation(ACTOR_PARTNER, 1); - } - } - } -}); +EvtSource N(8023A06C) = { + EVT_CALL(func_80280818) + EVT_CALL(UseBattleCamPreset, 3) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(SetGoalToHome, 256) + EVT_CALL(GetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 60) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.400390625)) + EVT_CALL(battle_partner_goombario_func_80238000_6F10E0) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_CALL(SetActorRotationOffset, -127, 0, 12, 0) + EVT_SUB(EVT_VAR(0), 4) + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIV(EVT_VAR(1), 3) + EVT_IF_LT(EVT_VAR(1), 1) + EVT_SET(EVT_VAR(1), 1) + EVT_END_IF + EVT_SET(EVT_VAR(2), EVT_VAR(1)) + EVT_MOD(EVT_VAR(2), 2) + EVT_IF_EQ(EVT_VAR(2), 0) + EVT_SUB(EVT_VAR(1), 1) + EVT_END_IF + EVT_SET(EVT_VAR(0), 180) + EVT_LOOP(EVT_VAR(1)) + EVT_LOOP(3) + EVT_ADD(EVT_VAR(0), 60) + EVT_CALL(SetActorRotation, -127, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_LOOP + EVT_CALL(SetActorRotation, -127, 0, 0, 0) + EVT_CALL(SetActorRotationOffset, -127, 0, 0, 0) + EVT_END_THREAD + EVT_CALL(JumpToGoal, 256, EVT_VAR(0), 0, 1, 0) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorRotation, -127, 0, 0, 0) + EVT_CALL(SetActorDispOffset, -127, 0, 0, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(AddGoalPos, 256, -20, 0, 0) + EVT_CALL(JumpToGoal, 256, 6, 0, 0, 1) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(AddGoalPos, 256, -10, 0, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(SetActorDispOffset, -127, 0, 0, 0) + EVT_CALL(JumpToGoal, 256, 4, 0, 0, 1) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorDispOffset, -127, 0, 0, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetGoalToHome, 256) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(8.0)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(RunToGoal, 256, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_RETURN + EVT_END +}; -EvtSource N(80239CA8) = SCRIPT({ - func_80280818(); - UseBattleCamPreset(51); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - spawn { - sleep 4; - SetActorRotationOffset(-127, 0, 12, 0); - EVT_VAR(0) = 180; - loop 3 { - EVT_VAR(0) += 60; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorRotationOffset(-127, 0, 0, 0); - } - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 30; - EVT_VAR(1) = 0; - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_PARTNER, 1.2); - N(func_80238000_6F10E0)(); - JumpToGoal(ACTOR_PARTNER, EVT_VAR(0), FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 1; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - AddGoalPos(ACTOR_PARTNER, -10, 0, 0); - JumpToGoal(ACTOR_PARTNER, 6, FALSE, FALSE, TRUE); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 1; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_idle); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - sleep 2; - SetGoalToHome(ACTOR_PARTNER); - SetActorSpeed(ACTOR_PARTNER, 8.0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - RunToGoal(ACTOR_PARTNER, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); -}); +EvtSource N(8023A52C) = { + EVT_CALL(SetGoalToFirstTarget, -127) + EVT_CALL(GetGoalPos, -127, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(0), 40) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(GetGoalPos, 256, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_SUB(EVT_VAR(3), EVT_FIXED(70.0)) + EVT_IF_LT(EVT_VAR(0), EVT_VAR(3)) + EVT_SET(EVT_VAR(3), EVT_VAR(0)) + EVT_END_IF + EVT_CALL(SetGoalPos, 256, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(UseBattleCamPreset, 47) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(5.0)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(RunToGoal, 256, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_RETURN + EVT_END +}; -EvtSource N(8023A06C) = SCRIPT({ - func_80280818(); - UseBattleCamPreset(3); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - SetGoalToHome(ACTOR_PARTNER); - GetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 60; - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetActorJumpGravity(ACTOR_PARTNER, 1.4); - N(func_80238000_6F10E0)(); - spawn { - sleep 4; - SetActorRotationOffset(-127, 0, 12, 0); - EVT_VAR(0) -= 4; - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= 3; - if (EVT_VAR(1) < 1) { - EVT_VAR(1) = 1; - } - EVT_VAR(2) = EVT_VAR(1); - EVT_VAR(2) %= 2; - if (EVT_VAR(2) == 0) { - EVT_VAR(1) -= 1; - } - EVT_VAR(0) = 180; - loop EVT_VAR(1) { - loop 3 { - EVT_VAR(0) += 60; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorRotationOffset(-127, 0, 0, 0); - } - JumpToGoal(ACTOR_PARTNER, EVT_VAR(0), FALSE, TRUE, FALSE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 1; - SetActorRotation(ACTOR_SELF, 0, 0, 0); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - AddGoalPos(ACTOR_PARTNER, -20, 0, 0); - JumpToGoal(ACTOR_PARTNER, 6, FALSE, FALSE, TRUE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 1; - AddGoalPos(ACTOR_PARTNER, -10, 0, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - JumpToGoal(ACTOR_PARTNER, 4, FALSE, FALSE, TRUE); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 1; - SetActorDispOffset(ACTOR_SELF, 0, 0, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - sleep 2; - SetGoalToHome(ACTOR_PARTNER); - SetActorSpeed(ACTOR_PARTNER, 8.0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - RunToGoal(ACTOR_PARTNER, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); -}); +EvtSource N(8023A66C) = { + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(GetGoalPos, 256, EVT_VAR(11), EVT_VAR(7), EVT_VAR(13)) + EVT_CALL(GetActorPos, 256, EVT_VAR(7), EVT_VAR(13), EVT_VAR(14)) + EVT_IF_GT(EVT_VAR(11), EVT_VAR(7)) + EVT_SUB(EVT_VAR(11), EVT_VAR(7)) + EVT_ELSE + EVT_SUB(EVT_VAR(7), EVT_VAR(11)) + EVT_SET(EVT_VAR(11), EVT_VAR(7)) + EVT_END_IF + EVT_SUB(EVT_VAR(11), 20) + EVT_DIVF(EVT_VAR(11), EVT_FIXED(10.5888671875)) + EVT_ADDF(EVT_VAR(11), 15) + EVT_SET(EVT_VAR(10), EVT_VAR(11)) + EVT_RETURN + EVT_END +}; -EvtSource N(8023A52C) = SCRIPT({ - SetGoalToFirstTarget(-127); - GetGoalPos(ACTOR_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) -= 40; - InitTargetIterator(); - SetGoalToTarget(ACTOR_PARTNER); - GetGoalPos(ACTOR_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(3) -= (int) 70.0; - if (EVT_VAR(0) < EVT_VAR(3)) { - EVT_VAR(3) = EVT_VAR(0); - } - SetGoalPos(ACTOR_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - UseBattleCamPreset(47); - SetActorSpeed(ACTOR_PARTNER, 5.0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - RunToGoal(ACTOR_PARTNER, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); -}); +EvtSource N(8023A754) = { + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_EXEC_WAIT(battle_partner_goombario_8023A52C) + EVT_EXEC_WAIT(battle_partner_goombario_8023A66C) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 3) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_CALL(SetActorDispOffset, 256, 0, 9, 0) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 8205) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 0) + EVT_CALL(PartnerTestEnemy, EVT_VAR(0), 128, 20, 0, 1, 16) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(battle_partner_goombario_func_80238A20_6F1B00) + EVT_THREAD + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, 256, 354) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_IF + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(GetActionCommandResult, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_GT(0) + EVT_CALL(battle_partner_goombario_IsGlowing) + EVT_ADD(EVT_VAR(0), 1) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80) + EVT_CASE_DEFAULT + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 1) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48) + EVT_END_SWITCH + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(1) + EVT_CASE_OR_EQ(3) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_THREAD + EVT_CALL(UseBattleCamPreset, 50) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(UseBattleCamPreset, 53) + EVT_END_THREAD + EVT_CALL(func_80269524, EVT_VAR(15)) + EVT_CALL(CloseActionCommandInfo) + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_CALL(func_802694A4, 0) + EVT_CALL(func_802A9120_421B10, 24, 3) + EVT_SET(EVT_VAR(10), 24) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(6) + EVT_ADD(EVT_VAR(0), -30) + EVT_CALL(SetActorRotation, -127, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 641) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 3) + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 1) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32) + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_CALL(func_80269550, EVT_VAR(15)) + EVT_EXEC_WAIT(battle_partner_goombario_8023A06C) + EVT_RETURN + EVT_END +}; -EvtSource N(8023A66C) = SCRIPT({ - SetGoalToTarget(ACTOR_PARTNER); - GetGoalPos(ACTOR_PARTNER, EVT_VAR(11), EVT_VAR(7), EVT_VAR(13)); - GetActorPos(ACTOR_PARTNER, EVT_VAR(7), EVT_VAR(13), EVT_VAR(14)); - if (EVT_VAR(11) > EVT_VAR(7)) { - EVT_VAR(11) -= EVT_VAR(7); - } else { - EVT_VAR(7) -= EVT_VAR(11); - EVT_VAR(11) = EVT_VAR(7); - } - EVT_VAR(11) -= 20; - EVT_VAR(11) /= 10.5888671875; - EVT_VAR(11) += (float) 15; - EVT_VAR(10) = EVT_VAR(11); -}); +EvtSource N(8023ADC4) = { + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_EXEC_WAIT(battle_partner_goombario_8023A52C) + EVT_EXEC_WAIT(battle_partner_goombario_8023A66C) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 3) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_CALL(SetActorDispOffset, 256, 0, 9, 0) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 8205) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 0) + EVT_CALL(PartnerTestEnemy, EVT_VAR(0), 128, 20, 0, 1, 16) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(battle_partner_goombario_func_80238A20_6F1B00) + EVT_THREAD + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, 256, 354) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_IF + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(GetActionCommandResult, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_GT(0) + EVT_CALL(battle_partner_goombario_IsGlowing) + EVT_ADD(EVT_VAR(0), 2) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80) + EVT_CASE_DEFAULT + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 2) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48) + EVT_END_SWITCH + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(1) + EVT_CASE_OR_EQ(3) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_THREAD + EVT_CALL(UseBattleCamPreset, 50) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(UseBattleCamPreset, 53) + EVT_END_THREAD + EVT_CALL(func_80269524, EVT_VAR(15)) + EVT_CALL(CloseActionCommandInfo) + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_CALL(func_802694A4, 0) + EVT_CALL(func_802A9120_421B10, 24, 3) + EVT_SET(EVT_VAR(10), 24) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(6) + EVT_ADD(EVT_VAR(0), -30) + EVT_CALL(SetActorRotation, -127, 0, 0, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(EnableActorBlur, 256, 1) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 641) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 3) + EVT_CALL(EnableActorBlur, 256, -1) + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 2) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32) + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_CALL(func_80269550, EVT_VAR(15)) + EVT_EXEC_WAIT(battle_partner_goombario_8023A06C) + EVT_RETURN + EVT_END +}; -EvtSource N(8023A754) = SCRIPT({ - LoadActionCommand(1); - func_802A9000_430020(); - await N(8023A52C); - await N(8023A66C); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 5; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - UseBattleCamPreset(52); - func_802A9120_421B10(EVT_VAR(10), 3); - UseBattleCamPreset(52); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - SetActorDispOffset(ACTOR_PARTNER, 0, 9, 0); - SetGoalToTarget(ACTOR_PARTNER); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_200D); - func_8023817C_6F125C(EVT_VAR(10), 0); - PartnerTestEnemy(EVT_VAR(0), 128, 20, 0, 1, 16); - if (EVT_VAR(0) == 6) { - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - N(func_80238A20_6F1B00)(); - spawn { - ShakeCam(1, 0, 5, 1.0); - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_162); - sleep 20; - await N(80239CA8); - return; - } - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - GetActionCommandResult(EVT_VAR(0)); - match EVT_VAR(0) { - > 0 { - N(IsGlowing)(); - EVT_VAR(0) += 1; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80); - } - else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 1; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48); - } - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - match EVT_VAR(0) { - 0, 2 { - await N(80239CA8); - return; - } - 1, 3 {} - } - spawn { - UseBattleCamPreset(50); - sleep 5; - SetGoalToTarget(ACTOR_PARTNER); - UseBattleCamPreset(53); - } - func_80269524(EVT_VAR(15)); - CloseActionCommandInfo(); - LoadActionCommand(1); - func_802A9000_430020(); - func_802694A4(0); - func_802A9120_421B10(24, 3); - EVT_VAR(10) = 24; - spawn { - sleep 4; - EVT_VAR(0) = 0; - loop 6 { - EVT_VAR(0) += -30; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetGoalToTarget(ACTOR_PARTNER); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, 0x281); - func_8023817C_6F125C(EVT_VAR(10), 3); - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - N(StopGlowingAndGet)(); - EVT_VAR(0) += 1; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - func_80269550(EVT_VAR(15)); - await N(8023A06C); -}); - -EvtSource N(8023ADC4) = SCRIPT({ - LoadActionCommand(1); - func_802A9000_430020(); - await N(8023A52C); - await N(8023A66C); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 5; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - UseBattleCamPreset(52); - func_802A9120_421B10(EVT_VAR(10), 3); - UseBattleCamPreset(52); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - SetActorDispOffset(ACTOR_PARTNER, 0, 9, 0); - SetGoalToTarget(ACTOR_PARTNER); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_200D); - func_8023817C_6F125C(EVT_VAR(10), 0); - PartnerTestEnemy(EVT_VAR(0), 128, 20, 0, 1, 16); - if (EVT_VAR(0) == 6) { - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - N(func_80238A20_6F1B00)(); - spawn { - ShakeCam(1, 0, 5, 1.0); - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_162); - sleep 20; - await N(80239CA8); - return; - } - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - GetActionCommandResult(EVT_VAR(0)); - match EVT_VAR(0) { - > 0 { - N(IsGlowing)(); - EVT_VAR(0) += 2; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80); - } - else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 2; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48); - } - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - match EVT_VAR(0) { - 0, 2 { - await N(80239CA8); - return; - } - 1, 3 {} - } - spawn { - UseBattleCamPreset(50); - sleep 5; - SetGoalToTarget(ACTOR_PARTNER); - UseBattleCamPreset(53); - } - func_80269524(EVT_VAR(15)); - CloseActionCommandInfo(); - LoadActionCommand(1); - func_802A9000_430020(); - func_802694A4(0); - func_802A9120_421B10(24, 3); - EVT_VAR(10) = 24; - spawn { - sleep 4; - EVT_VAR(0) = 0; - loop 6 { - EVT_VAR(0) += -30; - SetActorRotation(ACTOR_SELF, 0, 0, EVT_VAR(0)); - sleep 1; - } - } - SetGoalToTarget(ACTOR_PARTNER); - EnableActorBlur(256, 1); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, 0x281); - func_8023817C_6F125C(EVT_VAR(10), 3); - EnableActorBlur(256, -1); - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - N(StopGlowingAndGet)(); - EVT_VAR(0) += 2; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - func_80269550(EVT_VAR(15)); - await N(8023A06C); -}); - -EvtSource N(8023B45C) = SCRIPT({ - LoadActionCommand(1); - func_802A9000_430020(); - await N(8023A52C); - await N(8023A66C); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 5; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - UseBattleCamPreset(52); - func_802A9120_421B10(EVT_VAR(10), 3); - UseBattleCamPreset(52); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - SetActorDispOffset(ACTOR_PARTNER, 0, 9, 0); - SetGoalToTarget(ACTOR_PARTNER); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_200D); - func_8023817C_6F125C(EVT_VAR(10), 0); - PartnerTestEnemy(EVT_VAR(0), 128, 20, 0, 1, 16); - if (EVT_VAR(0) == 6) { - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - N(func_80238A20_6F1B00)(); - spawn { - ShakeCam(1, 0, 5, 1.0); - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_162); - sleep 20; - await N(80239CA8); - return; - } - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - GetActionCommandResult(EVT_VAR(0)); - match EVT_VAR(0) { - > 0 { - N(IsGlowing)(); - EVT_VAR(0) += 3; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80); - } - else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 3; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48); - } - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - match EVT_VAR(0) { - 0, 2 { - await N(80239CA8); - return; - } - 1, 3 {} - } - spawn { - UseBattleCamPreset(50); - sleep 5; - SetGoalToTarget(ACTOR_PARTNER); - UseBattleCamPreset(53); - } - func_80269524(EVT_VAR(15)); - CloseActionCommandInfo(); - LoadActionCommand(1); - func_802A9000_430020(); - func_802694A4(0); - func_802A9120_421B10(24, 3); - EVT_VAR(10) = 24; - spawn { - sleep 4; - EVT_VAR(0) = 0; - loop 6 { - EVT_VAR(0) += -30; - SetActorRotation(ACTOR_SELF, 0, -250000000, EVT_VAR(0)); - sleep 1; - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - } - spawn { - EVT_VAR(0) = 0; - loop EVT_VAR(10) { - EVT_VAR(0) += 133; - SetActorRotation(ACTOR_SELF, -250000000, EVT_VAR(0), -250000000); - sleep 1; - } - } - SetGoalToTarget(ACTOR_PARTNER); - EnableActorBlur(256, 1); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, 0x281); - func_8023817C_6F125C(EVT_VAR(10), 3); - EnableActorBlur(256, -1); - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - N(StopGlowingAndGet)(); - EVT_VAR(0) += 3; - PartnerDamageEnemy(EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - func_80269550(EVT_VAR(15)); - await N(8023A06C); -}); +EvtSource N(8023B45C) = { + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_EXEC_WAIT(battle_partner_goombario_8023A52C) + EVT_EXEC_WAIT(battle_partner_goombario_8023A66C) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 3) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_CALL(SetActorDispOffset, 256, 0, 9, 0) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 8205) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 0) + EVT_CALL(PartnerTestEnemy, EVT_VAR(0), 128, 20, 0, 1, 16) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(battle_partner_goombario_func_80238A20_6F1B00) + EVT_THREAD + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, 256, 354) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_IF + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(GetActionCommandResult, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_GT(0) + EVT_CALL(battle_partner_goombario_IsGlowing) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 80) + EVT_CASE_DEFAULT + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 48) + EVT_END_SWITCH + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(1) + EVT_CASE_OR_EQ(3) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_THREAD + EVT_CALL(UseBattleCamPreset, 50) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(UseBattleCamPreset, 53) + EVT_END_THREAD + EVT_CALL(func_80269524, EVT_VAR(15)) + EVT_CALL(CloseActionCommandInfo) + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_CALL(func_802694A4, 0) + EVT_CALL(func_802A9120_421B10, 24, 3) + EVT_SET(EVT_VAR(10), 24) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(6) + EVT_ADD(EVT_VAR(0), -30) + EVT_CALL(SetActorRotation, -127, 0, -250000000, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_END_THREAD + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(EVT_VAR(10)) + EVT_ADD(EVT_VAR(0), 133) + EVT_CALL(SetActorRotation, -127, -250000000, EVT_VAR(0), -250000000) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(EnableActorBlur, 256, 1) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 641) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 3) + EVT_CALL(EnableActorBlur, 256, -1) + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 128, 0, 0, EVT_VAR(0), 32) + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_CALL(func_80269550, EVT_VAR(15)) + EVT_EXEC_WAIT(battle_partner_goombario_8023A06C) + EVT_RETURN + EVT_END +}; s32 N(D_8023BB78_6ECC58)[] = { 0x00000007, 0x00000006, 0x00000005, 0x00000004, 0x00000003, 0x00000002, 0x00000001, 0x00000000, @@ -1001,284 +1018,283 @@ s32 N(D_8023BB78_6ECC58)[] = { s32 D_8023BB98_6ECC78 = 0x000000C8; -EvtSource N(8023BB9C) = SCRIPT({ - LoadActionCommand(1); - func_802A9000_430020(); - await N(8023A52C); - await N(8023A66C); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 18, 0); - sleep 5; - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - sleep 1; - UseBattleCamPreset(52); - func_802A9120_421B10(EVT_VAR(10), 1); - UseBattleCamPreset(52); - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - SetActorDispOffset(ACTOR_PARTNER, 0, 9, 0); - SetGoalToTarget(ACTOR_PARTNER); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_200D); - func_8023817C_6F125C(EVT_VAR(10), 0); - PartnerTestEnemy(EVT_VAR(0), 1048704, 20, 0, 1, 16); - if (EVT_VAR(0) == 6) { - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - N(func_80238A20_6F1B00)(); - spawn { - ShakeCam(1, 0, 5, 1.0); - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_162); - sleep 20; - await N(80239CA8); - return; - } - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - GetActionCommandResult(EVT_VAR(0)); - match EVT_VAR(0) { - > 0 { - N(IsGlowing)(); - EVT_VAR(0) += 3; - PartnerDamageEnemy(EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), 80); - } - else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 3; - PartnerDamageEnemy(EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), 48); - } - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - match EVT_VAR(0) { - 0, 2 { - await N(80239CA8); - return; - } - 1, 3 {} - } - spawn { - UseBattleCamPreset(50); - sleep 5; - SetGoalToTarget(ACTOR_PARTNER); - UseBattleCamPreset(53); - } - func_80269524(EVT_VAR(15)); - EVT_VAR(13) = 0; - EVT_VAR(15) = 0; - EVT_FLAG(0) = 0; -10: - spawn { - UseBattleCamPreset(50); - sleep 5; - SetGoalToTarget(ACTOR_PARTNER); - UseBattleCamPreset(53); - } - CloseActionCommandInfo(); - func_8026919C(N(D_8023BB78_6ECC58)); - LoadActionCommand(1); - func_802A9000_430020(); - EVT_VAR(10) = 24; - match EVT_VAR(15) { - == 0 { - func_802A9120_421B10(EVT_VAR(10), 1); - } - == 1 { - func_802A9120_421B10(EVT_VAR(10), 2); - } - == 2 { - func_802A9120_421B10(EVT_VAR(10), 3); - } - == 3 { - func_802A9120_421B10(EVT_VAR(10), 4); - } - else { - func_802A9120_421B10(EVT_VAR(10), 5); - } - } - spawn { - sleep 4; - EVT_VAR(0) = 0; - loop 6 { - EVT_VAR(0) += -30; - SetActorRotation(ACTOR_SELF, 0, -250000000, EVT_VAR(0)); - sleep 1; - } - SetAnimation(ACTOR_SELF, 1, NPC_ANIM_battle_goombario_default_headbonk); - } - spawn { - EVT_VAR(0) = 0; - loop EVT_VAR(10) { - EVT_VAR(0) += 133; - SetActorRotation(ACTOR_SELF, -250000000, EVT_VAR(0), -250000000); - sleep 1; - } - } - SetGoalToTarget(ACTOR_PARTNER); - EnableActorBlur(256, 1); - SetJumpAnimations(ACTOR_PARTNER, 0, ANIM_90006, ANIM_90006, ANIM_90006); - PlaySoundAtActor(ACTOR_PARTNER, 0x281); - func_8023817C_6F125C(EVT_VAR(10), 3); - EnableActorBlur(256, -1); - EVT_VAR(13) -= 1; - func_802380E4_6F11C4(); - if (EVT_VAR(15) >= EVT_VAR(0)) { - EVT_FLAG(0) = 1; - } - parallel { - SetActorScale(ACTOR_PARTNER, 1.1, 0.8, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.3, 0.5, 1.0); - sleep 1; - SetActorScale(ACTOR_PARTNER, 1.0, 1.0, 1.0); - } - sleep 1; - GetActionCommandResult(EVT_VAR(0)); - match EVT_VAR(0) { - > 0 { - if (EVT_FLAG(0) == 0) { - N(IsGlowing)(); - EVT_VAR(0) += 3; - PartnerPowerBounceEnemy(EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 64); - } else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 3; - PartnerPowerBounceEnemy(EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 32); - } - } - else { - N(StopGlowingAndGet)(); - EVT_VAR(0) += 3; - PartnerPowerBounceEnemy(EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 32); - EVT_FLAG(0) = 0; - } - } - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_0); - func_80269550(EVT_VAR(14)); - match EVT_VAR(0) { - 0, 2 { - await N(80239CA8); - return; - } - 1, 3 { - if (EVT_FLAG(0) == 1) { - await N(8023A06C); - return; - } - } - } - EVT_VAR(15) += 1; - goto 10; -}); +EvtSource N(8023BB9C) = { + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_EXEC_WAIT(battle_partner_goombario_8023A52C) + EVT_EXEC_WAIT(battle_partner_goombario_8023A66C) + EVT_CALL(SetAnimation, -127, 1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 18, 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 1) + EVT_CALL(UseBattleCamPreset, 52) + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_CALL(SetActorDispOffset, 256, 0, 9, 0) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 8205) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 0) + EVT_CALL(PartnerTestEnemy, EVT_VAR(0), 1048704, 20, 0, 1, 16) + EVT_IF_EQ(EVT_VAR(0), 6) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(battle_partner_goombario_func_80238A20_6F1B00) + EVT_THREAD + EVT_CALL(ShakeCam, 1, 0, 5, EVT_FIXED(1.0)) + EVT_END_THREAD + EVT_CALL(PlaySoundAtActor, 256, 354) + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_IF + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(GetActionCommandResult, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_GT(0) + EVT_CALL(battle_partner_goombario_IsGlowing) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), 80) + EVT_CASE_DEFAULT + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerDamageEnemy, EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), 48) + EVT_END_SWITCH + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(1) + EVT_CASE_OR_EQ(3) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_THREAD + EVT_CALL(UseBattleCamPreset, 50) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(UseBattleCamPreset, 53) + EVT_END_THREAD + EVT_CALL(func_80269524, EVT_VAR(15)) + EVT_SET(EVT_VAR(13), 0) + EVT_SET(EVT_VAR(15), 0) + EVT_SET(EVT_FLAG(0), 0) + EVT_LABEL(10) + EVT_THREAD + EVT_CALL(UseBattleCamPreset, 50) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(UseBattleCamPreset, 53) + EVT_END_THREAD + EVT_CALL(CloseActionCommandInfo) + EVT_CALL(func_8026919C, battle_partner_goombario_D_8023BB78_6ECC58) + EVT_CALL(LoadActionCommand, 1) + EVT_CALL(func_802A9000_430020) + EVT_SET(EVT_VAR(10), 24) + EVT_SWITCH(EVT_VAR(15)) + EVT_CASE_EQ(0) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 1) + EVT_CASE_EQ(1) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 2) + EVT_CASE_EQ(2) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 3) + EVT_CASE_EQ(3) + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 4) + EVT_CASE_DEFAULT + EVT_CALL(func_802A9120_421B10, EVT_VAR(10), 5) + EVT_END_SWITCH + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(6) + EVT_ADD(EVT_VAR(0), -30) + EVT_CALL(SetActorRotation, -127, 0, -250000000, EVT_VAR(0)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetAnimation, -127, 1, 589830) + EVT_END_THREAD + EVT_THREAD + EVT_SET(EVT_VAR(0), 0) + EVT_LOOP(EVT_VAR(10)) + EVT_ADD(EVT_VAR(0), 133) + EVT_CALL(SetActorRotation, -127, -250000000, EVT_VAR(0), -250000000) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(EnableActorBlur, 256, 1) + EVT_CALL(SetJumpAnimations, 256, 0, 589830, 589830, 589830) + EVT_CALL(PlaySoundAtActor, 256, 641) + EVT_CALL(func_8023817C_6F125C, EVT_VAR(10), 3) + EVT_CALL(EnableActorBlur, 256, -1) + EVT_SUB(EVT_VAR(13), 1) + EVT_CALL(func_802380E4_6F11C4) + EVT_IF_GE(EVT_VAR(15), EVT_VAR(0)) + EVT_SET(EVT_FLAG(0), 1) + EVT_END_IF + EVT_CHILD_THREAD + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.1005859375), EVT_FIXED(0.80078125), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.30078125), EVT_FIXED(0.5), EVT_FIXED(1.0)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetActorScale, 256, EVT_FIXED(1.0), EVT_FIXED(1.0), EVT_FIXED(1.0)) + EVT_END_CHILD_THREAD + EVT_WAIT_FRAMES(1) + EVT_CALL(GetActionCommandResult, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_GT(0) + EVT_IF_EQ(EVT_FLAG(0), 0) + EVT_CALL(battle_partner_goombario_IsGlowing) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerPowerBounceEnemy, EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 64) + EVT_ELSE + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerPowerBounceEnemy, EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 32) + EVT_END_IF + EVT_CASE_DEFAULT + EVT_CALL(battle_partner_goombario_StopGlowingAndGet) + EVT_ADD(EVT_VAR(0), 3) + EVT_CALL(PartnerPowerBounceEnemy, EVT_VAR(0), 1048704, 0, 0, EVT_VAR(0), EVT_VAR(13), 32) + EVT_SET(EVT_FLAG(0), 0) + EVT_END_SWITCH + EVT_CALL(PlaySoundAtActor, 256, 0) + EVT_CALL(func_80269550, EVT_VAR(14)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(0) + EVT_CASE_OR_EQ(2) + EVT_EXEC_WAIT(battle_partner_goombario_80239CA8) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_CASE_OR_EQ(1) + EVT_CASE_OR_EQ(3) + EVT_IF_EQ(EVT_FLAG(0), 1) + EVT_EXEC_WAIT(battle_partner_goombario_8023A06C) + EVT_RETURN + EVT_END_IF + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_ADD(EVT_VAR(15), 1) + EVT_GOTO(10) + EVT_RETURN + EVT_END +}; -EvtSource N(8023C5B8) = SCRIPT({ - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 30; - SetActorSpeed(ACTOR_PARTNER, 6.0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - RunToGoal(ACTOR_PARTNER, 0, FALSE); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - InitTargetIterator(); - SetGoalToTarget(ACTOR_PARTNER); - SetBattleFlagBits(4, 1); - func_80238E04_6F1EE4(); - sleep 12; - SetCamEnabled(2, 1); - SetCamFlag80(2, 0); - SetCamPerspective(2, 6, 25, 16, 1024); - SetCamViewport(2, 137, 95, 138, 99); - GetOwnerTarget(EVT_VAR(10), EVT_VAR(11)); - GetActorPos(EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_80238BCC_6F1CAC(); - sleep 1; - func_802CAE50(2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - func_802CABE8(2, 0, EVT_VAR(3), 100, 4); - sleep 2; - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_282); - SetCamFlag80(2, 1); - sleep 10; - func_80238B60_6F1C40(); - ActorSpeak(EVT_VAR(0), -127, 1, 589839, 589825); - func_80238E48_6F1F28(); - sleep 12; - SetCamEnabled(2, 0); - sleep 32; - UseBattleCamPreset(2); - SetBattleFlagBits(4, 0); - func_80280818(); - SetGoalToHome(ACTOR_PARTNER); - SetActorSpeed(ACTOR_PARTNER, 4.0); - SetActorJumpGravity(ACTOR_PARTNER, 1.80078125); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_run); - RunToGoal(ACTOR_PARTNER, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); -}); +EvtSource N(8023C5B8) = { + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 30) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(6.0)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(RunToGoal, 256, 0, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(InitTargetIterator) + EVT_CALL(SetGoalToTarget, 256) + EVT_CALL(SetBattleFlagBits, 4, 1) + EVT_CALL(func_80238E04_6F1EE4) + EVT_WAIT_FRAMES(12) + EVT_CALL(SetCamEnabled, 2, 1) + EVT_CALL(SetCamFlag80, 2, 0) + EVT_CALL(SetCamPerspective, 2, 6, 25, 16, 1024) + EVT_CALL(SetCamViewport, 2, 137, 95, 138, 99) + EVT_CALL(GetOwnerTarget, EVT_VAR(10), EVT_VAR(11)) + EVT_CALL(GetActorPos, EVT_VAR(10), EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_80238BCC_6F1CAC) + EVT_WAIT_FRAMES(1) + EVT_CALL(func_802CAE50, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(func_802CABE8, 2, 0, EVT_VAR(3), 100, 4) + EVT_WAIT_FRAMES(2) + EVT_CALL(PlaySoundAtActor, 256, 642) + EVT_CALL(SetCamFlag80, 2, 1) + EVT_WAIT_FRAMES(10) + EVT_CALL(func_80238B60_6F1C40) + EVT_CALL(ActorSpeak, EVT_VAR(0), -127, 1, 589839, 589825) + EVT_CALL(func_80238E48_6F1F28) + EVT_WAIT_FRAMES(12) + EVT_CALL(SetCamEnabled, 2, 0) + EVT_WAIT_FRAMES(32) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(SetBattleFlagBits, 4, 0) + EVT_CALL(func_80280818) + EVT_CALL(SetGoalToHome, 256) + EVT_CALL(SetActorSpeed, 256, EVT_FIXED(4.0)) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.80078125)) + EVT_CALL(SetAnimation, 256, -1, 589827) + EVT_CALL(RunToGoal, 256, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_RETURN + EVT_END +}; -EvtSource N(8023C90C) = SCRIPT({ - UseBattleCamPreset(55); - sleep 10; - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_charge); - SetActorDispOffset(ACTOR_PARTNER, 0, 19, 0); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 15; - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_208F); - func_802390C8_6F21A8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.2); - sleep 3; - func_802390C8_6F21A8(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0.8); - spawn { - sleep 15; - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 15; - EVT_VAR(2) += -5; - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_2003); - PlayEffect(0x52, 9, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 2.0, 20, 0, 0, 0, 0, 0, 0, 0); - } - sleep 30; - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - SetActorDispOffset(ACTOR_PARTNER, 0, 0, 0); - UseBattleCamPreset(2); - MoveBattleCamOver(10); - func_80238E74_6F1F54(); - if (EVT_VAR(0) == 0) { - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += 10; - EVT_VAR(1) += 25; - EVT_VAR(2) += 5; - PlaySoundAtActor(ACTOR_PARTNER, SOUND_UNKNOWN_208E); - func_80238EDC_6F1FBC(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 4; - SetActorJumpGravity(ACTOR_PARTNER, 1.4); - GetActorPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetJumpAnimations(ACTOR_PARTNER, 589828, ANIM_1, ANIM_90004, ANIM_90004); - SetGoalPos(ACTOR_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - JumpToGoal(ACTOR_PARTNER, 20, 1, 1, 0); - SetAnimation(ACTOR_PARTNER, -1, NPC_ANIM_battle_goombario_default_idle); - GetMenuSelection(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - match EVT_VAR(2) { - == 134 { - ShowMessageBox(36, 60); - } - == 135 { - N(func_80239190_6F2270)(); - ShowMessageBox(EVT_VAR(0), 60); - } - == 136 { - ShowMessageBox(36, 60); - } - } - } else { - ShowMessageBox(8, 60); - } -0: - sleep 1; - IsMessageBoxDisplayed(EVT_VAR(0)); - if (EVT_VAR(0) == 1) { - goto 0; - } -}); +EvtSource N(8023C90C) = { + EVT_CALL(UseBattleCamPreset, 55) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetAnimation, 256, -1, 589831) + EVT_CALL(SetActorDispOffset, 256, 0, 19, 0) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 15) + EVT_CALL(PlaySoundAtActor, 256, 8335) + EVT_CALL(func_802390C8_6F21A8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.2001953125)) + EVT_WAIT_FRAMES(3) + EVT_CALL(func_802390C8_6F21A8, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(0.80078125)) + EVT_THREAD + EVT_WAIT_FRAMES(15) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 15) + EVT_ADD(EVT_VAR(2), -5) + EVT_CALL(PlaySoundAtActor, 256, 8195) + EVT_CALL(PlayEffect, 82, 9, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(2.0), 20, 0, 0, 0, 0, 0, 0, 0) + EVT_END_THREAD + EVT_WAIT_FRAMES(30) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(SetActorDispOffset, 256, 0, 0, 0) + EVT_CALL(UseBattleCamPreset, 2) + EVT_CALL(MoveBattleCamOver, 10) + EVT_CALL(func_80238E74_6F1F54) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(0), 10) + EVT_ADD(EVT_VAR(1), 25) + EVT_ADD(EVT_VAR(2), 5) + EVT_CALL(PlaySoundAtActor, 256, 8334) + EVT_CALL(func_80238EDC_6F1FBC, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(4) + EVT_CALL(SetActorJumpGravity, 256, EVT_FIXED(1.400390625)) + EVT_CALL(GetActorPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetJumpAnimations, 256, 589828, 1, 589828, 589828) + EVT_CALL(SetGoalPos, 256, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(JumpToGoal, 256, 20, 1, 1, 0) + EVT_CALL(SetAnimation, 256, -1, 589825) + EVT_CALL(GetMenuSelection, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SWITCH(EVT_VAR(2)) + EVT_CASE_EQ(134) + EVT_CALL(ShowMessageBox, 36, 60) + EVT_CASE_EQ(135) + EVT_CALL(battle_partner_goombario_func_80239190_6F2270) + EVT_CALL(ShowMessageBox, EVT_VAR(0), 60) + EVT_CASE_EQ(136) + EVT_CALL(ShowMessageBox, 36, 60) + EVT_END_SWITCH + EVT_ELSE + EVT_CALL(ShowMessageBox, 8, 60) + EVT_END_IF + EVT_LABEL(0) + EVT_WAIT_FRAMES(1) + EVT_CALL(IsMessageBoxDisplayed, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 1) + EVT_GOTO(0) + EVT_END_IF + EVT_RETURN + EVT_END +}; diff --git a/src/evt/cam_api.c b/src/evt/cam_api.c index 2fa1ac738a..7149508644 100644 --- a/src/evt/cam_api.c +++ b/src/evt/cam_api.c @@ -1,15 +1,19 @@ #include "common.h" #include "camera.h" -EvtSource ShakeCam1 = SCRIPT({ - group 0; - ShakeCam(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1.0); -}); +EvtSource ShakeCam1 = { + EVT_SET_GROUP(0) + EVT_CALL(ShakeCam, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_FIXED(1.0)) + EVT_RETURN + EVT_END +}; -EvtSource ShakeCamX = SCRIPT({ - group 0; - ShakeCam(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); -}); +EvtSource ShakeCamX = { + EVT_SET_GROUP(0) + EVT_CALL(ShakeCam, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_RETURN + EVT_END +}; ApiStatus SetCamEnabled(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; diff --git a/src/evt/evt.c b/src/evt/evt.c index 5dcd383b6c..e85b41ee5f 100644 --- a/src/evt/evt.c +++ b/src/evt/evt.c @@ -1152,7 +1152,7 @@ ApiStatus evt_handle_thread(Evt* script) { opcode = *endLine++; nargs = *endLine++; endLine += nargs; - } while (opcode != EVT_OP_END_SPAWN_THREAD); + } while (opcode != EVT_OP_END_THREAD); script->ptrNextLine = endLine; newScript = start_script_in_group((EvtSource*)startLine, script->priority, 0x60, script->groupFlags); @@ -1189,7 +1189,7 @@ ApiStatus evt_handle_child_thread(Evt* script) { opcode = *endLine++; nargs = *endLine++; endLine += nargs; - } while (opcode != EVT_OP_END_PARALLEL_THREAD); + } while (opcode != EVT_OP_END_CHILD_THREAD); script->ptrNextLine = endLine; newScript = func_802C39F8(script, startLine, 0x60); @@ -1306,7 +1306,7 @@ s32 evt_handle_print_debug_var(Evt* script) { tableVar = script->varTable[var]; do {} while (0); - + if (tableVar <= -270000000) { sprintf(evtDebugPrintBuffer, "LW(%3d) [%08X]", tableVar); } else if (tableVar <= -220000000) { @@ -1378,10 +1378,10 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_BREAK_LOOP: status = evt_handle_break_loop(script); break; - case EVT_OP_SLEEP_FRAMES: + case EVT_OP_WAIT_FRAMES: status = evt_handle_wait(script); break; - case EVT_OP_SLEEP_SECS: + case EVT_OP_WAIT_SECS: status = evt_handle_wait_seconds(script); break; case EVT_OP_IF_EQ: @@ -1414,10 +1414,10 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_END_IF: status = evt_handle_end_if(script); break; - case EVT_OP_MATCH: + case EVT_OP_SWITCH: status = evt_handle_switch(script); break; - case EVT_OP_MATCH_CONST: + case EVT_OP_SWITCH_CONST: status = evt_handle_switch_const(script); break; case EVT_OP_CASE_EQ: @@ -1438,19 +1438,19 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_CASE_GE: status = evt_handle_case_greater_equal(script); break; - case EVT_OP_CASE_ELSE: + case EVT_OP_CASE_DEFAULT: status = evt_handle_case_default(script); break; - case EVT_OP_BREAK_MATCH: + case EVT_OP_BREAK_SWITCH: status = evt_handle_break_case(script); break; - case EVT_OP_CASE_MULTI_OR_EQ: + case EVT_OP_CASE_OR_EQ: status = evt_handle_case_equal_OR(script); break; - case EVT_OP_END_CASE_MULTI: + case EVT_OP_END_CASE_GROUP: status = evt_handle_end_case_group(script); break; - case EVT_OP_CASE_MULTI_AND_EQ: + case EVT_OP_CASE_AND_EQ: status = evt_handle_case_equal_AND(script); break; case EVT_OP_CASE_FLAG: @@ -1459,7 +1459,7 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_CASE_RANGE: status = evt_handle_case_range(script); break; - case EVT_OP_END_MATCH: + case EVT_OP_END_SWITCH: status = evt_handle_end_switch(script); break; case EVT_OP_SET: @@ -1468,7 +1468,7 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_SET_CONST: status = evt_handle_set_const(script); break; - case EVT_OP_SET_F: + case EVT_OP_SETF: status = evt_handle_set_float(script); break; case EVT_OP_ADD: @@ -1486,52 +1486,52 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_MOD: status = evt_handle_mod(script); break; - case EVT_OP_ADD_F: + case EVT_OP_ADDF: status = evt_handle_addF(script); break; - case EVT_OP_SUB_F: + case EVT_OP_SUBF: status = evt_handle_subtractF(script); break; - case EVT_OP_MUL_F: + case EVT_OP_MULF: status = evt_handle_multiplyF(script); break; - case EVT_OP_DIV_F: + case EVT_OP_DIVF: status = evt_handle_divideF(script); break; - case EVT_OP_USE_BUFFER: + case EVT_OP_USE_BUF: status = evt_handle_set_int_buffer_ptr(script); break; - case EVT_OP_BUFFER_READ_1: + case EVT_OP_BUF_READ1: status = evt_handle_get_1_word(script); break; - case EVT_OP_BUFFER_READ_2: + case EVT_OP_BUF_READ2: status = evt_handle_get_2_word(script); break; - case EVT_OP_BUFFER_READ_3: + case EVT_OP_BUF_READ3: status = evt_handle_get_3_word(script); break; - case EVT_OP_BUFFER_READ_4: + case EVT_OP_BUF_READ4: status = evt_handle_get_4_word(script); break; - case EVT_OP_BUFFER_PEEK: + case EVT_OP_BUF_PEEK: status = evt_handle_get_Nth_word(script); break; - case EVT_OP_USE_BUFFER_F: + case EVT_OP_USE_FBUF: status = evt_handle_set_float_buffer_ptr(script); break; - case EVT_OP_BUFFER_READ_1_F: + case EVT_OP_FBUF_READ1: status = evt_handle_get_1_float(script); break; - case EVT_OP_BUFFER_READ_2_F: + case EVT_OP_FBUF_READ2: status = evt_handle_get_2_float(script); break; - case EVT_OP_BUFFER_READ_3_F: + case EVT_OP_FBUF_READ3: status = evt_handle_get_3_float(script); break; - case EVT_OP_BUFFER_READ_4_F: + case EVT_OP_FBUF_READ4: status = evt_handle_get_4_float(script); break; - case EVT_OP_BUFFER_PEEK_F: + case EVT_OP_FBUF_PEEK: status = evt_handle_get_Nth_float(script); break; case EVT_OP_USE_ARRAY: @@ -1543,31 +1543,31 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_NEW_ARRAY: status = evt_handle_allocate_array(script); break; - case EVT_OP_KILL_SCRIPT: + case EVT_OP_KILL_THREAD: status = evt_handle_kill(script); break; - case EVT_OP_AND: + case EVT_OP_BITWISE_AND: status = evt_handle_AND(script); break; - case EVT_OP_AND_CONST: + case EVT_OP_BITWISE_AND_CONST: status = evt_handle_AND_const(script); break; - case EVT_OP_OR: + case EVT_OP_BITWISE_OR: status = evt_handle_OR(script); break; - case EVT_OP_OR_CONST: + case EVT_OP_BITWISE_OR_CONST: status = evt_handle_OR_const(script); break; case EVT_OP_CALL: status = evt_handle_call(script); break; - case EVT_OP_SPAWN_SCRIPT: + case EVT_OP_EXEC: status = evt_handle_exec1(script); break; - case EVT_OP_SPAWN_GET_ID: + case EVT_OP_EXEC_GET_TID: status = evt_handle_exec1_get_id(script); break; - case EVT_OP_AWAIT_SCRIPT: + case EVT_OP_EXEC_WAIT: status = evt_handle_exec_wait(script); break; case EVT_OP_BIND_TRIGGER: @@ -1603,25 +1603,25 @@ s32 evt_execute_next_command(Evt *script) { case EVT_OP_RESUME_OTHERS: status = evt_handle_resume_others(script); break; - case EVT_OP_SUSPEND_SCRIPT: + case EVT_OP_SUSPEND_THREAD: status = evt_handle_suspend(script); break; - case EVT_OP_RESUME_SCRIPT: + case EVT_OP_RESUME_THREAD: status = evt_handle_resume(script); break; - case EVT_OP_DOES_SCRIPT_EXIST: + case EVT_OP_IS_THREAD_RUNNING: status = evt_handle_does_script_exist(script); break; - case EVT_OP_SPAWN_THREAD: + case EVT_OP_THREAD: status = evt_handle_thread(script); break; - case EVT_OP_END_SPAWN_THREAD: + case EVT_OP_END_THREAD: status = evt_handle_end_thread(script); break; - case EVT_OP_PARALLEL_THREAD: + case EVT_OP_CHILD_THREAD: status = evt_handle_child_thread(script); break; - case EVT_OP_END_PARALLEL_THREAD: + case EVT_OP_END_CHILD_THREAD: status = evt_handle_end_child_thread(script); break; case EVT_OP_90: @@ -2006,10 +2006,10 @@ Bytecode* evt_goto_next_case(Evt* script) { case EVT_OP_END: PANIC(); break; - case EVT_OP_MATCH: + case EVT_OP_SWITCH: switchDepth++; break; - case EVT_OP_END_MATCH: + case EVT_OP_END_SWITCH: switchDepth--; if (switchDepth == 0) { return opcode; @@ -2021,10 +2021,10 @@ Bytecode* evt_goto_next_case(Evt* script) { case EVT_OP_CASE_GT: case EVT_OP_CASE_LE: case EVT_OP_CASE_GE: - case EVT_OP_CASE_ELSE: - case EVT_OP_CASE_MULTI_OR_EQ: - case EVT_OP_CASE_MULTI_AND_EQ: - case EVT_OP_END_CASE_MULTI: + case EVT_OP_CASE_DEFAULT: + case EVT_OP_CASE_OR_EQ: + case EVT_OP_CASE_AND_EQ: + case EVT_OP_END_CASE_GROUP: case EVT_OP_CASE_RANGE: if (switchDepth == 1) { return opcode; diff --git a/src/evt/fa4c0_len_3bf0.c b/src/evt/fa4c0_len_3bf0.c index 89c2520451..ae53a8e22e 100644 --- a/src/evt/fa4c0_len_3bf0.c +++ b/src/evt/fa4c0_len_3bf0.c @@ -8,9 +8,11 @@ s32 func_802D5B10(); s32 D_802D9D30 = 0; -EvtSource D_802D9D34 = SCRIPT({ - func_802D5B10(); -}); +EvtSource D_802D9D34 = { + EVT_CALL(func_802D5B10) + EVT_RETURN + EVT_END +}; INCLUDE_ASM(s32, "evt/fa4c0_len_3bf0", func_802D5B10); diff --git a/src/evt/fx_api.c b/src/evt/fx_api.c index b16656427a..f26c4c873f 100644 --- a/src/evt/fx_api.c +++ b/src/evt/fx_api.c @@ -95,9 +95,11 @@ ApiStatus func_802D7BA4(Evt* script, s32 isInitialCall) { return ApiStatus_BLOCK; } -EvtSource D_802D9D50 = SCRIPT({ - func_802D7BA4(); -}); +EvtSource D_802D9D50 = { + EVT_CALL(func_802D7BA4) + EVT_RETURN + EVT_END +}; ApiStatus Spawn802D9D50(Evt* script, s32 isInitialCall) { Bytecode* args = script->ptrReadPos; diff --git a/src/evt/msg_api.h b/src/evt/msg_api.h new file mode 100644 index 0000000000..5541fcc5fe --- /dev/null +++ b/src/evt/msg_api.h @@ -0,0 +1,22 @@ +#ifndef _EVT_MSG_API_H_ +#define _EVT_MSG_API_H_ + +#include "script_api/macros.h" + +#define SpeakToPlayer(...) \ + _EVT_CMD(EVT_OP_CALL, evt_SpeakToPlayer, ##__VA_ARGS__), +ApiStatus evt_SpeakToPlayer(Evt* script, s32 isInitialCall); + +#define EndSpeech(...) \ + _EVT_CMD(EVT_OP_CALL, evt_EndSpeech, ##__VA_ARGS__), +ApiStatus evt_EndSpeech(Evt* script, s32 isInitialCall); + +#define ContinueSpeech(...) \ + _EVT_CMD(EVT_OP_CALL, evt_ContinueSpeech, ##__VA_ARGS__), +ApiStatus evt_ContinueSpeech(Evt* script, s32 isInitialCall); + +#define SpeakToNpc(...) \ + _EVT_CMD(EVT_OP_CALL, evt_SpeakToNpc, ##__VA_ARGS__), +ApiStatus evt_SpeakToNpc(Evt* script, s32 isInitialCall); + +#endif diff --git a/src/world/area_dro/dro_01/95B7E0.c b/src/world/area_dro/dro_01/95B7E0.c index 989f2792bf..f46777c142 100644 --- a/src/world/area_dro/dro_01/95B7E0.c +++ b/src/world/area_dro/dro_01/95B7E0.c @@ -108,373 +108,378 @@ MapConfig N(config) = { .tattle = { MSG_dro_01_tattle }, }; -// Extraneous END_CASE_MULTI -#ifdef NON_MATCHING -EvtSource N(80243BB0) = SCRIPT({ - GetEntryID(EVT_VAR(0)); - match EVT_VAR(0) { - 3, 4 {} - else { - SetMusicTrack(0, SONG_DRY_DRY_OUTPOST, 0, 8); - } - } -}); -#else EvtSource N(80243BB0) = { - EVT_CMD(EVT_OP_CALL, GetEntryID, EVT_VAR(0)), - EVT_CMD(EVT_OP_MATCH, EVT_VAR(0)), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 3), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 4), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_CASE_ELSE), - EVT_CMD(EVT_OP_CALL, SetMusicTrack, 0, SONG_DRY_DRY_OUTPOST, 0, 8), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_END_MATCH), - EVT_CMD(EVT_OP_RETURN), - EVT_CMD(EVT_OP_END) + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(3) + EVT_CASE_OR_EQ(4) + EVT_END_CASE_GROUP + EVT_CASE_DEFAULT + EVT_CALL(SetMusicTrack, 0, SONG_DRY_DRY_OUTPOST, 0, 8) + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_RETURN + EVT_END }; -#endif -EvtSource N(80243C30) = SCRIPT({ - DisablePlayerInput(TRUE); - DisablePlayerPhysics(TRUE); - DisablePartnerAI(0); - HidePlayerShadow(TRUE); - SetPlayerAnimation(ANIM_STAND_STILL); - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - EnableNpcShadow(NPC_PARTNER, FALSE); - SetNpcPos(NPC_PARTNER, 0, -1000, 0); - } - GetEntryID(EVT_VAR(0)); - N(GetEntryPos)(); - EVT_VAR(2) -= 40; - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - InterpPlayerYaw(EVT_VAR(4), 0); - PlaySound(0x163); - func_802D286C(256); - func_802D2520(ANIM_STAND_STILL, 5, 2, 1, 1, 0); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - loop 40 { - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - sleep 3; - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - spawn { - DisablePartnerAI(0); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) -= 3; - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetNpcFlagBits(NPC_PARTNER, ((0x00000002)), FALSE); - EnablePartnerAI(); - EnableNpcShadow(NPC_PARTNER, TRUE); - } - } - sleep 2; - func_802D2520(ANIM_STAND_STILL, 0, 0, 0, 0, 0); - sleep 1; - SetPlayerAnimation(ANIM_10002); - DisablePlayerPhysics(FALSE); - DisablePlayerInput(FALSE); - HidePlayerShadow(FALSE); -0: - N(GetCurrentFloor)(); - sleep 1; - if (EVT_VAR(0) != -1) { - goto 0; - } - spawn 0xFE363C8A; -}); +EvtSource N(80243C30) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_CALL(SetPlayerAnimation, ANIM_STAND_STILL) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE) + EVT_CALL(SetNpcPos, NPC_PARTNER, 0, -1000, 0) + EVT_END_IF + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_CALL(N(GetEntryPos)) + EVT_SUB(EVT_VAR(2), 40) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(4), 0) + EVT_CALL(PlaySound, 355) + EVT_CALL(func_802D286C, 256) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 5, 2, 1, 1, 0) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_LOOP(40) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_WAIT_FRAMES(3) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_THREAD + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(2), 3) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_2)), FALSE) + EVT_CALL(EnablePartnerAI) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, TRUE) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT_FRAMES(2) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(HidePlayerShadow, FALSE) + EVT_LABEL(0) + EVT_CALL(N(GetCurrentFloor)) + EVT_WAIT_FRAMES(1) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_EXEC(EVT_VAR(10)) + EVT_RETURN + EVT_END +}; -EvtSource N(80243F84) = SCRIPT({ - DisablePlayerInput(TRUE); - DisablePlayerPhysics(TRUE); - HidePlayerShadow(TRUE); - ModifyColliderFlags(0, EVT_VAR(11), 0x7FFFFE00); - GetEntryID(EVT_VAR(0)); - N(GetEntryPos)(); - EVT_VAR(5) = EVT_VAR(1); - EVT_VAR(6) = EVT_VAR(2); - EVT_VAR(7) = EVT_VAR(3); - EVT_VAR(2) += 2; - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - InterpPlayerYaw(EVT_VAR(4), 0); - if (EVT_VAR(4) == 90) { - EVT_VAR(5) += 40; - } else { - EVT_VAR(5) -= 40; - } - UseSettingsFrom(0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)); - SetPanTarget(0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)); - SetCamSpeed(0, 90.0); - PanToTarget(0, 0, 1); - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - DisablePartnerAI(0); - EnableNpcShadow(NPC_PARTNER, FALSE); - SetNpcPos(NPC_PARTNER, 0, -1000, 0); - InterpNpcYaw(NPC_PARTNER, EVT_VAR(0), 0); - } - sleep 1; - PlaySound(0x163); - spawn { - sleep 25; - HidePlayerShadow(FALSE); - } - func_802D286C(2304); - func_802D2520(ANIM_10002, 5, 3, 1, 1, 0); - loop 40 { - N(SomeXYZFunc2)(1.0); - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - spawn { - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) -= 3; - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EnableNpcShadow(NPC_PARTNER, TRUE); - EnablePartnerAI(); - } - } - sleep 5; - func_802D2520(ANIM_10002, 0, 0, 0, 0, 0); - ModifyColliderFlags(1, EVT_VAR(11), 0x7FFFFE00); - DisablePlayerInput(FALSE); - DisablePlayerPhysics(FALSE); - PanToTarget(0, 0, 0); - spawn 0xFE363C8A; -}); +EvtSource N(80243F84) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_CALL(ModifyColliderFlags, 0, EVT_VAR(11), 0x7FFFFE00) + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_CALL(N(GetEntryPos)) + EVT_SET(EVT_VAR(5), EVT_VAR(1)) + EVT_SET(EVT_VAR(6), EVT_VAR(2)) + EVT_SET(EVT_VAR(7), EVT_VAR(3)) + EVT_ADD(EVT_VAR(2), 2) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(4), 0) + EVT_IF_EQ(EVT_VAR(4), 90) + EVT_ADD(EVT_VAR(5), 40) + EVT_ELSE + EVT_SUB(EVT_VAR(5), 40) + EVT_END_IF + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetPanTarget, 0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(90.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE) + EVT_CALL(SetNpcPos, NPC_PARTNER, 0, -1000, 0) + EVT_CALL(InterpNpcYaw, NPC_PARTNER, EVT_VAR(0), 0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySound, 355) + EVT_THREAD + EVT_WAIT_FRAMES(25) + EVT_CALL(HidePlayerShadow, FALSE) + EVT_END_THREAD + EVT_CALL(func_802D286C, 2304) + EVT_CALL(func_802D2520, ANIM_10002, 5, 3, 1, 1, 0) + EVT_LOOP(40) + EVT_CALL(N(SomeXYZFunc2), EVT_FIXED(1.0)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_THREAD + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(2), 3) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, TRUE) + EVT_CALL(EnablePartnerAI) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT_FRAMES(5) + EVT_CALL(func_802D2520, ANIM_10002, 0, 0, 0, 0, 0) + EVT_CALL(ModifyColliderFlags, 1, EVT_VAR(11), 0x7FFFFE00) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(PanToTarget, 0, 0, 0) + EVT_EXEC(EVT_VAR(10)) + EVT_RETURN + EVT_END +}; -EvtSource N(80244374) = SCRIPT({ - N(UnkFunc25)(); - if (EVT_VAR(0) == 0) { - return; - } - GetCurrentPartner(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - GetCurrentPartnerID(EVT_VAR(1)); - if (EVT_VAR(1) != 6) { - return; - } else { - func_802D2B6C(); - DisablePlayerInput(TRUE); - } - } else { - DisablePlayerInput(TRUE); - } - await N(80244450); -}); +EvtSource N(80244374) = { + EVT_CALL(N(UnkFunc25)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetCurrentPartner, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(1)) + EVT_IF_NE(EVT_VAR(1), 6) + EVT_RETURN + EVT_ELSE + EVT_CALL(func_802D2B6C) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_ELSE + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_EXEC_WAIT(N(80244450)) + EVT_RETURN + EVT_END +}; -EvtSource N(80244450) = SCRIPT({ - N(SetPlayerStatusAnimFlags100000)(); - group 27; - DisablePlayerPhysics(TRUE); - HidePlayerShadow(TRUE); - EVT_VAR(0) = EVT_VAR(10); - N(GetEntryPos)(); - PlayerMoveTo(EVT_VAR(1), EVT_VAR(3), 3); - EVT_VAR(0) = EVT_VAR(10); - N(GetEntryPos)(); - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - SetPlayerFlagBits(2097152, 1); - N(GetCurrentCameraYawClamped180)(); - InterpPlayerYaw(EVT_VAR(0), 0); - sleep 2; - SetPlayerFlagBits(2097152, 0); - PlaySound(0x163); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - sleep 4; - loop 40 { - EVT_VAR(1) -= 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - } - func_802D286C(2048); - func_802D2520(ANIM_10002, 5, 2, 1, 1, 0); - sleep 25; - await 0xFE363C8C; -}); +EvtSource N(80244450) = { + EVT_CALL(N(SetPlayerStatusAnimFlags100000)) + EVT_SET_GROUP(27) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(GetEntryPos)) + EVT_CALL(PlayerMoveTo, EVT_VAR(1), EVT_VAR(3), 3) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(GetEntryPos)) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(SetPlayerFlagBits, 2097152, 1) + EVT_CALL(N(GetCurrentCameraYawClamped180)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(0), 0) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetPlayerFlagBits, 2097152, 0) + EVT_CALL(PlaySound, 355) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_LOOP(40) + EVT_SUB(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(func_802D286C, 2048) + EVT_CALL(func_802D2520, ANIM_10002, 5, 2, 1, 1, 0) + EVT_WAIT_FRAMES(25) + EVT_EXEC_WAIT(EVT_VAR(12)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024462C) = SCRIPT({ - IsPlayerOnValidFloor(EVT_VAR(0)); - if (EVT_VAR(0) == 0) { - return; - } - GetPlayerActionState(EVT_VAR(0)); - if (EVT_VAR(0) == 26) { - return; - } - GetCurrentPartner(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - GetCurrentPartnerID(EVT_VAR(1)); - if (EVT_VAR(1) != 6) { - return; - } else { - func_802D2B6C(); - DisablePlayerInput(TRUE); - } - } else { - DisablePlayerInput(TRUE); - } - group 27; - N(SetPlayerStatusAnimFlags100000)(); - DisablePlayerPhysics(TRUE); - ModifyColliderFlags(0, EVT_VAR(11), 0x7FFFFE00); - EVT_VAR(0) = EVT_VAR(10); - N(GetEntryPos)(); - EVT_VAR(5) = EVT_VAR(1); - EVT_VAR(6) = EVT_VAR(2); - EVT_VAR(6) += 2; - EVT_VAR(7) = EVT_VAR(3); - EVT_VAR(8) = EVT_VAR(4); - EVT_VAR(8) += 180; - if (EVT_VAR(4) >= 360) { - EVT_VAR(4) -= 360; - } - InterpPlayerYaw(EVT_VAR(8), 1); - sleep 1; - PlaySound(0x163); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPlayerPos(EVT_VAR(0), EVT_VAR(6), EVT_VAR(7)); - SetPlayerAnimation(ANIM_STAND_STILL); - func_802D286C(2048); - func_802D2520(ANIM_STAND_STILL, 5, 3, 1, 1, 0); - spawn { - sleep 8; - HidePlayerShadow(TRUE); - } - spawn { - sleep 3; - loop 40 { - N(SomeXYZFunc2)(1.0); - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - } - sleep 25; - await 0xFE363C8C; -}); +EvtSource N(8024462C) = { + EVT_CALL(IsPlayerOnValidFloor, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetPlayerActionState, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 26) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetCurrentPartner, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(1)) + EVT_IF_NE(EVT_VAR(1), 6) + EVT_RETURN + EVT_ELSE + EVT_CALL(func_802D2B6C) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_ELSE + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_SET_GROUP(27) + EVT_CALL(N(SetPlayerStatusAnimFlags100000)) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(ModifyColliderFlags, 0, EVT_VAR(11), 0x7FFFFE00) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(GetEntryPos)) + EVT_SET(EVT_VAR(5), EVT_VAR(1)) + EVT_SET(EVT_VAR(6), EVT_VAR(2)) + EVT_ADD(EVT_VAR(6), 2) + EVT_SET(EVT_VAR(7), EVT_VAR(3)) + EVT_SET(EVT_VAR(8), EVT_VAR(4)) + EVT_ADD(EVT_VAR(8), 180) + EVT_IF_GE(EVT_VAR(4), 360) + EVT_SUB(EVT_VAR(4), 360) + EVT_END_IF + EVT_CALL(InterpPlayerYaw, EVT_VAR(8), 1) + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySound, 355) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetPlayerAnimation, ANIM_STAND_STILL) + EVT_CALL(func_802D286C, 2048) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 5, 3, 1, 1, 0) + EVT_THREAD + EVT_WAIT_FRAMES(8) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(3) + EVT_LOOP(40) + EVT_CALL(N(SomeXYZFunc2), EVT_FIXED(1.0)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(25) + EVT_EXEC_WAIT(EVT_VAR(12)) + EVT_RETURN + EVT_END +}; -EvtSource N(exitWalk_80244960) = SCRIPT({ - group 27; - EVT_SAVE_FLAG(761) = 0; - UseExitHeading(60, 0); - spawn ExitWalk; - GotoMap("sbk_36", 1); - sleep 100; -}); +EvtSource N(exitWalk_80244960) = { + EVT_SET_GROUP(27) + EVT_SET(EVT_SAVE_FLAG(761), 0) + EVT_CALL(UseExitHeading, 60, 0) + EVT_EXEC(ExitWalk) + EVT_CALL(GotoMap, EVT_PTR("sbk_36"), 1) + EVT_WAIT_FRAMES(100) + EVT_RETURN + EVT_END +}; EvtSource N(exitWalk_802449CC) = EXIT_WALK_SCRIPT(60, 1, "dro_02", 0); -EvtSource N(80244A28) = SCRIPT({ - bind N(exitWalk_80244960) TRIGGER_FLOOR_ABOVE 1; - bind N(exitWalk_802449CC) TRIGGER_FLOOR_ABOVE 5; -}); +EvtSource N(80244A28) = { + EVT_BIND_TRIGGER(N(exitWalk_80244960), TRIGGER_FLOOR_ABOVE, 1, 1, 0) + EVT_BIND_TRIGGER(N(exitWalk_802449CC), TRIGGER_FLOOR_ABOVE, 5, 1, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(80244A70) = SCRIPT({ - PlaySound(0x80000060); - UseSettingsFrom(0, 175, 0, -201); - SetPanTarget(0, 175, 0, -201); - SetCamSpeed(0, 90.0); - PanToTarget(0, 0, 1); - N(UnkFunc27)(2, 0, 3); - N(UnkFunc27)(1, -1, 3); - N(UnkFunc26)(3, 44, 32, 177, 0, 0, 0, 0, 0, 0); - DisablePlayerInput(TRUE); - spawn { - ShakeCam(0, 0, 300, 0.2001953125); - } - spawn { - sleep 60; - GetEntryID(EVT_VAR(0)); - if (EVT_VAR(0) == 3) { - GotoMap("dro_02", 2); - } else { - GotoMap("dro_02", 3); - } - sleep 100; - } -}); +EvtSource N(80244A70) = { + EVT_CALL(PlaySound, 0x80000060) + EVT_CALL(UseSettingsFrom, 0, 175, 0, -201) + EVT_CALL(SetPanTarget, 0, 175, 0, -201) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(90.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(N(UnkFunc27), 2, 0, 3) + EVT_CALL(N(UnkFunc27), 1, -1, 3) + EVT_CALL(N(UnkFunc26), 3, 44, 32, 177, 0, 0, 0, 0, 0, 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_THREAD + EVT_CALL(ShakeCam, 0, 0, 300, EVT_FIXED(0.2)) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(60) + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 3) + EVT_CALL(GotoMap, EVT_PTR("dro_02"), 2) + EVT_ELSE + EVT_CALL(GotoMap, EVT_PTR("dro_02"), 3) + EVT_END_IF + EVT_WAIT_FRAMES(100) + EVT_END_THREAD + EVT_RETURN + EVT_END +}; -EvtSource N(enterWalk_80244C14) = SCRIPT({ - GetLoadType(EVT_VAR(1)); - if (EVT_VAR(1) == 1) { - spawn EnterSavePoint; - spawn N(80244A28); - return; - } - GetEntryID(EVT_VAR(0)); - match EVT_VAR(0) { - == 2 { - if (EVT_SAVE_FLAG(1939) == 0) { - DisablePlayerInput(TRUE); - DisablePlayerPhysics(TRUE); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPlayerPos(EVT_VAR(0), -1000, EVT_VAR(2)); - sleep 30; - PlaySound(SOUND_UNKNOWN_208E); - EVT_SAVE_FLAG(1939) = 1; - sleep 30; - SetPlayerActionState(0); - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - DisablePlayerPhysics(FALSE); - DisablePlayerInput(FALSE); - } - EVT_VAR(10) = N(80244A28); - await N(80243C30); - } - 3, 4 { - await N(80244A70); - } - == 10 { - spawn 0x80285C50; - spawn N(80244A28); - } else { - EVT_VAR(0) = N(80244A28); - spawn EnterWalk; - } - } - sleep 1; -}); +EvtSource N(enterWalk_80244C14) = { + EVT_CALL(GetLoadType, EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(1), 1) + EVT_EXEC(EnterSavePoint) + EVT_EXEC(N(80244A28)) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(2) + EVT_IF_EQ(EVT_SAVE_FLAG(1939), 0) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), -1000, EVT_VAR(2)) + EVT_WAIT_FRAMES(30) + EVT_CALL(PlaySound, SOUND_UNKNOWN_208E) + EVT_SET(EVT_SAVE_FLAG(1939), 1) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetPlayerActionState, 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_END_IF + EVT_SET(EVT_VAR(10), EVT_PTR(N(80244A28))) + EVT_EXEC_WAIT(N(80243C30)) + EVT_CASE_OR_EQ(3) + EVT_CASE_OR_EQ(4) + EVT_EXEC_WAIT(N(80244A70)) + EVT_END_CASE_GROUP + EVT_CASE_EQ(10) + EVT_EXEC(0x80285C50) + EVT_EXEC(N(80244A28)) + EVT_CASE_DEFAULT + EVT_SET(EVT_VAR(0), EVT_PTR(N(80244A28))) + EVT_EXEC(EnterWalk) + EVT_END_SWITCH + EVT_WAIT_FRAMES(1) + EVT_RETURN + EVT_END +}; -EvtSource N(main) = SCRIPT({ - EVT_WORLD_LOCATION = LOCATION_DRY_DRY_OUTPOST; - SetSpriteShading(-1); - SetCamPerspective(0, 3, 25, 16, 4096); - SetCamBGColor(0, 0, 0, 0); - SetCamEnabled(0, 1); - SetCamLeadPlayer(0, 0); - EVT_SAVE_FLAG(1973) = 1; - if (EVT_STORY_PROGRESS < STORY_CH2_ARRIVED_AT_DRY_DRY_OUTPOST) { - EVT_STORY_PROGRESS = STORY_CH2_ARRIVED_AT_DRY_DRY_OUTPOST; - } - match EVT_STORY_PROGRESS { - -53 ... 6 { - MakeNpcs(0, N(npcGroupList_8024B47C)); - } else { - MakeNpcs(0, N(npcGroupList_8024B464)); - } - } - InitVirtualEntityList(); - await N(makeEntities); - MakeShop(N(shopItemPositions_8024BA68), N(shopInventory_8024B4FC), N(shopPriceList_8024B550), 0); - MakeShopOwner(N(shopOwnerNPC_8024BA80)); - await N(8024C218); - spawn N(8024C2EC); - spawn N(80243BB0); - spawn N(enterWalk_80244C14); - sleep 1; - spawn N(8024DD78); -}); +EvtSource N(main) = { + EVT_SET(EVT_SAVE_VAR(425), 9) + EVT_CALL(SetSpriteShading, -1) + EVT_CALL(SetCamPerspective, 0, 3, 25, 16, 4096) + EVT_CALL(SetCamBGColor, 0, 0, 0, 0) + EVT_CALL(SetCamEnabled, 0, 1) + EVT_CALL(SetCamLeadPlayer, 0, 0) + EVT_SET(EVT_SAVE_FLAG(1973), 1) + EVT_IF_LT(EVT_SAVE_VAR(0), -68) + EVT_SET(EVT_SAVE_VAR(0), -68) + EVT_END_IF + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_RANGE(-53, 6) + EVT_CALL(MakeNpcs, 0, EVT_PTR(N(npcGroupList_8024B47C))) + EVT_CASE_DEFAULT + EVT_CALL(MakeNpcs, 0, EVT_PTR(N(npcGroupList_8024B464))) + EVT_END_SWITCH + EVT_CALL(InitVirtualEntityList) + EVT_EXEC_WAIT(N(makeEntities)) + EVT_CALL(MakeShop, EVT_PTR(N(shopItemPositions_8024BA68)), EVT_PTR(N(shopInventory_8024B4FC)), EVT_PTR(N(shopPriceList_8024B550)), 0) + EVT_CALL(MakeShopOwner, EVT_PTR(N(shopOwnerNPC_8024BA80))) + EVT_EXEC_WAIT(N(8024C218)) + EVT_EXEC(N(8024C2EC)) + EVT_EXEC(N(80243BB0)) + EVT_EXEC(N(enterWalk_80244C14)) + EVT_WAIT_FRAMES(1) + EVT_EXEC(N(8024DD78)) + EVT_RETURN + EVT_END +}; s32 N(pad_5004)[] = { 0x00000000, 0x00000000, 0x00000000, @@ -488,9 +493,11 @@ NpcAISettings N(npcAISettings_80245010) = { .unk_2C = 1, }; -EvtSource N(npcAI_80245040) = SCRIPT({ - DoBasicAI(N(npcAISettings_80245010)); -}); +EvtSource N(npcAI_80245040) = { + EVT_CALL(DoBasicAI, EVT_PTR(N(npcAISettings_80245010))) + EVT_RETURN + EVT_END +}; NpcSettings N(npcSettings_80245060) = { .height = 26, @@ -508,9 +515,11 @@ NpcAISettings N(npcAISettings_8024508C) = { .unk_2C = 1, }; -EvtSource N(npcAI_802450BC) = SCRIPT({ - N(func_80241174_95C374)(N(npcAISettings_8024508C)); -}); +EvtSource N(npcAI_802450BC) = { + EVT_CALL(N(func_80241174_95C374), EVT_PTR(N(npcAISettings_8024508C))) + EVT_RETURN + EVT_END +}; NpcSettings N(npcSettings_802450DC) = { .height = 26, @@ -546,15 +555,19 @@ NpcSettings N(npcSettings_8024518C) = { s32** N(D_802451B8_9603B8) = NULL; -EvtSource N(802451BC) = SCRIPT({ - ShowGotItem(EVT_VAR(0), 1, 0); - return; -}); +EvtSource N(802451BC) = { + EVT_CALL(ShowGotItem, EVT_VAR(0), 1, 0) + EVT_RETURN + EVT_RETURN + EVT_END +}; -EvtSource N(802451EC) = SCRIPT({ - ShowGotItem(EVT_VAR(0), 1, 16); - return; -}); +EvtSource N(802451EC) = { + EVT_CALL(ShowGotItem, EVT_VAR(0), 1, 16) + EVT_RETURN + EVT_RETURN + EVT_END +}; u8 N(quizAnswers)[] = { 0x02, 0x01, 0x01, 0x02, 0x02, 0x00, 0x02, 0x00, @@ -575,597 +588,635 @@ QuizRequirements N(quizRequirements)[] = { { 96, 64 }, { 0, 64 }, }; -EvtSource N(802452AC) = SCRIPT({ - N(GetGameStatus75)(); - if (EVT_VAR(0) <= 1) { - GetNpcPos(NPC_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 300; - SetNpcJumpscale(NPC_SELF, 1); - SetNpcAnimation(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_C); - sleep 40; - SetNpcPos(NPC_SELF, 0, -1000, 0); - } -}); +EvtSource N(802452AC) = { + EVT_CALL(N(GetGameStatus75)) + EVT_IF_LE(EVT_VAR(0), 1) + EVT_CALL(GetNpcPos, NPC_SELF, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 300) + EVT_CALL(SetNpcJumpscale, NPC_SELF, 1) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_C) + EVT_WAIT_FRAMES(40) + EVT_CALL(SetNpcPos, NPC_SELF, 0, -1000, 0) + EVT_END_IF + EVT_RETURN + EVT_END +}; -EvtSource N(8024535C) = SCRIPT({ - N(GetCamVfov)(0, EVT_ARRAY(0)); - N(SetCamVfov)(0, 25); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPanTarget(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - UseSettingsFrom(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetCamType(0, EVT_VAR(1), EVT_VAR(2)); - SetCamType(0, EVT_VAR(1), 0); - GetCamDistance(0, EVT_VAR(0)); - if (EVT_VAR(0) > 0) { - EVT_VAR(0) = (float) 370; - } else { - EVT_VAR(0) = (float) -370; - } - SetCamDistance(0, EVT_VAR(0)); - GetCamPitch(0, EVT_VAR(0), EVT_VAR(1)); - EVT_VAR(0) = 13.0; - EVT_VAR(1) = -10.0; - SetCamPitch(0, EVT_VAR(0), EVT_VAR(1)); - PanToTarget(0, 0, 1); - SetCamLeadPlayer(0, 0); -}); +EvtSource N(8024535C) = { + EVT_CALL(N(GetCamVfov), 0, EVT_ARRAY(0)) + EVT_CALL(N(SetCamVfov), 0, 25) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPanTarget, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetCamType, 0, EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetCamType, 0, EVT_VAR(1), 0) + EVT_CALL(GetCamDistance, 0, EVT_VAR(0)) + EVT_IF_GT(EVT_VAR(0), 0) + EVT_SETF(EVT_VAR(0), 370) + EVT_ELSE + EVT_SETF(EVT_VAR(0), -370) + EVT_END_IF + EVT_CALL(SetCamDistance, 0, EVT_VAR(0)) + EVT_CALL(GetCamPitch, 0, EVT_VAR(0), EVT_VAR(1)) + EVT_SETF(EVT_VAR(0), EVT_FIXED(13.0)) + EVT_SETF(EVT_VAR(1), EVT_FIXED(-10.0)) + EVT_CALL(SetCamPitch, 0, EVT_VAR(0), EVT_VAR(1)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(SetCamLeadPlayer, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(802454F8) = SCRIPT({ - GetNpcPos(NPC_CHUCK_QUIZMO, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 30; - SetPanTarget(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetCamDistance(0, EVT_VAR(0)); - if (EVT_VAR(0) > 0) { - EVT_VAR(0) = (float) 17; - } else { - EVT_VAR(0) = (float) -17; - } - SetCamDistance(0, EVT_VAR(0)); - SetCamSpeed(0, 90.0); - WaitForCam(0, 1.0); - SetCamSpeed(0, 1); -}); +EvtSource N(802454F8) = { + EVT_CALL(GetNpcPos, 10, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 30) + EVT_CALL(SetPanTarget, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetCamDistance, 0, EVT_VAR(0)) + EVT_IF_GT(EVT_VAR(0), 0) + EVT_SETF(EVT_VAR(0), 17) + EVT_ELSE + EVT_SETF(EVT_VAR(0), -17) + EVT_END_IF + EVT_CALL(SetCamDistance, 0, EVT_VAR(0)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(90.0)) + EVT_CALL(WaitForCam, 0, EVT_FIXED(1.0)) + EVT_CALL(SetCamSpeed, 0, 1) + EVT_RETURN + EVT_END +}; -EvtSource N(802455F4) = SCRIPT({ - N(SetCamVfov)(0, EVT_ARRAY(0)); - PanToTarget(0, 0, 0); -}); +EvtSource N(802455F4) = { + EVT_CALL(N(SetCamVfov), 0, EVT_ARRAY(0)) + EVT_CALL(PanToTarget, 0, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(80245630) = SCRIPT({ - sleep 20; - N(UnkCameraFunc)(EVT_ARRAY(1), EVT_ARRAY(3), 83, EVT_VAR(0), EVT_VAR(1)); - spawn { - EVT_VAR(2) = (float) 0; - loop 60 { - EVT_VAR(3) = (float) EVT_VAR(0); - EVT_VAR(4) = (float) EVT_VAR(1); - EVT_VAR(3) *= (float) EVT_VAR(2); - EVT_VAR(4) *= (float) EVT_VAR(2); - EVT_VAR(3) /= (float) 60; - EVT_VAR(4) /= (float) 60; - EVT_VAR(3) += (float) EVT_ARRAY(1); - EVT_VAR(4) += (float) EVT_ARRAY(3); - SetPlayerPos(EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)); - EVT_VAR(2) += (float) 1; - sleep 1; - } - EVT_VAR(3) = (float) EVT_VAR(0); - EVT_VAR(4) = (float) EVT_VAR(1); - EVT_VAR(3) += (float) EVT_ARRAY(1); - EVT_VAR(4) += (float) EVT_ARRAY(3); - SetPlayerPos(EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)); - } - N(UnkRotatePlayer)(); - func_802D2884(EVT_ARRAY(1), EVT_ARRAY(3), 0); - SetPlayerAnimation(ANIM_10002); -}); +EvtSource N(80245630) = { + EVT_WAIT_FRAMES(20) + EVT_CALL(N(UnkCameraFunc), EVT_ARRAY(1), EVT_ARRAY(3), 83, EVT_VAR(0), EVT_VAR(1)) + EVT_THREAD + EVT_SETF(EVT_VAR(2), 0) + EVT_LOOP(60) + EVT_SETF(EVT_VAR(3), EVT_VAR(0)) + EVT_SETF(EVT_VAR(4), EVT_VAR(1)) + EVT_MULF(EVT_VAR(3), EVT_VAR(2)) + EVT_MULF(EVT_VAR(4), EVT_VAR(2)) + EVT_DIVF(EVT_VAR(3), 60) + EVT_DIVF(EVT_VAR(4), 60) + EVT_ADDF(EVT_VAR(3), EVT_ARRAY(1)) + EVT_ADDF(EVT_VAR(4), EVT_ARRAY(3)) + EVT_CALL(SetPlayerPos, EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)) + EVT_ADDF(EVT_VAR(2), 1) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_SETF(EVT_VAR(3), EVT_VAR(0)) + EVT_SETF(EVT_VAR(4), EVT_VAR(1)) + EVT_ADDF(EVT_VAR(3), EVT_ARRAY(1)) + EVT_ADDF(EVT_VAR(4), EVT_ARRAY(3)) + EVT_CALL(SetPlayerPos, EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)) + EVT_END_THREAD + EVT_CALL(N(UnkRotatePlayer)) + EVT_CALL(func_802D2884, EVT_ARRAY(1), EVT_ARRAY(3), 0) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_RETURN + EVT_END +}; -EvtSource N(802457E0) = SCRIPT({ - GetNpcPos(NPC_PARTNER, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - N(UnkCameraFunc)(EVT_VAR(10), EVT_VAR(12), 108, EVT_VAR(0), EVT_VAR(1)); - EVT_VAR(5) = (float) EVT_ARRAY(2); - EVT_VAR(5) -= (float) EVT_VAR(11); - spawn { - N(UnkMovePartner)(); - EVT_VAR(3) = (float) EVT_VAR(0); - EVT_VAR(4) = (float) EVT_VAR(1); - EVT_VAR(6) = (float) EVT_VAR(5); - EVT_VAR(3) += (float) EVT_VAR(10); - EVT_VAR(4) += (float) EVT_VAR(12); - EVT_VAR(6) += (float) EVT_VAR(11); - SetNpcPos(NPC_PARTNER, EVT_VAR(3), EVT_VAR(6), EVT_VAR(4)); - } - N(UnkRotatePartner)(); - NpcFacePlayer(NPC_PARTNER, 0); - SetNpcAnimation(NPC_PARTNER, 0x106); -}); +EvtSource N(802457E0) = { + EVT_CALL(GetNpcPos, NPC_PARTNER, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(N(UnkCameraFunc), EVT_VAR(10), EVT_VAR(12), 108, EVT_VAR(0), EVT_VAR(1)) + EVT_SETF(EVT_VAR(5), EVT_ARRAY(2)) + EVT_SUBF(EVT_VAR(5), EVT_VAR(11)) + EVT_THREAD + EVT_CALL(N(UnkMovePartner)) + EVT_SETF(EVT_VAR(3), EVT_VAR(0)) + EVT_SETF(EVT_VAR(4), EVT_VAR(1)) + EVT_SETF(EVT_VAR(6), EVT_VAR(5)) + EVT_ADDF(EVT_VAR(3), EVT_VAR(10)) + EVT_ADDF(EVT_VAR(4), EVT_VAR(12)) + EVT_ADDF(EVT_VAR(6), EVT_VAR(11)) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(3), EVT_VAR(6), EVT_VAR(4)) + EVT_END_THREAD + EVT_CALL(N(UnkRotatePartner)) + EVT_CALL(NpcFacePlayer, NPC_PARTNER, 0) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x106) + EVT_RETURN + EVT_END +}; -EvtSource N(80245918) = SCRIPT({ - GetNpcPos(NPC_CHUCK_QUIZMO, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - N(UnkCameraFunc)(EVT_VAR(10), EVT_VAR(12), -70, EVT_VAR(0), EVT_VAR(1)); - spawn { - EVT_VAR(2) = (float) 0; - loop 60 { - EVT_VAR(3) = (float) EVT_VAR(0); - EVT_VAR(4) = (float) EVT_VAR(1); - EVT_VAR(3) *= (float) EVT_VAR(2); - EVT_VAR(4) *= (float) EVT_VAR(2); - EVT_VAR(3) /= (float) 60; - EVT_VAR(4) /= (float) 60; - EVT_VAR(3) += (float) EVT_VAR(10); - EVT_VAR(4) += (float) EVT_VAR(12); - SetNpcPos(NPC_CHUCK_QUIZMO, EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)); - EVT_VAR(2) += (float) 1; - sleep 1; - } - } - sleep 60; - NpcFacePlayer(NPC_CHUCK_QUIZMO, 0); - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1); -}); +EvtSource N(80245918) = { + EVT_CALL(GetNpcPos, 10, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(N(UnkCameraFunc), EVT_VAR(10), EVT_VAR(12), -70, EVT_VAR(0), EVT_VAR(1)) + EVT_THREAD + EVT_SETF(EVT_VAR(2), 0) + EVT_LOOP(60) + EVT_SETF(EVT_VAR(3), EVT_VAR(0)) + EVT_SETF(EVT_VAR(4), EVT_VAR(1)) + EVT_MULF(EVT_VAR(3), EVT_VAR(2)) + EVT_MULF(EVT_VAR(4), EVT_VAR(2)) + EVT_DIVF(EVT_VAR(3), 60) + EVT_DIVF(EVT_VAR(4), 60) + EVT_ADDF(EVT_VAR(3), EVT_VAR(10)) + EVT_ADDF(EVT_VAR(4), EVT_VAR(12)) + EVT_CALL(SetNpcPos, 10, EVT_VAR(3), EVT_ARRAY(2), EVT_VAR(4)) + EVT_ADDF(EVT_VAR(2), 1) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(60) + EVT_CALL(NpcFacePlayer, 10, 0) + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1) + EVT_RETURN + EVT_END +}; -EvtSource N(80245A84) = SCRIPT({ - spawn N(80245630); - spawn N(802457E0); - await N(80245918); -}); +EvtSource N(80245A84) = { + EVT_EXEC(N(80245630)) + EVT_EXEC(N(802457E0)) + EVT_EXEC_WAIT(N(80245918)) + EVT_RETURN + EVT_END +}; -EvtSource N(80245AB8) = SCRIPT({ - loop { - SetPlayerAnimation(ANIM_QUESTION); - sleep 20; - } -}); +EvtSource N(80245AB8) = { + EVT_LOOP(0) + EVT_CALL(SetPlayerAnimation, ANIM_QUESTION) + EVT_WAIT_FRAMES(20) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; -EvtSource N(80245AF8) = SCRIPT({ - SetPlayerAnimation(ANIM_THROW); - sleep 15; - SetPlayerAnimation(ANIM_10002); -}); +EvtSource N(80245AF8) = { + EVT_CALL(SetPlayerAnimation, ANIM_THROW) + EVT_WAIT_FRAMES(15) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_RETURN + EVT_END +}; -EvtSource N(80245B34) = SCRIPT({ - loop { - SetPlayerAnimation(ANIM_10002); - sleep 1; - SetPlayerAnimation(ANIM_BEFORE_JUMP); - sleep 2; - SetPlayerAnimation(ANIM_MIDAIR_STILL); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_MIDAIR); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_10009); - sleep 2; - sleep 1; - SetPlayerAnimation(ANIM_BEFORE_JUMP); - sleep 2; - SetPlayerAnimation(ANIM_MIDAIR_STILL); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_MIDAIR); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_10009); - sleep 2; - sleep 1; - SetPlayerAnimation(ANIM_BEFORE_JUMP); - sleep 2; - SetPlayerAnimation(ANIM_MIDAIR_STILL); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_MIDAIR); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += 0; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -2; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - EVT_VAR(1) += -3; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - SetPlayerAnimation(ANIM_10009); - sleep 2; - } - SetPlayerAnimation(ANIM_10002); - SetPlayerPos(EVT_VAR(0), EVT_ARRAY(2), EVT_VAR(2)); - sleep 1; -}); +EvtSource N(80245B34) = { + EVT_LOOP(0) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_BEFORE_JUMP) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR_STILL) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_10009) + EVT_WAIT_FRAMES(2) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_BEFORE_JUMP) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR_STILL) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_10009) + EVT_WAIT_FRAMES(2) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_BEFORE_JUMP) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR_STILL) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_MIDAIR) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), 0) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -2) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_ADD(EVT_VAR(1), -3) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_10009) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_ARRAY(2), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_RETURN + EVT_END +}; -EvtSource N(8024667C) = SCRIPT({ - SetPlayerAnimation(ANIM_SHOCK_STILL); - loop { - sleep 1; - } -}); +EvtSource N(8024667C) = { + EVT_CALL(SetPlayerAnimation, ANIM_SHOCK_STILL) + EVT_LOOP(0) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; -EvtSource N(802466BC) = SCRIPT({ - spawn { - N(UnkCameraFunc)(EVT_ARRAY(1), EVT_ARRAY(3), 25, EVT_VAR(0), EVT_VAR(1)); - EVT_VAR(2) = (float) EVT_ARRAY(1); - EVT_VAR(2) += (float) EVT_VAR(0); - EVT_VAR(3) = (float) EVT_ARRAY(3); - EVT_VAR(3) += (float) EVT_VAR(1); - SetNpcAnimation(NPC_PARTNER, 0x102); - NpcMoveTo(NPC_PARTNER, EVT_VAR(2), EVT_VAR(3), 40); - SetNpcAnimation(NPC_PARTNER, 0x106); - } - PlayerMoveTo(EVT_ARRAY(1), EVT_ARRAY(3), 40); -}); +EvtSource N(802466BC) = { + EVT_THREAD + EVT_CALL(N(UnkCameraFunc), EVT_ARRAY(1), EVT_ARRAY(3), 25, EVT_VAR(0), EVT_VAR(1)) + EVT_SETF(EVT_VAR(2), EVT_ARRAY(1)) + EVT_ADDF(EVT_VAR(2), EVT_VAR(0)) + EVT_SETF(EVT_VAR(3), EVT_ARRAY(3)) + EVT_ADDF(EVT_VAR(3), EVT_VAR(1)) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x102) + EVT_CALL(NpcMoveTo, NPC_PARTNER, EVT_VAR(2), EVT_VAR(3), 40) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x106) + EVT_END_THREAD + EVT_CALL(PlayerMoveTo, EVT_ARRAY(1), EVT_ARRAY(3), 40) + EVT_RETURN + EVT_END +}; -EvtSource N(80246798) = SCRIPT({ - EVT_VAR(1) = spawn N(80245B34); - sleep 60; - kill EVT_VAR(1); - loop 5 { - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 2; - } - sleep 20; - await N(802466BC); -}); +EvtSource N(80246798) = { + EVT_EXEC_GET_TID(N(80245B34), EVT_VAR(1)) + EVT_WAIT_FRAMES(60) + EVT_KILL_THREAD(EVT_VAR(1)) + EVT_LOOP(5) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_WAIT_FRAMES(20) + EVT_EXEC_WAIT(N(802466BC)) + EVT_RETURN + EVT_END +}; -EvtSource N(80246848) = SCRIPT({ - EVT_VAR(1) = spawn N(8024667C); - sleep 60; - loop 5 { - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += -1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 2; - } - sleep 20; - kill EVT_VAR(1); - await N(802466BC); -}); +EvtSource N(80246848) = { + EVT_EXEC_GET_TID(N(8024667C), EVT_VAR(1)) + EVT_WAIT_FRAMES(60) + EVT_LOOP(5) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), -1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_WAIT_FRAMES(20) + EVT_KILL_THREAD(EVT_VAR(1)) + EVT_EXEC_WAIT(N(802466BC)) + EVT_RETURN + EVT_END +}; -EvtSource N(802468F8) = SCRIPT({ - if (EVT_SAVE_VAR(352) > 63) { - EVT_VAR(0) = 0; - return; - } - GetPlayerPos(EVT_ARRAY(1), EVT_ARRAY(2), EVT_ARRAY(3)); - NpcFacePlayer(NPC_SELF, 16); - if (EVT_SAVE_VAR(352) == 63) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000A)); - } else { - if (EVT_SAVE_FLAG(1767) == 1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0009)); - } else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0008)); - EVT_SAVE_FLAG(1767) = 1; - } - } - ShowChoice(MESSAGE_ID(0x1E, 0x000D)); - if (EVT_VAR(0) == 1) { - ContinueSpeech(-1, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000C)); - await N(802452AC); - EVT_VAR(0) = 0; - return; - } - EVT_SAVE_FLAG(1793) = 1; - N(Set80151310_1)(); - N(UnkAlphaFunc)(); - spawn N(8024535C); - DisablePartnerAI(0); - SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_GRAVITY)), FALSE); - SetNpcFlagBits(NPC_CHUCK_QUIZMO, ((NPC_FLAG_GRAVITY)), FALSE); - SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_40 | NPC_FLAG_100)), TRUE); - SetNpcFlagBits(NPC_CHUCK_QUIZMO, ((NPC_FLAG_100)), TRUE); - SetNpcAnimation(NPC_PARTNER, 0x106); - EVT_VAR(1) = spawn N(80245A84); - ContinueSpeech(-1, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000B)); - PlaySound(0x89); - loop { - EVT_VAR(0) = does_script_exist EVT_VAR(1); - if (EVT_VAR(0) == 0) { - break loop; - } - sleep 1; - } - N(func_80241BE0_95CDE0)(); - loop 5 { - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 2; - } - EVT_VAR(0) = 2883584; - EVT_VAR(0) += EVT_SAVE_VAR(352); - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6, 0, EVT_VAR(0)); - SetPlayerAnimation(ANIM_QUESTION); - EVT_VAR(0) = 2949120; - EVT_VAR(0) += EVT_SAVE_VAR(352); - PlaySound(0x8E); - ShowChoice(EVT_VAR(0)); - kill EVT_VAR(1); - StopSound(142); - spawn N(80245AF8); - sleep 15; - PlaySound(0x8D); - N(func_80241EE0_95D0E0)(EVT_VAR(0)); - EVT_ARRAY(4) = 0; - N(func_802424D4_95D6D4)(); - sleep 40; - N(func_80241B5C_95CD5C)(); - spawn { - sleep 110; - CloseChoice(); - EVT_ARRAY(4) = 0; - } - if (EVT_VAR(0) == 1) { - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_7); - EVT_ARRAY(4) = 1; - spawn { - N(func_80241EAC_95D0AC)(1); - sleep 6; - sleep 6; - sleep 6; - N(func_80241EAC_95D0AC)(2); - } - spawn { - PlaySound(0x21C); - sleep 6; - PlaySound(0x21C); - sleep 6; - PlaySound(0x21C); - sleep 6; - PlaySound(0x21C); - } - PlaySound(0x8A); - N(func_80241F78_95D178)(); - spawn { - sleep 15; - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(1) += 50; - N(UnkCameraFunc)(0, 0, 83, EVT_VAR(0), EVT_VAR(2)); - PlayEffect(0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0); - sleep 15; - EVT_VAR(1) += -3; - N(UnkCameraFunc)(0, 0, 58, EVT_VAR(0), EVT_VAR(2)); - PlayEffect(0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0); - sleep 15; - EVT_VAR(1) += 30; - N(UnkCameraFunc)(0, 0, 93, EVT_VAR(0), EVT_VAR(2)); - PlayEffect(0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0); - PlayEffect(0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0); - sleep 15; - } - sleep 20; - EVT_VAR(1) = spawn N(80246798); - EVT_SAVE_VAR(352) += 1; - if (EVT_SAVE_VAR(352) > 63) { - ContinueSpeech(-1, -1, -1, 0, MESSAGE_ID(0x08, 0x0010)); - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6); - loop { - EVT_VAR(0) = does_script_exist EVT_VAR(1); - if (EVT_VAR(0) == 0) { - break loop; - } - sleep 1; - } - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5); - EVT_VAR(0) = 348; - EVT_VAR(1) = 3; - await N(802451BC); - AddStarPieces(1); - N(func_80241EAC_95D0AC)(15); - N(func_80241F60_95D160)(); - SetMessageValue(EVT_SAVE_VAR(352), 0); - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0011)); - } else { - ContinueSpeech(-1, -1, -1, 0, MESSAGE_ID(0x08, 0x000E)); - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6); - loop { - EVT_VAR(0) = does_script_exist EVT_VAR(1); - if (EVT_VAR(0) == 0) { - break loop; - } - sleep 1; - } - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5); - EVT_VAR(0) = 348; - EVT_VAR(1) = 1; - await N(802451BC); - AddStarPieces(1); - N(func_80241EAC_95D0AC)(15); - N(func_80241F60_95D160)(); - SetMessageValue(EVT_SAVE_VAR(352), 0); - if (EVT_SAVE_VAR(352) == 1) { - SetMessageMsg(2148844180, 1); - } else { - SetMessageMsg(2148844176, 1); - } - SpeakToPlayer(NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000F)); - } - EVT_VAR(0) = 1; - } else { - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_9); - EVT_ARRAY(4) = 2; - PlaySound(0x21D); - PlaySound(0x8B); - EVT_VAR(1) = spawn N(80246848); - GetPlayerPos(EVT_VAR(2), EVT_VAR(3), EVT_VAR(4)); - PlayEffect(0x2B, 0, EVT_VAR(2), EVT_VAR(3), EVT_VAR(4), 0, 0, 0, 0, 0, 0, 0, 0, 0); - ContinueSpeech(-1, -1, -1, 0, MESSAGE_ID(0x08, 0x000D)); - SetNpcAnimation(NPC_CHUCK_QUIZMO, NPC_ANIM_chuck_quizmo_Palette_00_Anim_A); - loop { - EVT_VAR(0) = does_script_exist EVT_VAR(1); - if (EVT_VAR(0) == 0) { - break loop; - } - sleep 1; - } - EVT_VAR(0) = 0; - } - N(func_80241EE0_95D0E0)(-1); - EnablePartnerAI(); - spawn { - sleep 30; - PlaySound(0x8F); - } - spawn { - sleep 45; - StopSound(137); - } - N(func_80241F94_95D194)(); - N(func_80241DF8_95CFF8)(); - await N(802452AC); - spawn N(802455F4); - N(UnkFunc29)(); - N(Set80151310_0)(); - EVT_SAVE_FLAG(1793) = 0; -}); +EvtSource N(802468F8) = { + EVT_IF_GT(EVT_SAVE_VAR(352), 63) + EVT_SET(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetPlayerPos, EVT_ARRAY(1), EVT_ARRAY(2), EVT_ARRAY(3)) + EVT_CALL(NpcFacePlayer, NPC_SELF, 16) + EVT_IF_EQ(EVT_SAVE_VAR(352), 63) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000A)) + EVT_ELSE + EVT_IF_EQ(EVT_SAVE_FLAG(1767), 1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0009)) + EVT_ELSE + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0008)) + EVT_SET(EVT_SAVE_FLAG(1767), 1) + EVT_END_IF + EVT_END_IF + EVT_CALL(ShowChoice, MESSAGE_ID(0x1E, 0x000D)) + EVT_IF_EQ(EVT_VAR(0), 1) + EVT_CALL(ContinueSpeech, -1, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000C)) + EVT_EXEC_WAIT(N(802452AC)) + EVT_SET(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_SET(EVT_SAVE_FLAG(1793), 1) + EVT_CALL(N(Set80151310_1)) + EVT_CALL(N(UnkAlphaFunc)) + EVT_EXEC(N(8024535C)) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_GRAVITY)), FALSE) + EVT_CALL(SetNpcFlagBits, 10, ((NPC_FLAG_GRAVITY)), FALSE) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_ENABLE_HIT_SCRIPT | NPC_FLAG_40 | NPC_FLAG_100)), TRUE) + EVT_CALL(SetNpcFlagBits, 10, ((NPC_FLAG_100)), TRUE) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, 0x106) + EVT_EXEC_GET_TID(N(80245A84), EVT_VAR(1)) + EVT_CALL(ContinueSpeech, -1, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000B)) + EVT_CALL(PlaySound, 137) + EVT_LOOP(0) + EVT_IS_THREAD_RUNNING(EVT_VAR(1), EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(N(func_80241BE0_95CDE0)) + EVT_LOOP(5) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(2) + EVT_END_LOOP + EVT_SET(EVT_VAR(0), 2883584) + EVT_ADD(EVT_VAR(0), EVT_SAVE_VAR(352)) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6, 0, EVT_VAR(0)) + EVT_CALL(SetPlayerAnimation, ANIM_QUESTION) + EVT_SET(EVT_VAR(0), 2949120) + EVT_ADD(EVT_VAR(0), EVT_SAVE_VAR(352)) + EVT_CALL(PlaySound, 142) + EVT_CALL(ShowChoice, EVT_VAR(0)) + EVT_KILL_THREAD(EVT_VAR(1)) + EVT_CALL(StopSound, 142) + EVT_EXEC(N(80245AF8)) + EVT_WAIT_FRAMES(15) + EVT_CALL(PlaySound, 141) + EVT_CALL(N(func_80241EE0_95D0E0), EVT_VAR(0)) + EVT_SET(EVT_ARRAY(4), 0) + EVT_CALL(N(func_802424D4_95D6D4)) + EVT_WAIT_FRAMES(40) + EVT_CALL(N(func_80241B5C_95CD5C)) + EVT_THREAD + EVT_WAIT_FRAMES(110) + EVT_CALL(CloseChoice) + EVT_SET(EVT_ARRAY(4), 0) + EVT_END_THREAD + EVT_IF_EQ(EVT_VAR(0), 1) + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_7) + EVT_SET(EVT_ARRAY(4), 1) + EVT_THREAD + EVT_CALL(N(func_80241EAC_95D0AC), 1) + EVT_WAIT_FRAMES(6) + EVT_WAIT_FRAMES(6) + EVT_WAIT_FRAMES(6) + EVT_CALL(N(func_80241EAC_95D0AC), 2) + EVT_END_THREAD + EVT_THREAD + EVT_CALL(PlaySound, 540) + EVT_WAIT_FRAMES(6) + EVT_CALL(PlaySound, 540) + EVT_WAIT_FRAMES(6) + EVT_CALL(PlaySound, 540) + EVT_WAIT_FRAMES(6) + EVT_CALL(PlaySound, 540) + EVT_END_THREAD + EVT_CALL(PlaySound, 138) + EVT_CALL(N(func_80241F78_95D178)) + EVT_THREAD + EVT_WAIT_FRAMES(15) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADD(EVT_VAR(1), 50) + EVT_CALL(N(UnkCameraFunc), 0, 0, 83, EVT_VAR(0), EVT_VAR(2)) + EVT_CALL(PlayEffect, 0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(15) + EVT_ADD(EVT_VAR(1), -3) + EVT_CALL(N(UnkCameraFunc), 0, 0, 58, EVT_VAR(0), EVT_VAR(2)) + EVT_CALL(PlayEffect, 0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(15) + EVT_ADD(EVT_VAR(1), 30) + EVT_CALL(N(UnkCameraFunc), 0, 0, 93, EVT_VAR(0), EVT_VAR(2)) + EVT_CALL(PlayEffect, 0x7, 2, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(PlayEffect, 0x44, 4, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2), 1, 60, 0, 0, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(15) + EVT_END_THREAD + EVT_WAIT_FRAMES(20) + EVT_EXEC_GET_TID(N(80246798), EVT_VAR(1)) + EVT_ADD(EVT_SAVE_VAR(352), 1) + EVT_IF_GT(EVT_SAVE_VAR(352), 63) + EVT_CALL(ContinueSpeech, -1, -1, -1, 0, MESSAGE_ID(0x08, 0x0010)) + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6) + EVT_LOOP(0) + EVT_IS_THREAD_RUNNING(EVT_VAR(1), EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5) + EVT_SET(EVT_VAR(0), 348) + EVT_SET(EVT_VAR(1), 3) + EVT_EXEC_WAIT(N(802451BC)) + EVT_CALL(AddStarPieces, 1) + EVT_CALL(N(func_80241EAC_95D0AC), 15) + EVT_CALL(N(func_80241F60_95D160)) + EVT_CALL(SetMessageValue, EVT_SAVE_VAR(352), 0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x0011)) + EVT_ELSE + EVT_CALL(ContinueSpeech, -1, -1, -1, 0, MESSAGE_ID(0x08, 0x000E)) + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_6) + EVT_LOOP(0) + EVT_IS_THREAD_RUNNING(EVT_VAR(1), EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_5) + EVT_SET(EVT_VAR(0), 348) + EVT_SET(EVT_VAR(1), 1) + EVT_EXEC_WAIT(N(802451BC)) + EVT_CALL(AddStarPieces, 1) + EVT_CALL(N(func_80241EAC_95D0AC), 15) + EVT_CALL(N(func_80241F60_95D160)) + EVT_CALL(SetMessageValue, EVT_SAVE_VAR(352), 0) + EVT_IF_EQ(EVT_SAVE_VAR(352), 1) + EVT_CALL(SetMessageMsg, EVT_PTR(MessageSingular), 1) + EVT_ELSE + EVT_CALL(SetMessageMsg, EVT_PTR(MessagePlural), 1) + EVT_END_IF + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_chuck_quizmo_Palette_00_Anim_4, NPC_ANIM_chuck_quizmo_Palette_00_Anim_1, 0, MESSAGE_ID(0x08, 0x000F)) + EVT_END_IF + EVT_SET(EVT_VAR(0), 1) + EVT_ELSE + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_9) + EVT_SET(EVT_ARRAY(4), 2) + EVT_CALL(PlaySound, SOUND_MENU_BADGE_ERROR) + EVT_CALL(PlaySound, 139) + EVT_EXEC_GET_TID(N(80246848), EVT_VAR(1)) + EVT_CALL(GetPlayerPos, EVT_VAR(2), EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(PlayEffect, 0x2B, 0, EVT_VAR(2), EVT_VAR(3), EVT_VAR(4), 0, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_CALL(ContinueSpeech, -1, -1, -1, 0, MESSAGE_ID(0x08, 0x000D)) + EVT_CALL(SetNpcAnimation, 10, NPC_ANIM_chuck_quizmo_Palette_00_Anim_A) + EVT_LOOP(0) + EVT_IS_THREAD_RUNNING(EVT_VAR(1), EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_SET(EVT_VAR(0), 0) + EVT_END_IF + EVT_CALL(N(func_80241EE0_95D0E0), -1) + EVT_CALL(EnablePartnerAI) + EVT_THREAD + EVT_WAIT_FRAMES(30) + EVT_CALL(PlaySound, 143) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(45) + EVT_CALL(StopSound, 137) + EVT_END_THREAD + EVT_CALL(N(func_80241F94_95D194)) + EVT_CALL(N(func_80241DF8_95CFF8)) + EVT_EXEC_WAIT(N(802452AC)) + EVT_EXEC(N(802455F4)) + EVT_CALL(N(UnkFunc29)) + EVT_CALL(N(Set80151310_0)) + EVT_SET(EVT_SAVE_FLAG(1793), 0) + EVT_RETURN + EVT_END +}; -EvtSource N(80247628) = SCRIPT({ - N(UnkQuizFunc)(); - if (EVT_VAR(0) == 0) { - return; - } - SetNpcFlagBits(NPC_SELF, ((0x01000000)), FALSE); - SetNpcSprite(-1, 0xAF0001); - N(UnkFunc31)(); -}); +EvtSource N(80247628) = { + EVT_CALL(N(UnkQuizFunc)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(SetNpcFlagBits, NPC_SELF, ((NPC_FLAG_1000000)), FALSE) + EVT_CALL(SetNpcSprite, -1, 0x00AF0001) + EVT_CALL(N(UnkFunc31)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024769C) = SCRIPT({ - arr_use 0x8024DFC8; // TODO rawptr - EVT_SAVE_FLAG(1769) = 1; - DisablePlayerPhysics(TRUE); - SetPlayerFlagBits(4194304, 1); - await N(802468F8); - DisablePlayerPhysics(FALSE); - SetPlayerFlagBits(4194304, 0); -}); +EvtSource N(8024769C) = { + EVT_USE_ARRAY(EVT_PTR(N(pad_D_8024DFC8))) + EVT_SET(EVT_SAVE_FLAG(1769), 1) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(SetPlayerFlagBits, 4194304, 1) + EVT_EXEC_WAIT(N(802468F8)) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(SetPlayerFlagBits, 4194304, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(8024771C) = SCRIPT({ - N(GetNpcUnsafeOwner2)(); -}); +EvtSource N(8024771C) = { + EVT_CALL(N(GetNpcUnsafeOwner2)) + EVT_RETURN + EVT_END +}; NpcAISettings N(npcAISettings_80247738) = { .moveSpeed = 0.7f, @@ -1175,9 +1226,11 @@ NpcAISettings N(npcAISettings_80247738) = { .unk_2C = 1, }; -EvtSource N(80247768) = SCRIPT({ - DoBasicAI(N(npcAISettings_80247738)); -}); +EvtSource N(80247768) = { + EVT_CALL(DoBasicAI, EVT_PTR(N(npcAISettings_80247738))) + EVT_RETURN + EVT_END +}; NpcSettings N(npcSettings_80247788) = { .unk_00 = { 0x00, 0xAF, 0x00, 0x01 }, @@ -1211,635 +1264,643 @@ s32 N(D_802477E4_9629E4) = { 0x00000000, }; -EvtSource N(802477E8) = SCRIPT({ - EVT_VAR(9) = EVT_VAR(1); - ShowKeyChoicePopup(); - EVT_VAR(10) = EVT_VAR(0); - match EVT_VAR(0) { - == 0 {} - == -1 {} - else { - RemoveKeyItemAt(EVT_VAR(1)); - GetPlayerPos(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - N(AddPlayerHandsOffset)(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) |= (const) 0x50000; - MakeItemEntity(EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 1, 0); - SetPlayerAnimation(0x60005); - sleep 30; - SetPlayerAnimation(ANIM_10002); - RemoveItemEntity(EVT_VAR(0)); - } - } - N(func_80242784_95D984)(EVT_VAR(10)); - CloseChoicePopup(); - unbind; -}); +EvtSource N(802477E8) = { + EVT_SET(EVT_VAR(9), EVT_VAR(1)) + EVT_CALL(ShowKeyChoicePopup) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_CASE_EQ(-1) + EVT_CASE_DEFAULT + EVT_CALL(RemoveKeyItemAt, EVT_VAR(1)) + EVT_CALL(GetPlayerPos, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(N(AddPlayerHandsOffset), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_BITWISE_OR_CONST(EVT_VAR(0), 0x50000) + EVT_CALL(MakeItemEntity, EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 1, 0) + EVT_CALL(SetPlayerAnimation, 393221) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(RemoveItemEntity, EVT_VAR(0)) + EVT_END_SWITCH + EVT_CALL(N(func_80242784_95D984), EVT_VAR(10)) + EVT_CALL(CloseChoicePopup) + EVT_UNBIND + EVT_RETURN + EVT_END +}; -EvtSource N(8024792C) = SCRIPT({ - N(func_802427BC_95D9BC)(EVT_VAR(0)); - bind_padlock N(802477E8) 0x10 0 N(D_8024DFF0); - N(func_80242730_95D930)(EVT_VAR(0)); -}); +EvtSource N(8024792C) = { + EVT_CALL(N(func_802427BC_95D9BC), EVT_VAR(0)) + EVT_BIND_PADLOCK(N(802477E8), 0x10, 0, EVT_PTR(N(D_8024DFF0)), 0, 1) + EVT_CALL(N(func_80242730_95D930), EVT_VAR(0)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024797C) = SCRIPT({ - loop { - GetNpcPos(NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - N(UnkYawFunc)(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - SetItemPos(EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - sleep 1; - } -}); +EvtSource N(8024797C) = { + EVT_LOOP(0) + EVT_CALL(GetNpcPos, NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(N(UnkYawFunc), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(SetItemPos, EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_RETURN + EVT_END +}; -EvtSource N(802479FC) = SCRIPT({ - EVT_VAR(9) = EVT_VAR(1); - ShowKeyChoicePopup(); - EVT_VAR(10) = EVT_VAR(0); - match EVT_VAR(0) { - == 0 {} - == -1 {} - else { - RemoveKeyItemAt(EVT_VAR(1)); - DisablePartnerAI(0); - GetNpcPos(NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - N(UnkYawFunc)(EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - EVT_VAR(0) |= (const) 0x50000; - MakeItemEntity(EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 1, 0); - EVT_VAR(10) = spawn N(8024797C); - SetNpcAnimation(NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_2); - GetAngleBetweenNPCs(EVT_VAR(9), -4, EVT_VAR(11)); - GetNpcPos(NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - GetNpcPos(EVT_VAR(9), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8)); - SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_100)), TRUE); - if (EVT_VAR(11) <= 180) { - EVT_VAR(6) += 20; - } else { - EVT_VAR(6) += -20; - } - EVT_VAR(7) += 10; - SetNpcJumpscale(NPC_PARTNER, 0.0); - NpcJump1(NPC_PARTNER, EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), 20); - kill EVT_VAR(10); - RemoveItemEntity(EVT_VAR(0)); - sleep 20; - GetNpcYaw(-4, EVT_VAR(10)); - EVT_VAR(10) += 180; - InterpNpcYaw(NPC_PARTNER, EVT_VAR(10), 0); - sleep 5; - NpcJump1(NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 20); - SetNpcAnimation(NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_1); - NpcFaceNpc(NPC_PARTNER, EVT_VAR(9), 0); - sleep 5; - SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_100)), FALSE); - EnablePartnerAI(); - sleep 5; - } - } - N(func_80242784_95D984)(EVT_VAR(10)); - CloseChoicePopup(); - unbind; -}); +EvtSource N(802479FC) = { + EVT_SET(EVT_VAR(9), EVT_VAR(1)) + EVT_CALL(ShowKeyChoicePopup) + EVT_SET(EVT_VAR(10), EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_CASE_EQ(-1) + EVT_CASE_DEFAULT + EVT_CALL(RemoveKeyItemAt, EVT_VAR(1)) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetNpcPos, NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(N(UnkYawFunc), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_BITWISE_OR_CONST(EVT_VAR(0), 0x50000) + EVT_CALL(MakeItemEntity, EVT_VAR(0), EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 1, 0) + EVT_EXEC_GET_TID(N(8024797C), EVT_VAR(10)) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_2) + EVT_CALL(GetAngleBetweenNPCs, EVT_VAR(9), -4, EVT_VAR(11)) + EVT_CALL(GetNpcPos, NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(GetNpcPos, EVT_VAR(9), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8)) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_100)), TRUE) + EVT_IF_LE(EVT_VAR(11), 180) + EVT_ADD(EVT_VAR(6), 20) + EVT_ELSE + EVT_ADD(EVT_VAR(6), -20) + EVT_END_IF + EVT_ADD(EVT_VAR(7), 10) + EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FIXED(0.0)) + EVT_CALL(NpcJump1, NPC_PARTNER, EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), 20) + EVT_KILL_THREAD(EVT_VAR(10)) + EVT_CALL(RemoveItemEntity, EVT_VAR(0)) + EVT_WAIT_FRAMES(20) + EVT_CALL(GetNpcYaw, -4, EVT_VAR(10)) + EVT_ADD(EVT_VAR(10), 180) + EVT_CALL(InterpNpcYaw, NPC_PARTNER, EVT_VAR(10), 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(NpcJump1, NPC_PARTNER, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5), 20) + EVT_CALL(SetNpcAnimation, NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_1) + EVT_CALL(NpcFaceNpc, NPC_PARTNER, EVT_VAR(9), 0) + EVT_WAIT_FRAMES(5) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_100)), FALSE) + EVT_CALL(EnablePartnerAI) + EVT_WAIT_FRAMES(5) + EVT_END_SWITCH + EVT_CALL(N(func_80242784_95D984), EVT_VAR(10)) + EVT_CALL(CloseChoicePopup) + EVT_UNBIND + EVT_RETURN + EVT_END +}; -EvtSource N(80247D20) = SCRIPT({ - EVT_VAR(0) = EVT_VAR(11); - EVT_VAR(1) = EVT_VAR(2); - N(func_802427BC_95D9BC)(EVT_VAR(0)); - bind_padlock N(802479FC) 0x10 0 N(D_8024DFF0); - N(func_80242730_95D930)(EVT_VAR(0)); -}); +EvtSource N(80247D20) = { + EVT_SET(EVT_VAR(0), EVT_VAR(11)) + EVT_SET(EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(N(func_802427BC_95D9BC), EVT_VAR(0)) + EVT_BIND_PADLOCK(N(802479FC), 0x10, 0, EVT_PTR(N(D_8024DFF0)), 0, 1) + EVT_CALL(N(func_80242730_95D930), EVT_VAR(0)) + EVT_RETURN + EVT_END +}; -EvtSource N(80247D90) = SCRIPT({ - EVT_VAR(12) = 0; - if (EVT_STORY_PROGRESS < STORY_CH2_PARAKARRY_JOINED_PARTY) { - return; - } - N(func_80243014_95E214)(); - GetCurrentPartnerID(EVT_VAR(0)); - FindKeyItem(EVT_VAR(5), EVT_VAR(1)); - if (EVT_VAR(0) == 4) { - if (EVT_VAR(1) != -1) { - DisablePartnerAI(0); - PlayerFaceNpc(EVT_VAR(2), 0); - sleep 1; - GetNpcPos(EVT_VAR(2), EVT_VAR(13), EVT_VAR(0), EVT_VAR(14)); - GetNpcPos(NPC_PARTNER, EVT_VAR(13), EVT_VAR(14), EVT_VAR(15)); - SetNpcJumpscale(NPC_PARTNER, 0.0); - EVT_VAR(0) += 10; - NpcJump1(NPC_PARTNER, EVT_VAR(13), EVT_VAR(0), EVT_VAR(15), 10); - SpeakToNpc(-4, 262150, 262145, 0, EVT_VAR(2), EVT_VAR(7)); - EnablePartnerAI(); - await N(80247D20); - match EVT_VAR(0) { - == -1 { - DisablePartnerAI(0); - sleep 1; - SpeakToPlayer(NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_6, NPC_ANIM_world_parakarry_Palette_00_Anim_1, 5, EVT_VAR(8)); - EnablePartnerAI(); - EVT_VAR(12) = 1; - } else { - DisablePartnerAI(0); - sleep 1; - SpeakToPlayer(NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_6, NPC_ANIM_world_parakarry_Palette_00_Anim_1, - 5, EVT_VAR(9)); - if (EVT_VAR(10) != 0) { - SpeakToPlayer(EVT_VAR(2), EVT_VAR(3), EVT_VAR(4), 0, EVT_VAR(10)); - } - EnablePartnerAI(); - if (EVT_VAR(6) != 0) { - EVT_VAR(0) = EVT_VAR(6); - EVT_VAR(1) = 1; - await N(802451BC); - AddKeyItem(EVT_VAR(6)); - } - EVT_VAR(12) = 2; - } - } - } - } - N(func_80243058_95E258)(); -}); +EvtSource N(80247D90) = { + EVT_SET(EVT_VAR(12), 0) + EVT_IF_LT(EVT_SAVE_VAR(0), -70) + EVT_RETURN + EVT_END_IF + EVT_CALL(N(func_80243014_95E214)) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_CALL(FindKeyItem, EVT_VAR(5), EVT_VAR(1)) + EVT_IF_EQ(EVT_VAR(0), 4) + EVT_IF_NE(EVT_VAR(1), -1) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(PlayerFaceNpc, EVT_VAR(2), 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(GetNpcPos, EVT_VAR(2), EVT_VAR(13), EVT_VAR(0), EVT_VAR(14)) + EVT_CALL(GetNpcPos, NPC_PARTNER, EVT_VAR(13), EVT_VAR(14), EVT_VAR(15)) + EVT_CALL(SetNpcJumpscale, NPC_PARTNER, EVT_FIXED(0.0)) + EVT_ADD(EVT_VAR(0), 10) + EVT_CALL(NpcJump1, NPC_PARTNER, EVT_VAR(13), EVT_VAR(0), EVT_VAR(15), 10) + EVT_CALL(SpeakToNpc, -4, 262150, 262145, 0, EVT_VAR(2), EVT_VAR(7)) + EVT_CALL(EnablePartnerAI) + EVT_EXEC_WAIT(N(80247D20)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(-1) + EVT_CALL(DisablePartnerAI, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SpeakToPlayer, NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_6, NPC_ANIM_world_parakarry_Palette_00_Anim_1, 5, EVT_VAR(8)) + EVT_CALL(EnablePartnerAI) + EVT_SET(EVT_VAR(12), 1) + EVT_CASE_DEFAULT + EVT_CALL(DisablePartnerAI, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SpeakToPlayer, NPC_PARTNER, NPC_ANIM_world_parakarry_Palette_00_Anim_6, NPC_ANIM_world_parakarry_Palette_00_Anim_1, 5, EVT_VAR(9)) + EVT_IF_NE(EVT_VAR(10), 0) + EVT_CALL(SpeakToPlayer, EVT_VAR(2), EVT_VAR(3), EVT_VAR(4), 0, EVT_VAR(10)) + EVT_END_IF + EVT_CALL(EnablePartnerAI) + EVT_IF_NE(EVT_VAR(6), 0) + EVT_SET(EVT_VAR(0), EVT_VAR(6)) + EVT_SET(EVT_VAR(1), 1) + EVT_EXEC_WAIT(N(802451BC)) + EVT_CALL(AddKeyItem, EVT_VAR(6)) + EVT_END_IF + EVT_SET(EVT_VAR(12), 2) + EVT_END_SWITCH + EVT_END_IF + EVT_END_IF + EVT_CALL(N(func_80243058_95E258)) + EVT_RETURN + EVT_END +}; s32 N(D_80248088_963288)[] = { 0x0000004C, 0x00000000, }; -EvtSource N(80248090) = SCRIPT({ - N(SetManyVars)(6, 9699589, 9699585, 76, 69, 852105, 852106, 852107, 852108, N(D_80248088_963288)); - await N(80247D90); -}); +EvtSource N(80248090) = { + EVT_CALL(N(SetManyVars), 6, 9699589, 9699585, 76, 69, 852105, 852106, 852107, 852108, EVT_PTR(N(D_80248088_963288))) + EVT_EXEC_WAIT(N(80247D90)) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_802480E0) = SCRIPT({ - if (EVT_STORY_PROGRESS >= STORY_CH2_STAR_SPRIT_DEPARTED) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, - 0x0062)); - return; - } - match EVT_AREA_VAR(0) { - == 0 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x005F)); - EVT_AREA_VAR(0) += 1; - } - == 1 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0060)); - EVT_AREA_VAR(0) += 1; - } - == 2 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0061)); - EVT_AREA_VAR(0) -= 1; - } - } -}); +EvtSource N(interact_802480E0) = { + EVT_IF_GE(EVT_SAVE_VAR(0), -53) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0062)) + EVT_RETURN + EVT_END_IF + EVT_SWITCH(EVT_AREA_VAR(0)) + EVT_CASE_EQ(0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x005F)) + EVT_ADD(EVT_AREA_VAR(0), 1) + EVT_CASE_EQ(1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0060)) + EVT_ADD(EVT_AREA_VAR(0), 1) + EVT_CASE_EQ(2) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_mouser_Palette_00_Anim_5, NPC_ANIM_mouser_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0061)) + EVT_SUB(EVT_AREA_VAR(0), 1) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(init_802481F8) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_802480E0)); -}); +EvtSource N(init_802481F8) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_802480E0))) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_8024821C) = SCRIPT({ - match EVT_STORY_PROGRESS { - < STORY_CH2_STAR_SPRIT_DEPARTED { - if (EVT_STORY_PROGRESS >= STORY_CH2_BOUGHT_SECRET_ITEMS) { - if (EVT_AREA_VAR(1) == 2) { - EVT_AREA_VAR(1) = 0; - } - } - match EVT_AREA_VAR(1) { - == 0 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0063)); - EVT_AREA_VAR(1) += 1; - } - == 1 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0064)); - EVT_AREA_VAR(1) += 1; - } - == 2 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0065)); - EVT_AREA_VAR(1) = 0; - } - } - } - < 39 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0066)); - } else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, - 0x0067)); - } - } -}); +EvtSource N(interact_8024821C) = { + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_LT(-53) + EVT_IF_GE(EVT_SAVE_VAR(0), -64) + EVT_IF_EQ(EVT_AREA_VAR(1), 2) + EVT_SET(EVT_AREA_VAR(1), 0) + EVT_END_IF + EVT_END_IF + EVT_SWITCH(EVT_AREA_VAR(1)) + EVT_CASE_EQ(0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0063)) + EVT_ADD(EVT_AREA_VAR(1), 1) + EVT_CASE_EQ(1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0064)) + EVT_ADD(EVT_AREA_VAR(1), 1) + EVT_CASE_EQ(2) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0065)) + EVT_SET(EVT_AREA_VAR(1), 0) + EVT_END_SWITCH + EVT_CASE_LT(39) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0066)) + EVT_CASE_DEFAULT + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_03_Anim_4, NPC_ANIM_dryite_Palette_03_Anim_1, 0, MESSAGE_ID(0x0D, 0x0067)) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(init_802483A8) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_8024821C)); -}); +EvtSource N(init_802483A8) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_8024821C))) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_802483CC) = SCRIPT({ - match EVT_AREA_VAR(2) { - == 0 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x0068)); - EVT_AREA_VAR(2) += 1; - } - == 1 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x0069)); - EVT_AREA_VAR(2) += 1; - } - == 2 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x006A)); - EVT_AREA_VAR(2) += 1; - } - == 3 { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x006B)); - EVT_AREA_VAR(2) = 0; - } - } -}); +EvtSource N(interact_802483CC) = { + EVT_SWITCH(EVT_AREA_VAR(2)) + EVT_CASE_EQ(0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x0068)) + EVT_ADD(EVT_AREA_VAR(2), 1) + EVT_CASE_EQ(1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x0069)) + EVT_ADD(EVT_AREA_VAR(2), 1) + EVT_CASE_EQ(2) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x006A)) + EVT_ADD(EVT_AREA_VAR(2), 1) + EVT_CASE_EQ(3) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_02_Anim_4, NPC_ANIM_dryite_Palette_02_Anim_1, 0, MESSAGE_ID(0x0D, 0x006B)) + EVT_SET(EVT_AREA_VAR(2), 0) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(init_802484E0) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_802483CC)); -}); +EvtSource N(init_802484E0) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_802483CC))) + EVT_RETURN + EVT_END +}; -EvtSource N(80248504) = SCRIPT({ - loop { - N(GetFloorCollider)(EVT_VAR(0)); - if (EVT_VAR(0) == 8) { - break loop; - } - sleep 1; - } - DisablePlayerInput(TRUE); - func_802CF56C(1); - spawn { - sleep 20; - func_802CF56C(0); - NpcFacePlayer(NPC_PARTNER, 0); - } - PlayerFaceNpc(3, 0); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0078)); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - GetNpcPos(NPC_DRYITE2, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)); - UseSettingsFrom(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(0) += (float) EVT_VAR(3); - EVT_VAR(1) += (float) EVT_VAR(4); - EVT_VAR(2) += (float) EVT_VAR(5); - EVT_VAR(0) /= 2.0; - EVT_VAR(1) /= 2.0; - EVT_VAR(2) /= 2.0; - SetPanTarget(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetCamDistance(0, -300.0); - SetCamSpeed(0, 5.0); - PanToTarget(0, 0, 1); - WaitForCam(0, 1.0); - SetPlayerAnimation(ANIM_10002); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0079)); - SetPlayerAnimation(ANIM_80007); - sleep 30; - SetPlayerAnimation(ANIM_10002); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x007A)); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - UseSettingsFrom(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetCamSpeed(0, 4.0); - PanToTarget(0, 0, 1); - WaitForCam(0, 1.0); - PanToTarget(0, 0, 0); - N(func_80243084_95E284)(); - EVT_SAVE_FLAG(761) = 1; - DisablePlayerInput(FALSE); -}); +EvtSource N(80248504) = { + EVT_LOOP(0) + EVT_CALL(N(GetFloorCollider), EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 8) + EVT_BREAK_LOOP + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(func_802CF56C, 1) + EVT_THREAD + EVT_WAIT_FRAMES(20) + EVT_CALL(func_802CF56C, 0) + EVT_CALL(NpcFacePlayer, NPC_PARTNER, 0) + EVT_END_THREAD + EVT_CALL(PlayerFaceNpc, 3, 0) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0078)) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(GetNpcPos, 3, EVT_VAR(3), EVT_VAR(4), EVT_VAR(5)) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_ADDF(EVT_VAR(0), EVT_VAR(3)) + EVT_ADDF(EVT_VAR(1), EVT_VAR(4)) + EVT_ADDF(EVT_VAR(2), EVT_VAR(5)) + EVT_DIVF(EVT_VAR(0), EVT_FIXED(2.0)) + EVT_DIVF(EVT_VAR(1), EVT_FIXED(2.0)) + EVT_DIVF(EVT_VAR(2), EVT_FIXED(2.0)) + EVT_CALL(SetPanTarget, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetCamDistance, 0, EVT_FIXED(-300.0)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(5.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(WaitForCam, 0, EVT_FIXED(1.0)) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0079)) + EVT_CALL(SetPlayerAnimation, ANIM_80007) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x007A)) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(4.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(WaitForCam, 0, EVT_FIXED(1.0)) + EVT_CALL(PanToTarget, 0, 0, 0) + EVT_CALL(N(func_80243084_95E284)) + EVT_SET(EVT_SAVE_FLAG(761), 1) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_RETURN + EVT_END +}; s32 N(D_8024884C_963A4C)[] = { 0x0000007D, 0x00000000, 0xFFFFFFD6, 0x0000004B, 0x0000004B, N(func_802430C8_95E2C8), }; -EvtSource N(interact_80248864) = SCRIPT({ - if (EVT_SAVE_FLAG(253) == 1) { - if (EVT_SAVE_FLAG(761) == 1) { - N(func_802431B4_95E3B4)(); - if (EVT_VAR(0) == 1) { - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x007B)); - return; - } - } - } - match EVT_STORY_PROGRESS { - < STORY_CH2_STAR_SPRIT_DEPARTED { - if (EVT_AREA_FLAG(1) == 0) { - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x006C)); - SpeakToPlayer(NPC_DRYITE3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x006D)); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x006E)); - EVT_AREA_FLAG(1) = 1; - } else { - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x006F)); - SpeakToPlayer(NPC_DRYITE3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0070)); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0071)); - EVT_AREA_FLAG(1) = 0; - } - } - < STORY_CH5_STAR_SPRIT_DEPARTED { - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0072)); - SpeakToPlayer(NPC_DRYITE3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0073)); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0074)); - } else { - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0075)); - SpeakToPlayer(NPC_DRYITE3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0076)); - SpeakToPlayer(NPC_DRYITE2, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0077)); - } - } -}); +EvtSource N(interact_80248864) = { + EVT_IF_EQ(EVT_SAVE_FLAG(253), 1) + EVT_IF_EQ(EVT_SAVE_FLAG(761), 1) + EVT_CALL(N(func_802431B4_95E3B4)) + EVT_IF_EQ(EVT_VAR(0), 1) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x007B)) + EVT_RETURN + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_LT(-53) + EVT_IF_EQ(EVT_AREA_FLAG(1), 0) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x006C)) + EVT_CALL(SpeakToPlayer, 4, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x006D)) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x006E)) + EVT_SET(EVT_AREA_FLAG(1), 1) + EVT_ELSE + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x006F)) + EVT_CALL(SpeakToPlayer, 4, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0070)) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0071)) + EVT_SET(EVT_AREA_FLAG(1), 0) + EVT_END_IF + EVT_CASE_LT(39) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0072)) + EVT_CALL(SpeakToPlayer, 4, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0073)) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0074)) + EVT_CASE_DEFAULT + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0075)) + EVT_CALL(SpeakToPlayer, 4, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0076)) + EVT_CALL(SpeakToPlayer, 3, NPC_ANIM_dryite_Palette_00_Anim_4, NPC_ANIM_dryite_Palette_00_Anim_1, 0, MESSAGE_ID(0x0D, 0x0077)) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(init_80248AE4) = SCRIPT({ - GetEntryID(EVT_VAR(0)); - match EVT_VAR(0) { - 3, 4 { - SetNpcAnimation(NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_4); - return; - } - } - BindNpcInteract(NPC_SELF, N(interact_80248864)); - if (EVT_SAVE_FLAG(253) == 1) { - spawn { - N(func_80242858_95DA58)(N(D_8024884C_963A4C)); - } - } -}); +EvtSource N(init_80248AE4) = { + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(3) + EVT_CASE_OR_EQ(4) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_4) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80248864))) + EVT_IF_EQ(EVT_SAVE_FLAG(253), 1) + EVT_THREAD + EVT_CALL(N(func_80242858_95DA58), EVT_PTR(N(D_8024884C_963A4C))) + EVT_END_THREAD + EVT_END_IF + EVT_RETURN + EVT_END +}; -EvtSource N(interact_80248BA0) = SCRIPT({ - parallel { - loop { - NpcFaceNpc(NPC_DRYITE2, NPC_DRYITE3, 1); - } - } - N(func_802431FC_95E3FC)(); - SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), TRUE); - SetNpcAnimation(NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_3); - SetNpcSpeed(NPC_SELF, 3.5); - NpcMoveTo(NPC_SELF, EVT_VAR(0), EVT_VAR(1), 0); - SetNpcAnimation(NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_1); - SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), FALSE); - sleep 5; - GetNpcYaw(-1, EVT_VAR(0)); - EVT_VAR(0) += 180; - InterpNpcYaw(NPC_SELF, EVT_VAR(0), 0); -}); +EvtSource N(interact_80248BA0) = { + EVT_CHILD_THREAD + EVT_LOOP(0) + EVT_CALL(NpcFaceNpc, 3, 4, 1) + EVT_END_LOOP + EVT_END_CHILD_THREAD + EVT_CALL(N(func_802431FC_95E3FC)) + EVT_CALL(SetNpcFlagBits, NPC_SELF, ((NPC_FLAG_100)), TRUE) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_3) + EVT_CALL(SetNpcSpeed, NPC_SELF, EVT_FIXED(3.5)) + EVT_CALL(NpcMoveTo, NPC_SELF, EVT_VAR(0), EVT_VAR(1), 0) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_1) + EVT_CALL(SetNpcFlagBits, NPC_SELF, ((NPC_FLAG_100)), FALSE) + EVT_WAIT_FRAMES(5) + EVT_CALL(GetNpcYaw, -1, EVT_VAR(0)) + EVT_ADD(EVT_VAR(0), 180) + EVT_CALL(InterpNpcYaw, NPC_SELF, EVT_VAR(0), 0) + EVT_RETURN + EVT_END +}; -EvtSource N(init_80248CC8) = SCRIPT({ - GetEntryID(EVT_VAR(0)); - match EVT_VAR(0) { - 3, 4 { - SetNpcAnimation(NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_4); - return; - } - } - BindNpcInteract(NPC_SELF, N(interact_80248BA0)); -}); +EvtSource N(init_80248CC8) = { + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_OR_EQ(3) + EVT_CASE_OR_EQ(4) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_dryite_Palette_00_Anim_4) + EVT_RETURN + EVT_END_CASE_GROUP + EVT_END_SWITCH + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80248BA0))) + EVT_RETURN + EVT_END +}; s32 N(D_80248D4C_963F4C)[] = { 0x00000067, 0x00000000, }; -EvtSource N(interact_80248D54) = SCRIPT({ - if (EVT_SAVE_FLAG(754) == 1) { - FindKeyItem(ITEM_MELODY, EVT_VAR(0)); - if (EVT_VAR(0) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0084)); - return; - } else { - if (EVT_SAVE_FLAG(755) == 0) { - if (EVT_STORY_PROGRESS < STORY_CH7_BEGAN_PEACH_MISSION) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0085)); - SetPlayerAnimation(ANIM_NOD_YES); - sleep 30; - SetPlayerAnimation(ANIM_10002); - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0086)); - EVT_SAVE_FLAG(755) = 1; - return; - } - } - } - } - match EVT_STORY_PROGRESS { - < STORY_CH2_STAR_SPRIT_DEPARTED { - if (EVT_AREA_FLAG(2) == 0) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x007C)); - EVT_AREA_FLAG(2) = 1; - } else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x007D)); - EVT_AREA_FLAG(2) = 0; - } - } - < STORY_CH5_STAR_SPRIT_DEPARTED { - if (EVT_AREA_FLAG(2) == 0) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x007E)); - EVT_AREA_FLAG(2) = 1; - } else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x007F)); - EVT_AREA_FLAG(2) = 0; - } - } else { - if (EVT_AREA_FLAG(2) == 0) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0080)); - EVT_AREA_FLAG(2) = 1; - } else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0081)); - EVT_AREA_FLAG(2) = 0; - } - } - } - EVT_VAR(0) = N(D_80248D4C_963F4C); - EVT_VAR(1) = 5; - await N(8024792C); - match EVT_VAR(0) { - == 0 {} - == -1 {} - else { - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0082)); - SetNpcAnimation(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_3); - sleep 60; - SetNpcAnimation(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_1); - SpeakToPlayer(NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x0083)); - EVT_VAR(0) = 104; - EVT_VAR(1) = 1; - await N(802451BC); - AddKeyItem(ITEM_MELODY); - EVT_SAVE_FLAG(754) = 1; - return; - } - } -}); +EvtSource N(interact_80248D54) = { + EVT_IF_EQ(EVT_SAVE_FLAG(754), 1) + EVT_CALL(FindKeyItem, ITEM_MELODY, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0084)) + EVT_RETURN + EVT_ELSE + EVT_IF_EQ(EVT_SAVE_FLAG(755), 0) + EVT_IF_LT(EVT_SAVE_VAR(0), 88) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0085)) + EVT_CALL(SetPlayerAnimation, ANIM_NOD_YES) + EVT_WAIT_FRAMES(30) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0086)) + EVT_SET(EVT_SAVE_FLAG(755), 1) + EVT_RETURN + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_LT(-53) + EVT_IF_EQ(EVT_AREA_FLAG(2), 0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x007C)) + EVT_SET(EVT_AREA_FLAG(2), 1) + EVT_ELSE + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x007D)) + EVT_SET(EVT_AREA_FLAG(2), 0) + EVT_END_IF + EVT_CASE_LT(39) + EVT_IF_EQ(EVT_AREA_FLAG(2), 0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x007E)) + EVT_SET(EVT_AREA_FLAG(2), 1) + EVT_ELSE + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x007F)) + EVT_SET(EVT_AREA_FLAG(2), 0) + EVT_END_IF + EVT_CASE_DEFAULT + EVT_IF_EQ(EVT_AREA_FLAG(2), 0) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0080)) + EVT_SET(EVT_AREA_FLAG(2), 1) + EVT_ELSE + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0081)) + EVT_SET(EVT_AREA_FLAG(2), 0) + EVT_END_IF + EVT_END_SWITCH + EVT_SET(EVT_VAR(0), EVT_PTR(N(D_80248D4C_963F4C))) + EVT_SET(EVT_VAR(1), 5) + EVT_EXEC_WAIT(N(8024792C)) + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_CASE_EQ(-1) + EVT_CASE_DEFAULT + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0082)) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_3) + EVT_WAIT_FRAMES(60) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_artist_toad_Palette_01_Anim_2, NPC_ANIM_artist_toad_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0083)) + EVT_SET(EVT_VAR(0), 104) + EVT_SET(EVT_VAR(1), 1) + EVT_EXEC_WAIT(N(802451BC)) + EVT_CALL(AddKeyItem, ITEM_MELODY) + EVT_SET(EVT_SAVE_FLAG(754), 1) + EVT_RETURN + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(init_80249168) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_80248D54)); -}); +EvtSource N(init_80249168) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80248D54))) + EVT_RETURN + EVT_END +}; -EvtSource N(idle_8024918C) = SCRIPT({ - match EVT_STORY_PROGRESS { - < STORY_CH2_SHADY_MOUSE_LEFT_SHOP { - N(func_80243350_95E550)(16, 190, -134, -131); - DisablePlayerInput(TRUE); - SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), TRUE); - SetNpcPos(NPC_SELF, 0, 0, -180); - await N(8024C41C); - sleep 10; - GetPlayerPos(EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - UseSettingsFrom(0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - SetPanTarget(0, 32, 0, -67); - SetCamDistance(0, -210); - SetCamPitch(0, 20, -12); - SetCamSpeed(0, 90.0); - PanToTarget(0, 0, 1); - sleep 20; - UseSettingsFrom(0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - SetCamDistance(0, -350); - SetCamSpeed(0, 0.80078125); - PanToTarget(0, 0, 1); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4); - NpcMoveTo(NPC_SELF, -23, -105, 20); - sleep 10; - InterpNpcYaw(NPC_SELF, 65, 0); - sleep 10; - await N(8024C4C8); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4); - NpcMoveTo(NPC_SELF, 37, -27, 20); - UseSettingsFrom(0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)); - SetPanTarget(0, 142, 0, -67); - PanToTarget(0, 0, 1); - NpcMoveTo(NPC_SELF, 62, -6, 20); - NpcMoveTo(NPC_SELF, 103, 11, 20); - NpcMoveTo(NPC_SELF, 150, 18, 20); - EnableNpcBlur(-1, 1); - PlaySoundAtNpc(NPC_SELF, 0x174, 0); - NpcMoveTo(NPC_SELF, 554, -12, 20); - SetNpcPos(NPC_SELF, 0, -1000, 0); - sleep 30; - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - UseSettingsFrom(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPanTarget(0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetCamSpeed(0, 2.0); - PanToTarget(0, 0, 1); - WaitForCam(0, 1.0); - PanToTarget(0, 0, 0); - DisablePlayerInput(FALSE); - EVT_STORY_PROGRESS = STORY_CH2_SHADY_MOUSE_LEFT_SHOP; - } - < STORY_CH2_SPOKE_WITH_SHEEK {} - < STORY_CH2_SHADY_MOUSE_ENTERED_SHOP { - EnableNpcBlur(-1, 1); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4); - PlaySoundAtNpc(NPC_SELF, 0x174, 0); - SetNpcPos(NPC_SELF, 470, 0, 18); - NpcMoveTo(NPC_SELF, 287, 9, 20); - NpcMoveTo(NPC_SELF, 102, -14, 20); - NpcMoveTo(NPC_SELF, -32, -96, 20); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1); - await N(8024C41C); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4); - NpcMoveTo(NPC_SELF, 20, -375, 30); - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1); - await N(8024C4C8); - EnableNpcBlur(-1, 0); - EVT_STORY_PROGRESS = STORY_CH2_SHADY_MOUSE_ENTERED_SHOP; - } else { - SetNpcAnimation(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1); - SetNpcPos(NPC_SELF, 20, 0, -375); - } - } -}); +EvtSource N(idle_8024918C) = { + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_LT(-67) + EVT_CALL(N(func_80243350_95E550), 16, 190, -134, -131) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(SetNpcFlagBits, NPC_SELF, ((NPC_FLAG_100)), TRUE) + EVT_CALL(SetNpcPos, NPC_SELF, 0, 0, -180) + EVT_EXEC_WAIT(N(8024C41C)) + EVT_WAIT_FRAMES(10) + EVT_CALL(GetPlayerPos, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(SetPanTarget, 0, 32, 0, -67) + EVT_CALL(SetCamDistance, 0, -210) + EVT_CALL(SetCamPitch, 0, 20, -12) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(90.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_WAIT_FRAMES(20) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(SetCamDistance, 0, -350) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(0.8)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4) + EVT_CALL(NpcMoveTo, NPC_SELF, -23, -105, 20) + EVT_WAIT_FRAMES(10) + EVT_CALL(InterpNpcYaw, NPC_SELF, 65, 0) + EVT_WAIT_FRAMES(10) + EVT_EXEC_WAIT(N(8024C4C8)) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4) + EVT_CALL(NpcMoveTo, NPC_SELF, 37, -27, 20) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(10), EVT_VAR(11), EVT_VAR(12)) + EVT_CALL(SetPanTarget, 0, 142, 0, -67) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(NpcMoveTo, NPC_SELF, 62, -6, 20) + EVT_CALL(NpcMoveTo, NPC_SELF, 103, 11, 20) + EVT_CALL(NpcMoveTo, NPC_SELF, 150, 18, 20) + EVT_CALL(EnableNpcBlur, -1, 1) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, 372, 0) + EVT_CALL(NpcMoveTo, NPC_SELF, 554, -12, 20) + EVT_CALL(SetNpcPos, NPC_SELF, 0, -1000, 0) + EVT_WAIT_FRAMES(30) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPanTarget, 0, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(2.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(WaitForCam, 0, EVT_FIXED(1.0)) + EVT_CALL(PanToTarget, 0, 0, 0) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_SET(EVT_SAVE_VAR(0), -67) + EVT_CASE_LT(-66) + EVT_CASE_LT(-65) + EVT_CALL(EnableNpcBlur, -1, 1) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4) + EVT_CALL(PlaySoundAtNpc, NPC_SELF, 372, 0) + EVT_CALL(SetNpcPos, NPC_SELF, 470, 0, 18) + EVT_CALL(NpcMoveTo, NPC_SELF, 287, 9, 20) + EVT_CALL(NpcMoveTo, NPC_SELF, 102, -14, 20) + EVT_CALL(NpcMoveTo, NPC_SELF, -32, -96, 20) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1) + EVT_EXEC_WAIT(N(8024C41C)) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_4) + EVT_CALL(NpcMoveTo, NPC_SELF, 20, -375, 30) + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1) + EVT_EXEC_WAIT(N(8024C4C8)) + EVT_CALL(EnableNpcBlur, -1, 0) + EVT_SET(EVT_SAVE_VAR(0), -65) + EVT_CASE_DEFAULT + EVT_CALL(SetNpcAnimation, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_1) + EVT_CALL(SetNpcPos, NPC_SELF, 20, 0, -375) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(interact_80249750) = SCRIPT({ - if (EVT_AREA_VAR(4) == 4) { - if (EVT_AREA_VAR(5) == 1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x0088)); - await N(80248090); - if (EVT_VAR(12) != 0) { - return; - } - return; - } - } - await 0x80284054; - await N(80248090); - if (EVT_VAR(12) != 0) { - return; - } -}); +EvtSource N(interact_80249750) = { + EVT_IF_EQ(EVT_AREA_VAR(4), 4) + EVT_IF_EQ(EVT_AREA_VAR(5), 1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0088)) + EVT_EXEC_WAIT(N(80248090)) + EVT_IF_NE(EVT_VAR(12), 0) + EVT_RETURN + EVT_END_IF + EVT_RETURN + EVT_END_IF + EVT_END_IF + EVT_EXEC_WAIT(0x80284054) + EVT_EXEC_WAIT(N(80248090)) + EVT_IF_NE(EVT_VAR(12), 0) + EVT_RETURN + EVT_END_IF + EVT_RETURN + EVT_END +}; -EvtSource N(init_8024981C) = SCRIPT({ - BindNpcIdle(NPC_SELF, N(idle_8024918C)); - BindNpcInteract(NPC_SELF, N(interact_80249750)); -}); +EvtSource N(init_8024981C) = { + EVT_CALL(BindNpcIdle, NPC_SELF, EVT_PTR(N(idle_8024918C))) + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80249750))) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_80249854) = SCRIPT({ - SpeakToPlayer(NPC_THREE_SISTERS0, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x008E)); - SpeakToPlayer(NPC_THREE_SISTERS1, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x008F)); - SpeakToPlayer(NPC_THREE_SISTERS2, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0090)); -}); +EvtSource N(interact_80249854) = { + EVT_CALL(SpeakToPlayer, 7, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x008E)) + EVT_CALL(SpeakToPlayer, 8, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x008F)) + EVT_CALL(SpeakToPlayer, 9, NPC_ANIM_three_sisters_Palette_01_Anim_4, NPC_ANIM_three_sisters_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0090)) + EVT_RETURN + EVT_END +}; -EvtSource N(init_802498C4) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_80249854)); -}); +EvtSource N(init_802498C4) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80249854))) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_802498E8) = SCRIPT({ - FindKeyItem(ITEM_FIRST_DEGREE_CARD, EVT_VAR(1)); - FindKeyItem(ITEM_SECOND_DEGREE_CARD, EVT_VAR(2)); - FindKeyItem(ITEM_THIRD_DEGREE_CARD, EVT_VAR(3)); - FindKeyItem(ITEM_FOURTH_DEGREE_CARD, EVT_VAR(4)); - FindKeyItem(ITEM_DIPLOMA, EVT_VAR(5)); - if (EVT_VAR(1) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x009A)); - return; - } - if (EVT_VAR(2) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x009B)); - return; - } - if (EVT_VAR(3) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x009C)); - return; - } - if (EVT_VAR(4) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x009D)); - return; - } - if (EVT_VAR(5) != -1) { - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, - 0x009E)); - return; - } - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0099)); -}); +EvtSource N(interact_802498E8) = { + EVT_CALL(FindKeyItem, ITEM_FIRST_DEGREE_CARD, EVT_VAR(1)) + EVT_CALL(FindKeyItem, ITEM_SECOND_DEGREE_CARD, EVT_VAR(2)) + EVT_CALL(FindKeyItem, ITEM_THIRD_DEGREE_CARD, EVT_VAR(3)) + EVT_CALL(FindKeyItem, ITEM_FOURTH_DEGREE_CARD, EVT_VAR(4)) + EVT_CALL(FindKeyItem, ITEM_DIPLOMA, EVT_VAR(5)) + EVT_IF_NE(EVT_VAR(1), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009A)) + EVT_RETURN + EVT_END_IF + EVT_IF_NE(EVT_VAR(2), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009B)) + EVT_RETURN + EVT_END_IF + EVT_IF_NE(EVT_VAR(3), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009C)) + EVT_RETURN + EVT_END_IF + EVT_IF_NE(EVT_VAR(4), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009D)) + EVT_RETURN + EVT_END_IF + EVT_IF_NE(EVT_VAR(5), -1) + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009E)) + EVT_RETURN + EVT_END_IF + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0099)) + EVT_RETURN + EVT_END +}; -EvtSource N(init_80249ABC) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_802498E8)); -}); +EvtSource N(init_80249ABC) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_802498E8))) + EVT_RETURN + EVT_END +}; -EvtSource N(interact_80249AE0) = SCRIPT({ - SpeakToPlayer(NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009F)); -}); +EvtSource N(interact_80249AE0) = { + EVT_CALL(SpeakToPlayer, NPC_SELF, NPC_ANIM_dryite_Palette_01_Anim_4, NPC_ANIM_dryite_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x009F)) + EVT_RETURN + EVT_END +}; -EvtSource N(init_80249B10) = SCRIPT({ - BindNpcInteract(NPC_SELF, N(interact_80249AE0)); -}); +EvtSource N(init_80249B10) = { + EVT_CALL(BindNpcInteract, NPC_SELF, EVT_PTR(N(interact_80249AE0))) + EVT_RETURN + EVT_END +}; StaticNpc N(npcGroup_80249B34)[] = { { @@ -2283,126 +2344,112 @@ N(shopPrice) N(shopPriceList_8024B550)[] = { s32** N(D_8024B5B0_9667B0) = NULL; -EvtSource N(8024B5B4) = SCRIPT({ - ShowGotItem(EVT_VAR(0), 1, 0); - return; -}); - -EvtSource N(8024B5E4) = SCRIPT({ - ShowGotItem(EVT_VAR(0), 1, 16); - return; -}); - -EvtSource N(8024B614) = SCRIPT({ - NpcJump0(NPC_MOUSER1, -31, 0, -283, 10); - NpcJump0(NPC_MOUSER1, -30, 0, -283, 8); -}); - -EvtSource N(8024B664) = SCRIPT({ - NpcJump0(NPC_MOUSER1, 20, 0, -259, 10); - NpcJump0(NPC_MOUSER1, 20, 0, -259, 4); -}); - -// Extraneous END_IF -#ifdef NON_MATCHING -EvtSource N(8024B6B4) = SCRIPT({ - N(func_80243578_95E778)(); - func_802D2C14(1); - await N(8024B614); - if (EVT_STORY_PROGRESS < STORY_CH2_BOUGHT_SECRET_ITEMS) { - SpeakToPlayer(NPC_MOUSER1, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0087)); - SetPlayerAnimation(ANIM_10002); - sleep 10; - SetPlayerAnimation(ANIM_80007); - sleep 30; - } - SpeakToPlayer(NPC_MOUSER1, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0088)); - EVT_STORY_PROGRESS = STORY_CH2_BOUGHT_SECRET_ITEMS; - func_802D2C14(0); - await N(8024B664); -}); -#else -EvtSource N(8024B6B4) = { - EVT_CMD(EVT_OP_CALL, N(func_80243578_95E778)), - EVT_CMD(EVT_OP_CALL, func_802D2C14, 1), - EVT_CMD(EVT_OP_AWAIT_SCRIPT, N(8024B614)), - EVT_CMD(EVT_OP_IF_LT, EVT_STORY_PROGRESS, -64), - EVT_CMD(EVT_OP_CALL, SpeakToPlayer, 6, 9699589, 9699585, 0, 852103), - EVT_CMD(EVT_OP_CALL, SetPlayerAnimation, 65538), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 10), - EVT_CMD(EVT_OP_CALL, SetPlayerAnimation, 524295), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 30), - EVT_CMD(EVT_OP_END_IF), - EVT_CMD(EVT_OP_CALL, SpeakToPlayer, 6, 9699589, 9699585, 0, 852104), - EVT_CMD(EVT_OP_SET, EVT_STORY_PROGRESS, -64), - EVT_CMD(EVT_OP_CALL, func_802D2C14, 0), - EVT_CMD(EVT_OP_AWAIT_SCRIPT, N(8024B664)), -EVT_CMD(EVT_OP_END_IF), -EVT_CMD(EVT_OP_RETURN), -EVT_CMD(EVT_OP_END) +EvtSource N(8024B5B4) = { + EVT_CALL(ShowGotItem, EVT_VAR(0), 1, 0) + EVT_RETURN + EVT_RETURN + EVT_END }; -#endif -EvtSource N(8024B7B0) = SCRIPT({ - if (EVT_SAVE_FLAG(758) == 0) { - N(func_80243578_95E778)(); - func_802D2C14(1); - await N(8024B614); - SpeakToPlayer(NPC_MOUSER1, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, - MESSAGE_ID(0x0D, 0x008D)); - EVT_VAR(0) = 119; - EVT_VAR(1) = 1; - await N(8024B5B4); - AddKeyItem(ITEM_RED_JAR); - EVT_SAVE_FLAG(758) = 1; - sleep 20; - func_802D2C14(0); - await N(8024B664); - } -}); +EvtSource N(8024B5E4) = { + EVT_CALL(ShowGotItem, EVT_VAR(0), 1, 16) + EVT_RETURN + EVT_RETURN + EVT_END +}; -EvtSource N(8024B894) = SCRIPT({ - match EVT_VAR(0) { - == 3 {} - == 4 {} - == 1 { - EVT_VAR(2) = EVT_AREA_VAR(4); - EVT_VAR(3) = EVT_AREA_VAR(5); - EVT_VAR(4) = EVT_AREA_VAR(6); - EVT_AREA_VAR(5) = EVT_VAR(2); - EVT_AREA_VAR(6) = EVT_VAR(3); - match EVT_VAR(1) { - == 141 { - EVT_AREA_VAR(4) = 1; - if (EVT_VAR(2) == 2) { - if (EVT_VAR(3) == 3) { - if (EVT_VAR(4) == 2) { - await N(8024B7B0); - EVT_AREA_VAR(4) = 0; - } - } - } - } - == 134 { - EVT_AREA_VAR(4) = 2; - if (EVT_VAR(2) == 1) { - if (EVT_STORY_PROGRESS < STORY_CH2_GOT_PULSE_STONE) { - await N(8024B6B4); - EVT_AREA_VAR(4) = 0; - } - } - } - == 167 { - EVT_AREA_VAR(4) = 3; - } else { - EVT_AREA_VAR(4) = 0; - } - } - } - == 2 { - } - } -}); +EvtSource N(8024B614) = { + EVT_CALL(NpcJump0, 6, -31, 0, -283, 10) + EVT_CALL(NpcJump0, 6, -30, 0, -283, 8) + EVT_RETURN + EVT_END +}; + +EvtSource N(8024B664) = { + EVT_CALL(NpcJump0, 6, 20, 0, -259, 10) + EVT_CALL(NpcJump0, 6, 20, 0, -259, 4) + EVT_RETURN + EVT_END +}; + +EvtSource N(8024B6B4) = { + EVT_CALL(N(func_80243578_95E778)) + EVT_CALL(func_802D2C14, 1) + EVT_EXEC_WAIT(N(8024B614)) + EVT_IF_LT(EVT_SAVE_VAR(0), -64) + EVT_CALL(SpeakToPlayer, 6, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0087)) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_WAIT_FRAMES(10) + EVT_CALL(SetPlayerAnimation, ANIM_80007) + EVT_WAIT_FRAMES(30) + EVT_END_IF + EVT_CALL(SpeakToPlayer, 6, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x0088)) + EVT_SET(EVT_SAVE_VAR(0), -64) + EVT_CALL(func_802D2C14, 0) + EVT_EXEC_WAIT(N(8024B664)) + EVT_END_IF // @bug + EVT_RETURN + EVT_END +}; + +EvtSource N(8024B7B0) = { + EVT_IF_EQ(EVT_SAVE_FLAG(758), 0) + EVT_CALL(N(func_80243578_95E778)) + EVT_CALL(func_802D2C14, 1) + EVT_EXEC_WAIT(N(8024B614)) + EVT_CALL(SpeakToPlayer, 6, NPC_ANIM_mouser_Palette_01_Anim_5, NPC_ANIM_mouser_Palette_01_Anim_1, 0, MESSAGE_ID(0x0D, 0x008D)) + EVT_SET(EVT_VAR(0), 119) + EVT_SET(EVT_VAR(1), 1) + EVT_EXEC_WAIT(N(8024B5B4)) + EVT_CALL(AddKeyItem, ITEM_RED_JAR) + EVT_SET(EVT_SAVE_FLAG(758), 1) + EVT_WAIT_FRAMES(20) + EVT_CALL(func_802D2C14, 0) + EVT_EXEC_WAIT(N(8024B664)) + EVT_END_IF + EVT_RETURN + EVT_END +}; + +EvtSource N(8024B894) = { + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(3) + EVT_CASE_EQ(4) + EVT_CASE_EQ(1) + EVT_SET(EVT_VAR(2), EVT_AREA_VAR(4)) + EVT_SET(EVT_VAR(3), EVT_AREA_VAR(5)) + EVT_SET(EVT_VAR(4), EVT_AREA_VAR(6)) + EVT_SET(EVT_AREA_VAR(5), EVT_VAR(2)) + EVT_SET(EVT_AREA_VAR(6), EVT_VAR(3)) + EVT_SWITCH(EVT_VAR(1)) + EVT_CASE_EQ(141) + EVT_SET(EVT_AREA_VAR(4), 1) + EVT_IF_EQ(EVT_VAR(2), 2) + EVT_IF_EQ(EVT_VAR(3), 3) + EVT_IF_EQ(EVT_VAR(4), 2) + EVT_EXEC_WAIT(N(8024B7B0)) + EVT_SET(EVT_AREA_VAR(4), 0) + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_CASE_EQ(134) + EVT_SET(EVT_AREA_VAR(4), 2) + EVT_IF_EQ(EVT_VAR(2), 1) + EVT_IF_LT(EVT_SAVE_VAR(0), -63) + EVT_EXEC_WAIT(N(8024B6B4)) + EVT_SET(EVT_AREA_VAR(4), 0) + EVT_END_IF + EVT_END_IF + EVT_CASE_EQ(167) + EVT_SET(EVT_AREA_VAR(4), 3) + EVT_CASE_DEFAULT + EVT_SET(EVT_AREA_VAR(4), 0) + EVT_END_SWITCH + EVT_CASE_EQ(2) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; s32 N(shopItemPositions_8024BA68)[] = { 0x004C0021, 0x004B0022, 0x00490023, 0x004A0024, 0x00480025, 0x00470026, @@ -2416,131 +2463,144 @@ s32 N(pad_BA9C) = { 0x00000000, }; -EvtSource N(openDoor_8024BAA0) = SCRIPT({ - RotateModel(103, EVT_VAR(0), 0, 1, 0); -}); +EvtSource N(openDoor_8024BAA0) = { + EVT_CALL(RotateModel, 103, EVT_VAR(0), 0, 1, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(moveWalls_8024BAD0) = SCRIPT({ - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= (float) 50; - TranslateModel(98, 0, EVT_VAR(1), 0); - TranslateModel(97, 0, EVT_VAR(1), 0); - RotateModel(98, EVT_VAR(0), 1, 0, 0); - RotateModel(97, EVT_VAR(0), 1, 0, 0); - RotateModel(100, EVT_VAR(0), -1, 0, 0); - RotateModel(101, EVT_VAR(0), -1, 0, 0); -}); +EvtSource N(moveWalls_8024BAD0) = { + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIVF(EVT_VAR(1), 50) + EVT_CALL(TranslateModel, 98, 0, EVT_VAR(1), 0) + EVT_CALL(TranslateModel, 97, 0, EVT_VAR(1), 0) + EVT_CALL(RotateModel, 98, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 97, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 100, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 101, EVT_VAR(0), -1, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(dropDoor_8024BBB8) = SCRIPT({ - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= (float) 50; - TranslateModel(103, 0, EVT_VAR(1), 0); - RotateModel(103, EVT_VAR(0), 1, 0, 0); -}); +EvtSource N(dropDoor_8024BBB8) = { + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIVF(EVT_VAR(1), 50) + EVT_CALL(TranslateModel, 103, 0, EVT_VAR(1), 0) + EVT_CALL(RotateModel, 103, EVT_VAR(0), 1, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(openDoor_8024BC24) = SCRIPT({ - RotateModel(83, EVT_VAR(0), 0, 1, 0); -}); +EvtSource N(openDoor_8024BC24) = { + EVT_CALL(RotateModel, 83, EVT_VAR(0), 0, 1, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(moveWalls_8024BC54) = SCRIPT({ - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= (float) 50; - TranslateModel(47, 0, EVT_VAR(1), 0); - TranslateModel(48, 0, EVT_VAR(1), 0); - RotateModel(47, EVT_VAR(0), 1, 0, 0); - RotateModel(48, EVT_VAR(0), 1, 0, 0); - RotateModel(41, EVT_VAR(0), -1, 0, 0); - RotateModel(42, EVT_VAR(0), -1, 0, 0); - RotateModel(43, EVT_VAR(0), -1, 0, 0); - RotateModel(44, EVT_VAR(0), -1, 0, 0); - RotateModel(45, EVT_VAR(0), -1, 0, 0); -}); +EvtSource N(moveWalls_8024BC54) = { + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIVF(EVT_VAR(1), 50) + EVT_CALL(TranslateModel, 47, 0, EVT_VAR(1), 0) + EVT_CALL(TranslateModel, 48, 0, EVT_VAR(1), 0) + EVT_CALL(RotateModel, 47, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 48, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 41, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 42, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 43, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 44, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 45, EVT_VAR(0), -1, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(openDoor_8024BD9C) = SCRIPT({ - RotateModel(157, EVT_VAR(0), 0, 1, 0); -}); +EvtSource N(openDoor_8024BD9C) = { + EVT_CALL(RotateModel, 157, EVT_VAR(0), 0, 1, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(dropDoor_8024BDCC) = SCRIPT({ - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= 45; - TranslateModel(157, 0, EVT_VAR(1), 0); - RotateModel(157, EVT_VAR(0), 1, 0, 0); -}); +EvtSource N(dropDoor_8024BDCC) = { + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIV(EVT_VAR(1), 45) + EVT_CALL(TranslateModel, 157, 0, EVT_VAR(1), 0) + EVT_CALL(RotateModel, 157, EVT_VAR(0), 1, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(moveWalls_8024BE38) = SCRIPT({ - if (EVT_VAR(0) == 90) { - EnableModel(142, 0); - } else { - EnableModel(142, 1); - } - EVT_VAR(1) = EVT_VAR(0); - EVT_VAR(1) /= 45; - EVT_VAR(2) = EVT_VAR(0); - EVT_VAR(2) -= -90; - EVT_VAR(2) /= -90; - TranslateModel(140, 0, EVT_VAR(1), 0); - RotateModel(140, EVT_VAR(0), 1, 0, 0); - RotateModel(138, EVT_VAR(0), -1, 0, 0); - RotateModel(137, EVT_VAR(0), -1, 0, 0); - RotateModel(136, EVT_VAR(0), -1, 0, 0); - RotateModel(135, EVT_VAR(0), -1, 0, 0); - RotateModel(143, EVT_VAR(0), 1, 0, 0); - RotateModel(142, EVT_VAR(0), 1, 0, 0); -}); +EvtSource N(moveWalls_8024BE38) = { + EVT_IF_EQ(EVT_VAR(0), 90) + EVT_CALL(EnableModel, 142, 0) + EVT_ELSE + EVT_CALL(EnableModel, 142, 1) + EVT_END_IF + EVT_SET(EVT_VAR(1), EVT_VAR(0)) + EVT_DIV(EVT_VAR(1), 45) + EVT_SET(EVT_VAR(2), EVT_VAR(0)) + EVT_SUB(EVT_VAR(2), -90) + EVT_DIV(EVT_VAR(2), -90) + EVT_CALL(TranslateModel, 140, 0, EVT_VAR(1), 0) + EVT_CALL(RotateModel, 140, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 138, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 137, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 136, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 135, EVT_VAR(0), -1, 0, 0) + EVT_CALL(RotateModel, 143, EVT_VAR(0), 1, 0, 0) + EVT_CALL(RotateModel, 142, EVT_VAR(0), 1, 0, 0) + EVT_RETURN + EVT_END +}; -EvtSource N(toggleVis_8024BFDC) = SCRIPT({ - match EVT_VAR(0) { - == 0 { - SetGroupEnabled(127, 1); - } - == 3 { - SetGroupEnabled(127, 0); - } - } -}); +EvtSource N(toggleVis_8024BFDC) = { + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_CALL(SetGroupEnabled, 127, 1) + EVT_CASE_EQ(3) + EVT_CALL(SetGroupEnabled, 127, 0) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(toggleVis_8024C040) = SCRIPT({ - match EVT_VAR(0) { - == 0 { - match EVT_STORY_PROGRESS { - < STORY_CH2_SPOKE_WITH_SHEEK { - ShowMessageAtScreenPos(MESSAGE_ID(0x1D, 0x017B), 160, 40); - EVT_VAR(0) = -1; - return; - } - < STORY_CH2_SHADY_MOUSE_ENTERED_SHOP { - EVT_VAR(0) = -1; - return; - } - } - SetGroupEnabled(82, 1); - } - == 2 { - spawn { - sleep 45; - SetNpcPos(NPC_MOUSER1, 33, 0, -375); - SetNpcYaw(NPC_MOUSER1, 180); - } - } - == 3 { - SetGroupEnabled(82, 0); - EVT_AREA_VAR(4) = 0; - EVT_AREA_VAR(5) = 0; - } - } -}); +EvtSource N(toggleVis_8024C040) = { + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_SWITCH(EVT_SAVE_VAR(0)) + EVT_CASE_LT(-66) + EVT_CALL(ShowMessageAtScreenPos, MESSAGE_ID(0x1D, 0x017B), 160, 40) + EVT_SET(EVT_VAR(0), -1) + EVT_RETURN + EVT_CASE_LT(-65) + EVT_SET(EVT_VAR(0), -1) + EVT_RETURN + EVT_END_SWITCH + EVT_CALL(SetGroupEnabled, 82, 1) + EVT_CASE_EQ(2) + EVT_THREAD + EVT_WAIT_FRAMES(45) + EVT_CALL(SetNpcPos, 6, 33, 0, -375) + EVT_CALL(SetNpcYaw, 6, 180) + EVT_END_THREAD + EVT_CASE_EQ(3) + EVT_CALL(SetGroupEnabled, 82, 0) + EVT_SET(EVT_AREA_VAR(4), 0) + EVT_SET(EVT_AREA_VAR(5), 0) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; -EvtSource N(toggleVis_8024C190) = SCRIPT({ - match EVT_VAR(0) { - == 0 { - SetGroupEnabled(156, 1); - } - == 2 {} - == 3 { - SetGroupEnabled(156, 0); - } - } -}); +EvtSource N(toggleVis_8024C190) = { + EVT_SWITCH(EVT_VAR(0)) + EVT_CASE_EQ(0) + EVT_CALL(SetGroupEnabled, 156, 1) + EVT_CASE_EQ(2) + EVT_CASE_EQ(3) + EVT_CALL(SetGroupEnabled, 156, 0) + EVT_END_SWITCH + EVT_RETURN + EVT_END +}; s32 N(npcList_8024C200)[] = { 0x00000002, 0xFFFFFFFF, @@ -2554,314 +2614,336 @@ s32 N(npcList_8024C210)[] = { 0x00000005, 0xFFFFFFFF, }; -EvtSource N(8024C218) = SCRIPT({ - MakeDoorAdvanced(5, N(openDoor_8024BAA0), N(moveWalls_8024BAD0), N(dropDoor_8024BBB8), N(toggleVis_8024BFDC), 15, 16, 128, N(npcList_8024C200)); - MakeDoorAdvanced(5, N(openDoor_8024BC24), N(moveWalls_8024BC54), 0, N(toggleVis_8024C040), 23, 24, 91, N(npcList_8024C208)); - MakeDoorAdvanced(5, N(openDoor_8024BD9C), N(moveWalls_8024BE38), N(dropDoor_8024BDCC), N(toggleVis_8024C190), 29, 30, 159, N(npcList_8024C210)); - EVT_VAR(0) = 3; - spawn N(toggleVis_8024BFDC); - spawn N(toggleVis_8024C040); - spawn N(toggleVis_8024C190); -}); +EvtSource N(8024C218) = { + EVT_CALL(MakeDoorAdvanced, 5, EVT_PTR(N(openDoor_8024BAA0)), EVT_PTR(N(moveWalls_8024BAD0)), EVT_PTR(N(dropDoor_8024BBB8)), EVT_PTR(N(toggleVis_8024BFDC)), 15, 16, 128, EVT_PTR(N(npcList_8024C200))) + EVT_CALL(MakeDoorAdvanced, 5, EVT_PTR(N(openDoor_8024BC24)), EVT_PTR(N(moveWalls_8024BC54)), 0, EVT_PTR(N(toggleVis_8024C040)), 23, 24, 91, EVT_PTR(N(npcList_8024C208))) + EVT_CALL(MakeDoorAdvanced, 5, EVT_PTR(N(openDoor_8024BD9C)), EVT_PTR(N(moveWalls_8024BE38)), EVT_PTR(N(dropDoor_8024BDCC)), EVT_PTR(N(toggleVis_8024C190)), 29, 30, 159, EVT_PTR(N(npcList_8024C210))) + EVT_SET(EVT_VAR(0), 3) + EVT_EXEC(N(toggleVis_8024BFDC)) + EVT_EXEC(N(toggleVis_8024C040)) + EVT_EXEC(N(toggleVis_8024C190)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024C2EC) = SCRIPT({ -9: - MakeLerp(10, -10, 30, 10); -10: - UpdateLerp(); - RotateModel(34, EVT_VAR(0), 1, 0, 0); - sleep 1; - if (EVT_VAR(1) == 1) { - goto 10; - } - MakeLerp(-10, 10, 30, 10); -11: - UpdateLerp(); - RotateModel(34, EVT_VAR(0), 1, 0, 0); - sleep 1; - if (EVT_VAR(1) == 1) { - goto 11; - } - goto 9; -}); +EvtSource N(8024C2EC) = { + EVT_LABEL(9) + EVT_CALL(MakeLerp, 10, -10, 30, 10) + EVT_LABEL(10) + EVT_CALL(UpdateLerp) + EVT_CALL(RotateModel, 34, EVT_VAR(0), 1, 0, 0) + EVT_WAIT_FRAMES(1) + EVT_IF_EQ(EVT_VAR(1), 1) + EVT_GOTO(10) + EVT_END_IF + EVT_CALL(MakeLerp, -10, 10, 30, 10) + EVT_LABEL(11) + EVT_CALL(UpdateLerp) + EVT_CALL(RotateModel, 34, EVT_VAR(0), 1, 0, 0) + EVT_WAIT_FRAMES(1) + EVT_IF_EQ(EVT_VAR(1), 1) + EVT_GOTO(11) + EVT_END_IF + EVT_GOTO(9) + EVT_RETURN + EVT_END +}; -EvtSource N(8024C41C) = SCRIPT({ - SetGroupEnabled(82, 1); - PlaySoundAtCollider(23, 449, 0); - MakeLerp(0, 100, 15, 4); -10: - UpdateLerp(); - spawn N(openDoor_8024BC24); - sleep 1; - if (EVT_VAR(1) == 1) { - goto 10; - } -}); +EvtSource N(8024C41C) = { + EVT_CALL(SetGroupEnabled, 82, 1) + EVT_CALL(PlaySoundAtCollider, 23, 449, 0) + EVT_CALL(MakeLerp, 0, 100, 15, 4) + EVT_LABEL(10) + EVT_CALL(UpdateLerp) + EVT_EXEC(N(openDoor_8024BC24)) + EVT_WAIT_FRAMES(1) + EVT_IF_EQ(EVT_VAR(1), 1) + EVT_GOTO(10) + EVT_END_IF + EVT_RETURN + EVT_END +}; -EvtSource N(8024C4C8) = SCRIPT({ - MakeLerp(100, 0, 15, 4); -10: - UpdateLerp(); - spawn N(openDoor_8024BC24); - sleep 1; - if (EVT_VAR(1) == 1) { - goto 10; - } - PlaySoundAtCollider(23, 450, 0); - SetGroupEnabled(82, 0); -}); +EvtSource N(8024C4C8) = { + EVT_CALL(MakeLerp, 100, 0, 15, 4) + EVT_LABEL(10) + EVT_CALL(UpdateLerp) + EVT_EXEC(N(openDoor_8024BC24)) + EVT_WAIT_FRAMES(1) + EVT_IF_EQ(EVT_VAR(1), 1) + EVT_GOTO(10) + EVT_END_IF + EVT_CALL(PlaySoundAtCollider, 23, 450, 0) + EVT_CALL(SetGroupEnabled, 82, 0) + EVT_RETURN + EVT_END +}; s32 N(pad_C574)[] = { 0x00000000, 0x00000000, 0x00000000, }; -EvtSource N(8024C580) = SCRIPT({ - DisablePlayerInput(TRUE); - DisablePlayerPhysics(TRUE); - DisablePartnerAI(0); - HidePlayerShadow(TRUE); - SetPlayerAnimation(ANIM_STAND_STILL); - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - EnableNpcShadow(NPC_PARTNER, FALSE); - SetNpcPos(NPC_PARTNER, 0, -1000, 0); - } - GetEntryID(EVT_VAR(0)); - N(dup_GetEntryPos)(); - EVT_VAR(2) -= 40; - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - InterpPlayerYaw(EVT_VAR(4), 0); - PlaySound(0x163); - func_802D286C(256); - func_802D2520(ANIM_STAND_STILL, 5, 2, 1, 1, 0); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - loop 40 { - EVT_VAR(1) += 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - sleep 3; - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - spawn { - DisablePartnerAI(0); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) -= 3; - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetNpcFlagBits(NPC_PARTNER, ((0x00000002)), FALSE); - EnablePartnerAI(); - EnableNpcShadow(NPC_PARTNER, TRUE); - } - } - sleep 2; - func_802D2520(ANIM_STAND_STILL, 0, 0, 0, 0, 0); - sleep 1; - SetPlayerAnimation(ANIM_10002); - DisablePlayerPhysics(FALSE); - DisablePlayerInput(FALSE); - HidePlayerShadow(FALSE); -0: - N(dup_GetCurrentFloor)(); - sleep 1; - if (EVT_VAR(0) != -1) { - goto 0; - } - spawn 0xFE363C8A; -}); +EvtSource N(8024C580) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_CALL(SetPlayerAnimation, ANIM_STAND_STILL) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE) + EVT_CALL(SetNpcPos, NPC_PARTNER, 0, -1000, 0) + EVT_END_IF + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_CALL(N(dup_GetEntryPos)) + EVT_SUB(EVT_VAR(2), 40) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(4), 0) + EVT_CALL(PlaySound, 355) + EVT_CALL(func_802D286C, 256) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 5, 2, 1, 1, 0) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_LOOP(40) + EVT_ADD(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_WAIT_FRAMES(3) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_THREAD + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(2), 3) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetNpcFlagBits, NPC_PARTNER, ((NPC_FLAG_2)), FALSE) + EVT_CALL(EnablePartnerAI) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, TRUE) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT_FRAMES(2) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 0, 0, 0, 0, 0) + EVT_WAIT_FRAMES(1) + EVT_CALL(SetPlayerAnimation, ANIM_10002) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(HidePlayerShadow, FALSE) + EVT_LABEL(0) + EVT_CALL(N(dup_GetCurrentFloor)) + EVT_WAIT_FRAMES(1) + EVT_IF_NE(EVT_VAR(0), -1) + EVT_GOTO(0) + EVT_END_IF + EVT_EXEC(EVT_VAR(10)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024C8D4) = SCRIPT({ - DisablePlayerInput(TRUE); - DisablePlayerPhysics(TRUE); - HidePlayerShadow(TRUE); - ModifyColliderFlags(0, EVT_VAR(11), 0x7FFFFE00); - GetEntryID(EVT_VAR(0)); - N(dup_GetEntryPos)(); - EVT_VAR(5) = EVT_VAR(1); - EVT_VAR(6) = EVT_VAR(2); - EVT_VAR(7) = EVT_VAR(3); - EVT_VAR(2) += 2; - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - InterpPlayerYaw(EVT_VAR(4), 0); - if (EVT_VAR(4) == 90) { - EVT_VAR(5) += 40; - } else { - EVT_VAR(5) -= 40; - } - UseSettingsFrom(0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)); - SetPanTarget(0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)); - SetCamSpeed(0, 90.0); - PanToTarget(0, 0, 1); - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - DisablePartnerAI(0); - EnableNpcShadow(NPC_PARTNER, FALSE); - SetNpcPos(NPC_PARTNER, 0, -1000, 0); - InterpNpcYaw(NPC_PARTNER, EVT_VAR(0), 0); - } - sleep 1; - PlaySound(0x163); - spawn { - sleep 25; - HidePlayerShadow(FALSE); - } - func_802D286C(2304); - func_802D2520(ANIM_10002, 5, 3, 1, 1, 0); - loop 40 { - N(dup_SomeXYZFunc2)(1.0); - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - GetCurrentPartnerID(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - spawn { - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EVT_VAR(2) -= 3; - SetNpcPos(NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - EnableNpcShadow(NPC_PARTNER, TRUE); - EnablePartnerAI(); - } - } - sleep 5; - func_802D2520(ANIM_10002, 0, 0, 0, 0, 0); - ModifyColliderFlags(1, EVT_VAR(11), 0x7FFFFE00); - DisablePlayerInput(FALSE); - DisablePlayerPhysics(FALSE); - PanToTarget(0, 0, 0); - spawn 0xFE363C8A; -}); +EvtSource N(8024C8D4) = { + EVT_CALL(DisablePlayerInput, TRUE) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_CALL(ModifyColliderFlags, 0, EVT_VAR(11), 0x7FFFFE00) + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_CALL(N(dup_GetEntryPos)) + EVT_SET(EVT_VAR(5), EVT_VAR(1)) + EVT_SET(EVT_VAR(6), EVT_VAR(2)) + EVT_SET(EVT_VAR(7), EVT_VAR(3)) + EVT_ADD(EVT_VAR(2), 2) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(4), 0) + EVT_IF_EQ(EVT_VAR(4), 90) + EVT_ADD(EVT_VAR(5), 40) + EVT_ELSE + EVT_SUB(EVT_VAR(5), 40) + EVT_END_IF + EVT_CALL(UseSettingsFrom, 0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetPanTarget, 0, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetCamSpeed, 0, EVT_FIXED(90.0)) + EVT_CALL(PanToTarget, 0, 0, 1) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(DisablePartnerAI, 0) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, FALSE) + EVT_CALL(SetNpcPos, NPC_PARTNER, 0, -1000, 0) + EVT_CALL(InterpNpcYaw, NPC_PARTNER, EVT_VAR(0), 0) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySound, 355) + EVT_THREAD + EVT_WAIT_FRAMES(25) + EVT_CALL(HidePlayerShadow, FALSE) + EVT_END_THREAD + EVT_CALL(func_802D286C, 2304) + EVT_CALL(func_802D2520, ANIM_10002, 5, 3, 1, 1, 0) + EVT_LOOP(40) + EVT_CALL(N(dup_SomeXYZFunc2), EVT_FIXED(1.0)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_CALL(GetCurrentPartnerID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_THREAD + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_SUB(EVT_VAR(2), 3) + EVT_CALL(SetNpcPos, NPC_PARTNER, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(EnableNpcShadow, NPC_PARTNER, TRUE) + EVT_CALL(EnablePartnerAI) + EVT_END_THREAD + EVT_END_IF + EVT_WAIT_FRAMES(5) + EVT_CALL(func_802D2520, ANIM_10002, 0, 0, 0, 0, 0) + EVT_CALL(ModifyColliderFlags, 1, EVT_VAR(11), 0x7FFFFE00) + EVT_CALL(DisablePlayerInput, FALSE) + EVT_CALL(DisablePlayerPhysics, FALSE) + EVT_CALL(PanToTarget, 0, 0, 0) + EVT_EXEC(EVT_VAR(10)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024CCC4) = SCRIPT({ - N(dup_UnkFunc25)(); - if (EVT_VAR(0) == 0) { - return; - } - GetCurrentPartner(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - GetCurrentPartnerID(EVT_VAR(1)); - if (EVT_VAR(1) != 6) { - return; - } else { - func_802D2B6C(); - DisablePlayerInput(TRUE); - } - } else { - DisablePlayerInput(TRUE); - } - await N(8024CDA0); -}); +EvtSource N(8024CCC4) = { + EVT_CALL(N(dup_UnkFunc25)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetCurrentPartner, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(1)) + EVT_IF_NE(EVT_VAR(1), 6) + EVT_RETURN + EVT_ELSE + EVT_CALL(func_802D2B6C) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_ELSE + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_EXEC_WAIT(N(8024CDA0)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024CDA0) = SCRIPT({ - N(dup_SetPlayerStatusAnimFlags100000)(); - group 27; - DisablePlayerPhysics(TRUE); - HidePlayerShadow(TRUE); - EVT_VAR(0) = EVT_VAR(10); - N(dup_GetEntryPos)(); - PlayerMoveTo(EVT_VAR(1), EVT_VAR(3), 3); - EVT_VAR(0) = EVT_VAR(10); - N(dup_GetEntryPos)(); - SetPlayerPos(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)); - SetPlayerFlagBits(2097152, 1); - N(dup_GetCurrentCameraYawClamped180)(); - InterpPlayerYaw(EVT_VAR(0), 0); - sleep 2; - SetPlayerFlagBits(2097152, 0); - PlaySound(0x163); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - spawn { - sleep 4; - loop 40 { - EVT_VAR(1) -= 1; - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - } - func_802D286C(2048); - func_802D2520(ANIM_10002, 5, 2, 1, 1, 0); - sleep 25; - await 0xFE363C8C; -}); +EvtSource N(8024CDA0) = { + EVT_CALL(N(dup_SetPlayerStatusAnimFlags100000)) + EVT_SET_GROUP(27) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(dup_GetEntryPos)) + EVT_CALL(PlayerMoveTo, EVT_VAR(1), EVT_VAR(3), 3) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(dup_GetEntryPos)) + EVT_CALL(SetPlayerPos, EVT_VAR(1), EVT_VAR(2), EVT_VAR(3)) + EVT_CALL(SetPlayerFlagBits, 2097152, 1) + EVT_CALL(N(dup_GetCurrentCameraYawClamped180)) + EVT_CALL(InterpPlayerYaw, EVT_VAR(0), 0) + EVT_WAIT_FRAMES(2) + EVT_CALL(SetPlayerFlagBits, 2097152, 0) + EVT_CALL(PlaySound, 355) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_THREAD + EVT_WAIT_FRAMES(4) + EVT_LOOP(40) + EVT_SUB(EVT_VAR(1), 1) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_CALL(func_802D286C, 2048) + EVT_CALL(func_802D2520, ANIM_10002, 5, 2, 1, 1, 0) + EVT_WAIT_FRAMES(25) + EVT_EXEC_WAIT(EVT_VAR(12)) + EVT_RETURN + EVT_END +}; -EvtSource N(8024CF7C) = SCRIPT({ - IsPlayerOnValidFloor(EVT_VAR(0)); - if (EVT_VAR(0) == 0) { - return; - } - GetPlayerActionState(EVT_VAR(0)); - if (EVT_VAR(0) == 26) { - return; - } - GetCurrentPartner(EVT_VAR(0)); - if (EVT_VAR(0) != 0) { - GetCurrentPartnerID(EVT_VAR(1)); - if (EVT_VAR(1) != 6) { - return; - } else { - func_802D2B6C(); - DisablePlayerInput(TRUE); - } - } else { - DisablePlayerInput(TRUE); - } - group 27; - N(dup_SetPlayerStatusAnimFlags100000)(); - DisablePlayerPhysics(TRUE); - ModifyColliderFlags(0, EVT_VAR(11), 0x7FFFFE00); - EVT_VAR(0) = EVT_VAR(10); - N(dup_GetEntryPos)(); - EVT_VAR(5) = EVT_VAR(1); - EVT_VAR(6) = EVT_VAR(2); - EVT_VAR(6) += 2; - EVT_VAR(7) = EVT_VAR(3); - EVT_VAR(8) = EVT_VAR(4); - EVT_VAR(8) += 180; - if (EVT_VAR(4) >= 360) { - EVT_VAR(4) -= 360; - } - InterpPlayerYaw(EVT_VAR(8), 1); - sleep 1; - PlaySound(0x163); - GetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - SetPlayerPos(EVT_VAR(0), EVT_VAR(6), EVT_VAR(7)); - SetPlayerAnimation(ANIM_STAND_STILL); - func_802D286C(2048); - func_802D2520(ANIM_STAND_STILL, 5, 3, 1, 1, 0); - spawn { - sleep 8; - HidePlayerShadow(TRUE); - } - spawn { - sleep 3; - loop 40 { - N(dup_SomeXYZFunc2)(1.0); - SetPlayerPos(EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)); - sleep 1; - } - } - sleep 25; - await 0xFE363C8C; -}); +EvtSource N(8024CF7C) = { + EVT_CALL(IsPlayerOnValidFloor, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetPlayerActionState, EVT_VAR(0)) + EVT_IF_EQ(EVT_VAR(0), 26) + EVT_RETURN + EVT_END_IF + EVT_CALL(GetCurrentPartner, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 0) + EVT_CALL(GetCurrentPartnerID, EVT_VAR(1)) + EVT_IF_NE(EVT_VAR(1), 6) + EVT_RETURN + EVT_ELSE + EVT_CALL(func_802D2B6C) + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_ELSE + EVT_CALL(DisablePlayerInput, TRUE) + EVT_END_IF + EVT_SET_GROUP(27) + EVT_CALL(N(dup_SetPlayerStatusAnimFlags100000)) + EVT_CALL(DisablePlayerPhysics, TRUE) + EVT_CALL(ModifyColliderFlags, 0, EVT_VAR(11), 0x7FFFFE00) + EVT_SET(EVT_VAR(0), EVT_VAR(10)) + EVT_CALL(N(dup_GetEntryPos)) + EVT_SET(EVT_VAR(5), EVT_VAR(1)) + EVT_SET(EVT_VAR(6), EVT_VAR(2)) + EVT_ADD(EVT_VAR(6), 2) + EVT_SET(EVT_VAR(7), EVT_VAR(3)) + EVT_SET(EVT_VAR(8), EVT_VAR(4)) + EVT_ADD(EVT_VAR(8), 180) + EVT_IF_GE(EVT_VAR(4), 360) + EVT_SUB(EVT_VAR(4), 360) + EVT_END_IF + EVT_CALL(InterpPlayerYaw, EVT_VAR(8), 1) + EVT_WAIT_FRAMES(1) + EVT_CALL(PlaySound, 355) + EVT_CALL(GetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(6), EVT_VAR(7)) + EVT_CALL(SetPlayerAnimation, ANIM_STAND_STILL) + EVT_CALL(func_802D286C, 2048) + EVT_CALL(func_802D2520, ANIM_STAND_STILL, 5, 3, 1, 1, 0) + EVT_THREAD + EVT_WAIT_FRAMES(8) + EVT_CALL(HidePlayerShadow, TRUE) + EVT_END_THREAD + EVT_THREAD + EVT_WAIT_FRAMES(3) + EVT_LOOP(40) + EVT_CALL(N(dup_SomeXYZFunc2), EVT_FIXED(1.0)) + EVT_CALL(SetPlayerPos, EVT_VAR(0), EVT_VAR(1), EVT_VAR(2)) + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_END_THREAD + EVT_WAIT_FRAMES(25) + EVT_EXEC_WAIT(EVT_VAR(12)) + EVT_RETURN + EVT_END +}; const char N(dro_01_name_hack)[]; -EvtSource N(8024D2B0) = SCRIPT({ - EVT_SAVE_FLAG(761) = 0; - GotoMap(N(dro_01_name_hack), 4); - sleep 100; -}); +EvtSource N(8024D2B0) = { + EVT_SET(EVT_SAVE_FLAG(761), 0) + EVT_CALL(GotoMap, EVT_PTR(N(dro_01_name_hack)), 4) + EVT_WAIT_FRAMES(100) + EVT_RETURN + EVT_END +}; -EvtSource N(makeEntities) = SCRIPT({ - MakeEntity(0x802E9A18, -211, 60, -50, 30, MAKE_ENTITY_END); - if (EVT_SAVE_FLAG(1939) == 0) { - if (EVT_SAVE_FLAG(1933) == 1) { - GetEntryID(EVT_VAR(0)); - if (EVT_VAR(0) != 2) { - EVT_SAVE_FLAG(1939) = 1; - } - } - } - MakeEntity(0x802EAF80, 430, 0, -120, 0, ITEM_SPIN_JUMP, N(8024D2B0), 1939, MAKE_ENTITY_END); -}); +EvtSource N(makeEntities) = { + EVT_CALL(MakeEntity, EVT_PTR(D_802E9A18), -211, 60, -50, 30, MAKE_ENTITY_END) + EVT_IF_EQ(EVT_SAVE_FLAG(1939), 0) + EVT_IF_EQ(EVT_SAVE_FLAG(1933), 1) + EVT_CALL(GetEntryID, EVT_VAR(0)) + EVT_IF_NE(EVT_VAR(0), 2) + EVT_SET(EVT_SAVE_FLAG(1939), 1) + EVT_END_IF + EVT_END_IF + EVT_END_IF + EVT_CALL(MakeEntity, 0x802EAF80, 430, 0, -120, 0, 2, EVT_PTR(N(8024D2B0)), 1939, MAKE_ENTITY_END) + EVT_RETURN + EVT_END +}; #include "world/common/UnkNpcAIFunc24.inc.c" diff --git a/src/world/area_dro/dro_01/95E7A0.c b/src/world/area_dro/dro_01/95E7A0.c index 9eb4b31245..51dc550a02 100644 --- a/src/world/area_dro/dro_01/95E7A0.c +++ b/src/world/area_dro/dro_01/95E7A0.c @@ -56,8 +56,10 @@ ShakeTreeConfig N(tree1) = { Vec4f N(triggerCoord_8024DD68) = { 120.0f, 0.0f, -43.0f, 0.0f }; -EvtSource N(8024DD78) = SCRIPT({ - EVT_VAR(0) = N(tree1); - bind N(shakeTree) TRIGGER_WALL_HAMMER 11; - bind N(shakeTree) TRIGGER_POINT_BOMB N(triggerCoord_8024DD68); -}); +EvtSource N(8024DD78) = { + EVT_SET(EVT_VAR(0), EVT_PTR(N(tree1))) + EVT_BIND_TRIGGER(N(shakeTree), TRIGGER_WALL_HAMMER, 11, 1, 0) + EVT_BIND_TRIGGER(N(shakeTree), TRIGGER_POINT_BOMB, EVT_PTR(N(triggerCoord_8024DD68)), 1, 0) + EVT_RETURN + EVT_END +}; diff --git a/src/world/area_dro/dro_02/9694C0.c b/src/world/area_dro/dro_02/9694C0.c index 4302b0380f..9f5672f93b 100644 --- a/src/world/area_dro/dro_02/9694C0.c +++ b/src/world/area_dro/dro_02/9694C0.c @@ -104,14 +104,14 @@ EvtSource N(80243AF0) = SCRIPT({ #else EvtSource N(80243AF0) = { EVT_CMD(EVT_OP_CALL, GetEntryID, EVT_VAR(0)), - EVT_CMD(EVT_OP_MATCH, EVT_VAR(0)), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 2), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 3), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_CASE_ELSE), + EVT_CMD(EVT_OP_SWITCH, EVT_VAR(0)), + EVT_CMD(EVT_OP_CASE_OR_EQ, 2), + EVT_CMD(EVT_OP_CASE_OR_EQ, 3), + EVT_CMD(EVT_OP_END_CASE_GROUP), + EVT_CMD(EVT_OP_CASE_DEFAULT), EVT_CMD(EVT_OP_CALL, SetMusicTrack, 0, 21, 0, 8), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_END_MATCH), + EVT_CMD(EVT_OP_END_CASE_GROUP), + EVT_CMD(EVT_OP_END_SWITCH), EVT_CMD(EVT_OP_RETURN), EVT_CMD(EVT_OP_END) }; diff --git a/src/world/area_flo/flo_18/CDC6A0.c b/src/world/area_flo/flo_18/CDC6A0.c index a8fbe5eeda..9d9146ee16 100644 --- a/src/world/area_flo/flo_18/CDC6A0.c +++ b/src/world/area_flo/flo_18/CDC6A0.c @@ -400,26 +400,26 @@ EvtSource N(80241ED4) = SCRIPT({ }); #else EvtSource N(80241ED4) = { - EVT_CMD(EVT_OP_SET_F, EVT_VAR(0), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(1), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(2), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(3), EVT_FIXED(-1.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(4), EVT_FIXED(0.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(5), EVT_FIXED(3.0)), - EVT_CMD(EVT_OP_SPAWN_THREAD), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 10), + EVT_CMD(EVT_OP_SETF, EVT_VAR(0), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(1), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(2), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(3), EVT_FIXED(-1.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(4), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(5), EVT_FIXED(3.0)), + EVT_CMD(EVT_OP_THREAD), + EVT_CMD(EVT_OP_WAIT_FRAMES, 10), EVT_CMD(EVT_OP_CALL, PlaySoundAtCollider, 19, 486, 0), - EVT_CMD(EVT_OP_END_SPAWN_THREAD), + EVT_CMD(EVT_OP_END_THREAD), EVT_CMD(EVT_OP_LOOP, 300), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(4), EVT_FIXED(-0.5)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(5), EVT_FIXED(0.09375)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(0), EVT_VAR(3)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(1), EVT_VAR(4)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(2), EVT_VAR(5)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(4), EVT_FIXED(-0.5)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(5), EVT_FIXED(0.09375)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(0), EVT_VAR(3)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(1), EVT_VAR(4)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(2), EVT_VAR(5)), EVT_CMD(EVT_OP_IF_LT, EVT_VAR(1), -10), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(1), EVT_FIXED(-10.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(3), EVT_FIXED(0.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(4), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(1), EVT_FIXED(-10.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(3), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(4), EVT_FIXED(0.0)), EVT_CMD(EVT_OP_IF_GE, EVT_VAR(2), 80), EVT_CMD(EVT_OP_GOTO, 0), EVT_CMD(EVT_OP_END_IF), @@ -433,10 +433,10 @@ EvtSource N(80241ED4) = { EVT_CMD(EVT_OP_CALL, RotateModel, 32, EVT_VAR(2), 0, 0, 1), EVT_CMD(EVT_OP_CALL, TranslateModel, 31, 78, -19, -2), EVT_CMD(EVT_OP_CALL, TranslateModel, 32, 78, -19, -2), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 1), + EVT_CMD(EVT_OP_WAIT_FRAMES, 1), EVT_CMD(EVT_OP_END_LOOP), EVT_CMD(EVT_OP_LABEL, 0), -EVT_CMD(EVT_OP_SLEEP_FRAMES, 30), +EVT_CMD(EVT_OP_WAIT_FRAMES, 30), EVT_CMD(EVT_OP_CALL, ModifyColliderFlags, 0, 19, 0x7FFFFE00), EVT_CMD(EVT_OP_RETURN), EVT_CMD(EVT_OP_END) @@ -597,26 +597,26 @@ EvtSource N(80242910) = SCRIPT({ }); #else EvtSource N(80242910) = { - EVT_CMD(EVT_OP_SET_F, EVT_VAR(0), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(1), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(2), 0), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(3), EVT_FIXED(-1.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(4), EVT_FIXED(0.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(5), EVT_FIXED(3.0)), - EVT_CMD(EVT_OP_SPAWN_THREAD), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 15), + EVT_CMD(EVT_OP_SETF, EVT_VAR(0), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(1), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(2), 0), + EVT_CMD(EVT_OP_SETF, EVT_VAR(3), EVT_FIXED(-1.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(4), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(5), EVT_FIXED(3.0)), + EVT_CMD(EVT_OP_THREAD), + EVT_CMD(EVT_OP_WAIT_FRAMES, 15), EVT_CMD(EVT_OP_CALL, PlaySoundAtCollider, 18, 486, 0), - EVT_CMD(EVT_OP_END_SPAWN_THREAD), + EVT_CMD(EVT_OP_END_THREAD), EVT_CMD(EVT_OP_LOOP, 300), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(4), EVT_FIXED(-0.5)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(5), EVT_FIXED(0.09375)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(0), EVT_VAR(3)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(1), EVT_VAR(4)), - EVT_CMD(EVT_OP_ADD_F, EVT_VAR(2), EVT_VAR(5)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(4), EVT_FIXED(-0.5)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(5), EVT_FIXED(0.09375)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(0), EVT_VAR(3)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(1), EVT_VAR(4)), + EVT_CMD(EVT_OP_ADDF, EVT_VAR(2), EVT_VAR(5)), EVT_CMD(EVT_OP_IF_LT, EVT_VAR(1), -25), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(1), EVT_FIXED(-25.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(3), EVT_FIXED(0.0)), - EVT_CMD(EVT_OP_SET_F, EVT_VAR(4), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(1), EVT_FIXED(-25.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(3), EVT_FIXED(0.0)), + EVT_CMD(EVT_OP_SETF, EVT_VAR(4), EVT_FIXED(0.0)), EVT_CMD(EVT_OP_IF_GE, EVT_VAR(2), 80), EVT_CMD(EVT_OP_GOTO, 0), EVT_CMD(EVT_OP_END_IF), @@ -626,7 +626,7 @@ EvtSource N(80242910) = { EVT_CMD(EVT_OP_CALL, TranslateModel, 29, EVT_VAR(0), EVT_VAR(1), 0), EVT_CMD(EVT_OP_CALL, RotateModel, 29, EVT_VAR(2), 0, 0, -1), EVT_CMD(EVT_OP_CALL, TranslateModel, 29, -124, -17, -3), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 1), + EVT_CMD(EVT_OP_WAIT_FRAMES, 1), EVT_CMD(EVT_OP_END_LOOP), EVT_CMD(EVT_OP_LABEL, 0), EVT_CMD(EVT_OP_RETURN), diff --git a/src/world/area_flo/flo_19/CE36F0.c b/src/world/area_flo/flo_19/CE36F0.c index c9e06bbd31..63b1f3b4b6 100644 --- a/src/world/area_flo/flo_19/CE36F0.c +++ b/src/world/area_flo/flo_19/CE36F0.c @@ -37,22 +37,22 @@ EvtSource N(802409C0) = SCRIPT({ #else EvtSource N(802409C0) = { EVT_CMD(EVT_OP_CALL, GetEntryID, EVT_VAR(0)), - EVT_CMD(EVT_OP_MATCH, EVT_VAR(0)), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 0), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 1), + EVT_CMD(EVT_OP_SWITCH, EVT_VAR(0)), + EVT_CMD(EVT_OP_CASE_OR_EQ, 0), + EVT_CMD(EVT_OP_CASE_OR_EQ, 1), EVT_CMD(EVT_OP_CALL, SetMusicTrack, 0, SONG_CLOUDY_CLIMB, 0, 8), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 2), - EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, 7), - EVT_CMD(EVT_OP_END_CASE_MULTI), + EVT_CMD(EVT_OP_END_CASE_GROUP), + EVT_CMD(EVT_OP_CASE_OR_EQ, 2), + EVT_CMD(EVT_OP_CASE_OR_EQ, 7), + EVT_CMD(EVT_OP_END_CASE_GROUP), EVT_CMD(EVT_OP_CASE_EQ, 3), EVT_CMD(EVT_OP_IF_NE, EVT_AREA_FLAG(44), 0), EVT_CMD(EVT_OP_ELSE), EVT_CMD(EVT_OP_CALL, FadeOutMusic, 1, 3000), EVT_CMD(EVT_OP_CALL, FadeInMusic, 0, 50, 0, 3000, 0, 127), EVT_CMD(EVT_OP_END_IF), - EVT_CMD(EVT_OP_END_CASE_MULTI), - EVT_CMD(EVT_OP_END_MATCH), + EVT_CMD(EVT_OP_END_CASE_GROUP), + EVT_CMD(EVT_OP_END_SWITCH), EVT_CMD(EVT_OP_RETURN), EVT_CMD(EVT_OP_END) }; diff --git a/src/world/area_flo/flo_24/CF0980.c b/src/world/area_flo/flo_24/CF0980.c index 05e2868309..822eb70233 100644 --- a/src/world/area_flo/flo_24/CF0980.c +++ b/src/world/area_flo/flo_24/CF0980.c @@ -242,30 +242,30 @@ EvtSource N(8024183C) = { EVT_CMD(EVT_OP_CALL, SetCamSpeed, 0, EVT_FIXED(90.0)), EVT_CMD(EVT_OP_CALL, PanToTarget, 0, 0, 1), EVT_CMD(EVT_OP_CALL, PlaySound, 0x80000050), - EVT_CMD(EVT_OP_SPAWN_THREAD), + EVT_CMD(EVT_OP_THREAD), EVT_CMD(EVT_OP_CALL, MakeLerp, 80, 90, 10, 0), EVT_CMD(EVT_OP_LABEL, 0), EVT_CMD(EVT_OP_CALL, UpdateLerp), EVT_CMD(EVT_OP_CALL, RotateModel, 101, EVT_VAR(0), 1, 0, 0), EVT_CMD(EVT_OP_CALL, RotateModel, 103, EVT_VAR(0), 1, 0, 0), EVT_CMD(EVT_OP_IF_EQ, EVT_VAR(1), 1), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 1), + EVT_CMD(EVT_OP_WAIT_FRAMES, 1), EVT_CMD(EVT_OP_GOTO, 0), EVT_CMD(EVT_OP_END_IF), - EVT_CMD(EVT_OP_SPAWN_THREAD), + EVT_CMD(EVT_OP_THREAD), EVT_CMD(EVT_OP_CALL, MakeLerp, 45, 100, 150, 0), EVT_CMD(EVT_OP_LOOP, 0), EVT_CMD(EVT_OP_CALL, UpdateLerp), EVT_CMD(EVT_OP_CALL, TranslateGroup, 100, 0, EVT_VAR(0), 0), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 1), + EVT_CMD(EVT_OP_WAIT_FRAMES, 1), EVT_CMD(EVT_OP_IF_EQ, EVT_VAR(1), 0), EVT_CMD(EVT_OP_BREAK_LOOP), EVT_CMD(EVT_OP_END_IF), EVT_CMD(EVT_OP_END_LOOP), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 30), + EVT_CMD(EVT_OP_WAIT_FRAMES, 30), EVT_CMD(EVT_OP_SET, EVT_STORY_PROGRESS, STORY_CH6_FILLED_SPRING_WITH_WATER), EVT_CMD(EVT_OP_CALL, GotoMap, N(flo_10_name_hack), 2), - EVT_CMD(EVT_OP_SLEEP_FRAMES, 100), + EVT_CMD(EVT_OP_WAIT_FRAMES, 100), EVT_CMD(EVT_OP_RETURN), EVT_CMD(EVT_OP_END) }; diff --git a/src/world/common/foliage.inc.c b/src/world/common/foliage.inc.c index fc8b46ee31..c8c2d0edbb 100644 --- a/src/world/common/foliage.inc.c +++ b/src/world/common/foliage.inc.c @@ -78,173 +78,177 @@ ApiStatus N(TransformFoliage)(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -EvtSource N(searchBush) = SCRIPT({ - buf_use EVT_VAR(0); - buf_read EVT_VAR(1) EVT_VAR(2) EVT_VAR(3) EVT_VAR(4); - GetPlayerPos(EVT_VAR(5), EVT_VAR(15), EVT_VAR(7)); - spawn { - EVT_FLAG(0) = 0; - if (EVT_VAR(1) != NULL) { - loop 5 { - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - N(TransformFoliage)(EVT_VAR(3), 0.1, 1, EVT_VAR(15), 0); - if (EVT_FLAG(0) == 0) { - EVT_FLAG(0) = 1; - PlaySoundAtModel(EVT_VAR(3), 339, 0); - } - } - sleep 1; - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - N(TransformFoliage)(EVT_VAR(3), 0.1, -1, EVT_VAR(15), 0); - } - sleep 1; - } - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - TranslateModel(EVT_VAR(3), 0, 0, 0); - } - sleep 1; - } - } - spawn { - if (EVT_VAR(2) != NULL) { - buf_use EVT_VAR(2); - buf_read EVT_VAR(3); - loop EVT_VAR(3) { - buf_read EVT_VAR(4); - buf_read EVT_VAR(5) EVT_VAR(6) EVT_VAR(7); - buf_read EVT_VAR(8) EVT_VAR(9) EVT_VAR(10); - if (EVT_VAR(10) == 0) { - DropItemEntity(EVT_VAR(4), EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)); - } else { - GetValueByRef(EVT_VAR(10), EVT_VAR(11)); - if (EVT_VAR(11) == 0) { - SetValueByRef(EVT_VAR(10), 1); - DropItemEntity(EVT_VAR(4), EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)); - } - } - } - } - } - sleep 15; - if (EVT_VAR(4) != NULL) { - await EVT_VAR(4); - } -}); +EvtSource N(searchBush) = { + EVT_USE_BUF(EVT_VAR(0)) + EVT_BUF_READ4(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), EVT_VAR(4)) + EVT_CALL(GetPlayerPos, EVT_VAR(5), EVT_VAR(15), EVT_VAR(7)) + EVT_THREAD + EVT_SET(EVT_FLAG(0), 0) + EVT_IF_NE(EVT_VAR(1), 0) + EVT_LOOP(5) + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(N(TransformFoliage), EVT_VAR(3), EVT_FIXED(0.1), 1, EVT_VAR(15), 0) + EVT_IF_EQ(EVT_FLAG(0), 0) + EVT_SET(EVT_FLAG(0), 1) + EVT_CALL(PlaySoundAtModel, EVT_VAR(3), 339, 0) + EVT_END_IF + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(N(TransformFoliage), EVT_VAR(3), EVT_FIXED(0.1), -1, EVT_VAR(15), 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(TranslateModel, EVT_VAR(3), 0, 0, 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_IF + EVT_END_THREAD + EVT_THREAD + EVT_IF_NE(EVT_VAR(2), 0) + EVT_USE_BUF(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_LOOP(EVT_VAR(3)) + EVT_BUF_READ1(EVT_VAR(4)) + EVT_BUF_READ3(EVT_VAR(5), EVT_VAR(6), EVT_VAR(7)) + EVT_BUF_READ3(EVT_VAR(8), EVT_VAR(9), EVT_VAR(10)) + EVT_IF_EQ(EVT_VAR(10), 0) + EVT_CALL(DropItemEntity, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)) + EVT_ELSE + EVT_CALL(GetValueByRef, EVT_VAR(10), EVT_VAR(11)) + EVT_IF_EQ(EVT_VAR(11), 0) + EVT_CALL(SetValueByRef, EVT_VAR(10), 1) + EVT_CALL(DropItemEntity, EVT_VAR(4), EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9)) + EVT_END_IF + EVT_END_IF + EVT_END_LOOP + EVT_END_IF + EVT_END_THREAD + EVT_WAIT_FRAMES(15) + EVT_IF_NE(EVT_VAR(4), 0) + EVT_EXEC_WAIT(EVT_VAR(4)) + EVT_END_IF + EVT_RETURN + EVT_END +}; -EvtSource N(shakeTree) = SCRIPT({ - timescale 2.0; - buf_use EVT_VAR(0); - buf_read EVT_VAR(1) EVT_VAR(2) EVT_VAR(3) EVT_VAR(4); - buf_read EVT_VAR(5); - GetPlayerPos(EVT_VAR(6), EVT_VAR(15), EVT_VAR(8)); - PlaySound(0x165); - PlaySound(0x166); - spawn { - EVT_FLAG(0) = 0; - if (EVT_VAR(1) != NULL) { - sleep 1; - loop 5 { - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - N(TransformFoliage)(EVT_VAR(3), 0.1, 0.2, EVT_VAR(15), 0); - if (EVT_FLAG(0) == 0) { - EVT_FLAG(0) = 1; - PlaySoundAtModel(EVT_VAR(3), 358, 0); - } - } - sleep 1; - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - N(TransformFoliage)(EVT_VAR(3), 0.1, -0.2, EVT_VAR(15), 0); - } - sleep 1; - } - buf_use EVT_VAR(1); - buf_read EVT_VAR(2); - loop EVT_VAR(2) { - buf_read EVT_VAR(3); - TranslateModel(EVT_VAR(3), 0, 0, 0); - } - sleep 1; - } - } - spawn { - EVT_FLAG(0) = 0; - if (EVT_VAR(2) != NULL) { - loop 5 { - buf_use EVT_VAR(2); - buf_read EVT_VAR(3); - loop EVT_VAR(3) { - buf_read EVT_VAR(4); - N(TransformFoliage)(EVT_VAR(4), 0.1, 0.2, EVT_VAR(15), 0); - if (EVT_FLAG(0) == 0) { - EVT_FLAG(0) = 1; - PlaySoundAtModel(EVT_VAR(4), 357, 0); - } - } - sleep 1; - buf_use EVT_VAR(2); - buf_read EVT_VAR(3); - loop EVT_VAR(3) { - buf_read EVT_VAR(4); - N(TransformFoliage)(EVT_VAR(4), 0.1, -0.2, EVT_VAR(15), 0); - } - sleep 1; - } - buf_use EVT_VAR(2); - buf_read EVT_VAR(3); - loop EVT_VAR(3) { - buf_read EVT_VAR(4); - TranslateModel(EVT_VAR(4), 0, 0, 0); - } - sleep 1; - } - } - spawn { - if (EVT_VAR(3) != NULL) { - buf_use EVT_VAR(3); - buf_read EVT_VAR(4); - loop EVT_VAR(4) { - buf_read EVT_VAR(5); - buf_read EVT_VAR(6) EVT_VAR(7) EVT_VAR(8); - buf_read EVT_VAR(9) EVT_VAR(10) EVT_VAR(11); - if (EVT_VAR(11) == 0) { - DropItemEntity(EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9), EVT_VAR(10)); - } else { - GetValueByRef(EVT_VAR(11), EVT_VAR(12)); - if (EVT_VAR(12) == 0) { - SetValueByRef(EVT_VAR(11), 1); - DropItemEntity(EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9), EVT_VAR(10)); - } - } - } - } - } - spawn { - if (EVT_VAR(4) != NULL) { - buf_use EVT_VAR(4); - buf_read EVT_VAR(5); - loop EVT_VAR(5) { - buf_read EVT_VAR(6) EVT_VAR(7) EVT_VAR(8); - PlayEffect(0x14, 0, EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), 100, 0, 0, 0, 0, 0, 0, 0, 0); - } - } - } - if (EVT_VAR(5) != NULL) { - await EVT_VAR(5); - } - sleep 15; -}); +EvtSource N(shakeTree) = { + EVT_SET_TIMESCALE(EVT_FIXED(2.0)) + EVT_USE_BUF(EVT_VAR(0)) + EVT_BUF_READ4(EVT_VAR(1), EVT_VAR(2), EVT_VAR(3), EVT_VAR(4)) + EVT_BUF_READ1(EVT_VAR(5)) + EVT_CALL(GetPlayerPos, EVT_VAR(6), EVT_VAR(15), EVT_VAR(8)) + EVT_CALL(PlaySound, SOUND_SMASH_GOOMNUT_TREE) + EVT_CALL(PlaySound, 358) + EVT_THREAD + EVT_SET(EVT_FLAG(0), 0) + EVT_IF_NE(EVT_VAR(1), 0) + EVT_WAIT_FRAMES(1) + EVT_LOOP(5) + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(N(TransformFoliage), EVT_VAR(3), EVT_FIXED(0.1), EVT_FIXED(0.2), EVT_VAR(15), 0) + EVT_IF_EQ(EVT_FLAG(0), 0) + EVT_SET(EVT_FLAG(0), 1) + EVT_CALL(PlaySoundAtModel, EVT_VAR(3), 358, 0) + EVT_END_IF + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(N(TransformFoliage), EVT_VAR(3), EVT_FIXED(0.1), EVT_FIXED(-0.2), EVT_VAR(15), 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_USE_BUF(EVT_VAR(1)) + EVT_BUF_READ1(EVT_VAR(2)) + EVT_LOOP(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_CALL(TranslateModel, EVT_VAR(3), 0, 0, 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_IF + EVT_END_THREAD + EVT_THREAD + EVT_SET(EVT_FLAG(0), 0) + EVT_IF_NE(EVT_VAR(2), 0) + EVT_LOOP(5) + EVT_USE_BUF(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_LOOP(EVT_VAR(3)) + EVT_BUF_READ1(EVT_VAR(4)) + EVT_CALL(N(TransformFoliage), EVT_VAR(4), EVT_FIXED(0.1), EVT_FIXED(0.2), EVT_VAR(15), 0) + EVT_IF_EQ(EVT_FLAG(0), 0) + EVT_SET(EVT_FLAG(0), 1) + EVT_CALL(PlaySoundAtModel, EVT_VAR(4), 357, 0) + EVT_END_IF + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_USE_BUF(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_LOOP(EVT_VAR(3)) + EVT_BUF_READ1(EVT_VAR(4)) + EVT_CALL(N(TransformFoliage), EVT_VAR(4), EVT_FIXED(0.1), EVT_FIXED(-0.2), EVT_VAR(15), 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_LOOP + EVT_USE_BUF(EVT_VAR(2)) + EVT_BUF_READ1(EVT_VAR(3)) + EVT_LOOP(EVT_VAR(3)) + EVT_BUF_READ1(EVT_VAR(4)) + EVT_CALL(TranslateModel, EVT_VAR(4), 0, 0, 0) + EVT_END_LOOP + EVT_WAIT_FRAMES(1) + EVT_END_IF + EVT_END_THREAD + EVT_THREAD + EVT_IF_NE(EVT_VAR(3), 0) + EVT_USE_BUF(EVT_VAR(3)) + EVT_BUF_READ1(EVT_VAR(4)) + EVT_LOOP(EVT_VAR(4)) + EVT_BUF_READ1(EVT_VAR(5)) + EVT_BUF_READ3(EVT_VAR(6), EVT_VAR(7), EVT_VAR(8)) + EVT_BUF_READ3(EVT_VAR(9), EVT_VAR(10), EVT_VAR(11)) + EVT_IF_EQ(EVT_VAR(11), 0) + EVT_CALL(DropItemEntity, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9), EVT_VAR(10)) + EVT_ELSE + EVT_CALL(GetValueByRef, EVT_VAR(11), EVT_VAR(12)) + EVT_IF_EQ(EVT_VAR(12), 0) + EVT_CALL(SetValueByRef, EVT_VAR(11), 1) + EVT_CALL(DropItemEntity, EVT_VAR(5), EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), EVT_VAR(9), EVT_VAR(10)) + EVT_END_IF + EVT_END_IF + EVT_END_LOOP + EVT_END_IF + EVT_END_THREAD + EVT_THREAD + EVT_IF_NE(EVT_VAR(4), 0) + EVT_USE_BUF(EVT_VAR(4)) + EVT_BUF_READ1(EVT_VAR(5)) + EVT_LOOP(EVT_VAR(5)) + EVT_BUF_READ3(EVT_VAR(6), EVT_VAR(7), EVT_VAR(8)) + EVT_CALL(PlayEffect, 0x14, 0, EVT_VAR(6), EVT_VAR(7), EVT_VAR(8), 100, 0, 0, 0, 0, 0, 0, 0, 0) + EVT_END_LOOP + EVT_END_IF + EVT_END_THREAD + EVT_IF_NE(EVT_VAR(5), 0) + EVT_EXEC_WAIT(EVT_VAR(5)) + EVT_END_IF + EVT_WAIT_FRAMES(15) + EVT_RETURN + EVT_END +}; diff --git a/src/world/partner/goombaria.c b/src/world/partner/goombaria.c index 04b51ba0a0..36279453f7 100644 --- a/src/world/partner/goombaria.c +++ b/src/world/partner/goombaria.c @@ -44,18 +44,26 @@ ApiStatus GoombariaPutAway(Evt* script, s32 isInitialCall) { return partner_put_away(owner) != 0; } -EvtSource world_goombaria_take_out = SCRIPT({ - GoombariaTakeOut(); -}); +EvtSource world_goombaria_take_out = { + EVT_CALL(GoombariaTakeOut) + EVT_RETURN + EVT_END +}; -EvtSource world_goombaria_update = SCRIPT({ - GoombariaUpdate(); -}); +EvtSource world_goombaria_update = { + EVT_CALL(GoombariaUpdate) + EVT_RETURN + EVT_END +}; -EvtSource world_goombaria_use_ability = SCRIPT({ - GoombariaUseAbility(); -}); +EvtSource world_goombaria_use_ability = { + EVT_CALL(GoombariaUseAbility) + EVT_RETURN + EVT_END +}; -EvtSource world_goombaria_put_away = SCRIPT({ - GoombariaPutAway(); -}); +EvtSource world_goombaria_put_away = { + EVT_CALL(GoombariaPutAway) + EVT_RETURN + EVT_END +}; diff --git a/src/world/partner/goombario.c b/src/world/partner/goombario.c index f7d9f224be..aebc3d9e64 100644 --- a/src/world/partner/goombario.c +++ b/src/world/partner/goombario.c @@ -90,38 +90,40 @@ s32 D_802BDC40_317B60[] = { 0x00000039, 0x001B0024, 0xFFFFFFFF }; -EvtSource world_goombario_take_out = SCRIPT({ - func_802BD188_3170A8(); -}); +EvtSource world_goombario_take_out = { + EVT_CALL(func_802BD188_3170A8) + EVT_RETURN + EVT_END +}; s32 D_802BDD88_317CA8 = 0x802BDF40; -EvtSource world_goombario_update = SCRIPT({ - func_802BD1D0_3170F0(); -}); +EvtSource world_goombario_update = { + EVT_CALL(func_802BD1D0_3170F0) + EVT_RETURN + EVT_END +}; -EvtSource world_goombario_use_ability = SCRIPT({ - func_802BD5D8_3174F8(); // returns tattle message id on EVT_VAR(0), and something else on EVT_VAR(1) +EvtSource world_goombario_use_ability = { + EVT_CALL(func_802BD5D8_3174F8) + EVT_IF_EQ(EVT_VAR(0), -1) + EVT_RETURN + EVT_END_IF + EVT_IF_EQ(EVT_VAR(0), 0) + EVT_CALL(func_802BDB30_317A50) + EVT_RETURN + EVT_END_IF + EVT_IF_EQ(EVT_VAR(1), 0) + EVT_CALL(SpeakToPlayer, NPC_PARTNER, NPC_ANIM_world_goombario_normal_talk, NPC_ANIM_world_goombario_normal_idle, 0, EVT_VAR(0)) + EVT_END_IF + EVT_WAIT_FRAMES(1) + EVT_CALL(func_802BDB30_317A50) + EVT_RETURN + EVT_END +}; - if (EVT_VAR(0) == -1) { - return; - } - - if (EVT_VAR(0) == 0) { - func_802BDB30_317A50(); - return; - } - - if (EVT_VAR(1) == 0) { - SpeakToPlayer(NPC_PARTNER, NPC_ANIM_world_goombario_normal_talk, NPC_ANIM_world_goombario_normal_idle, 0, - EVT_VAR(0)); - } - - sleep 1; - - func_802BDB30_317A50(); -}); - -EvtSource world_goombario_put_away = SCRIPT({ - func_802BDB84(); -}); +EvtSource world_goombario_put_away = { + EVT_CALL(func_802BDB84) + EVT_RETURN + EVT_END +}; diff --git a/src/world/partner/goompa.c b/src/world/partner/goompa.c index a8d0bfe7fb..7867571035 100644 --- a/src/world/partner/goompa.c +++ b/src/world/partner/goompa.c @@ -36,20 +36,28 @@ ApiStatus GoompaPutAway(Evt* script, s32 isInitialCall) { return partner_put_away(owner) != 0; } -EvtSource world_goompa_take_out = SCRIPT({ - GoompaTakeOut(); -}); +EvtSource world_goompa_take_out = { + EVT_CALL(GoompaTakeOut) + EVT_RETURN + EVT_END +}; s32 D_802BD58C_324E9C = &goompa_802BD600; -EvtSource world_goompa_update = SCRIPT({ - func_802BD14C_324A5C(); -}); +EvtSource world_goompa_update = { + EVT_CALL(func_802BD14C_324A5C) + EVT_RETURN + EVT_END +}; -EvtSource world_goompa_use_ability = SCRIPT({ - GoompaUseAbility(); -}); +EvtSource world_goompa_use_ability = { + EVT_CALL(GoompaUseAbility) + EVT_RETURN + EVT_END +}; -EvtSource world_goompa_put_away = SCRIPT({ - GoompaPutAway(); -}); +EvtSource world_goompa_put_away = { + EVT_CALL(GoompaPutAway) + EVT_RETURN + EVT_END +}; diff --git a/tools/build/cc_dsl/compile_script.py b/tools/build/cc_dsl/compile_script.py index b3aa1fd4e5..d1daf76f34 100755 --- a/tools/build/cc_dsl/compile_script.py +++ b/tools/build/cc_dsl/compile_script.py @@ -232,7 +232,7 @@ class IfCtx(CmdCtx): class MatchCtx(CmdCtx): def break_opcode(self, meta): - return "EVT_OP_BREAK_MATCH" + return "EVT_OP_BREAK_SWITCH" class LoopCtx(CmdCtx): def break_opcode(self, meta): @@ -397,9 +397,9 @@ class Compile(Transformer): raise Exception(f"uncompiled match case: {cmd}") return [ - Cmd("EVT_OP_MATCH", expr, meta=tree.meta), + Cmd("EVT_OP_SWITCH", expr, meta=tree.meta), *cases, - Cmd("EVT_OP_END_MATCH"), + Cmd("EVT_OP_END_SWITCH"), ] def match_const_stmt(self, tree): commands = self.match_stmt(tree) @@ -412,7 +412,7 @@ class Compile(Transformer): return [tree.children[0], *tree.children[1]] def case_else(self, tree): - return [Cmd("EVT_OP_CASE_ELSE"), *tree.children[0]] + return [Cmd("EVT_OP_CASE_DEFAULT"), *tree.children[0]] def case_op(self, tree): if len(tree.children) == 4: op, expr, multi_case, block = tree.children @@ -420,7 +420,7 @@ class Compile(Transformer): if not "case" in op: raise CompileError(f"operation `{opcodes['__op__']}' not supported in match cases", tree.meta) - return [Cmd(op["case"], expr), *multi_case, *block, Cmd("EVT_OP_END_CASE_MULTI")] + return [Cmd(op["case"], expr), *multi_case, *block, Cmd("EVT_OP_END_CASE_GROUP")] else: op, expr, block = tree.children @@ -431,16 +431,16 @@ class Compile(Transformer): def case_range(self, tree): if len(tree.children) == 4: a, b, multi_case, block = tree.children - return [Cmd("EVT_OP_CASE_RANGE", a, b), *multi_case, *block, Cmd("EVT_OP_END_CASE_MULTI")] + return [Cmd("EVT_OP_CASE_RANGE", a, b), *multi_case, *block, Cmd("EVT_OP_END_CASE_GROUP")] else: a, b, block = tree.children return [Cmd("EVT_OP_CASE_RANGE", a, b), *block] def case_multi(self, tree): multi_case, block = tree.children - return [*multi_case, *block, Cmd("EVT_OP_END_CASE_MULTI")] + return [*multi_case, *block, Cmd("EVT_OP_END_CASE_GROUP")] def multi_case(self, tree): - return [Cmd("EVT_OP_CASE_MULTI_OR_EQ", expr) for expr in tree.children] + return [Cmd("EVT_OP_CASE_OR_EQ", expr) for expr in tree.children] def loop_stmt(self, tree): expr = tree.children.pop(0) if len(tree.children) > 1 else 0 @@ -459,7 +459,7 @@ class Compile(Transformer): return BreakCmd(meta=tree.meta) def break_match_stmt(self, tree): - return Cmd("EVT_OP_BREAK_MATCH", meta=tree.meta) + return Cmd("EVT_OP_BREAK_SWITCH", meta=tree.meta) def break_loop_stmt(self, tree): return Cmd("EVT_OP_BREAK_LOOP", meta=tree.meta) @@ -509,15 +509,15 @@ class Compile(Transformer): def control_type_script(self, tree): return { "__control_type__": "script", - "suspend": "EVT_OP_SUSPEND_SCRIPT", - "resume": "EVT_OP_RESUME_SCRIPT", - "kill": "EVT_OP_KILL_SCRIPT", + "suspend": "EVT_OP_SUSPEND_THREAD", + "resume": "EVT_OP_RESUME_THREAD", + "kill": "EVT_OP_KILL_THREAD", } def sleep_stmt(self, tree): - return Cmd("EVT_OP_SLEEP_FRAMES", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_WAIT_FRAMES", tree.children[0], meta=tree.meta) def sleep_secs_stmt(self, tree): - return Cmd("EVT_OP_SLEEP_SECS", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_WAIT_SECS", tree.children[0], meta=tree.meta) def bind_stmt(self, tree): script, trigger, target = tree.children @@ -532,12 +532,12 @@ class Compile(Transformer): return Cmd("EVT_OP_UNBIND", meta=tree.meta) def spawn_stmt(self, tree): - return Cmd("EVT_OP_SPAWN_SCRIPT", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_EXEC", tree.children[0], meta=tree.meta) def spawn_set_stmt(self, tree): lhs, script = tree.children - return Cmd("EVT_OP_SPAWN_GET_ID", script, lhs, meta=tree.meta) + return Cmd("EVT_OP_EXEC_GET_TID", script, lhs, meta=tree.meta) def await_stmt(self, tree): - return Cmd("EVT_OP_AWAIT_SCRIPT", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_EXEC_WAIT", tree.children[0], meta=tree.meta) def jump_stmt(self, tree): return Cmd("EVT_OP_JUMP", tree.children[0], meta=tree.meta) @@ -575,31 +575,31 @@ class Compile(Transformer): "__op__": "=", "int": "EVT_OP_SET", "const": "EVT_OP_SET_CONST", - "float": "EVT_OP_SET_F", + "float": "EVT_OP_SETF", } def set_op_add(self, tree): return { "__op__": "+", "int": "EVT_OP_ADD", - "float": "EVT_OP_ADD_F", + "float": "EVT_OP_ADDF", } def set_op_sub(self, tree): return { "__op__": "-", "int": "EVT_OP_SUB", - "float": "EVT_OP_SUB_F", + "float": "EVT_OP_SUBF", } def set_op_mul(self, tree): return { "__op__": "*", "int": "EVT_OP_MUL", - "float": "EVT_OP_MUL_F", + "float": "EVT_OP_MULF", } def set_op_div(self, tree): return { "__op__": "/", "int": "EVT_OP_DIV", - "float": "EVT_OP_DIV_F", + "float": "EVT_OP_DIVF", } def set_op_mod(self, tree): return { @@ -609,14 +609,14 @@ class Compile(Transformer): def set_op_and(self, tree): return { "__op__": "&", - "int": "EVT_OP_AND", - "const": "EVT_OP_AND_CONST", + "int": "EVT_OP_BITWISE_AND", + "const": "EVT_OP_BITWISE_AND_CONST", } def set_op_or(self, tree): return { "__op__": "|", - "int": "EVT_OP_OR", - "const": "EVT_OP_OR_CONST", + "int": "EVT_OP_BITWISE_OR", + "const": "EVT_OP_BITWISE_OR_CONST", } def variable(self, tree): @@ -664,61 +664,61 @@ class Compile(Transformer): for cmd in block: if isinstance(cmd, BaseCmd): cmd.add_context(SpawnCtx()) - return [ Cmd("EVT_OP_SPAWN_THREAD", meta=tree.meta), *block, Cmd("EVT_OP_END_SPAWN_THREAD") ] + return [ Cmd("EVT_OP_THREAD", meta=tree.meta), *block, Cmd("EVT_OP_END_THREAD") ] def parallel_block_stmt(self, tree): block, = tree.children for cmd in block: if isinstance(cmd, BaseCmd): cmd.add_context(ParallelCtx()) - return [ Cmd("EVT_OP_PARALLEL_THREAD", meta=tree.meta), *block, Cmd("EVT_OP_END_PARALLEL_THREAD") ] + return [ Cmd("EVT_OP_CHILD_THREAD", meta=tree.meta), *block, Cmd("EVT_OP_END_CHILD_THREAD") ] def entity_id(self, tree): expr, = tree.children return f"({expr} + 0x4000)" def buf_use(self, tree): - return Cmd("EVT_OP_USE_BUFFER", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_USE_BUF", tree.children[0], meta=tree.meta) def buf_read(self, tree): args = tree.children cmds = [] while args: if len(args) >= 4: - cmds.append(Cmd("EVT_OP_BUFFER_READ_4", args.pop(0), args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_BUF_READ4", args.pop(0), args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 3: - cmds.append(Cmd("EVT_OP_BUFFER_READ_3", args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_BUF_READ3", args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 2: - cmds.append(Cmd("EVT_OP_BUFFER_READ_2", args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_BUF_READ2", args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 1: - cmds.append(Cmd("EVT_OP_BUFFER_READ_1", args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_BUF_READ1", args.pop(0), meta=tree.meta)) else: break return cmds def buf_peek(self, tree): - return Cmd("EVT_OP_BUFFER_PEEK", tree.children[0], tree.children[1], meta=tree.meta) + return Cmd("EVT_OP_BUF_PEEK", tree.children[0], tree.children[1], meta=tree.meta) def buf_usef(self, tree): - return Cmd("EVT_OP_USE_BUFFER_F", tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_USE_FBUF", tree.children[0], meta=tree.meta) def buf_readf(self, tree): args = tree.children cmds = [] while args: if len(args) >= 4: - cmds.append(Cmd("EVT_OP_BUFFER_READ_4_F", args.pop(0), args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_FBUF_READ4", args.pop(0), args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 3: - cmds.append(Cmd("EVT_OP_BUFFER_READ_3_F", args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_FBUF_READ3", args.pop(0), args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 2: - cmds.append(Cmd("EVT_OP_BUFFER_READ_2_F", args.pop(0), args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_FBUF_READ2", args.pop(0), args.pop(0), meta=tree.meta)) elif len(args) == 1: - cmds.append(Cmd("EVT_OP_BUFFER_READ_1_F", args.pop(0), meta=tree.meta)) + cmds.append(Cmd("EVT_OP_FBUF_READ1", args.pop(0), meta=tree.meta)) else: break return cmds def buf_peekf(self, tree): - return Cmd("EVT_OP_BUFFER_PEEK_F", tree.children[0], tree.children[1], meta=tree.meta) + return Cmd("EVT_OP_FBUF_PEEK", tree.children[0], tree.children[1], meta=tree.meta) def use_array(self, tree): return Cmd("EVT_OP_USE_ARRAY", tree.children[0], meta=tree.meta) @@ -728,7 +728,7 @@ class Compile(Transformer): return Cmd("EVT_OP_NEW_ARRAY", tree.children[0], tree.children[1], meta=tree.meta) def does_script_exist(self, tree): - return Cmd("EVT_OP_DOES_SCRIPT_EXIST", tree.children[1], tree.children[0], meta=tree.meta) + return Cmd("EVT_OP_IS_THREAD_RUNNING", tree.children[1], tree.children[0], meta=tree.meta) def compile_script(s): tree = script_parser.parse(s) diff --git a/tools/build/configure.py b/tools/build/configure.py index 6e0e73578b..508b32e9fb 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -94,26 +94,26 @@ def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra ) ninja.rule("cc", - description="cc $in", + description="gcc $in", command=f"bash -o pipefail -c '{cpp} {CPPFLAGS} {cppflags} -MD -MF $out.d $in -o - | {iconv} > $out.i && {ccache}{cc} {cflags} $cflags $out.i -o $out'", depfile="$out.d", deps="gcc", ) ninja.rule("cc_dsl", - description="cc $in $cflags", + description="dsl $in", command=f"bash -o pipefail -c '{cpp} {CPPFLAGS} {cppflags} -MD -MF $out.d $in -o - | {compile_script} | {iconv} > $out.i && {cc} {cflags} $cflags $out.i -o $out'", depfile="$out.d", deps="gcc", ) ninja.rule("cc_ido", - description="cc_ido $in", + description="ido $in", command=f"{ccache}{cc_ido} -w {CPPFLAGS_COMMON} {cppflags} -c -mips1 -O0 -G0 -non_shared -Xfullwarn -Xcpluscomm -o $out $in", ) ninja.rule("cc_kmc", - description="cc_kmc $in", + description="kmc $in", command=f"bash -o pipefail -c 'N64ALIGN=ON VR4300MUL=ON {cc_kmc} {CPPFLAGS_LIBULTRA} {cppflags} {kmc_cflags} $cflags $in -o $out && mips-linux-gnu-objcopy -N $in $out'", ) @@ -373,7 +373,7 @@ class Configure: task = "cxx" with entry.src_paths[0].open() as f: s = f.read() - if "SCRIPT(" in s or "#pragma SCRIPT" in s or "#include \"world/common/foliage.inc.c\"" in s: + if " SCRIPT(" in s or "#pragma SCRIPT" in s: task = "cc_dsl" if seg.name.endswith("osFlash"): diff --git a/tools/disasm_script.py b/tools/disasm_script.py index aa00bde4e7..e6c4c55e68 100755 --- a/tools/disasm_script.py +++ b/tools/disasm_script.py @@ -151,34 +151,16 @@ def get_constants(): for file in sprite_path.iterdir(): fd = file.read_text() for line in fd.splitlines(): - if "#define _NPC_SPRITE_" in line: - enum = "NPC_SPRITE" - elif "#define _NPC_PALETTE_" in line: - enum = "NPC_PALETTE" - elif "#define _NPC_ANIM_" in line: - enum = "NPC_ANIM" - else: + if "#define NPC_ANIM_" not in line: continue - name = line.split(" ",2)[1] - id_ = line.split("0x", 1)[1] - if " " in id_: - id_ = id_.split(" ",1)[0] - name = name.split(f"_{enum}_", 1)[1] - if enum == "NPC_SPRITE": - saved_name = name - saved_id = id_ - else: - name = name.rsplit(f"{saved_name}_")[1] + header_file_name = file.parts[-1] - if enum == "NPC_SPRITE": - if int(id_, 16) not in CONSTANTS["NPC_SPRITE"]: - CONSTANTS[enum][int(id_, 16)] = {"name":"", "palettes":{}, "anims":{}} - CONSTANTS[enum][int(id_, 16)]["name"] = name - elif enum == "NPC_PALETTE": - CONSTANTS["NPC_SPRITE"][int(saved_id, 16)]["palettes"][int(id_, 16)] = name - elif enum == "NPC_ANIM": - CONSTANTS["NPC_SPRITE"][int(saved_id, 16)]["anims"][int(id_, 16)] = name + name = line.split(" ",2)[1] + value = int(line.split("0x", 1)[1], base=16) + + CONSTANTS["NPC_SPRITE"][value] = name + CONSTANTS["NPC_SPRITE"][str(value) + ".h"] = header_file_name return @@ -186,22 +168,19 @@ def make_anim_macro(self, sprite, palette, anim): if sprite == 0xFF and palette == 0xFF and anim == 0xFF: return "-1" - call = "NPC_ANIM(" - if sprite in CONSTANTS["NPC_SPRITE"]: - call += f"{CONSTANTS['NPC_SPRITE'][sprite]['name']}, " - if palette in CONSTANTS["NPC_SPRITE"][sprite]["palettes"]: - call += f"{CONSTANTS['NPC_SPRITE'][sprite]['palettes'][palette]}, " - else: - call += f"0x{palette:02X}, " - if anim in CONSTANTS["NPC_SPRITE"][sprite]["anims"]: - call += f"{CONSTANTS['NPC_SPRITE'][sprite]['anims'][anim]}" - else: - call += f"0x{anim:02X}" - call += ")" - self.INCLUDES_NEEDED["sprites"].add(CONSTANTS['NPC_SPRITE'][sprite]['name']) + value = (sprite << 16) | (palette << 8) | anim + + if value in CONSTANTS["NPC_SPRITE"]: + self.INCLUDES_NEEDED["sprites"].add(CONSTANTS['NPC_SPRITE'][str(value) + ".h"]) + return CONSTANTS['NPC_SPRITE'][value] else: - call += f"0x{sprite:02X}, 0x{palette:02X}, 0x{anim:02X})" - return call + return f"0x{sprite:02X}{palette:02X}{anim:02X}" + +def remove_evt_ptr(s): + if s.startswith("EVT_PTR("): + return s[8:-1] + else: + return s def fix_args(self, func, args, info): global CONSTANTS @@ -209,11 +188,14 @@ def fix_args(self, func, args, info): new_args = [] args = args.split(", ") for i,arg in enumerate(args): - if ((arg == "D_80000000") or (arg.startswith("D_B")) or + if ((remove_evt_ptr(arg) == "D_80000000") or (remove_evt_ptr(arg).startswith("D_B")) or (i == 0 and func == "MakeEntity" and arg.startswith("D_"))): - arg = "0x" + arg[2:] - if "0x" in arg and int(arg, 16) >= 0xF0000000: - arg = f"{int(arg, 16) - 0x100000000}" + if func == "MakeEntity": + arg = "MAKE_ENTITY_END" + else: + arg = "0x" + remove_evt_ptr(arg)[2:] + if "0x" in arg and int(remove_evt_ptr(arg), 16) >= 0xF0000000: + arg = f"{int(remove_evt_ptr(arg), 16) - 0x100000000}" if i in info or (i+1 == len(args) and -1 in info): if i+1 == len(args) and -1 in info: i = -1 @@ -224,7 +206,7 @@ def fix_args(self, func, args, info): if info[i] == "Bool": new_args.append(f"{'TRUE' if argNum == True else 'FALSE'}") - elif info[i] == "Hex": + elif info[i] == "Hex" and argNum > 0: new_args.append(f"0x{argNum:08X}") elif info[i] == "CustomAnim": sprite = (argNum & 0xFF0000) >> 16 @@ -245,7 +227,7 @@ def fix_args(self, func, args, info): call = f"{CONSTANTS['PlayerAnims'][argNum]}" else: if sprite == 0: - print(f"Func {func} arg {i} ({CONSTANTS['MAP_NPCS'][int(args[0])]}) -- sprite was 0, is this really valid? Arg 0x{argNum:X} -- sprite: {sprite}, palette: {palette}, anim: {anim}") + print(f"Func {func} arg {i} -- sprite was 0, is this really valid? Arg 0x{argNum:X} -- sprite: {sprite}, palette: {palette}, anim: {anim}") call = f"0x{argNum:X}" else: call = make_anim_macro(self, sprite, palette, anim) @@ -267,12 +249,11 @@ def fix_args(self, func, args, info): enabled.append(f"0") new_args.append("((" + " | ".join(enabled) + "))") elif info[i] == "NpcIDs": - if argNum not in CONSTANTS["MAP_NPCS"]: - new_args.append(f"0x{argNum:X}") - continue - if argNum >= 0: - new_args.append(CONSTANTS["MAP_NPCS"][argNum]) + if argNum in CONSTANTS["MAP_NPCS"]: + new_args.append(CONSTANTS["MAP_NPCS"][argNum]) + else: + new_args.append(str(argNum)) else: new_args.append(CONSTANTS["NpcIDs"][argNum]) elif info[i] == "DamageTypes": @@ -347,7 +328,7 @@ replace_funcs = { "JumpToGoal" :{0:"ActorIDs"}, - "MakeEntity" :{0:"Hex", 5:"ItemIDs"}, + "MakeEntity" :{0:"Hex"}, "MakeItemEntity" :{0:"ItemIDs"}, "ModifyColliderFlags" :{2:"Hex"}, @@ -434,9 +415,10 @@ def replace_constants(self, func, args): return args class ScriptDisassembler: - def __init__(self, bytes, script_name = "script", symbol_map = {}, romstart = 0, INCLUDES_NEEDED = {}, INCLUDED = {"functions": set(), "includes": set()}): + def __init__(self, bytes, script_name = "script", symbol_map = {}, romstart = 0, INCLUDES_NEEDED = {"forward": [], "sprites": set(), "npcs": []}, INCLUDED = {"functions": set(), "includes": set()}, prelude = True): self.bytes = bytes self.script_name = script_name + self.prelude = prelude self.symbol_map = { **script_lib(self.bytes.tell()), **symbol_map } self.romstart = romstart @@ -494,13 +476,14 @@ class ScriptDisassembler: self.prefix += line self.prefix += "\n" - def var(self, arg): + def var(self, arg, prefer_hex = False, use_evt_ptr = True): if arg in self.symbol_map: - return self.symbol_map[arg][0][1] + s = self.symbol_map[arg][0][1] + return f"EVT_PTR({s})" if use_evt_ptr else s v = arg - 2**32 # convert to s32 if v > -250000000: - if v <= -220000000: return f"EVT_FIXED({(v + 230000000) / 1024})" + if v <= -220000000: return f"EVT_FIXED({round_fixed((v + 230000000) / 1024)})" elif v <= -200000000: return f"EVT_ARRAY_FLAG({v + 210000000})" elif v <= -180000000: return f"EVT_ARRAY({v + 190000000})" elif v <= -160000000: return f"EVT_SAVE_VAR({v + 170000000})" @@ -518,6 +501,8 @@ class ScriptDisassembler: return f"0x{arg:X}" elif arg >= 0x80000000: return f"{arg - 0x100000000}" + elif prefer_hex and arg > 0: + return f"0x{arg:X}" else: return f"{arg}" @@ -533,7 +518,7 @@ class ScriptDisassembler: name = self.symbol_map[addr][0][1] toReplace = True suffix = "" - if name.startswith("N(func_"): + if False and name.startswith("N(func_"): prefix = "ApiStatus " name = self.replace_star_rod_function_name(name[2:-1]) suffix = "(Evt* script, s32 isInitialCall)" @@ -591,215 +576,220 @@ class ScriptDisassembler: def disassemble_command(self, opcode, argc, argv): if opcode == 0x01: - self.write_line("EVT_CMD(EVT_OP_END)") + self.write_line("EVT_END") self.indent -= 1 - if self.indent_used: - self.prefix_line("// *INDENT-OFF*") - self.prefix_line(f"EvtSource {self.script_name} = {{") - self.write_line("};") - self.write_line("// *INDENT-ON*") - else: + if self.prelude: self.prefix_line(f"EvtSource {self.script_name} = {{") self.write_line("};") self.done = True - elif opcode == 0x02: self.write_line(f"EVT_CMD(EVT_OP_RETURN),") - elif opcode == 0x03: self.write_line(f"EVT_CMD(EVT_OP_LABEL, {self.var(argv[0])}),") - elif opcode == 0x04: self.write_line(f"EVT_CMD(EVT_OP_GOTO, {self.var(argv[0])}),") + elif opcode == 0x02: self.write_line(f"EVT_RETURN") + elif opcode == 0x03: self.write_line(f"EVT_LABEL({self.var(argv[0])})") + elif opcode == 0x04: self.write_line(f"EVT_GOTO({self.var(argv[0])})") elif opcode == 0x05: - self.write_line(f"EVT_CMD(EVT_OP_LOOP, {self.var(argv[0])}),") + self.write_line(f"EVT_LOOP({self.var(argv[0])})") self.indent += 1 elif opcode == 0x06: self.indent -= 1 - self.write_line("EVT_CMD(EVT_OP_END_LOOP),") - elif opcode == 0x07: self.write_line(f"EVT_CMD(EVT_OP_BREAK_LOOP),") - elif opcode == 0x08: self.write_line(f"EVT_CMD(EVT_OP_SLEEP_FRAMES, {self.var(argv[0])}),") - elif opcode == 0x09: self.write_line(f"EVT_CMD(EVT_OP_SLEEP_SECS, {self.var(argv[0])}),") + self.write_line("EVT_END_LOOP") + elif opcode == 0x07: self.write_line(f"EVT_BREAK_LOOP") + elif opcode == 0x08: self.write_line(f"EVT_WAIT_FRAMES({self.var(argv[0])})") + elif opcode == 0x09: self.write_line(f"EVT_WAIT_SECS({self.var(argv[0])})") elif opcode == 0x0A: - self.write_line(f"EVT_CMD(EVT_OP_IF_EQ, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_EQ({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x0B: - self.write_line(f"EVT_CMD(EVT_OP_IF_NE, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_NE({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x0C: - self.write_line(f"EVT_CMD(EVT_OP_IF_LT, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_LT({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x0D: - self.write_line(f"EVT_CMD(EVT_OP_IF_GT, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_GT({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x0E: - self.write_line(f"EVT_CMD(EVT_OP_IF_LE, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_LE({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x0F: - self.write_line(f"EVT_CMD(EVT_OP_IF_GE, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_GE({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 elif opcode == 0x10: - self.write_line(f"EVT_CMD(EVT_OP_IF_FLAG, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_FLAG({self.var(argv[0])}, {self.var(argv[1], prefer_hex=True)})") self.indent += 1 elif opcode == 0x11: - self.write_line(f"EVT_CMD(EVT_OP_IF_NOT_FLAG, ({self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_IF_NOT_FLAG({self.var(argv[0])}, {self.var(argv[1], prefer_hex=True)})") self.indent += 1 elif opcode == 0x12: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_ELSE),") + self.write_line(f"EVT_ELSE") self.indent += 1 elif opcode == 0x13: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_END_IF),") + self.write_line(f"EVT_END_IF") elif opcode == 0x14: - self.write_line(f"EVT_CMD(EVT_OP_MATCH, {self.var(argv[0])}),") + self.write_line(f"EVT_SWITCH({self.var(argv[0])})") self.indent += 2 elif opcode == 0x15: - self.write_line(f"EVT_CMD(EVT_OP_MATCH_CONST, 0x{argv[0]:X}),") + self.write_line(f"EVT_SWITCH_CONST(0x{argv[0]:X})") self.indent += 2 elif opcode == 0x16: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_EQ, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_EQ({self.var(argv[0])})") self.indent += 1 elif opcode == 0x17: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_NE, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_NE({self.var(argv[0])})") self.indent += 1 elif opcode == 0x18: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_LT, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_LT({self.var(argv[0])})") self.indent += 1 elif opcode == 0x19: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_GT, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_GT({self.var(argv[0])})") self.indent += 1 elif opcode == 0x1A: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_LE, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_LE({self.var(argv[0])})") self.indent += 1 elif opcode == 0x1B: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_GE, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_GE({self.var(argv[0])})") self.indent += 1 elif opcode == 0x1C: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_ELSE),") + self.write_line(f"EVT_CASE_DEFAULT") self.indent += 1 elif opcode == 0x1D: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_MULTI_OR_EQ, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_OR_EQ({self.var(argv[0])})") self.indent += 1 elif opcode == 0x1E: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_MULTI_AND_EQ, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_AND_EQ({self.var(argv[0])})") self.indent += 1 elif opcode == 0x1F: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_FLAG, {self.var(argv[0])}),") + self.write_line(f"EVT_CASE_FLAG({self.var(argv[0])})") self.indent += 1 elif opcode == 0x20: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_END_CASE_MULTI),") + self.write_line(f"EVT_END_CASE_GROUP") self.indent += 1 elif opcode == 0x21: self.indent -= 1 - self.write_line(f"EVT_CMD(EVT_OP_CASE_RANGE, {self.var(argv[0])}, {self.var(argv[1])}),") + self.write_line(f"EVT_CASE_RANGE({self.var(argv[0])}, {self.var(argv[1])})") self.indent += 1 - elif opcode == 0x22: self.write_line(f"EVT_CMD(EVT_OP_BREAK_CASE),") + elif opcode == 0x22: self.write_line(f"EVT_BREAK_SWITCH") elif opcode == 0x23: self.indent -= 2 - self.write_line(f"EVT_CMD(EVT_OP_END_MATCH),") - elif opcode == 0x24: self.write_line(f"EVT_CMD(EVT_OP_SET, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x25: self.write_line(f"EVT_CMD(EVT_OP_SET_CONST, {self.var(argv[0])}, 0x{argv[1]:X}),") - elif opcode == 0x26: self.write_line(f"EVT_CMD(EVT_OP_SET_F, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x27: self.write_line(f"EVT_CMD(EVT_OP_ADD, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x28: self.write_line(f"EVT_CMD(EVT_OP_SUB, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x29: self.write_line(f"EVT_CMD(EVT_OP_MUL, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2A: self.write_line(f"EVT_CMD(EVT_OP_DIV, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2B: self.write_line(f"EVT_CMD(EVT_OP_MOD, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2C: self.write_line(f"EVT_CMD(EVT_OP_ADD_F, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2D: self.write_line(f"EVT_CMD(EVT_OP_SUB_F, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2E: self.write_line(f"EVT_CMD(EVT_OP_MUL_F, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x2F: self.write_line(f"EVT_CMD(EVT_OP_DIV_F, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x30: self.write_line(f"EVT_CMD(EVT_OP_USE_BUFFER, {self.var(argv[0])}),") - elif opcode == 0x31: - args = ["EVT_OP_BUFFER_READ_1",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x32: - args = ["EVT_OP_BUFFER_READ_2",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x33: - args = ["EVT_OP_BUFFER_READ_3",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x34: - args = ["EVT_OP_BUFFER_READ_4",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") + self.write_line(f"EVT_END_SWITCH") + elif opcode == 0x24: self.write_line(f"EVT_SET({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x25: + argNum = argv[1] + sprite = (argNum & 0xFF0000) >> 16 + palette = (argNum & 0xFF00) >> 8 + anim = (argNum & 0xFF) >> 0 + + if sprite > 0: + value = make_anim_macro(self, sprite, palette, anim) + else: + value = f"0x{argNum:08X}" + + self.write_line(f"EVT_SET_CONST({self.var(argv[0])}, {value})") + elif opcode == 0x26: self.write_line(f"EVT_SETF({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x27: self.write_line(f"EVT_ADD({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x28: self.write_line(f"EVT_SUB({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x29: self.write_line(f"EVT_MUL({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2A: self.write_line(f"EVT_DIV({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2B: self.write_line(f"EVT_MOD({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2C: self.write_line(f"EVT_ADDF({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2D: self.write_line(f"EVT_SUBF({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2E: self.write_line(f"EVT_MULF({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x2F: self.write_line(f"EVT_DIVF({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x30: self.write_line(f"EVT_USE_BUF({self.var(argv[0])})") + elif opcode == 0x31 or opcode == 0x32 or opcode == 0x33 or opcode == 0x34: + args = [*map(self.var, argv)] + self.write_line(f"EVT_BUF_READ{opcode - 0x30}({', '.join(args)})") elif opcode == 0x35: - args = ["EVT_OP_BUFFER_PEEK",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x36: self.write_line(f"EVT_CMD(EVT_OP_USE_BUFFER_f, {self.var(argv[0])}),") - elif opcode == 0x37: - args = ["EVT_OP_BUFFER_READ_1_F",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x38: - args = ["EVT_OP_BUFFER_READ_2_F",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x39: - args = ["EVT_OP_BUFFER_READ_3_F",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x3A: - args = ["EVT_OP_BUFFER_READ_4_F",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") + args = [*map(self.var, argv)] + self.write_line(f"EVT_BUF_PEEK({', '.join(args)})") + elif opcode == 0x36: self.write_line(f"EVT_USE_FBUF({self.var(argv[0])})") + elif opcode == 0x37 or opcode == 0x38 or opcode == 0x39 or opcode == 0x3A: + args = [*map(self.var, argv)] + self.write_line(f"EVT_FBUF_READ{opcode - 0x36}({', '.join(args)})") elif opcode == 0x3B: - args = ["EVT_OP_BUFFER_PEEK_F",*map(self.var, argv)] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x3C: self.write_line(f"EVT_CMD(EVT_OP_USE_ARRAY, {self.var(argv[0])}),") - elif opcode == 0x3D: self.write_line(f"EVT_CMD(EVT_OP_USE_FLAGS, {self.var(argv[0])}),") - elif opcode == 0x3E: self.write_line(f"EVT_CMD(EVT_OP_NEW_ARRAY, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x3F: self.write_line(f"EVT_CMD(EVT_OP_AND, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x40: self.write_line(f"EVT_CMD(EVT_OP_OR, {self.var(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x41: self.write_line(f"EVT_CMD(EVT_OP_AND_CONST, {self.var(argv[0])}, 0x{argv[1]:X})") - elif opcode == 0x42: self.write_line(f"EVT_CMD(EVT_OP_OR_CONST, {self.var(argv[0])}, 0x{argv[1]:X})") + args = [*map(self.var, argv)] + self.write_line(f"EVT_FBUF_PEEK({', '.join(args)})") + elif opcode == 0x3C: self.write_line(f"EVT_USE_ARRAY({self.var(argv[0])})") + elif opcode == 0x3D: self.write_line(f"EVT_USE_FLAG_ARRAY({self.var(argv[0])})") + elif opcode == 0x3E: self.write_line(f"EVT_MALLOC_ARRAY({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x3F: self.write_line(f"EVT_BITWISE_AND({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x40: self.write_line(f"EVT_BITWISE_OR({self.var(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x41: self.write_line(f"EVT_BITWISE_AND_CONST({self.var(argv[0])}, 0x{argv[1]:X})") + elif opcode == 0x42: self.write_line(f"EVT_BITWISE_OR_CONST({self.var(argv[0])}, 0x{argv[1]:X})") elif opcode == 0x43: - args = ["EVT_OP_CALL", self.addr_ref(argv[0]), *map(self.var, argv[1:])] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x44: self.write_line(f"EVT_CMD(EVT_OP_SPAWN_SCRIPT, {self.addr_ref(argv[0])}),") - elif opcode == 0x45: self.write_line(f"EVT_CMD(EVT_OP_SPAWN_GET_ID, {self.addr_ref(argv[0])}, {self.var(argv[1])}),") - elif opcode == 0x46: self.write_line(f"EVT_CMD(EVT_OP_AWAIT_SCRIPT, {self.addr_ref(argv[0])}),") + func = self.addr_ref(argv[0]) + args = [self.var(a, use_evt_ptr=True) for a in argv[1:]] + args_str = ', '.join(args) + + args_str = replace_constants(self, func, args_str) + + if func.startswith("evt_"): + # use func-specific macro + self.write_line(f"{func}({args_str})") + elif args_str: + self.write_line(f"EVT_CALL({func}, {args_str})") + else: + self.write_line(f"EVT_CALL({func})") # no args + elif opcode == 0x44: self.write_line(f"EVT_EXEC({self.addr_ref(argv[0])})") + elif opcode == 0x45: self.write_line(f"EVT_EXEC_GET_TID({self.addr_ref(argv[0])}, {self.var(argv[1])})") + elif opcode == 0x46: self.write_line(f"EVT_EXEC_WAIT({self.addr_ref(argv[0])})") elif opcode == 0x47: - args = ["EVT_OP_BIND_TRIGGER", self.addr_ref(argv[0]), self.trigger(argv[1]), *map(self.var, argv[2:])] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x48: self.write_line(f"EVT_CMD(EVT_OP_UNBIND),") - elif opcode == 0x49: self.write_line(f"EVT_CMD(EVT_OP_KILL_SCRIPT, {self.var(argv[0])}),") - elif opcode == 0x4A: self.write_line(f"EVT_CMD(EVT_OP_JUMP, {self.var(argv[0])}),") - elif opcode == 0x4B: self.write_line(f"EVT_CMD(EVT_OP_SET_PRIORITY, {self.var(argv[0])}),") - elif opcode == 0x4C: self.write_line(f"EVT_CMD(EVT_OP_SET_TIMESCALE, {self.var(argv[0])}),") - elif opcode == 0x4D: self.write_line(f"EVT_CMD(EVT_OP_SET_GROUP, {self.var(argv[0])}),") + args = [self.addr_ref(argv[0]), self.trigger(argv[1]), self.collider_id(argv[2]), *map(self.var, argv[3:])] + self.write_line(f"EVT_BIND_TRIGGER({', '.join(args)})") + elif opcode == 0x48: self.write_line(f"EVT_UNBIND") + elif opcode == 0x49: self.write_line(f"EVT_KILL_THREAD({self.var(argv[0])})") + elif opcode == 0x4A: self.write_line(f"EVT_JUMP({self.var(argv[0])})") + elif opcode == 0x4B: self.write_line(f"EVT_SET_PRIORITY({self.var(argv[0])})") + elif opcode == 0x4C: self.write_line(f"EVT_SET_TIMESCALE({self.var(argv[0])})") + elif opcode == 0x4D: self.write_line(f"EVT_SET_GROUP({self.var(argv[0])})") elif opcode == 0x4E: - args = ["EVT_OP_BIND_PADLOCK", self.addr_ref(argv[0]), self.trigger(argv[1]), *map(self.var, argv[2:])] - self.write_line(f"EVT_CMD({', '.join(args)}),") - elif opcode == 0x4F: self.write_line(f"EVT_CMD(EVT_OP_SUSPEND_GROUP, {self.var(argv[0])}),") - elif opcode == 0x50: self.write_line(f"EVT_CMD(EVT_OP_RESUME_GROUP, {self.var(argv[0])}),") - elif opcode == 0x51: self.write_line(f"EVT_CMD(EVT_OP_SUSPEND_OTHERS, {self.var(argv[0])}),") - elif opcode == 0x52: self.write_line(f"EVT_CMD(EVT_OP_RESUME_OTHERS, {self.var(argv[0])}),") - elif opcode == 0x53: self.write_line(f"EVT_CMD(EVT_OP_SUSPEND_SCRIPT, {self.var(argv[0])}),") - elif opcode == 0x54: self.write_line(f"EVT_CMD(EVT_OP_RESUME_SCRIPT, {self.var(argv[0])}),") - elif opcode == 0x55: self.write_line(f"EVT_CMD(EVT_OP_DOES_SCRIPT_EXIST, {self.var(argv[0])}, {self.var(argv[1])}),") + args = [self.addr_ref(argv[0]), self.trigger(argv[1]), self.collider_id(argv[2]), *map(self.var, argv[3:])] + self.write_line(f"EVT_BIND_PADLOCK({', '.join(args)})") + elif opcode == 0x4F: self.write_line(f"EVT_SUSPEND_GROUP({self.var(argv[0])})") + elif opcode == 0x50: self.write_line(f"EVT_RESUME_GROUP({self.var(argv[0])})") + elif opcode == 0x51: self.write_line(f"EVT_SUSPEND_OTHERS({self.var(argv[0])})") + elif opcode == 0x52: self.write_line(f"EVT_RESUME_OTHERS({self.var(argv[0])})") + elif opcode == 0x53: self.write_line(f"EVT_SUSPEND_THREAD({self.var(argv[0])})") + elif opcode == 0x54: self.write_line(f"EVT_RESUME_THREAD({self.var(argv[0])})") + elif opcode == 0x55: self.write_line(f"EVT_IS_THREAD_RUNNING({self.var(argv[0])}, {self.var(argv[1])})") elif opcode == 0x56: - self.write_line("EVT_CMD(EVT_OP_SPAWN_THREAD),") + self.write_line("EVT_THREAD") self.indent += 1 elif opcode == 0x57: self.indent -= 1 - self.write_line("EVT_CMD(EVT_OP_END_SPAWN_THREAD),") + self.write_line("EVT_END_THREAD") elif opcode == 0x58: - self.write_line("EVT_CMD(EVT_OP_PARALLEL_THREAD),") + self.write_line("EVT_CHILD_THREAD") self.indent += 1 elif opcode == 0x59: self.indent -= 1 - self.write_line("EVT_CMD(EVT_OP_END_PARALLEL_THREAD),") + self.write_line("EVT_END_CHILD_THREAD") else: # unknown opcode argv_str = "" for arg in argv: argv_str += ", " argv_str += f"0x{arg:X}" - self.write_line(f"EVT_CMD(0x{opcode:02X}{argv_str}),") + self.write_line(f"0x{opcode:02X}{argv_str}),") + + def collider_id(self, arg): + if arg >= 0x4000 and arg <= 0x5000: + return f"EVT_ENTITY_INDEX({arg - 0x4000})" + else: + return self.var(arg) class UnsupportedScript(Exception): pass @@ -1271,7 +1261,7 @@ if __name__ == "__main__": try: script_text = script.disassemble() - if script.instructions > 1 and "EVT_CMD" not in script_text: + if script.instructions > 1 and "_EVT_CMD" not in script_text: if gap and first_print: potential_struct_sizes = { "StaticNpc": 0x1F0, "NpcAISettings":0x30, "NpcSettings":0x2C, "NpcGroupList":0xC } gap_size = args.offset - gap_start diff --git a/tools/fix_bad_evt_changes.py b/tools/fix_bad_evt_changes.py new file mode 100644 index 0000000000..6b77f3e0bf --- /dev/null +++ b/tools/fix_bad_evt_changes.py @@ -0,0 +1,41 @@ +# ninja -j1 | python3 tools/fix_bad_evt_changes.py + +import fileinput +import requests + +problems = [] + +for line in fileinput.input(): + if "undeclared here (not in a function)" in line: + filename = line.split(":")[0].strip() + line_number = int(line.split(":")[1].strip()) + bad_symbol_name = line.split("`")[1].split("'")[0] + + problems.append((filename, line_number, bad_symbol_name)) + +for filename, line_number, bad_symbol_name in problems: + url = f"https://raw.githubusercontent.com/pmret/papermario/master/{filename}" + old_lines = requests.get(url).text.splitlines() + + old_line = old_lines[line_number - 1].strip() + + with open(filename, "r") as f: + lines = f.readlines() + + line = lines[line_number - 1] + + if "EVT_CALL" not in line and "EVT_EXEC" not in line: + continue + + if old_line.startswith("N(") or old_line.startswith("await N("): + good_symbol_name = old_line[old_line.find("N("):].split(")", 1)[0] + ")" + else: + good_symbol_name = old_line.split("(", 1)[0] + + print(filename, bad_symbol_name, "->", good_symbol_name) + + lines[line_number - 1] = line.replace(bad_symbol_name, good_symbol_name) + + with open(filename, "w") as f: + f.writelines(lines) + diff --git a/tools/update_evts.py b/tools/update_evts.py new file mode 100755 index 0000000000..d51eecfaf2 --- /dev/null +++ b/tools/update_evts.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 + +from disasm_script import ScriptDisassembler, get_constants +from glob import glob + +NAMESPACES = { + "src/battle/area_kmr_part_1/stage/clouds.inc.c": "b_area_kmr_part_1_kmr_03", + "src/world/common/foliage.inc.c": "kmr_03", +} + +for filename in glob("src/battle/item/*.c"): + parts = filename.split("/")[1:] + parts[-1] = parts[-1].split(".")[0] + NAMESPACES[filename] = "_".join(parts) + +NAMESPACES["src/battle/item/UseItem.inc.c"] = "battle_item_food" + +for filename in glob("src/world/*/*/*.c"): + map_name = filename.split("/")[3] + NAMESPACES[filename] = map_name + +class UserException(Exception): + pass + +class Range: + def __init__(self, start: int, end: int, symbol_name: str, namespace: str): + self.start = start + self.end = end + self.symbol_name = symbol_name + self.namespace = namespace + +class Symbol: + def __init__(self, ram_addr, rom_addr): + self.ram_addr = ram_addr + self.rom_addr = rom_addr + +def parse_symbol_addrs(): + with open("ver/us/symbol_addrs.txt", "r") as f: + lines = f.readlines() + + symbol_addrs = {} + + for line in lines: + name = line[:line.find(" ")] + + attributes = line[line.find("//"):].split(" ") + ram_addr = int(line[:line.find(";")].split("=")[1].strip(), base=0) + rom_addr = next((int(attr.split(":")[1], base=0) for attr in attributes if attr.split(":")[0] == "rom"), None) + + symbol_addrs[name] = Symbol(ram_addr, rom_addr) + + return symbol_addrs + +def find_old_script_ranges(lines, filename): + """ + Finds all ranges that contain the old SCRIPT macro. + """ + + start_line_no = None + symbol_name = None + namespace = NAMESPACES.get(filename, filename.split("/")[-1].split(".")[0]) + + for line_no, line_content in enumerate(lines): + if "#define NAMESPACE " in line_content: + namespace = line_content.split(" ")[2].strip() + + if "SCRIPT({" in line_content: + start_line_no = line_no + symbol_name = eval_namespace(line_content.split(" ")[1], namespace) + elif "});" in line_content and start_line_no is not None: + yield Range(start_line_no, line_no, symbol_name, namespace) + start_line_no = None + +def eval_namespace(sym, namespace): + if sym.startswith("N("): + return namespace + "_" + sym[2:-1] + else: + return sym + +def replace_old_script_macros(filename, symbol_addrs): + with open(filename, "r") as f: + lines = f.readlines() + + with open("ver/us/baserom.z64", "rb") as rom: + num_scripts_replaced = 0 + + while True: + try: + range = next(find_old_script_ranges(lines, filename)) + except StopIteration: + break + + # Replace initial line + macro_start_idx = lines[range.start].find("SCRIPT({\n") + if macro_start_idx == -1: + raise Exception("Could not find SCRIPT macro start") + lines[range.start] = lines[range.start][:macro_start_idx] + "{\n" + + # Remove other lines + lines = lines[:range.start + 1] + lines[range.end + 1:] + + # Find the symbol + try: + range_sym = symbol_addrs[range.symbol_name] + except KeyError: + raise UserException(f"Symbol {range.symbol_name} is not in symbol_addrs") + + if not range_sym.rom_addr: + raise UserException(f"Symbol {range.symbol_name} lacks a rom address in symbol_addrs") + + # Make local symbol map, replacing namespaced symbols with N(sym) + local_symbol_map = {} + for sym in symbol_addrs: + if sym.startswith(range.namespace): + key = "N(" + sym[len(range.namespace)+1:] + ")" + else: + key = sym + + symbol = symbol_addrs[sym] + + if symbol.ram_addr in local_symbol_map: + cur_sym_name = local_symbol_map[symbol.ram_addr][0][1] + if cur_sym_name.startswith("N("): + continue + + local_symbol_map[symbol.ram_addr] = [[symbol.ram_addr, key]] + + # Disassemble the script + rom.seek(range_sym.rom_addr) + evt_code = ScriptDisassembler(rom, + script_name=range.symbol_name, + romstart=range_sym.rom_addr, + prelude=False, + symbol_map=local_symbol_map, + ).disassemble() + lines.insert(range.start + 1, f"{evt_code}}};\n") + + num_scripts_replaced += 1 + + if num_scripts_replaced > 0: + with open(filename, "w") as f: + f.writelines(lines) + + return num_scripts_replaced + +if __name__ == "__main__": + import sys + + symbol_addrs = parse_symbol_addrs() + get_constants() + + num_errors = 0 + + if len(sys.argv) > 1: + for filename in sys.argv[1:]: + try: + num_scripts_replaced = replace_old_script_macros(filename, symbol_addrs) + if num_scripts_replaced > 0: + print(f"{num_scripts_replaced} old scripts replaced in {filename}") + except UserException as e: + print(f"{filename} ERROR: {e}") + num_errors += 1 + + if num_errors > 0: + print(f"ERROR: {num_errors} files had errors.") + exit(1) + else: + print("warning: no files specified") + print("usage: ./tools/update_evts.c ")