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:
Alex Bates 2021-10-25 12:44:55 +01:00 committed by GitHub
parent 9631996e76
commit ae00fea170
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
69 changed files with 8231 additions and 7095 deletions

166
diff_evt.py Executable file
View 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()

View File

@ -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

View File

@ -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
View 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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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
};

View File

@ -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
};

View File

@ -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",

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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
};

View File

@ -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

View File

@ -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;

View File

@ -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++;