mirror of
https://github.com/pmret/papermario.git
synced 2024-09-18 23:42:35 +02:00
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
This commit is contained in:
parent
9631996e76
commit
ae00fea170
166
diff_evt.py
Executable file
166
diff_evt.py
Executable file
@ -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()
|
109
include/evt.h
109
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
|
||||
|
@ -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);
|
||||
|
509
include/script_api/macros.h
Normal file
509
include/script_api/macros.h
Normal file
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
230
src/16c8e0.c
230
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;
|
||||
|
@ -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
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
|
102
src/evt/evt.c
102
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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
22
src/evt/msg_api.h
Normal file
22
src/evt/msg_api.h
Normal file
@ -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
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
};
|
||||
|
@ -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)
|
||||
};
|
||||
|
@ -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),
|
||||
|
@ -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)
|
||||
};
|
||||
|
@ -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)
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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"):
|
||||
|
@ -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
|
||||
|
41
tools/fix_bad_evt_changes.py
Normal file
41
tools/fix_bad_evt_changes.py
Normal file
@ -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)
|
||||
|
169
tools/update_evts.py
Executable file
169
tools/update_evts.py
Executable file
@ -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 <files to modify>")
|
Loading…
Reference in New Issue
Block a user