Make EVT macros easier to read and write (#1154)

* fix rename.py

* update doxygen EVT_CALL->Call

* support passing files to rename.py

* remove EVT macro prefix and make them PascalCase

* rename PlayEffect function to PlayEffect_impl so it doesn't conflict with macro

* dead_PlayEffect_impl
This commit is contained in:
Alex Bates 2024-01-21 13:04:47 +00:00 committed by GitHub
parent f1edb83213
commit 9574baebaf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2350 changed files with 259983 additions and 259869 deletions

View File

@ -1,4 +1,4 @@
// Make @evtapi prototype use EVT_CALL and params
// Make @evtapi prototype use Call and params
for (const item of document.querySelectorAll(".memitem:has(.evtapi)")) {
// <a id="..." /> appears 2 children before item
const id = item.previousElementSibling.previousElementSibling.id
@ -12,7 +12,7 @@ for (const item of document.querySelectorAll(".memitem:has(.evtapi)")) {
params.push(param.textContent.trim())
}
const proto = `EVT_CALL(${params.join(", ")})`
const proto = `Call(${params.join(", ")})`
tbody.innerHTML = `<tr>${proto}</tr>`
// Find its link

View File

@ -127,7 +127,7 @@
#define SetMusicTrack dead_SetMusicTrack
#define FadeInMusic dead_FadeInMusic
#define RandInt dead_RandInt
#define PlayEffect dead_PlayEffect
#define PlayEffect_impl dead_PlayEffect_impl
#define DisablePlayerInput dead_DisablePlayerInput
#define ModifyColliderFlags dead_ModifyColliderFlags
#define PlayerMoveTo dead_PlayerMoveTo

View File

@ -1280,7 +1280,8 @@ API_CALLABLE(ShowSleepBubble);
API_CALLABLE(SetSleepBubbleTimeLeft);
/// @evtapi
API_CALLABLE(PlayEffect);
/// @see PlayEffect
API_CALLABLE(PlayEffect_impl);
/// @}
@ -1325,7 +1326,7 @@ API_CALLABLE(AssignPanelFlag);
/// @evtapi
API_CALLABLE(AssignCrateFlag);
/// Removes a trigger previously bound with \ref EVT_BIND_TRIGGER.
/// Removes a trigger previously bound with \ref BindTrigger.
/// @evtapi
/// @param triggerPtr
API_CALLABLE(DeleteTrigger);

View File

@ -8,8 +8,8 @@
/// 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_PTR)
/// - Float literals (Float) - cast to int where a float is not accepted
/// - Pointers, string literals (Ref)
/// - Variables (LW, GW, LSW, GSW, UW)
/// - Flags (LF, GF, LSWF, GSWF, UF)
/// This is implemented in `evt_get_variable` and `evt_get_float_variable`.
@ -43,21 +43,21 @@
#define EVT_LIMIT -270000000 // TODO better name
// This fixes an issue with fixed point numbers not being correct. Potentially a truncation vs round difference.
#define EVT_FLOAT_ROUND(x) ((x) >=0 ? (f64)((x) + 0.9) : (f64)(x))
#define EVT_FLOAT(DOUBLE) ((Bytecode)EVT_FLOAT_ROUND(((DOUBLE) * 1024.0f)) - EVT_FIXED_OFFSET)
#define Float_ROUND(x) ((x) >=0 ? (f64)((x) + 0.9) : (f64)(x))
#define Float(DOUBLE) ((Bytecode)Float_ROUND(((DOUBLE) * 1024.0f)) - EVT_FIXED_OFFSET)
/// Progammatically converts EVT_FLOAT --> f32
/// Progammatically converts Float --> f32
#define EVT_FIXED_TO_FLOAT(x) ({f32 var = (x) + EVT_FIXED_OFFSET; var /= 1024.0f; var;})
/// Progammatically converts f32 --> EVT_FLOAT
#define EVT_FLOAT_TO_FIXED(x) (((x) * 1024.0f) + -EVT_FIXED_OFFSET)
/// Progammatically converts f32 --> Float
#define Float_TO_FIXED(x) (((x) * 1024.0f) + -EVT_FIXED_OFFSET)
/// Address/pointer constant.
#define EVT_PTR(sym) ((Bytecode) &(sym))
#define Ref(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.
/// LWs are copied to any threads created by this one (Exec, ExecWait, Thread, ChildThread).
/// Additionally, ExecWait copies LWs back from the spawned thread when it completes.
///
/// Range: `0 <= v < 0x10`
#define LocalVar(INDEX) ((INDEX) - EVT_LOCAL_VAR_OFFSET)
@ -69,8 +69,8 @@
#define MapVar(INDEX) ((INDEX) - EVT_MAP_VAR_OFFSET)
/// 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.
/// LFs are copied to any threads created by this one (Exec, ExecWait, Thread, ChildThread).
/// Additionally, ExecWait copies LFs back from the spawned thread when it completes.
///
/// Range: `0 <= v < 0x60`
#define LocalFlag(INDEX) ((INDEX) - EVT_LOCAL_FLAG_OFFSET)
@ -111,20 +111,20 @@
#define GameByte(INDEX) ((INDEX) - EVT_GAME_BYTE_OFFSET)
/// User 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
/// You can load an array with UseArray or temporarily allocate one with MallocArray, then get/set values with
/// the `ArrayVar(index)` macro.
///
/// Range: `0 <= v`
#define ArrayVar(INDEX) ((INDEX) - EVT_ARRAY_VAR_OFFSET)
/// User 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).
/// The flag array is distinct from the word array (unlike UseBuf and UseFBuf).
///
/// Range: `0 <= v`
#define ArrayFlag(INDEX) ((INDEX) - EVT_ARRAY_FLAG_OFFSET)
/// 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.
/// An entity index. Entities are assigned indices in the order they are created with Call(MakeEntity, ...).
/// Supported in BindTrigger and BindPadlock only.
#define EVT_ENTITY_ID_BIT 0x4000
#define EVT_ENTITY_INDEX(entityIndex) ((entityIndex) + EVT_ENTITY_ID_BIT)
@ -181,16 +181,16 @@
/// 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(1) in the loop body.
/// freeze! Avoid this by inserting a blocking command such as Wait(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
/// - EVT_WAIT_SECONDS
/// - EVT_CALL (if function returns ApiStatus_BLOCK)
/// - ExecWait
/// - Wait
/// - Wait_SECONDS
/// - Call (if function returns ApiStatus_BLOCK)
/// In EVT scripts, instructions are stored contiguously in the following structs:
/// struct {
@ -222,239 +222,239 @@
#endif
/// Signals the end of EVT script data. A script missing this will likely crash on load.
#define EVT_END EVT_CMD(EVT_OP_END),
#define 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),
#define 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),
#define Jump(EVT_SOURCE) EVT_CMD(EVT_OP_JUMP, (Bytecode) EVT_SOURCE),
/// Marks this point in the script as a EVT_GOTO target.
/// Marks this point in the script as a Goto target.
///
/// Range: `0 <= LABEL_ID <= 0x16`
#define EVT_LABEL(LABEL_ID) EVT_CMD(EVT_OP_LABEL, LABEL_ID),
#define 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),
#define Goto(LABEL_ID) EVT_CMD(EVT_OP_GOTO, LABEL_ID),
/// Marks the beginning of a loop.
///
/// EVT_LOOP(TIMES)
/// Loop(TIMES)
/// ...
/// EVT_END_LOOP
/// EndLoop
///
/// 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.
/// Use 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),
#define Loop(TIMES) EVT_CMD(EVT_OP_LOOP, TIMES),
/// Marks the end of a loop.
#define EVT_END_LOOP EVT_CMD(EVT_OP_END_LOOP),
#define EndLoop EVT_CMD(EVT_OP_END_LOOP),
/// Breaks out of the innermost loop.
#define EVT_BREAK_LOOP EVT_CMD(EVT_OP_BREAK_LOOP),
#define BreakLoop EVT_CMD(EVT_OP_BREAK_LOOP),
/// Blocks for the given number of frames.
#define EVT_WAIT(NUM_FRAMES) EVT_CMD(EVT_OP_WAIT_FRAMES, NUM_FRAMES),
#define Wait(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),
#define WaitSecs(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)
/// IfEq(LVAR, RVAR)
/// ...
/// EVT_ELSE
/// Else
/// ...
/// EVT_END_IF
/// EndIf
///
/// The EVT_ELSE block is optional.
#define EVT_IF_EQ(LVAR, RVAR) EVT_CMD(EVT_OP_IF_EQ, LVAR, RVAR),
/// The Else block is optional.
#define IfEq(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),
#define IfNe(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),
#define IfLt(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),
#define IfGt(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),
#define IfLe(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),
#define IfGe(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),
#define IfFlag(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),
#define IfNotFlag(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),
#define 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),
#define EndIf EVT_CMD(EVT_OP_END_IF),
/// Marks the start of a switch statement.
///
/// EVT_SWITCH(LVAR)
/// EVT_CASE_EQ(RVAR)
/// Switch(LVAR)
/// CaseEq(RVAR)
/// ...
/// EVT_END_SWITCH
/// EndSwitch
///
/// Unlike C, EVT switch statements do not have fallthrough by default.
/// If you want to opt-in to fallthrough, use EVT_CASE_OR_EQ.
/// If you want to opt-in to fallthrough, use CaseOrEq.
///
/// Up to 8 switch statements may be nested within a single script.
#define EVT_SWITCH(LVAR) EVT_CMD(EVT_OP_SWITCH, LVAR),
#define 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(LocalVar(0))` will switch over the value `0xFE363C80` instead of the value contained
/// That is, `SwitchConst(LocalVar(0))` will switch over the value `0xFE363C80` instead of the value contained
/// within `LocalVar(0)`.
#define EVT_SWITCH_CONST(LCONST) EVT_CMD(EVT_OP_SWITCH_CONST, LCONST),
#define SwitchConst(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),
#define CaseEq(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),
#define CaseNe(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),
#define CaseLt(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),
#define CaseGt(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),
#define CaseLe(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),
#define CaseGe(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),
#define CaseDefault 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),
/// Unlike CaseEq, CaseOrEq will fallthrough to the next case until EndCaseGroup is reached.
#define CaseOrEq(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),
/// Similar to CaseOrEq, CaseAndEq has fallthrough. However, if `LVAR != RVAR`, fallthrough does not apply.
#define CaseAndEq(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),
#define CaseFlag(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 end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
#define EndCaseGroup 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),
#define CaseRange(MIN, MAX) EVT_CMD(EVT_OP_CASE_RANGE, MIN, MAX),
/// Marks the end of a switch case
#define EVT_BREAK_SWITCH EVT_CMD(EVT_OP_BREAK_SWITCH),
#define BreakSwitch EVT_CMD(EVT_OP_BREAK_SWITCH),
/// Marks the end of a switch statement and any case.
#define EVT_END_SWITCH EVT_CMD(EVT_OP_END_SWITCH),
#define EndSwitch 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),
#define 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(LocalVar(0), LocalVar(1))` will set `LocalVar(0)` to `0xFE363C81` instead of copying the value of
/// That is, `SetConst(LocalVar(0), LocalVar(1))` will set `LocalVar(0)` to `0xFE363C81` instead of copying the value of
/// `LocalVar(1)` into `LocalVar(0)`.
#define EVT_SET_CONST(VAR, CONST) EVT_CMD(EVT_OP_SET_CONST, VAR, (Bytecode) CONST),
#define SetConst(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),
/// Sets the given variable to a given value, but supports Floats.
#define 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),
#define Add(VAR, INT_VALUE) EVT_CMD(EVT_OP_ADD, VAR, INT_VALUE),
#define Sub(VAR, INT_VALUE) EVT_CMD(EVT_OP_SUB, VAR, INT_VALUE),
#define Mul(VAR, INT_VALUE) EVT_CMD(EVT_OP_MUL, VAR, INT_VALUE),
#define Div(VAR, INT_VALUE) EVT_CMD(EVT_OP_DIV, VAR, INT_VALUE),
#define 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),
#define AddF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_ADDF, VAR, FLOAT_VALUE),
#define SubF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_SUBF, VAR, FLOAT_VALUE),
#define MulF(VAR, FLOAT_VALUE) EVT_CMD(EVT_OP_MULF, VAR, FLOAT_VALUE),
#define 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),
#define UseBuf(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),
#define BufRead1(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),
#define BufRead2(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),
#define BufRead3(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),
#define BufRead4(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),
#define BufPeek(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),
/// Identical to UseBuf. Beware that the int buffer and the float buffer are not distinct.
#define UseFBuf(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),
#define FBufRead1(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),
#define FBufRead2(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),
#define FBufRead3(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),
#define FBufRead4(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),
#define FBufPeek(OFFSET, VAR) EVT_CMD(EVT_OP_FBUF_PEEK, OFFSET, VAR),
/// Loads an s32 array pointer into the current thread for use with `ArrayVar(INDEX)`.
#define EVT_USE_ARRAY(INT_PTR) EVT_CMD(EVT_OP_USE_ARRAY, (Bytecode) INT_PTR),
#define UseArray(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),
#define UseFlagArray(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 `ArrayVar(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),
#define MallocArray(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),
#define BitwiseAnd(VAR, VALUE) EVT_CMD(EVT_OP_BITWISE_AND, 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),
#define BitwiseAndConst(VAR, CONST) EVT_CMD(EVT_OP_BITWISE_AND_CONST, VAR, CONST),
/// `VAR |= VALUE`
#define EVT_BITWISE_OR(VAR, VALUE) EVT_CMD(EVT_OP_BITWISE_OR, VAR, VALUE),
#define BitwiseOr(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_OR_CONST(VAR, CONST) EVT_CMD(EVT_OP_BITWISE_OR_CONST, VAR, CONST),
#define BitwiseOrConst(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:
@ -464,12 +464,12 @@
/// - Flag array pointer
/// - Priority
/// - Group
#define EVT_EXEC(EVT_SOURCE) EVT_CMD(EVT_OP_EXEC, (Bytecode) EVT_SOURCE),
#define 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),
/// Identical to Exec, but the newly-launched thread ID is stored in OUTVAR.
/// The other thread may be interacted with using KillThread, SuspendThread, ResumeThread, and
/// IsThreadRunning.
#define ExecGetTID(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.
@ -483,8 +483,8 @@
/// - 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),
/// KillThread to kill a parent thread would also kill its child thread(s) launched by this command.
#define ExecWait(EVT_SOURCE) EVT_CMD(EVT_OP_EXEC_WAIT, (Bytecode) EVT_SOURCE),
/// Sets up a script to launch when a particular event is triggered.
///
@ -508,71 +508,71 @@
/// - 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) \
#define BindTrigger(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) \
/// Similar to BindTrigger, but also takes arguments for the item list to show.
#define BindPadlock(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),
#define 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),
#define KillThread(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),
#define SetPriority(PRIORITY) EVT_CMD(EVT_OP_SET_PRIORITY, PRIORITY),
/// Sets the current thread's timescale. This is a multiplier applied to EVT_WAIT and EVT_WAIT_SECONDS.
#define EVT_SET_TIMESCALE(TIMESCALE) EVT_CMD(EVT_OP_SET_TIMESCALE, TIMESCALE),
/// Sets the current thread's timescale. This is a multiplier applied to Wait and Wait_SECONDS.
#define SetTimescale(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),
#define SetGroup(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),
#define SuspendGroup(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),
#define ResumeGroup(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),
#define SuspendOthers(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),
#define ResumeOthers(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),
#define SuspendThread(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),
#define ResumeThread(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),
#define IsThreadRunning(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
/// Marks the start of a thread block. Commands between this and a matching EndThread
/// will be executed on their own, new thread instead of on the current thread.
#define EVT_THREAD EVT_CMD(EVT_OP_THREAD),
#define Thread EVT_CMD(EVT_OP_THREAD),
/// Marks the end of a thread block.
#define EVT_END_THREAD EVT_CMD(EVT_OP_END_THREAD),
#define EndThread EVT_CMD(EVT_OP_END_THREAD),
/// Marks the start of a child thread block. Commands between this and a matching EVT_END_CHILD_THREAD
/// Marks the start of a child thread block. Commands between this and a matching EndChildThread
/// 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, NPC_DISPOSE_LOCATION) // will not be executed
/// EVT_END_CHILD_THREAD
/// EVT_RETURN // parent thread dies
/// ChildThread
/// Wait_SECONDS(1) // child thread will be killed whilst waiting
/// Call(SetPlayerPos, NPC_DISPOSE_LOCATION) // will not be executed
/// EndChildThread
/// Return // parent thread dies
///
#define EVT_CHILD_THREAD EVT_CMD(EVT_OP_CHILD_THREAD),
#define ChildThread 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),
#define EndChildThread EVT_CMD(EVT_OP_END_CHILD_THREAD),
/// Calls a given C EVT API function with any number of arguments.
///
@ -582,16 +582,16 @@
///
/// This function could then be called with the following command:
///
/// EVT_CALL(ApiFunction)
/// Call(ApiFunction)
///
/// The given arguments can be accessed from the API function using `thread->ptrReadPos`.
#define EVT_CALL(FUNC, ARGS...) EVT_CMD(EVT_OP_CALL, (Bytecode) FUNC, ##ARGS),
#define Call(FUNC, ARGS...) EVT_CMD(EVT_OP_CALL, (Bytecode) FUNC, ##ARGS),
/// Does nothing in release version
#define EVT_DEBUG_LOG(STRING) EVT_CMD(EVT_OP_DEBUG_LOG, STRING),
/// Prints variable name and value
#define EVT_DEBUG_PRINT_VAR(VAR) EVT_CMD(EVT_OP_DEBUG_PRINT_VAR, VAR),
#define DebugPrintVar(VAR) EVT_CMD(EVT_OP_DEBUG_PRINT_VAR, VAR),
/****** VECTOR OPERATIONS *********************************************************************************************/
@ -622,146 +622,146 @@
OPERATION(MUT_BASE + 1, AMT_BASE + 1) \
OPERATION(MUT_BASE + 2, AMT_BASE + 2)
#define EVT_VEC2I_SET(baseVar, x, y) EVT_VEC2_OP(EVT_SET, baseVar, x, y)
#define EVT_VEC2F_SET(baseVar, x, y) EVT_VEC2_OP(EVT_SETF, baseVar, x, y)
#define EVT_VEC3I_SET(baseVar, x, y, z) EVT_VEC3_OP(EVT_SET, baseVar, x, y, z)
#define EVT_VEC3F_SET(baseVar, x, y, z) EVT_VEC3_OP(EVT_SETF, baseVar, x, y, z)
#define EVT_VEC2I_SET(baseVar, x, y) EVT_VEC2_OP(Set, baseVar, x, y)
#define EVT_VEC2F_SET(baseVar, x, y) EVT_VEC2_OP(SetF, baseVar, x, y)
#define EVT_VEC3I_SET(baseVar, x, y, z) EVT_VEC3_OP(Set, baseVar, x, y, z)
#define EVT_VEC3F_SET(baseVar, x, y, z) EVT_VEC3_OP(SetF, baseVar, x, y, z)
#define EVT_VEC2I_VSET(baseVar, baseSrc) EVT_VEC2_VOP(EVT_SET, baseVar, baseSrc)
#define EVT_VEC2F_VSET(baseVar, baseSrc) EVT_VEC2_VOP(EVT_SETF, baseVar, baseSrc)
#define EVT_VEC3I_VSET(baseVar, baseSrc) EVT_VEC3_VOP(EVT_SET, baseVar, baseSrc)
#define EVT_VEC3F_VSET(baseVar, baseSrc) EVT_VEC3_VOP(EVT_SETF, baseVar, baseSrc)
#define EVT_VEC2I_VSET(baseVar, baseSrc) EVT_VEC2_VOP(Set, baseVar, baseSrc)
#define EVT_VEC2F_VSET(baseVar, baseSrc) EVT_VEC2_VOP(SetF, baseVar, baseSrc)
#define EVT_VEC3I_VSET(baseVar, baseSrc) EVT_VEC3_VOP(Set, baseVar, baseSrc)
#define EVT_VEC3F_VSET(baseVar, baseSrc) EVT_VEC3_VOP(SetF, baseVar, baseSrc)
#define EVT_VEC2I_ADD(baseVar, x, y) EVT_VEC2_OP(EVT_ADD, baseVar, x, y)
#define EVT_VEC2F_ADD(baseVar, x, y) EVT_VEC2_OP(EVT_ADDF, baseVar, x, y)
#define EVT_VEC3I_ADD(baseVar, x, y, z) EVT_VEC3_OP(EVT_ADD, baseVar, x, y, z)
#define EVT_VEC3F_ADD(baseVar, x, y, z) EVT_VEC3_OP(EVT_ADDF, baseVar, x, y, z)
#define EVT_VEC2I_ADD(baseVar, x, y) EVT_VEC2_OP(Add, baseVar, x, y)
#define EVT_VEC2F_ADD(baseVar, x, y) EVT_VEC2_OP(AddF, baseVar, x, y)
#define EVT_VEC3I_ADD(baseVar, x, y, z) EVT_VEC3_OP(Add, baseVar, x, y, z)
#define EVT_VEC3F_ADD(baseVar, x, y, z) EVT_VEC3_OP(AddF, baseVar, x, y, z)
#define EVT_VEC2I_VADD(baseVar, baseAmt) EVT_VEC2_VOP(EVT_ADD, baseVar, baseAmt)
#define EVT_VEC2F_VADD(baseVar, baseAmt) EVT_VEC2_VOP(EVT_ADDF, baseVar, baseAmt)
#define EVT_VEC3I_VADD(baseVar, baseAmt) EVT_VEC3_VOP(EVT_ADD, baseVar, baseAmt)
#define EVT_VEC3F_VADD(baseVar, baseAmt) EVT_VEC3_VOP(EVT_ADDF, baseVar, baseAmt)
#define EVT_VEC2I_VADD(baseVar, baseAmt) EVT_VEC2_VOP(Add, baseVar, baseAmt)
#define EVT_VEC2F_VADD(baseVar, baseAmt) EVT_VEC2_VOP(AddF, baseVar, baseAmt)
#define EVT_VEC3I_VADD(baseVar, baseAmt) EVT_VEC3_VOP(Add, baseVar, baseAmt)
#define EVT_VEC3F_VADD(baseVar, baseAmt) EVT_VEC3_VOP(AddF, baseVar, baseAmt)
#define EVT_VEC2I_SUB(baseVar, x, y) EVT_VEC2_OP(EVT_SUB, baseVar, x, y)
#define EVT_VEC2F_SUB(baseVar, x, y) EVT_VEC2_OP(EVT_SUBF, baseVar, x, y)
#define EVT_VEC3I_SUB(baseVar, x, y, z) EVT_VEC3_OP(EVT_SUB, baseVar, x, y, z)
#define EVT_VEC3F_SUB(baseVar, x, y, z) EVT_VEC3_OP(EVT_SUBF, baseVar, x, y, z)
#define EVT_VEC2I_SUB(baseVar, x, y) EVT_VEC2_OP(Sub, baseVar, x, y)
#define EVT_VEC2F_SUB(baseVar, x, y) EVT_VEC2_OP(SubF, baseVar, x, y)
#define EVT_VEC3I_SUB(baseVar, x, y, z) EVT_VEC3_OP(Sub, baseVar, x, y, z)
#define EVT_VEC3F_SUB(baseVar, x, y, z) EVT_VEC3_OP(SubF, baseVar, x, y, z)
#define EVT_VEC2I_VSUB(baseVar, baseAmt) EVT_VEC2_VOP(EVT_SUB, baseVar, baseAmt)
#define EVT_VEC2F_VSUB(baseVar, baseAmt) EVT_VEC2_VOP(EVT_SUBF, baseVar, baseAmt)
#define EVT_VEC3I_VSUB(baseVar, baseAmt) EVT_VEC3_VOP(EVT_SUB, baseVar, baseAmt)
#define EVT_VEC3F_VSUB(baseVar, baseAmt) EVT_VEC3_VOP(EVT_SUBF, baseVar, baseAmt)
#define EVT_VEC2I_VSUB(baseVar, baseAmt) EVT_VEC2_VOP(Sub, baseVar, baseAmt)
#define EVT_VEC2F_VSUB(baseVar, baseAmt) EVT_VEC2_VOP(SubF, baseVar, baseAmt)
#define EVT_VEC3I_VSUB(baseVar, baseAmt) EVT_VEC3_VOP(Sub, baseVar, baseAmt)
#define EVT_VEC3F_VSUB(baseVar, baseAmt) EVT_VEC3_VOP(SubF, baseVar, baseAmt)
/****** COMMON SCRIPTS ************************************************************************************************/
#define EVT_IF_TRUE(b) EVT_IF_NE(b, 0)
#define EVT_IF_FALSE(b) EVT_IF_EQ(b, 0)
#define IfTrue(b) IfNe(b, 0)
#define IfFalse(b) IfEq(b, 0)
#define EVT_EXIT_WALK(walkDistance, exitIdx, map, entryIdx) \
{ \
EVT_SET_GROUP(EVT_GROUP_1B) \
EVT_CALL(UseExitHeading, walkDistance, exitIdx) \
EVT_EXEC(ExitWalk) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
SetGroup(EVT_GROUP_1B) \
Call(UseExitHeading, walkDistance, exitIdx) \
Exec(ExitWalk) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
// alternate version of EVT_EXIT_WALK used on Pleasant Path which does not join EVT_GROUP_1B
#define EVT_EXIT_WALK_NOK(walkDistance, exitIdx, map, entryIdx) \
{ \
EVT_CALL(UseExitHeading, walkDistance, exitIdx) \
EVT_EXEC(ExitWalk) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
Call(UseExitHeading, walkDistance, exitIdx) \
Exec(ExitWalk) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
// alternate version of EVT_EXIT_WALK which includes a call to DisablePlayerInput
#define EVT_EXIT_WALK_FIXED(walkDistance, exitIdx, map, entryIdx) \
{ \
EVT_SET_GROUP(EVT_GROUP_1B) \
EVT_CALL(DisablePlayerInput, TRUE) \
EVT_CALL(UseExitHeading, walkDistance, exitIdx) \
EVT_EXEC(ExitWalk) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
SetGroup(EVT_GROUP_1B) \
Call(DisablePlayerInput, TRUE) \
Call(UseExitHeading, walkDistance, exitIdx) \
Exec(ExitWalk) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
#define EVT_EXIT_SINGLE_DOOR(exitIdx, map, entryIdx, colliderID, modelID, swingDir) \
{ \
EVT_SET_GROUP(EVT_GROUP_1B) \
EVT_CALL(DisablePlayerInput, TRUE) \
EVT_SET(LVar0, exitIdx) \
EVT_SET(LVar1, colliderID) \
EVT_SET(LVar2, modelID) \
EVT_SET(LVar3, swingDir) \
EVT_EXEC(ExitSingleDoor) \
EVT_WAIT(17) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
SetGroup(EVT_GROUP_1B) \
Call(DisablePlayerInput, TRUE) \
Set(LVar0, exitIdx) \
Set(LVar1, colliderID) \
Set(LVar2, modelID) \
Set(LVar3, swingDir) \
Exec(ExitSingleDoor) \
Wait(17) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
#define EVT_EXIT_SPLIT_SINGLE_DOOR(exitIdx, map, entryIdx, colliderID, topModelID, bottomModelID, swingDir) \
{ \
EVT_SET_GROUP(EVT_GROUP_1B) \
EVT_CALL(DisablePlayerInput, TRUE) \
EVT_SET(LVar0, exitIdx) \
EVT_SET(LVar1, colliderID) \
EVT_SET(LVar2, topModelID) \
EVT_SET(LVar4, bottomModelID) \
EVT_SET(LVar3, swingDir) \
EVT_EXEC(ExitSplitSingleDoor) \
EVT_WAIT(17) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
SetGroup(EVT_GROUP_1B) \
Call(DisablePlayerInput, TRUE) \
Set(LVar0, exitIdx) \
Set(LVar1, colliderID) \
Set(LVar2, topModelID) \
Set(LVar4, bottomModelID) \
Set(LVar3, swingDir) \
Exec(ExitSplitSingleDoor) \
Wait(17) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
#define EVT_EXIT_DOUBLE_DOOR(exitIdx, map, entryIdx, colliderID, leftDoorModelID, rightDoorModelID) \
{ \
EVT_SET_GROUP(EVT_GROUP_1B) \
EVT_CALL(DisablePlayerInput, TRUE) \
EVT_SET(LVar0, exitIdx) \
EVT_SET(LVar1, colliderID) \
EVT_SET(LVar2, leftDoorModelID) \
EVT_SET(LVar3, rightDoorModelID) \
EVT_EXEC(ExitDoubleDoor) \
EVT_WAIT(17) \
EVT_CALL(GotoMap, EVT_PTR(map), entryIdx) \
EVT_WAIT(100) \
EVT_RETURN \
EVT_END \
SetGroup(EVT_GROUP_1B) \
Call(DisablePlayerInput, TRUE) \
Set(LVar0, exitIdx) \
Set(LVar1, colliderID) \
Set(LVar2, leftDoorModelID) \
Set(LVar3, rightDoorModelID) \
Exec(ExitDoubleDoor) \
Wait(17) \
Call(GotoMap, Ref(map), entryIdx) \
Wait(100) \
Return \
End \
}
// only set perspective to standard values
#define EVT_SETUP_CAMERA_MINIMAL() \
EVT_CALL(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096)
#define SetUP_CAMERA_MINIMAL() \
Call(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096)
#define EVT_SETUP_CAMERA_DEFAULT() \
EVT_CALL(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
#define SetUP_CAMERA_DEFAULT() \
Call(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
Call(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
Call(SetCamEnabled, CAM_DEFAULT, TRUE)
#define EVT_SETUP_CAMERA_NO_LEAD() \
EVT_CALL(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE) \
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
#define SetUP_CAMERA_NO_LEAD() \
Call(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
Call(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
Call(SetCamEnabled, CAM_DEFAULT, TRUE) \
Call(SetCamLeadPlayer, CAM_DEFAULT, FALSE)
// same as EVT_SETUP_CAMERA_NO_LEAD with calls reordered
#define EVT_SETUP_CAMERA_ALT_NO_LEAD() \
EVT_CALL(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
EVT_CALL(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
EVT_CALL(SetCamLeadPlayer, CAM_DEFAULT, FALSE) \
EVT_CALL(SetCamEnabled, CAM_DEFAULT, TRUE)
// same as SetUP_CAMERA_NO_LEAD with calls reordered
#define SetUP_CAMERA_ALT_NO_LEAD() \
Call(SetCamPerspective, CAM_DEFAULT, CAM_UPDATE_FROM_ZONE, 25, 16, 4096) \
Call(SetCamBGColor, CAM_DEFAULT, 0, 0, 0) \
Call(SetCamLeadPlayer, CAM_DEFAULT, FALSE) \
Call(SetCamEnabled, CAM_DEFAULT, TRUE)
// allow macros with variable number of arguments
// see https://stackoverflow.com/questions/11761703/overloading-macro-on-number-of-arguments
@ -790,34 +790,34 @@
#define _VFUNC(name, n) _VFUNC_(name, n)
#define VFUNC(func, args...) _VFUNC(func, __NARG__(args)) (args)
#define EVT_PLAY_EFFECT(args...) VFUNC(EVT_PLAY_EFFECT, args)
#define EVT_PLAY_EFFECT1(effect) \
EVT_CALL(PlayEffect, effect, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT2(effect, subtype) \
EVT_CALL(PlayEffect, effect, subtype, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT3(effect, subtype, a) \
EVT_CALL(PlayEffect, effect, subtype, a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT4(effect, subtype, a, b) \
EVT_CALL(PlayEffect, effect, subtype, a, b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT5(effect, subtype, a, b, c) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT6(effect, subtype, a, b, c, d) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, 0, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT7(effect, subtype, a, b, c, d, e) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, 0, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT8(effect, subtype, a, b, c, d, e, f) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, 0, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT9(effect, subtype, a, b, c, d, e, f, g) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, 0, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT10(effect, subtype, a, b, c, d, e, f, g, h) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, h, 0, 0, 0, 0)
#define EVT_PLAY_EFFECT11(effect, subtype, a, b, c, d, e, f, g, h, i) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, h, i, 0, 0, 0)
#define EVT_PLAY_EFFECT12(effect, subtype, a, b, c, d, e, f, g, h, i, j) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, h, i, j, 0, 0)
#define EVT_PLAY_EFFECT13(effect, subtype, a, b, c, d, e, f, g, h, i, j, k) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, 0)
#define EVT_PLAY_EFFECT14(effect, subtype, a, b, c, d, e, f, g, h, i, j, k, l) \
EVT_CALL(PlayEffect, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, l)
#define PlayEffect(args...) VFUNC(PlayEffect, args)
#define PlayEffect1(effect) \
Call(PlayEffect_impl, effect, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect2(effect, subtype) \
Call(PlayEffect_impl, effect, subtype, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect3(effect, subtype, a) \
Call(PlayEffect_impl, effect, subtype, a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect4(effect, subtype, a, b) \
Call(PlayEffect_impl, effect, subtype, a, b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect5(effect, subtype, a, b, c) \
Call(PlayEffect_impl, effect, subtype, a, b, c, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect6(effect, subtype, a, b, c, d) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, 0, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect7(effect, subtype, a, b, c, d, e) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, 0, 0, 0, 0, 0, 0, 0)
#define PlayEffect8(effect, subtype, a, b, c, d, e, f) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, 0, 0, 0, 0, 0, 0)
#define PlayEffect9(effect, subtype, a, b, c, d, e, f, g) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, 0, 0, 0, 0, 0)
#define PlayEffect10(effect, subtype, a, b, c, d, e, f, g, h) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, 0, 0, 0, 0)
#define PlayEffect11(effect, subtype, a, b, c, d, e, f, g, h, i) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, 0, 0, 0)
#define PlayEffect12(effect, subtype, a, b, c, d, e, f, g, h, i, j) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, 0, 0)
#define PlayEffect13(effect, subtype, a, b, c, d, e, f, g, h, i, j, k) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, 0)
#define PlayEffect14(effect, subtype, a, b, c, d, e, f, g, h, i, j, k, l) \
Call(PlayEffect_impl, effect, subtype, a, b, c, d, e, f, g, h, i, j, k, l)
#endif

View File

@ -5,84 +5,84 @@ API_CALLABLE(func_8005DD54);
API_CALLABLE(func_8005DDF0);
EvtScript EVS_800936C0 = {
EVT_CALL(func_8005DB00)
EVT_RETURN
EVT_END
Call(func_8005DB00)
Return
End
};
EvtScript EVS_NpcHitRecoil = {
EVT_CALL(SetNpcAnimation, NPC_SELF, LVar0)
EVT_CALL(GetNpcPos, NPC_SELF, LVar0, LVar3, LVar2)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 1)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 4)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 16)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 8)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 20)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 8)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 12)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 6)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_SET(LVar1, LVar3)
EVT_ADD(LVar1, 0)
EVT_CALL(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_RETURN
EVT_END
Call(SetNpcAnimation, NPC_SELF, LVar0)
Call(GetNpcPos, NPC_SELF, LVar0, LVar3, LVar2)
Set(LVar1, LVar3)
Add(LVar1, 1)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 4)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 16)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 8)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 20)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 8)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 12)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 6)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Set(LVar1, LVar3)
Add(LVar1, 0)
Call(SetNpcPos, NPC_SELF, LVar0, LVar1, LVar2)
Wait(1)
Return
End
};
EvtScript D_800939A4 = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript D_800939B4 = {
EVT_CALL(GetSelfVar, 0, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetSelfVar, 0, 1)
EVT_CALL(BindNpcAI, NPC_SELF, EVT_PTR(D_800939A4))
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY | NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_FLYING | NPC_FLAG_JUMPING, FALSE)
EVT_CALL(SetNpcAnimation, NPC_SELF, LVar2)
EVT_SET(LVar0, 0)
EVT_LOOP(30)
EVT_CALL(SetNpcRotation, NPC_SELF, 0, LVar0, 0)
EVT_CALL(func_8005DD54)
EVT_CALL(SetNpcImgFXParams, NPC_SELF, IMGFX_SET_COLOR, LVar2, LVar2, LVar2, 0)
EVT_ADD(LVar0, 30)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetNpcRotation, NPC_SELF, 0, 0, 0)
EVT_CALL(SetNpcImgFXParams, NPC_SELF, IMGFX_SET_COLOR, 255, 255, 255, 0)
EVT_CALL(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, FALSE)
EVT_CALL(SetSelfVar, 0, 0)
EVT_CALL(func_8005DDF0)
EVT_CALL(BindNpcAI, NPC_SELF, LVar1)
EVT_END_IF
EVT_RETURN
EVT_END
Call(GetSelfVar, 0, LVar0)
IfEq(LVar0, 0)
Call(SetSelfVar, 0, 1)
Call(BindNpcAI, NPC_SELF, Ref(D_800939A4))
Call(SetNpcFlagBits, NPC_SELF, NPC_FLAG_GRAVITY | NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE)
Call(SetNpcFlagBits, NPC_SELF, NPC_FLAG_FLYING | NPC_FLAG_JUMPING, FALSE)
Call(SetNpcAnimation, NPC_SELF, LVar2)
Set(LVar0, 0)
Loop(30)
Call(SetNpcRotation, NPC_SELF, 0, LVar0, 0)
Call(func_8005DD54)
Call(SetNpcImgFXParams, NPC_SELF, IMGFX_SET_COLOR, LVar2, LVar2, LVar2, 0)
Add(LVar0, 30)
Wait(1)
EndLoop
Call(SetNpcRotation, NPC_SELF, 0, 0, 0)
Call(SetNpcImgFXParams, NPC_SELF, IMGFX_SET_COLOR, 255, 255, 255, 0)
Call(SetNpcFlagBits, NPC_SELF, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, FALSE)
Call(SetSelfVar, 0, 0)
Call(func_8005DDF0)
Call(BindNpcAI, NPC_SELF, LVar1)
EndIf
Return
End
};
API_CALLABLE(func_8005DB00) {

View File

@ -51,49 +51,49 @@ HudScript* bHPDigitHudScripts[] = {
s32 BattleScreenFadeAmt = 255;
EvtScript BtlPutPartnerAway = {
EVT_CALL(DispatchEvent, ACTOR_PARTNER, EVENT_PUT_PARTNER_AWAY)
EVT_CHILD_THREAD
EVT_SETF(LVar0, EVT_FLOAT(1.0))
EVT_LOOP(10)
EVT_CALL(SetActorScale, ACTOR_PARTNER, LVar0, LVar0, EVT_FLOAT(1.0))
EVT_SUBF(LVar0, EVT_FLOAT(0.1))
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_CHILD_THREAD
EVT_CALL(EnablePartnerBlur)
EVT_CALL(PlaySoundAtActor, 0, SOUND_PARTNER_GET_OUT)
EVT_CALL(GetActorPos, 0, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 25)
EVT_CALL(SetActorJumpGravity, ACTOR_PARTNER, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_PARTNER, 10, 0, 0, 1)
EVT_CALL(DisablePartnerBlur)
EVT_RETURN
EVT_END
Call(DispatchEvent, ACTOR_PARTNER, EVENT_PUT_PARTNER_AWAY)
ChildThread
SetF(LVar0, Float(1.0))
Loop(10)
Call(SetActorScale, ACTOR_PARTNER, LVar0, LVar0, Float(1.0))
SubF(LVar0, Float(0.1))
Wait(1)
EndLoop
EndChildThread
Call(EnablePartnerBlur)
Call(PlaySoundAtActor, 0, SOUND_PARTNER_GET_OUT)
Call(GetActorPos, 0, LVar0, LVar1, LVar2)
Add(LVar1, 25)
Call(SetActorJumpGravity, ACTOR_PARTNER, Float(1.0))
Call(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_PARTNER, 10, 0, 0, 1)
Call(DisablePartnerBlur)
Return
End
};
EvtScript BtlBringPartnerOut = {
EVT_CHILD_THREAD
EVT_SETF(LVar0, EVT_FLOAT(0.1))
EVT_LOOP(20)
EVT_CALL(SetActorScale, ACTOR_PARTNER, LVar0, LVar0, EVT_FLOAT(1.0))
EVT_ADDF(LVar0, EVT_FLOAT(0.05))
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetActorScale, ACTOR_PARTNER, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_END_CHILD_THREAD
EVT_CALL(PlaySoundAtActor, 0, SOUND_PARTNER_PUT_AWAY)
EVT_CALL(GetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_CALL(SetActorJumpGravity, ACTOR_PARTNER, EVT_FLOAT(1.0))
EVT_IF_EQ(LVar1, 0)
EVT_CALL(JumpToGoal, ACTOR_PARTNER, 20, 0, 0, 1)
EVT_ELSE
EVT_CALL(JumpToGoal, ACTOR_PARTNER, 20, 0, 0, 1)
EVT_END_IF
EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_CALL(ForceHomePos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_RETURN
EVT_END
ChildThread
SetF(LVar0, Float(0.1))
Loop(20)
Call(SetActorScale, ACTOR_PARTNER, LVar0, LVar0, Float(1.0))
AddF(LVar0, Float(0.05))
Wait(1)
EndLoop
Call(SetActorScale, ACTOR_PARTNER, Float(1.0), Float(1.0), Float(1.0))
EndChildThread
Call(PlaySoundAtActor, 0, SOUND_PARTNER_PUT_AWAY)
Call(GetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Call(SetActorJumpGravity, ACTOR_PARTNER, Float(1.0))
IfEq(LVar1, 0)
Call(JumpToGoal, ACTOR_PARTNER, 20, 0, 0, 1)
Else
Call(JumpToGoal, ACTOR_PARTNER, 20, 0, 0, 1)
EndIf
Call(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Call(ForceHomePos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Return
End
};
extern HudScript HES_HPBar;

View File

@ -7,16 +7,16 @@
#include "sprite.h"
EvtScript D_80293820 = {
EVT_WAIT(LVar0)
EVT_LOOP(4)
EVT_CALL(SetBattleCamParam, 4, 11)
EVT_WAIT(1)
EVT_CALL(SetBattleCamParam, 4, 5)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetBattleCamParam, 4, 8)
EVT_RETURN
EVT_END
Wait(LVar0)
Loop(4)
Call(SetBattleCamParam, 4, 11)
Wait(1)
Call(SetBattleCamParam, 4, 5)
Wait(1)
EndLoop
Call(SetBattleCamParam, 4, 8)
Return
End
};
f32 D_802938A4 = 0.0f;
@ -3113,71 +3113,71 @@ void show_foreground_models(void) {
#include "common/StartRumbleWithParams.inc.c"
EvtScript EVS_BattleRumble_Long = {
EVT_CALL(N(StartRumbleWithParams), 256, 30)
EVT_CALL(N(StartRumbleWithParams), 200, 15)
EVT_CALL(N(StartRumbleWithParams), 50, 15)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 256, 30)
Call(N(StartRumbleWithParams), 200, 15)
Call(N(StartRumbleWithParams), 50, 15)
Return
End
};
EvtScript EVS_BattleRumble_HitMin = {
EVT_CALL(N(StartRumbleWithParams), 100, 20)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 100, 20)
Return
End
};
EvtScript EVS_BattleRumble_HitLight = {
EVT_CALL(N(StartRumbleWithParams), 150, 20)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 150, 20)
Return
End
};
EvtScript EVS_BattleRumble_HitHeavy = {
EVT_CALL(N(StartRumbleWithParams), 200, 30)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 200, 30)
Return
End
};
EvtScript EVS_BattleRumble_HitExtreme = {
EVT_CALL(N(StartRumbleWithParams), 256, 40)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 256, 40)
Return
End
};
EvtScript EVS_BattleRumble_HitMax = {
EVT_CALL(N(StartRumbleWithParams), 256, 60)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 256, 60)
Return
End
};
EvtScript EVS_BattleRumble_PlayerMin = {
EVT_CALL(N(StartRumbleWithParams), 100, 20)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 100, 20)
Return
End
};
EvtScript EVS_BattleRumble_PlayerLight = {
EVT_CALL(N(StartRumbleWithParams), 150, 20)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 150, 20)
Return
End
};
EvtScript EVS_BattleRumble_PlayerHeavy = {
EVT_CALL(N(StartRumbleWithParams), 200, 30)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 200, 30)
Return
End
};
EvtScript EVS_BattleRumble_PlayerExtreme = {
EVT_CALL(N(StartRumbleWithParams), 256, 40)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 256, 40)
Return
End
};
EvtScript EVS_BattleRumble_PlayerMax = {
EVT_CALL(N(StartRumbleWithParams), 256, 60)
EVT_RETURN
EVT_END
Call(N(StartRumbleWithParams), 256, 60)
Return
End
};
void start_rumble_type(u32 type) {

View File

@ -108,435 +108,435 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
EVT_EXEC(N(EVS_PlayFootstepQuaking))
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
Exec(N(EVS_PlayFootstepQuaking))
Return
End
};
EvtScript N(EVS_PlayFootstepQuaking) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_CALL(ActorExists, ACTOR_SELF, LVar0)
EVT_IF_EQ(LVar0, FALSE)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim06)
EVT_GOTO(1)
EVT_END_IF
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim07)
EVT_GOTO(1)
EVT_END_IF
EVT_GOTO(0)
EVT_LABEL(1)
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(0.5))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
Label(0)
Wait(1)
Call(ActorExists, ACTOR_SELF, LVar0)
IfEq(LVar0, FALSE)
Return
EndIf
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfFlag(LVar0, STATUS_FLAG_SHRINK)
Goto(0)
EndIf
Call(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar0)
IfEq(LVar0, ANIM_BattleTubba_Anim06)
Goto(1)
EndIf
IfEq(LVar0, ANIM_BattleTubba_Anim07)
Goto(1)
EndIf
Goto(0)
Label(1)
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(0.5))
Wait(1)
Goto(0)
Return
End
};
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
Label(0)
Wait(1)
Goto(0)
Return
End
};
EvtScript N(EVS_DummyCheck) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unused, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_RETURN
EVT_END_IF
EVT_RETURN
EVT_END
Call(GetActorVar, ACTOR_SELF, AVAR_Unused, LVar0)
IfEq(LVar0, 0)
Return
EndIf
Return
End
};
EvtScript N(EVS_ReturnHome) = {
EVT_SET(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_SET(LVar1, ANIM_BattleTubba_Anim06)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_SET(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_RETURN
EVT_END
Set(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(SetGoalToHome, ACTOR_SELF)
Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
Set(LVar1, ANIM_BattleTubba_Anim06)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Set(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(SetActorYaw, ACTOR_SELF, 0)
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_SET_CONST(LVar2, -1)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_SET_CONST(LVar2, -1)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(EVS_Enemy_Recover)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(GetLastEvent, ACTOR_SELF, LVarA)
Switch(LVarA)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_Hit)
EndCaseGroup
CaseEq(EVENT_BURN_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
SetConst(LVar2, -1)
ExecWait(EVS_Enemy_BurnHit)
CaseEq(EVENT_BURN_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
SetConst(LVar2, -1)
ExecWait(EVS_Enemy_BurnHit)
ExecWait(N(EVS_Death))
Return
CaseEq(EVENT_SPIN_SMASH_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_SpinSmashHit)
CaseEq(EVENT_SHOCK_HIT)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_ShockHit)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_Knockback)
ExecWait(N(EVS_ReturnHome))
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
CaseOrEq(EVENT_AIR_LIFT_FAILED)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(EVS_Enemy_NoDamageHit)
EndCaseGroup
CaseEq(EVENT_SHOCK_DEATH)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_ShockHit)
ExecWait(N(EVS_Death))
Return
CaseEq(EVENT_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_Hit)
ExecWait(N(EVS_Death))
Return
CaseEq(EVENT_SPIN_SMASH_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_SpinSmashHit)
ExecWait(N(EVS_Death))
Return
CaseEq(EVENT_RECOVER_STATUS)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(EVS_Enemy_Recover)
CaseDefault
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 60)
EVT_EXEC_WAIT(N(EVS_Attack_SlamFist))
EVT_ELSE
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_END_IF
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(RandInt, 100, LVar0)
IfLt(LVar0, 60)
ExecWait(N(EVS_Attack_SlamFist))
Else
ExecWait(N(EVS_Attack_BodySlam))
EndIf
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_Attack_SlamFist) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 150)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_SET(LVar1, ANIM_BattleTubba_Anim06)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
EVT_ELSE
EVT_CALL(AddGoalPos, ACTOR_SELF, 20, 0, 0)
EVT_END_IF
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
EVT_WAIT(8)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_SWIPE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim17)
EVT_WAIT(3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar1, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 4, LVar0, LVar1, LVar2, 0, 0)
EVT_THREAD
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(15.0))
EVT_END_THREAD
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_END_IF
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVarA)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
EVT_WAIT(30)
EVT_SET(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(SetDamageSource, DMG_SRC_TUBBA_SMASH)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_FIST_POUND, BS_FLAGS1_TRIGGER_EVENTS)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 200)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(MoveBattleCamOver, 30)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_WAIT(30)
EVT_SET(LVar1, ANIM_BattleTubba_Anim01)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(YieldTurn)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 150)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Set(LVar1, ANIM_BattleTubba_Anim06)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(AddGoalPos, ACTOR_SELF, 50, 0, 0)
Else
Call(AddGoalPos, ACTOR_SELF, 20, 0, 0)
EndIf
Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
Wait(8)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_SWIPE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim17)
Wait(3)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfNotFlag(LVar0, STATUS_FLAG_SHRINK)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Set(LVar1, 0)
PlayEffect(EFFECT_LANDING_DUST, 4, LVar0, LVar1, LVar2, 0, 0)
Thread
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(15.0))
EndThread
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EndIf
Call(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVarA)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
Wait(30)
Set(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
ExecWait(N(EVS_ReturnHome))
Return
EndCaseGroup
CaseDefault
EndSwitch
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EndIf
Wait(2)
Call(SetGoalToTarget, ACTOR_SELF)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(SetDamageSource, DMG_SRC_TUBBA_SMASH)
EndIf
Call(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_FIST_POUND, BS_FLAGS1_TRIGGER_EVENTS)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 200)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(MoveBattleCamOver, 30)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
Wait(30)
Set(LVar1, ANIM_BattleTubba_Anim01)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Call(YieldTurn)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Return
End
};
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 150)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_SET(LVar1, ANIM_BattleTubba_Anim06)
EVT_EXEC_WAIT(N(EVS_DummyCheck))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(AddGoalPos, ACTOR_SELF, 70, 0, 0)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0A)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0B)
EVT_CALL(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP, SOUND_LARGE_ACTOR_JUMP, 0)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_THREAD
EVT_WAIT(12)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0C)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 15)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 23, FALSE, TRUE, FALSE)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_THREAD
EVT_CALL(ResetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
EVT_WAIT(4)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_THREAD
EVT_WAIT(9)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0C)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
EVT_END_SWITCH
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(SetDamageSource, DMG_SRC_CRUSH)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_BODY_SLAM, BS_FLAGS1_TRIGGER_EVENTS)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 200)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(MoveBattleCamOver, 30)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_GOTO(1)
EVT_END_IF
EVT_CALL(GetBattleFlags, LVar0)
EVT_IF_NOT_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_STONE)
EVT_CALL(LandJump, ACTOR_SELF)
EVT_ELSE
EVT_GOTO(1)
EVT_END_IF
EVT_ELSE
EVT_GOTO(1)
EVT_END_IF
EVT_LABEL(0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_THREAD
EVT_CALL(ResetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_GOTO(2)
EVT_LABEL(1)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_WAIT(3)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_IF
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_THREAD
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
EVT_END_THREAD
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(StartRumble, BTL_RUMBLE_LONG)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_WAIT(8)
EVT_END_IF
EVT_LABEL(2)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(YieldTurn)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 150)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Set(LVar1, ANIM_BattleTubba_Anim06)
ExecWait(N(EVS_DummyCheck))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, LVar1)
Call(SetGoalToTarget, ACTOR_SELF)
Call(AddGoalPos, ACTOR_SELF, 70, 0, 0)
Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0A)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0B)
Call(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP, SOUND_LARGE_ACTOR_JUMP, 0)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Set(LVarA, LVar0)
Thread
Wait(12)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0C)
EndThread
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 15)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 23, FALSE, TRUE, FALSE)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
PlayEffect(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
Thread
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EndThread
Thread
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndThread
Call(ResetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 20)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
Wait(4)
ExecWait(N(EVS_ReturnHome))
Return
EndCaseGroup
CaseDefault
Thread
Wait(9)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0C)
EndThread
Call(SetGoalToTarget, ACTOR_SELF)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
EndSwitch
Wait(2)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(SetDamageSource, DMG_SRC_CRUSH)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EndIf
Call(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_BODY_SLAM, BS_FLAGS1_TRIGGER_EVENTS)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 200)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(MoveBattleCamOver, 30)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfFlag(LVar5, STATUS_FLAG_SHRINK)
Goto(1)
EndIf
Call(GetBattleFlags, LVar0)
IfNotFlag(LVar0, BS_FLAGS1_ATK_BLOCKED)
Call(GetStatusFlags, ACTOR_PLAYER, LVar0)
IfNotFlag(LVar0, STATUS_FLAG_STONE)
Call(LandJump, ACTOR_SELF)
Else
Goto(1)
EndIf
Else
Goto(1)
EndIf
Label(0)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
Thread
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EndThread
Thread
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndThread
Call(ResetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 20)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
Goto(2)
Label(1)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Wait(3)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndIf
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar0, 40)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Thread
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
EndThread
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(StartRumble, BTL_RUMBLE_LONG)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
Wait(8)
EndIf
Label(2)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Call(YieldTurn)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Return
End
};
EvtScript N(EVS_Death) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim14)
EVT_CALL(ActorSpeak, MSG_CH3_00C9, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim14, ANIM_BattleTubba_Anim14)
EVT_SET(LVar0, 1)
EVT_SET(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_END
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim14)
Call(ActorSpeak, MSG_CH3_00C9, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim14, ANIM_BattleTubba_Anim14)
Set(LVar0, 1)
Set(LVar1, ANIM_BattleTubba_Anim14)
ExecWait(EVS_Enemy_Death)
Return
End
};

View File

@ -150,18 +150,18 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_SwarmCount, 0)
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetPartTargetFlagBits, ACTOR_SELF, PRT_TARGET, ACTOR_PART_TARGET_NO_SMASH, TRUE)
EVT_RETURN
EVT_END
Call(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_Flags, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, FALSE)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_SwarmCount, 0)
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(SetPartTargetFlagBits, ACTOR_SELF, PRT_TARGET, ACTOR_PART_TARGET_NO_SMASH, TRUE)
Return
End
};
API_CALLABLE(N(UpdateChargeEffectPos)) {
@ -182,459 +182,459 @@ API_CALLABLE(N(UpdateChargeEffectPos)) {
}
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_CALL(ActorExists, ACTOR_SELF, LVar0)
EVT_IF_NE(LVar0, FALSE)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar4)
EVT_IF_NOT_FLAG(LVar4, STATUS_FLAG_SHRINK)
EVT_ADD(LVar2, 15)
EVT_SETF(LVar4, EVT_FLOAT(1.0))
EVT_ELSE
EVT_ADD(LVar2, 6)
EVT_SETF(LVar4, EVT_FLOAT(0.4))
EVT_END_IF
EVT_CALL(N(UpdateChargeEffectPos), LVar0, LVar1, LVar2, LVar3, LVar4)
EVT_END_IF
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
Label(0)
Call(ActorExists, ACTOR_SELF, LVar0)
IfNe(LVar0, FALSE)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVar0)
IfNe(LVar0, 0)
Call(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
Call(GetStatusFlags, ACTOR_SELF, LVar4)
IfNotFlag(LVar4, STATUS_FLAG_SHRINK)
Add(LVar2, 15)
SetF(LVar4, Float(1.0))
Else
Add(LVar2, 6)
SetF(LVar4, Float(0.4))
EndIf
Call(N(UpdateChargeEffectPos), LVar0, LVar1, LVar2, LVar3, LVar4)
EndIf
EndIf
Wait(1)
Goto(0)
Return
End
};
EvtScript N(EVS_SelectAnimation) = {
EVT_SET(LVar1, ANIM_TubbasHeart_Anim0E)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_SET(LVar1, ANIM_TubbasHeart_Anim0B)
EVT_END_IF
EVT_RETURN
EVT_END
Set(LVar1, ANIM_TubbasHeart_Anim0E)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
IfNe(LVar0, 0)
Set(LVar1, ANIM_TubbasHeart_Anim0B)
EndIf
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_TubbasHeart_Anim10)
EVT_SET_CONST(LVar2, ANIM_TubbasHeart_Anim11)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_CASE_OR_EQ(EVENT_SHOCK_HIT)
EVT_CASE_OR_EQ(EVENT_SHOCK_DEATH)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET(LVar1, ANIM_TubbasHeart_Anim01)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_SET(LVar1, ANIM_TubbasHeart_Anim0B)
EVT_END_IF
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_END_CASE_GROUP
EVT_CASE_OR_EQ(EVENT_DEATH)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_CASE_EQ(EVENT_SPIKE_CONTACT)
EVT_CASE_EQ(EVENT_BURN_CONTACT)
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_TubbasHeart_Anim01)
EVT_EXEC_WAIT(EVS_Enemy_Recover)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
EVT_IF_LE(LVar0, 5)
EVT_EXEC_WAIT(N(EVS_FleeFromBattle))
EVT_RETURN
EVT_ELSE
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_END_IF
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_Hit)
EndCaseGroup
CaseEq(EVENT_BEGIN_FIRST_STRIKE)
CaseOrEq(EVENT_BURN_HIT)
CaseOrEq(EVENT_BURN_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_TubbasHeart_Anim10)
SetConst(LVar2, ANIM_TubbasHeart_Anim11)
ExecWait(EVS_Enemy_BurnHit)
EndCaseGroup
CaseEq(EVENT_SPIN_SMASH_HIT)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_SpinSmashHit)
CaseOrEq(EVENT_SHOCK_HIT)
CaseOrEq(EVENT_SHOCK_DEATH)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_ShockHit)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_Knockback)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
CaseOrEq(EVENT_AIR_LIFT_FAILED)
Set(LVar1, ANIM_TubbasHeart_Anim01)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
IfNe(LVar0, 0)
Set(LVar1, ANIM_TubbasHeart_Anim0B)
EndIf
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_NoDamageHit)
EndCaseGroup
CaseOrEq(EVENT_DEATH)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_Hit)
EndCaseGroup
CaseEq(EVENT_SPIN_SMASH_DEATH)
ExecWait(N(EVS_SelectAnimation))
SetConst(LVar0, PRT_MAIN)
ExecWait(EVS_Enemy_SpinSmashHit)
CaseEq(EVENT_SPIKE_CONTACT)
CaseEq(EVENT_BURN_CONTACT)
CaseEq(EVENT_END_FIRST_STRIKE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
ExecWait(N(EVS_ReturnHome))
Call(HPBarToHome, ACTOR_SELF)
CaseEq(EVENT_RECOVER_STATUS)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_TubbasHeart_Anim01)
ExecWait(EVS_Enemy_Recover)
CaseDefault
EndSwitch
Call(GetActorHP, ACTOR_SELF, LVar0)
IfLe(LVar0, 5)
ExecWait(N(EVS_FleeFromBattle))
Return
Else
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
EndIf
Return
End
};
EvtScript N(EVS_FleeFromBattle) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT(40)
EVT_CALL(ActorSpeak, MSG_CH3_00C6, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0D, ANIM_TubbasHeart_Anim0D)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 25)
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, TRUE)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_DISABLE_CELEBRATION | BS_FLAGS1_BATTLE_FLED, TRUE)
EVT_CALL(SetEndBattleFadeOutRate, 20)
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_PRESET_14)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(MoveBattleCamOver, 40)
Wait(40)
Call(ActorSpeak, MSG_CH3_00C6, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0D, ANIM_TubbasHeart_Anim0D)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 25)
Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, TRUE)
Call(SetBattleFlagBits, BS_FLAGS1_DISABLE_CELEBRATION | BS_FLAGS1_BATTLE_FLED, TRUE)
Call(SetEndBattleFadeOutRate, 20)
Return
End
};
EvtScript N(EVS_ReturnHome) = {
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 45)
EVT_SET(LVar1, 0)
EVT_EXEC_WAIT(EVS_Enemy_HopToPos)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_RETURN
EVT_END
Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Call(SetGoalToHome, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 45)
Set(LVar1, 0)
ExecWait(EVS_Enemy_HopToPos)
Call(SetGoalToHome, ACTOR_SELF)
Call(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
Call(SetActorYaw, ACTOR_SELF, 0)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_IF_NE(LVar0, HIT_RESULT_MISS)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_TauntBow)
EVT_CALL(GetCurrentPartnerID, LVar0)
EVT_IF_EQ(LVar0, PARTNER_BOW)
EVT_CALL(EnableBattleStatusBar, FALSE)
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
IfNe(LVar0, HIT_RESULT_MISS)
Call(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
IfNotFlag(LVar0, AVAL_Flag_TauntBow)
Call(GetCurrentPartnerID, LVar0)
IfEq(LVar0, PARTNER_BOW)
Call(EnableBattleStatusBar, FALSE)
//@bug -- meant to OR 3 with value of AVAR_Flags, not PARTNER_BOW
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_TauntBow | AVAL_Flag_HidStatusBar)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT(40)
EVT_CALL(ActorSpeak, MSG_CH3_00C3, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_PARTNER)
EVT_CALL(MoveBattleCamOver, 25)
EVT_WAIT(25)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(SetAnimation, ACTOR_PARTNER, 1, ANIM_BattleBow_Talk)
EVT_CALL(ActorSpeak, MSG_CH3_00C4, ACTOR_PARTNER, 1, ANIM_BattleBow_Talk, ANIM_BattleBow_Idle)
EVT_CALL(SetAnimation, ACTOR_PARTNER, 1, ANIM_BattleBow_Laugh)
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, -1, -1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
EVT_IF_EQ(LVar0, AVAL_NextMove_Charge)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(EnableBattleStatusBar, TRUE)
EVT_END_IF
EVT_ELSE
EVT_CALL(EnableBattleStatusBar, TRUE)
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(AVAL_NextMove_Charge)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, TRUE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT(40)
EVT_CALL(ActorSpeak, MSG_CH3_00C5, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01)
EVT_END_IF
EVT_EXEC_WAIT(N(EVS_Move_Charge))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Swarm)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_FLAG(LVar0, AVAL_Flag_HidStatusBar)
EVT_CALL(EnableBattleStatusBar, TRUE)
EVT_END_IF
EVT_CASE_EQ(AVAL_NextMove_Swarm)
EVT_EXEC_WAIT(N(EVS_Attack_DarkSwarm))
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_SwarmCount, LVar1)
EVT_ADD(LVar1, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_SwarmCount, LVar1)
EVT_IF_GE(LVar1, 2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Leap)
EVT_ELSE
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
EVT_END_IF
EVT_END_IF
EVT_CASE_EQ(AVAL_NextMove_Leap)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
EVT_EXEC_WAIT(N(EVS_Attack_Leap))
EVT_END_SWITCH
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_BITWISE_AND_CONST(LVar0, ~AVAL_Flag_HidStatusBar)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
BitwiseOrConst(LVar0, AVAL_Flag_TauntBow | AVAL_Flag_HidStatusBar)
Call(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
Call(UseBattleCamPreset, BTL_CAM_PRESET_14)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(MoveBattleCamOver, 40)
Wait(40)
Call(ActorSpeak, MSG_CH3_00C3, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01)
Call(UseBattleCamPreset, BTL_CAM_PRESET_14)
Call(BattleCamTargetActor, ACTOR_PARTNER)
Call(MoveBattleCamOver, 25)
Wait(25)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(SetAnimation, ACTOR_PARTNER, 1, ANIM_BattleBow_Talk)
Call(ActorSpeak, MSG_CH3_00C4, ACTOR_PARTNER, 1, ANIM_BattleBow_Talk, ANIM_BattleBow_Idle)
Call(SetAnimation, ACTOR_PARTNER, 1, ANIM_BattleBow_Laugh)
Call(EndActorSpeech, ACTOR_PARTNER, 1, -1, -1)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(MoveBattleCamOver, 30)
Call(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
IfEq(LVar0, AVAL_NextMove_Charge)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, LVar0)
IfTrue(LVar0)
Call(EnableBattleStatusBar, TRUE)
EndIf
Else
Call(EnableBattleStatusBar, TRUE)
EndIf
EndIf
EndIf
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
Switch(LVar0)
CaseEq(AVAL_NextMove_Charge)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, LVar0)
IfEq(LVar0, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargeTaunt, TRUE)
Call(UseBattleCamPreset, BTL_CAM_PRESET_14)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(MoveBattleCamOver, 40)
Wait(40)
Call(ActorSpeak, MSG_CH3_00C5, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B, ANIM_TubbasHeart_Anim01)
EndIf
ExecWait(N(EVS_Move_Charge))
Call(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Swarm)
Call(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
IfFlag(LVar0, AVAL_Flag_HidStatusBar)
Call(EnableBattleStatusBar, TRUE)
EndIf
CaseEq(AVAL_NextMove_Swarm)
ExecWait(N(EVS_Attack_DarkSwarm))
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
IfEq(LVar0, 0)
Call(GetActorVar, ACTOR_SELF, AVAR_SwarmCount, LVar1)
Add(LVar1, 1)
Call(SetActorVar, ACTOR_SELF, AVAR_SwarmCount, LVar1)
IfGe(LVar1, 2)
Call(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Leap)
Else
Call(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
EndIf
EndIf
CaseEq(AVAL_NextMove_Leap)
Call(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_NextMove_Charge)
ExecWait(N(EVS_Attack_Leap))
EndSwitch
Call(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
BitwiseAndConst(LVar0, ~AVAL_Flag_HidStatusBar)
Call(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_Attack_Leap) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 45)
EVT_SET(LVar1, 0)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_EXEC_WAIT(EVS_Enemy_HopToPos)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim16)
EVT_WAIT(5)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim15)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 30)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(2.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
EVT_SUB(LVar0, 10)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.3))
EVT_CALL(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
EVT_END_SWITCH
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_LEAP, BS_FLAGS1_TRIGGER_EVENTS)
EVT_SET(LVarF, LVar0)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.1), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 30)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
EVT_ADD(LVar0, 20)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
EVT_ADD(LVar0, 10)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
EVT_WAIT(8)
EVT_IF_EQ(LVarF, HIT_RESULT_10)
EVT_RETURN
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(YieldTurn)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 45)
Set(LVar1, 0)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar0, 40)
Set(LVar1, 0)
Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
ExecWait(EVS_Enemy_HopToPos)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim16)
Wait(5)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim15)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Set(LVarA, LVar0)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 30)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.5))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 20)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(2.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
Sub(LVar0, 10)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
Wait(20)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
ExecWait(N(EVS_ReturnHome))
Return
EndCaseGroup
CaseDefault
Call(SetGoalToTarget, ACTOR_SELF)
Call(SetActorJumpGravity, ACTOR_SELF, Float(0.3))
Call(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
EndSwitch
Wait(2)
Call(SetGoalToTarget, ACTOR_SELF)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_LEAP, BS_FLAGS1_TRIGGER_EVENTS)
Set(LVarF, LVar0)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
CaseOrEq(HIT_RESULT_10)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim01)
Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
Wait(1)
Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
Wait(1)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar0, 30)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
Add(LVar0, 20)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
Add(LVar0, 10)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
Wait(8)
IfEq(LVarF, HIT_RESULT_10)
Return
EndIf
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(YieldTurn)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Return
End
};
EvtScript N(EVS_Move_Charge) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 85, 50, 0)
EVT_CALL(SetBattleCamZoom, 280)
EVT_CALL(SetBattleCamOffsetZ, 0)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT(40)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar4)
EVT_IF_NOT_FLAG(LVar4, STATUS_FLAG_SHRINK)
EVT_ADD(LVar1, 15)
EVT_SETF(LVar3, EVT_FLOAT(1.0))
EVT_ELSE
EVT_ADD(LVar1, 6)
EVT_SETF(LVar3, EVT_FLOAT(0.4))
EVT_END_IF
EVT_PLAY_EFFECT(EFFECT_GATHER_MAGIC, 1, LVar0, LVar1, LVar2, LVar3, 60, 0)
EVT_PLAY_EFFECT(EFFECT_ENERGY_IN_OUT, 6, LVar0, LVar1, LVar2, LVar3, 60, 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_TUBBAS_HEART_CHARGE)
EVT_WAIT(60)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, 1)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar4)
EVT_IF_NOT_FLAG(LVar4, STATUS_FLAG_SHRINK)
EVT_ADD(LVar1, 15)
EVT_SETF(LVar3, EVT_FLOAT(1.0))
EVT_ELSE
EVT_ADD(LVar1, 6)
EVT_SETF(LVar3, EVT_FLOAT(0.4))
EVT_END_IF
EVT_PLAY_EFFECT(EFFECT_ENERGY_IN_OUT, 3, LVar0, LVar1, LVar2, LVar3, 0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVarF)
EVT_CALL(EnableActorGlow, ACTOR_SELF, TRUE)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(ChargedAnims)))
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 85, 50, 0)
Call(SetBattleCamZoom, 280)
Call(SetBattleCamOffsetZ, 0)
Call(MoveBattleCamOver, 40)
Wait(40)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(GetStatusFlags, ACTOR_SELF, LVar4)
IfNotFlag(LVar4, STATUS_FLAG_SHRINK)
Add(LVar1, 15)
SetF(LVar3, Float(1.0))
Else
Add(LVar1, 6)
SetF(LVar3, Float(0.4))
EndIf
PlayEffect(EFFECT_GATHER_MAGIC, 1, LVar0, LVar1, LVar2, LVar3, 60, 0)
PlayEffect(EFFECT_ENERGY_IN_OUT, 6, LVar0, LVar1, LVar2, LVar3, 60, 0)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_TUBBAS_HEART_CHARGE)
Wait(60)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, 1)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(GetStatusFlags, ACTOR_SELF, LVar4)
IfNotFlag(LVar4, STATUS_FLAG_SHRINK)
Add(LVar1, 15)
SetF(LVar3, Float(1.0))
Else
Add(LVar1, 6)
SetF(LVar3, Float(0.4))
EndIf
PlayEffect(EFFECT_ENERGY_IN_OUT, 3, LVar0, LVar1, LVar2, LVar3, 0, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVarF)
Call(EnableActorGlow, ACTOR_SELF, TRUE)
Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(ChargedAnims)))
Return
End
};
EvtScript N(EVS_Attack_DarkSwarm) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 85, 50, 0)
EVT_CALL(SetBattleCamZoom, 280)
EVT_CALL(SetBattleCamOffsetZ, 0)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT(20)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST1)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0C)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_IF_NOT_FLAG(LVar3, STATUS_FLAG_SHRINK)
EVT_ADD(LVar1, 16)
EVT_ELSE
EVT_ADD(LVar1, 6)
EVT_END_IF
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 45, 0)
EVT_WAIT(60)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 18, FALSE, TRUE, FALSE)
EVT_END_THREAD
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
EVT_SUB(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(EnableActorGlow, ACTOR_SELF, FALSE)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVar0)
EVT_CALL(RemoveEffect, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, 0)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefaultAnims)))
EVT_END_IF
EVT_CALL(PlaySound, SOUND_TUBBAS_HEART_SWARM_ATTACK)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVarA)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 5)
EVT_PLAY_EFFECT(EFFECT_TUBBA_HEART_ATTACK, FX_HEART_SWARM_MISS, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 200, 0)
EVT_WAIT(145)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_ELSE
EVT_END_IF
EVT_RETURN
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 5)
EVT_PLAY_EFFECT(EFFECT_TUBBA_HEART_ATTACK, FX_HEART_SWARM_HIT, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 200, 0)
EVT_THREAD
EVT_WAIT(160)
EVT_CALL(PlaySound, SOUND_TUBBAS_HEART_SWARM_VANISH)
EVT_END_THREAD
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Flail)
EVT_WAIT(30)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_CALL(SetBattleCamTarget, LVar0, LVar1, LVar2)
EVT_CALL(SetBattleCamZoom, 300)
EVT_CALL(SetBattleCamOffsetZ, 35)
EVT_CALL(MoveBattleCamOver, 50)
EVT_WAIT(56)
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_SQUEEZE)
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Leeching)
EVT_WAIT(37)
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_SQUEEZE)
EVT_WAIT(22)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 10)
EVT_CALL(PlaySoundAtActor, ACTOR_PLAYER, SOUND_TUBBAS_HEART_SWARM_DISPERSE)
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, TRUE)
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_SWARM, BS_FLAGS1_TRIGGER_EVENTS)
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 85, 50, 0)
Call(SetBattleCamZoom, 280)
Call(SetBattleCamOffsetZ, 0)
Call(MoveBattleCamOver, 20)
Wait(20)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST1)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0C)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(GetStatusFlags, ACTOR_SELF, LVar3)
IfNotFlag(LVar3, STATUS_FLAG_SHRINK)
Add(LVar1, 16)
Else
Add(LVar1, 6)
EndIf
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 0, LVar0, LVar1, LVar2, Float(1.0), 45, 0)
Wait(60)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim0B)
Thread
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 18, FALSE, TRUE, FALSE)
EndThread
Call(GetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
Sub(LVar0, 1)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargeLevel, LVar0)
IfEq(LVar0, 0)
Call(EnableActorGlow, ACTOR_SELF, FALSE)
Call(GetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, LVar0)
Call(RemoveEffect, LVar0)
Call(SetActorVar, ACTOR_SELF, AVAR_ChargedEffectID, 0)
Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(DefaultAnims)))
EndIf
Call(PlaySound, SOUND_TUBBAS_HEART_SWARM_ATTACK)
Call(SetGoalToTarget, ACTOR_SELF)
Call(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVarA)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
Add(LVar1, 5)
PlayEffect(EFFECT_TUBBA_HEART_ATTACK, FX_HEART_SWARM_MISS, LVar0, LVar1, LVar2, Float(1.0), 200, 0)
Wait(145)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
Else
EndIf
Return
EndCaseGroup
EndSwitch
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
Add(LVar1, 5)
PlayEffect(EFFECT_TUBBA_HEART_ATTACK, FX_HEART_SWARM_HIT, LVar0, LVar1, LVar2, Float(1.0), 200, 0)
Thread
Wait(160)
Call(PlaySound, SOUND_TUBBAS_HEART_SWARM_VANISH)
EndThread
Call(UseIdleAnimation, ACTOR_PLAYER, FALSE)
Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Flail)
Wait(30)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
Call(SetBattleCamTarget, LVar0, LVar1, LVar2)
Call(SetBattleCamZoom, 300)
Call(SetBattleCamOffsetZ, 35)
Call(MoveBattleCamOver, 50)
Wait(56)
Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_SQUEEZE)
Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Leeching)
Wait(37)
Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_SQUEEZE)
Wait(22)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 10)
Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_TUBBAS_HEART_SWARM_DISPERSE)
Call(UseIdleAnimation, ACTOR_PLAYER, TRUE)
Wait(2)
Call(SetGoalToTarget, ACTOR_SELF)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_SWARM, BS_FLAGS1_TRIGGER_EVENTS)
Return
End
};

File diff suppressed because it is too large Load Diff

View File

@ -113,385 +113,385 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, AVAL_Taunt_None)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CaughtYouTaunt, FALSE)
EVT_EXEC_GET_TID(N(EVS_PlayFootstepQuaking), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_QuakingScriptID, LVar0)
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(BindHandlePhase, ACTOR_SELF, Ref(N(EVS_HandlePhase)))
Call(SetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, AVAL_Taunt_None)
Call(SetActorVar, ACTOR_SELF, AVAR_CaughtYouTaunt, FALSE)
ExecGetTID(N(EVS_PlayFootstepQuaking), LVar0)
Call(SetActorVar, ACTOR_SELF, AVAR_QuakingScriptID, LVar0)
Return
End
};
EvtScript N(EVS_PlayFootstepQuaking) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_CALL(ActorExists, ACTOR_SELF, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim06)
EVT_GOTO(1)
EVT_END_IF
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim07)
EVT_GOTO(1)
EVT_END_IF
EVT_GOTO(0)
EVT_LABEL(1)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(0.5))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
Label(0)
Wait(1)
Call(ActorExists, ACTOR_SELF, LVar0)
IfEq(LVar0, 0)
Return
EndIf
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfFlag(LVar0, STATUS_FLAG_SHRINK)
Goto(0)
EndIf
Call(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar0)
IfEq(LVar0, ANIM_BattleTubba_Anim06)
Goto(1)
EndIf
IfEq(LVar0, ANIM_BattleTubba_Anim07)
Goto(1)
EndIf
Goto(0)
Label(1)
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(0.5))
Wait(1)
Goto(0)
Return
End
};
EvtScript N(EVS_HandlePhase) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_Idle) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_ReturnHome) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_RETURN
EVT_END
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
Call(SetGoalToHome, ACTOR_SELF)
Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
Call(SetActorYaw, ACTOR_SELF, 0)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_IF_EQ(LVar0, HIT_RESULT_MISS)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
EVT_CALL(SetGoalPos, ACTOR_SELF, 0, 0, 0)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
EVT_WAIT(30)
EVT_SET(LVar0, 0)
EVT_LOOP(12)
EVT_ADD(LVar0, 15)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_WAIT(10)
EVT_SET(LVar0, 180)
EVT_LOOP(12)
EVT_SUB(LVar0, 15)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar1, 80)
EVT_PLAY_EFFECT(EFFECT_EMOTE, EMOTE_QUESTION, 0, LVar0, LVar1, LVar2, 30, 315, 30, 0, 0)
EVT_WAIT(40)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
EVT_SET(LVar0, 0)
EVT_LOOP(15)
EVT_ADD(LVar0, 12)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim06)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar0, 220)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_QuakingScriptID, LVar0)
EVT_KILL_THREAD(LVar0)
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, TRUE)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_DISABLE_CELEBRATION | BS_FLAGS1_BATTLE_FLED, TRUE)
EVT_CALL(SetEndBattleFadeOutRate, 10)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, LVar0)
EVT_IF_EQ(LVar0, AVAL_Taunt_Ready)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, AVAL_Taunt_Done)
EVT_CALL(ActorSpeak, MSG_CH3_0103, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim09, ANIM_BattleTubba_Anim02)
EVT_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
EVT_WAIT(4)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
EVT_WAIT(15)
EVT_END_THREAD
EVT_CALL(EndActorSpeech, ACTOR_SELF, PRT_MAIN, -1, -1)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 15)
EVT_WAIT(15)
EVT_CALL(EnableBattleStatusBar, TRUE)
EVT_END_IF
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
IfEq(LVar0, HIT_RESULT_MISS)
Call(SetActorSpeed, ACTOR_SELF, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
Call(SetGoalPos, ACTOR_SELF, 0, 0, 0)
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
Wait(30)
Set(LVar0, 0)
Loop(12)
Add(LVar0, 15)
Call(SetActorYaw, ACTOR_SELF, LVar0)
Wait(1)
EndLoop
Wait(10)
Set(LVar0, 180)
Loop(12)
Sub(LVar0, 15)
Call(SetActorYaw, ACTOR_SELF, LVar0)
Wait(1)
EndLoop
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Set(LVar1, 80)
PlayEffect(EFFECT_EMOTE, EMOTE_QUESTION, 0, LVar0, LVar1, LVar2, 30, 315, 30, 0, 0)
Wait(40)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
Set(LVar0, 0)
Loop(15)
Add(LVar0, 12)
Call(SetActorYaw, ACTOR_SELF, LVar0)
Wait(1)
EndLoop
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim06)
Call(SetActorSpeed, ACTOR_SELF, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Set(LVar0, 220)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(GetActorVar, ACTOR_SELF, AVAR_QuakingScriptID, LVar0)
KillThread(LVar0)
Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, TRUE)
Call(SetBattleFlagBits, BS_FLAGS1_DISABLE_CELEBRATION | BS_FLAGS1_BATTLE_FLED, TRUE)
Call(SetEndBattleFadeOutRate, 10)
Return
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, LVar0)
IfEq(LVar0, AVAL_Taunt_Ready)
Call(EnableBattleStatusBar, FALSE)
Call(SetActorVar, ACTOR_SELF, AVAR_InvunerableTaunt, AVAL_Taunt_Done)
Call(ActorSpeak, MSG_CH3_0103, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim09, ANIM_BattleTubba_Anim02)
Thread
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
Wait(4)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
Wait(15)
EndThread
Call(EndActorSpeech, ACTOR_SELF, PRT_MAIN, -1, -1)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim01)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 15)
Wait(15)
Call(EnableBattleStatusBar, TRUE)
EndIf
ExecWait(N(EVS_Attack_BodySlam))
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_Attack_SlamFist) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 150)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
EVT_ELSE
EVT_CALL(AddGoalPos, ACTOR_SELF, 20, 0, 0)
EVT_END_IF
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim17)
EVT_WAIT(3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SET(LVar1, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 4, LVar0, LVar1, LVar2, 0, 0)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 1, LVar0, LVar1, LVar2, 0)
EVT_THREAD
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(15.0))
EVT_END_THREAD
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_END_IF
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_WAIT(30)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(SetDamageSource, DMG_SRC_TUBBA_SMASH)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_FIST_POUND, BS_FLAGS1_TRIGGER_EVENTS)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_WAIT(30)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
EVT_IF_EQ(LVarF, 10)
EVT_RETURN
EVT_END_IF
EVT_CALL(YieldTurn)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 150)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
Call(SetGoalToTarget, ACTOR_SELF)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(AddGoalPos, ACTOR_SELF, 50, 0, 0)
Else
Call(AddGoalPos, ACTOR_SELF, 20, 0, 0)
EndIf
Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim15)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim16)
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim17)
Wait(3)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfNotFlag(LVar0, STATUS_FLAG_SHRINK)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Set(LVar1, 0)
PlayEffect(EFFECT_LANDING_DUST, 4, LVar0, LVar1, LVar2, 0, 0)
PlayEffect(EFFECT_SHOCKWAVE, 1, LVar0, LVar1, LVar2, 0)
Thread
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(15.0))
EndThread
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EndIf
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Wait(30)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
ExecWait(N(EVS_ReturnHome))
Return
EndCaseGroup
CaseDefault
EndSwitch
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EndIf
Wait(2)
Call(SetGoalToTarget, ACTOR_SELF)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(SetDamageSource, DMG_SRC_TUBBA_SMASH)
EndIf
Call(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_FIST_POUND, BS_FLAGS1_TRIGGER_EVENTS)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
CaseOrEq(HIT_RESULT_10)
Wait(30)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim02)
IfEq(LVarF, 10)
Return
EndIf
Call(YieldTurn)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Return
End
};
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 180)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(AddGoalPos, ACTOR_SELF, 70, 0, 0)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0F)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim10)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_THREAD
EVT_WAIT(12)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim11)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 15)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(PlaySound, SOUND_ACTOR_JUMP)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 23, FALSE, TRUE, FALSE)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim12)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_THREAD
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim13)
EVT_WAIT(4)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_THREAD
EVT_WAIT(12)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim11)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(PlaySound, SOUND_ACTOR_JUMP)
EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
EVT_END_SWITCH
EVT_WAIT(2)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(SetDamageSource, DMG_SRC_CRUSH)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_BODY_SLAM, BS_FLAGS1_TRIGGER_EVENTS)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_SET(LVarF, LVar0)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_GOTO(1)
EVT_END_IF
EVT_CALL(GetBattleFlags, LVar0)
EVT_IF_NOT_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_STONE)
EVT_CALL(LandJump, ACTOR_SELF)
EVT_ELSE
EVT_GOTO(1)
EVT_END_IF
EVT_ELSE
EVT_GOTO(1)
EVT_END_IF
EVT_LABEL(0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_THREAD
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 20)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 5)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_GOTO(2)
EVT_LABEL(1)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_WAIT(3)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_END_IF
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_THREAD
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
EVT_END_THREAD
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 5, EVT_FLOAT(3.0))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EVT_WAIT(8)
EVT_END_IF
EVT_LABEL(2)
EVT_IF_EQ(LVarF, 10)
EVT_RETURN
EVT_END_IF
EVT_CALL(YieldTurn)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_RETURN
EVT_END
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 180)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim07)
Call(SetGoalToTarget, ACTOR_SELF)
Call(AddGoalPos, ACTOR_SELF, 70, 0, 0)
Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0F)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim10)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Set(LVarA, LVar0)
Thread
Wait(12)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim11)
EndThread
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 15)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(PlaySound, SOUND_ACTOR_JUMP)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 23, FALSE, TRUE, FALSE)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim12)
Thread
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EndThread
Thread
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndThread
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 20)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim13)
Wait(4)
ExecWait(N(EVS_ReturnHome))
Return
EndCaseGroup
CaseDefault
Thread
Wait(12)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim11)
EndThread
Call(SetGoalToTarget, ACTOR_SELF)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(PlaySound, SOUND_ACTOR_JUMP)
Call(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
EndSwitch
Wait(2)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(SetDamageSource, DMG_SRC_CRUSH)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_HEAVY_NPC_LANDING)
EndIf
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_BODY_SLAM, BS_FLAGS1_TRIGGER_EVENTS)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 20)
Set(LVarF, LVar0)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
CaseOrEq(HIT_RESULT_10)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfFlag(LVar5, STATUS_FLAG_SHRINK)
Goto(1)
EndIf
Call(GetBattleFlags, LVar0)
IfNotFlag(LVar0, BS_FLAGS1_ATK_BLOCKED)
Call(GetStatusFlags, ACTOR_PLAYER, LVar0)
IfNotFlag(LVar0, STATUS_FLAG_STONE)
Call(LandJump, ACTOR_SELF)
Else
Goto(1)
EndIf
Else
Goto(1)
EndIf
Label(0)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0D)
Thread
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
EndThread
Thread
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndThread
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 20)
Set(LVar1, 0)
Add(LVar2, 5)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.0))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
Goto(2)
Label(1)
Call(GetStatusFlags, ACTOR_SELF, LVar5)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Wait(3)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
EndIf
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar0, 40)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Thread
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleTubba_Anim0E)
EndThread
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
IfNotFlag(LVar5, STATUS_FLAG_SHRINK)
Call(ShakeCam, CAM_BATTLE, 0, 5, Float(3.0))
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
PlayEffect(EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0)
Wait(8)
EndIf
Label(2)
IfEq(LVarF, 10)
Return
EndIf
Call(YieldTurn)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Return
End
};

View File

@ -24,15 +24,15 @@ API_CALLABLE(N(SetupDemoPlayerMove)) {
}
EvtScript NAMESPACE = {
EVT_WAIT(3)
EVT_CALL(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_SET(LVar0, 15)
EVT_CALL(N(SetDemoBattleBeginDelay))
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(N(SetupDemoPlayerMove))
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
EVT_WAIT(10000)
EVT_RETURN
EVT_END
Wait(3)
Call(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
Call(EnableBattleStatusBar, FALSE)
Set(LVar0, 15)
Call(N(SetDemoBattleBeginDelay))
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(N(SetupDemoPlayerMove))
Call(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
Wait(10000)
Return
End
};

View File

@ -22,19 +22,19 @@ API_CALLABLE(N(SetupDemoPlayerMove)) {
}
EvtScript NAMESPACE = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 1)
EVT_WAIT(3)
EVT_CALL(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(N(SetupDemoPlayerMove))
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
EVT_WAIT(130)
EVT_LOOP(30)
EVT_CALL(SetCommandAutoSuccess, FALSE)
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 1)
Wait(3)
Call(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
Call(EnableBattleStatusBar, FALSE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(N(SetupDemoPlayerMove))
Call(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
Wait(130)
Loop(30)
Call(SetCommandAutoSuccess, FALSE)
Wait(1)
EndLoop
Return
End
};

View File

@ -22,15 +22,15 @@ API_CALLABLE(N(SetupDemoPlayerMove)) {
}
EvtScript NAMESPACE = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 1)
EVT_WAIT(3)
EVT_CALL(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(N(SetupDemoPlayerMove))
EVT_CALL(SetBattleState, BATTLE_STATE_PARTNER_MOVE)
EVT_WAIT(90)
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 1)
Wait(3)
Call(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
Call(EnableBattleStatusBar, FALSE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(N(SetupDemoPlayerMove))
Call(SetBattleState, BATTLE_STATE_PARTNER_MOVE)
Wait(90)
Return
End
};

View File

@ -27,14 +27,14 @@ API_CALLABLE(N(SetupDemoPlayerMove)) {
}
EvtScript NAMESPACE = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 1)
EVT_WAIT(3)
EVT_CALL(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(N(SetupDemoPlayerMove))
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 1)
Wait(3)
Call(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
Call(EnableBattleStatusBar, FALSE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(N(SetupDemoPlayerMove))
Call(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
Return
End
};

View File

@ -5,15 +5,15 @@
#include "common/SetDemoBattleBeginDelay.inc.c"
EvtScript NAMESPACE = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 1)
EVT_WAIT(3)
EVT_CALL(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_SET(LVar0, 5)
EVT_CALL(N(SetDemoBattleBeginDelay))
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(SetBattleState, BATTLE_STATE_NEXT_ENEMY)
EVT_RETURN
EVT_END
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 1)
Wait(3)
Call(SetCamViewport, CAM_BATTLE, 29, 20, 262, 177)
Call(EnableBattleStatusBar, FALSE)
Set(LVar0, 5)
Call(N(SetDemoBattleBeginDelay))
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(SetBattleState, BATTLE_STATE_NEXT_ENEMY)
Return
End
};

File diff suppressed because it is too large Load Diff

View File

@ -163,12 +163,12 @@ ActorPartBlueprint N(HoleParts)[] = {
};
EvtScript N(EVS_Hole_Init) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IN_Hole_Small, LVar0)
EVT_IF_EQ(LVar0, 1)
EVT_CALL(SetPartScale, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
EVT_END_IF
EVT_RETURN
EVT_END
Call(GetActorVar, ACTOR_SELF, AVAR_IN_Hole_Small, LVar0)
IfEq(LVar0, 1)
Call(SetPartScale, ACTOR_SELF, PRT_MAIN, Float(0.4), Float(0.4), Float(0.4))
EndIf
Return
End
};
ActorBlueprint N(hole) = {
@ -205,242 +205,242 @@ Formation N(SmallHoleFormation) = {
};
EvtScript N(EVS_CreateEmptyHole) = {
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_CALL(SummonEnemy, EVT_PTR(N(SmallHoleFormation)), FALSE)
EVT_ELSE
EVT_CALL(SummonEnemy, EVT_PTR(N(HoleFormation)), FALSE)
EVT_END_IF
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
EVT_SUB(LVar3, 1)
EVT_CALL(SetActorPos, LVar0, LVar1, LVar2, LVar3)
EVT_RETURN
EVT_END
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfFlag(LVar0, STATUS_FLAG_SHRINK)
Call(SummonEnemy, Ref(N(SmallHoleFormation)), FALSE)
Else
Call(SummonEnemy, Ref(N(HoleFormation)), FALSE)
EndIf
Call(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
Sub(LVar3, 1)
Call(SetActorPos, LVar0, LVar1, LVar2, LVar3)
Return
End
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_SHADOW, TRUE)
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_SHADOW, TRUE)
Return
End
};
EvtScript N(EVS_Idle) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(GetLastElement, LVarE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_IF_FLAG(LVarE, DAMAGE_TYPE_SMASH)
EVT_CHILD_THREAD
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
EVT_END_CHILD_THREAD
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim06)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
EVT_WAIT(10)
EVT_ELSE
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim05)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_IF
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim0A)
EVT_SET_CONST(LVar2, ANIM_MontyMole_Dark_Anim0B)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim0A)
EVT_SET_CONST(LVar2, ANIM_MontyMole_Dark_Anim0B)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_EXEC_WAIT(N(EVS_CreateEmptyHole))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim0C)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CALL(GetLastElement, LVar0)
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_SMASH)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim11)
EVT_WAIT(80)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(1.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim10)
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim14)
EVT_WAIT(20)
EVT_ELSE
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim01)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_END_IF
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim05)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
EVT_WAIT(10)
EVT_EXEC_WAIT(N(EVS_CreateEmptyHole))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim09)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
EVT_WAIT(8)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
EVT_WAIT(5)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
EVT_WAIT(8)
EVT_CASE_EQ(EVENT_SCARE_AWAY)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
EVT_WAIT(15)
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_TARGET_ONLY | ACTOR_FLAG_NO_DMG_APPLY, TRUE)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(EmptyHoleAnims)))
EVT_RETURN
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_MontyMole_Dark_Anim05)
EVT_EXEC_WAIT(EVS_Enemy_AirLift)
EVT_CASE_EQ(EVENT_BLOW_AWAY)
EVT_EXEC_WAIT(N(EVS_CreateEmptyHole))
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAGS_IMMOBILIZED)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -5, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim19)
EVT_ELSE
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -9, 0)
EVT_ELSE
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -23, 0)
EVT_END_IF
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim09)
EVT_END_IF
EVT_WAIT(1000)
EVT_RETURN
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim11)
EVT_WAIT(40)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(1.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim10)
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim14)
EVT_WAIT(20)
EVT_CASE_EQ(EVENT_UP_AND_AWAY)
EVT_EXEC_WAIT(N(EVS_CreateEmptyHole))
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(GetLastElement, LVarE)
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
IfFlag(LVarE, DAMAGE_TYPE_SMASH)
ChildThread
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
EndChildThread
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim06)
ExecWait(EVS_Enemy_Hit)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
Wait(10)
Else
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim05)
ExecWait(EVS_Enemy_Hit)
EndIf
EndCaseGroup
CaseEq(EVENT_BURN_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim0A)
SetConst(LVar2, ANIM_MontyMole_Dark_Anim0B)
ExecWait(EVS_Enemy_BurnHit)
CaseEq(EVENT_BURN_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim0A)
SetConst(LVar2, ANIM_MontyMole_Dark_Anim0B)
ExecWait(EVS_Enemy_BurnHit)
ExecWait(N(EVS_CreateEmptyHole))
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim0C)
ExecWait(EVS_Enemy_Death)
Return
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
Call(GetLastElement, LVar0)
IfFlag(LVar0, DAMAGE_TYPE_SMASH)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(2.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim11)
Wait(80)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim10)
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim14)
Wait(20)
Else
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim01)
ExecWait(EVS_Enemy_NoDamageHit)
EndIf
EndCaseGroup
CaseEq(EVENT_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim05)
ExecWait(EVS_Enemy_Hit)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
Wait(10)
ExecWait(N(EVS_CreateEmptyHole))
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim09)
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_RECOVER_STATUS)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
Wait(8)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
Wait(5)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
Wait(8)
CaseEq(EVENT_SCARE_AWAY)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim06)
Wait(15)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim07)
Wait(15)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim08)
Wait(15)
Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_TARGET_ONLY | ACTOR_FLAG_NO_DMG_APPLY, TRUE)
Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(EmptyHoleAnims)))
Return
CaseEq(EVENT_BEGIN_AIR_LIFT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_MontyMole_Dark_Anim05)
ExecWait(EVS_Enemy_AirLift)
CaseEq(EVENT_BLOW_AWAY)
ExecWait(N(EVS_CreateEmptyHole))
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfFlag(LVar0, STATUS_FLAGS_IMMOBILIZED)
Call(SetActorDispOffset, ACTOR_SELF, 0, -5, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim19)
Else
IfFlag(LVar0, STATUS_FLAG_SHRINK)
Call(SetActorDispOffset, ACTOR_SELF, 0, -9, 0)
Else
Call(SetActorDispOffset, ACTOR_SELF, 0, -23, 0)
EndIf
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim09)
EndIf
Wait(1000)
Return
CaseEq(EVENT_AIR_LIFT_FAILED)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(2.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim11)
Wait(40)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim10)
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim14)
Wait(20)
CaseEq(EVENT_UP_AND_AWAY)
ExecWait(N(EVS_CreateEmptyHole))
CaseDefault
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetBattlePhase, LVar0)
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 1)
EVT_END_IF
EVT_CHILD_THREAD
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
EVT_WAIT(20)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
EVT_END_CHILD_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim04)
EVT_WAIT(37)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar1, 20)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
EVT_CALL(SetPartScale, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
EVT_ELSE
EVT_CALL(SetPartScale, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_END_IF
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, PRT_ROCK, SOUND_MOLE_THROW)
EVT_CALL(SetPartSounds, ACTOR_SELF, PRT_ROCK, ACTOR_SOUND_FLY, SOUND_NONE, SOUND_NONE)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 3, BS_FLAGS1_TRIGGER_EVENTS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 100)
EVT_SET(LVar1, -5)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(12.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(0.1))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_ROCK, ANIM_MontyMole_Dark_Anim0F)
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 30, EASING_LINEAR)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_CALL(YieldTurn)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(12.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(0.1))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_ROCK, ANIM_MontyMole_Dark_Anim0F)
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 20, EASING_LINEAR)
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_TRIGGER_EVENTS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 55)
EVT_SET(LVar1, 0)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(6.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 25, EASING_LINEAR)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, EVT_FLOAT(4.0))
EVT_SUB(LVar0, 20)
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 21, EASING_LINEAR)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetBattlePhase, LVar0)
IfEq(LVar0, PHASE_FIRST_STRIKE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(MoveBattleCamOver, 1)
EndIf
ChildThread
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
Wait(20)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
EndChildThread
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_MontyMole_Dark_Anim04)
Wait(37)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar1, 20)
Call(SetPartPos, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2)
Wait(1)
Call(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, FALSE)
Call(GetStatusFlags, ACTOR_SELF, LVar0)
IfFlag(LVar0, STATUS_FLAG_SHRINK)
Call(SetPartScale, ACTOR_SELF, PRT_ROCK, Float(0.4), Float(0.4), Float(0.4))
Else
Call(SetPartScale, ACTOR_SELF, PRT_ROCK, Float(1.0), Float(1.0), Float(1.0))
EndIf
Call(PlaySoundAtPart, ACTOR_SELF, PRT_ROCK, SOUND_MOLE_THROW)
Call(SetPartSounds, ACTOR_SELF, PRT_ROCK, ACTOR_SOUND_FLY, SOUND_NONE, SOUND_NONE)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 3, BS_FLAGS1_TRIGGER_EVENTS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Set(LVarA, LVar0)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 100)
Set(LVar1, -5)
Call(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, Float(12.0))
Call(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, Float(0.1))
Call(SetAnimation, ACTOR_SELF, PRT_ROCK, ANIM_MontyMole_Dark_Anim0F)
Call(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 30, EASING_LINEAR)
Call(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, TRUE)
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
Call(YieldTurn)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
EndCaseGroup
EndSwitch
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, Float(12.0))
Call(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, Float(0.1))
Call(SetAnimation, ACTOR_SELF, PRT_ROCK, ANIM_MontyMole_Dark_Anim0F)
Call(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 20, EASING_LINEAR)
Wait(2)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_TRIGGER_EVENTS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
Sub(LVar0, 55)
Set(LVar1, 0)
Call(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, Float(6.0))
Call(SetPartJumpGravity, ACTOR_SELF, PRT_ROCK, Float(0.1))
Call(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 25, EASING_LINEAR)
Call(SetPartMoveSpeed, ACTOR_SELF, PRT_ROCK, Float(4.0))
Sub(LVar0, 20)
Call(FlyPartTo, ACTOR_SELF, PRT_ROCK, LVar0, LVar1, LVar2, 0, 21, EASING_LINEAR)
Call(SetPartFlagBits, ACTOR_SELF, PRT_ROCK, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EndCaseGroup
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};

View File

@ -116,272 +116,272 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Return
End
};
EvtScript N(EVS_Idle) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_ReturnHome) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(7.0))
EVT_CALL(FlyToGoal, ACTOR_SELF, 0, 0, EASING_SIN_OUT)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Idle)
EVT_RETURN
EVT_END
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
Call(SetGoalToHome, ACTOR_SELF)
Call(SetActorSpeed, ACTOR_SELF, Float(7.0))
Call(FlyToGoal, ACTOR_SELF, 0, 0, EASING_SIN_OUT)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Idle)
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_BurnHurt)
EVT_SET_CONST(LVar2, ANIM_BattleLakilester_BurnStill)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_BurnHurt)
EVT_SET_CONST(LVar2, ANIM_BattleLakilester_BurnStill)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_BurnStill)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Dead)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Dead)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Idle)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_WAIT(10)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Dead)
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CALL(SetActorPos, ACTOR_SELF, 20, 0, 0)
EVT_CALL(HPBarToCurrent, ACTOR_SELF)
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Idle)
EVT_EXEC_WAIT(EVS_Enemy_Recover)
EVT_CASE_EQ(EVENT_SCARE_AWAY)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Run)
EVT_SET_CONST(LVar2, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_ScareAway)
EVT_RETURN
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_AirLift)
EVT_CASE_EQ(EVENT_BLOW_AWAY)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_BlowAway)
EVT_RETURN
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_Hit)
EndCaseGroup
CaseEq(EVENT_BURN_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_BurnHurt)
SetConst(LVar2, ANIM_BattleLakilester_BurnStill)
ExecWait(EVS_Enemy_BurnHit)
CaseEq(EVENT_BURN_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_BurnHurt)
SetConst(LVar2, ANIM_BattleLakilester_BurnStill)
ExecWait(EVS_Enemy_BurnHit)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_BurnStill)
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_SPIN_SMASH_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_SpinSmashHit)
CaseEq(EVENT_SPIN_SMASH_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_SpinSmashHit)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Dead)
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_SHOCK_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_ShockHit)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_Knockback)
ExecWait(N(EVS_ReturnHome))
CaseEq(EVENT_SHOCK_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_ShockHit)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Dead)
ExecWait(EVS_Enemy_Death)
Return
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
CaseOrEq(EVENT_AIR_LIFT_FAILED)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Idle)
ExecWait(EVS_Enemy_NoDamageHit)
EndCaseGroup
CaseEq(EVENT_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_Hit)
Wait(10)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Dead)
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_BEGIN_FIRST_STRIKE)
Call(SetActorPos, ACTOR_SELF, 20, 0, 0)
Call(HPBarToCurrent, ACTOR_SELF)
CaseEq(EVENT_END_FIRST_STRIKE)
ExecWait(N(EVS_ReturnHome))
Call(HPBarToHome, ACTOR_SELF)
CaseEq(EVENT_RECOVER_STATUS)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Idle)
ExecWait(EVS_Enemy_Recover)
CaseEq(EVENT_SCARE_AWAY)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Run)
SetConst(LVar2, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_ScareAway)
Return
CaseEq(EVENT_BEGIN_AIR_LIFT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_AirLift)
CaseEq(EVENT_BLOW_AWAY)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleLakilester_Hurt)
ExecWait(EVS_Enemy_BlowAway)
Return
CaseDefault
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_Attack_SpinyToss) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetGoalPos, ACTOR_SELF, 20, 30, LVar2)
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, EASING_COS_IN_OUT)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Idle)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
EVT_ADD(LVar0, -1)
EVT_ADD(LVar1, 4)
EVT_ADD(LVar2, 2)
EVT_CALL(SetPartScale, ACTOR_SELF, PRT_SPINY_BALL, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
EVT_ELSE
EVT_ADD(LVar0, -3)
EVT_ADD(LVar1, 10)
EVT_ADD(LVar2, 5)
EVT_CALL(SetPartScale, ACTOR_SELF, PRT_SPINY_BALL, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_END_IF
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_Spiny)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_LiftSpiny)
EVT_LOOP(4)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
EVT_ADDF(LVar1, EVT_FLOAT(2.4))
EVT_ELSE
EVT_ADD(LVar1, 6)
EVT_END_IF
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
EVT_ADD(LVar0, -3)
EVT_ADD(LVar1, 16)
EVT_ADD(LVar2, 2)
EVT_SETF(LVar3, EVT_FLOAT(0.4))
EVT_ELSE
EVT_ADD(LVar0, -8)
EVT_ADD(LVar1, 40)
EVT_ADD(LVar2, 5)
EVT_SETF(LVar3, EVT_FLOAT(1.0))
EVT_END_IF
EVT_PLAY_EFFECT(EFFECT_ENERGY_IN_OUT, 0, LVar0, LVar1, LVar2, LVar3, 30, 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPIKE_SUMMON_SPINY)
EVT_THREAD
EVT_LOOP(15)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 1, 0, 0)
EVT_CALL(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, 1, 0, 0)
EVT_WAIT(1)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, -1, 0, 0)
EVT_CALL(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, -1, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, 0, 0, 0)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_WAIT(10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_HoldSpiny)
EVT_WAIT(10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_StrainHoldSpiny)
EVT_WAIT(10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_ThrowSpiny)
EVT_WAIT(3)
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, PRT_SPINY_BALL, SOUND_SPIKE_THROW_SPINY)
EVT_CALL(SetPartSounds, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_SOUND_JUMP, SOUND_NONE, SOUND_NONE)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
EVT_SET(LVarA, LVar0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_SpinySpin)
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_SPINY_BALL, EVT_FLOAT(1.5))
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(RandInt, 100, LVar3)
EVT_SUB(LVar3, 50)
EVT_ADD(LVar0, LVar3)
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 20, TRUE)
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
EVT_THREAD
EVT_ADD(LVar0, -50)
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 15, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_END_THREAD
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_WAIT(15)
EVT_CALL(YieldTurn)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_SpinySpin)
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_SPINY_BALL, EVT_FLOAT(1.5))
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2, 20, TRUE)
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
EVT_THREAD
EVT_ADD(LVar0, -50)
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 15, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_END_THREAD
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_SPINY_TOSS, BS_FLAGS1_TRIGGER_EVENTS)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
EVT_CALL(YieldTurn)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(SetGoalPos, ACTOR_SELF, 20, 30, LVar2)
Call(FlyToGoal, ACTOR_SELF, 30, 0, EASING_COS_IN_OUT)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Idle)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(GetStatusFlags, ACTOR_SELF, LVarA)
IfFlag(LVarA, STATUS_FLAG_SHRINK)
Add(LVar0, -1)
Add(LVar1, 4)
Add(LVar2, 2)
Call(SetPartScale, ACTOR_SELF, PRT_SPINY_BALL, Float(0.4), Float(0.4), Float(0.4))
Else
Add(LVar0, -3)
Add(LVar1, 10)
Add(LVar2, 5)
Call(SetPartScale, ACTOR_SELF, PRT_SPINY_BALL, Float(1.0), Float(1.0), Float(1.0))
EndIf
Call(SetPartPos, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2)
Wait(1)
Call(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_Spiny)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_LiftSpiny)
Loop(4)
Call(GetStatusFlags, ACTOR_SELF, LVarA)
IfFlag(LVarA, STATUS_FLAG_SHRINK)
AddF(LVar1, Float(2.4))
Else
Add(LVar1, 6)
EndIf
Call(SetPartPos, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2)
Wait(1)
EndLoop
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(GetStatusFlags, ACTOR_SELF, LVarA)
IfFlag(LVarA, STATUS_FLAG_SHRINK)
Add(LVar0, -3)
Add(LVar1, 16)
Add(LVar2, 2)
SetF(LVar3, Float(0.4))
Else
Add(LVar0, -8)
Add(LVar1, 40)
Add(LVar2, 5)
SetF(LVar3, Float(1.0))
EndIf
PlayEffect(EFFECT_ENERGY_IN_OUT, 0, LVar0, LVar1, LVar2, LVar3, 30, 0)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_SPIKE_SUMMON_SPINY)
Thread
Loop(15)
Call(SetActorDispOffset, ACTOR_SELF, 1, 0, 0)
Call(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, 1, 0, 0)
Wait(1)
Call(SetActorDispOffset, ACTOR_SELF, -1, 0, 0)
Call(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, -1, 0, 0)
Wait(1)
EndLoop
Call(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
Call(SetPartDispOffset, ACTOR_SELF, PRT_SPINY_BALL, 0, 0, 0)
EndThread
Call(SetGoalToTarget, ACTOR_SELF)
Wait(10)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_HoldSpiny)
Wait(10)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_StrainHoldSpiny)
Wait(10)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_ThrowSpiny)
Wait(3)
Call(PlaySoundAtPart, ACTOR_SELF, PRT_SPINY_BALL, SOUND_SPIKE_THROW_SPINY)
Call(SetPartSounds, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_SOUND_JUMP, SOUND_NONE, SOUND_NONE)
Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_MISS)
CaseOrEq(HIT_RESULT_LUCKY)
Set(LVarA, LVar0)
Call(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_SpinySpin)
Call(SetPartJumpGravity, ACTOR_SELF, PRT_SPINY_BALL, Float(1.5))
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(RandInt, 100, LVar3)
Sub(LVar3, 50)
Add(LVar0, LVar3)
Call(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 20, TRUE)
Call(ResetAllActorSounds, ACTOR_SELF)
Thread
Add(LVar0, -50)
Call(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 15, TRUE)
Call(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EndThread
IfEq(LVarA, HIT_RESULT_LUCKY)
Call(EnemyTestTarget, ACTOR_SELF, LVarA, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EndIf
Wait(15)
Call(YieldTurn)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
Call(SetActorYaw, ACTOR_SELF, 180)
ExecWait(N(EVS_ReturnHome))
Call(SetActorYaw, ACTOR_SELF, 0)
Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
EndCaseGroup
EndSwitch
Call(SetAnimation, ACTOR_SELF, PRT_SPINY_BALL, ANIM_BattleLakilester_SpinySpin)
Call(SetPartJumpGravity, ACTOR_SELF, PRT_SPINY_BALL, Float(1.5))
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, LVar1, LVar2, 20, TRUE)
Call(ResetAllActorSounds, ACTOR_SELF)
Thread
Add(LVar0, -50)
Call(JumpPartTo, ACTOR_SELF, PRT_SPINY_BALL, LVar0, 0, LVar2, 15, TRUE)
Call(SetPartFlagBits, ACTOR_SELF, PRT_SPINY_BALL, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EndThread
Wait(2)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_SPINY_TOSS, BS_FLAGS1_TRIGGER_EVENTS)
Switch(LVar0)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(YieldTurn)
ExecWait(N(EVS_ReturnHome))
EndCaseGroup
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_EXEC_WAIT(N(EVS_Attack_SpinyToss))
EVT_RETURN
EVT_END
ExecWait(N(EVS_Attack_SpinyToss))
Return
End
};

View File

@ -140,262 +140,262 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IN_IsLarge, LVar0)
EVT_IF_FALSE(LVar0)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -1, -9)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_TARGET, -1, -9)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -1, 9)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_TARGET, -1, -41)
EVT_CALL(SetActorSize, ACTOR_SELF, 20, 25)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(SmallAnims)))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TuffPuff_Anim02)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsLarge, FALSE)
EVT_ELSE
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -8, -13)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_TARGET, -8, -13)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 1, 14)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_TARGET, 1, -36)
EVT_CALL(SetActorSize, ACTOR_SELF, 28, 35)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(LargeAnims)))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TuffPuff_Anim03)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsLarge, TRUE)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_WobbleMode, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ScaleX, 100)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ScaleY, 100)
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(BindHandlePhase, ACTOR_SELF, Ref(N(EVS_HandlePhase)))
Call(GetActorVar, ACTOR_SELF, AVAR_IN_IsLarge, LVar0)
IfFalse(LVar0)
Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -1, -9)
Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_TARGET, -1, -9)
Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -1, 9)
Call(SetTargetOffset, ACTOR_SELF, PRT_TARGET, -1, -41)
Call(SetActorSize, ACTOR_SELF, 20, 25)
Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(SmallAnims)))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TuffPuff_Anim02)
Call(SetActorVar, ACTOR_SELF, AVAR_IsLarge, FALSE)
Else
Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -8, -13)
Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_TARGET, -8, -13)
Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 1, 14)
Call(SetTargetOffset, ACTOR_SELF, PRT_TARGET, 1, -36)
Call(SetActorSize, ACTOR_SELF, 28, 35)
Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(LargeAnims)))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TuffPuff_Anim03)
Call(SetActorVar, ACTOR_SELF, AVAR_IsLarge, TRUE)
EndIf
Call(SetActorVar, ACTOR_SELF, AVAR_WobbleMode, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_ScaleX, 100)
Call(SetActorVar, ACTOR_SELF, AVAR_ScaleY, 100)
Return
End
};
EvtScript N(EVS_HandlePhase) = {
EVT_RETURN
EVT_END
Return
End
};
#include "common/CosInterpMinMax.inc.c"
EvtScript N(EVS_Idle) = {
EVT_SET(LVarF, 0)
EVT_LOOP(0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_WobbleMode, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_EQ(0)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar0, EVT_FLOAT(0.97), EVT_FLOAT(1.03), 15, 0, 0)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar1, EVT_FLOAT(1.03), EVT_FLOAT(0.97), 15, 0, 0)
EVT_ADD(LVarF, 1)
EVT_CASE_EQ(1)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar0, EVT_FLOAT(0.95), EVT_FLOAT(1.05), 15, 0, 0)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar1, EVT_FLOAT(1.05), EVT_FLOAT(0.95), 15, 0, 0)
EVT_ADD(LVarF, 3)
EVT_CASE_EQ(2)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar0, EVT_FLOAT(0.9), EVT_FLOAT(1.1), 15, 0, 0)
EVT_CALL(N(CosInterpMinMax), LVarF, LVar1, EVT_FLOAT(1.1), EVT_FLOAT(0.9), 15, 0, 0)
EVT_ADD(LVarF, 5)
EVT_END_SWITCH
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ScaleX, LVar2)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ScaleY, LVar3)
EVT_DIVF(LVar2, EVT_FLOAT(100.0))
EVT_DIVF(LVar3, EVT_FLOAT(100.0))
EVT_MULF(LVar1, LVar2)
EVT_MULF(LVar0, LVar3)
EVT_CALL(SetActorScale, ACTOR_SELF, LVar1, LVar0, EVT_FLOAT(1.0))
EVT_IF_GE(LVarF, 30)
EVT_SET(LVarF, 0)
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
Set(LVarF, 0)
Loop(0)
Call(GetActorVar, ACTOR_SELF, AVAR_WobbleMode, LVarA)
Switch(LVarA)
CaseEq(0)
Call(N(CosInterpMinMax), LVarF, LVar0, Float(0.97), Float(1.03), 15, 0, 0)
Call(N(CosInterpMinMax), LVarF, LVar1, Float(1.03), Float(0.97), 15, 0, 0)
Add(LVarF, 1)
CaseEq(1)
Call(N(CosInterpMinMax), LVarF, LVar0, Float(0.95), Float(1.05), 15, 0, 0)
Call(N(CosInterpMinMax), LVarF, LVar1, Float(1.05), Float(0.95), 15, 0, 0)
Add(LVarF, 3)
CaseEq(2)
Call(N(CosInterpMinMax), LVarF, LVar0, Float(0.9), Float(1.1), 15, 0, 0)
Call(N(CosInterpMinMax), LVarF, LVar1, Float(1.1), Float(0.9), 15, 0, 0)
Add(LVarF, 5)
EndSwitch
Call(GetActorVar, ACTOR_SELF, AVAR_ScaleX, LVar2)
Call(GetActorVar, ACTOR_SELF, AVAR_ScaleY, LVar3)
DivF(LVar2, Float(100.0))
DivF(LVar3, Float(100.0))
MulF(LVar1, LVar2)
MulF(LVar0, LVar3)
Call(SetActorScale, ACTOR_SELF, LVar1, LVar0, Float(1.0))
IfGe(LVarF, 30)
Set(LVarF, 0)
EndIf
Wait(1)
EndLoop
Return
End
};
EvtScript N(onDeath) = {
EVT_CALL(ActorExists, ACTOR_HUFF_N_PUFF, LVar0)
EVT_IF_FALSE(LVar0)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Index, LVar0)
EVT_CALL(GetActorVar, ACTOR_HUFF_N_PUFF, AVAR_HuffNPuff_Flags, LVar1)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 0))
EVT_CASE_EQ(1)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 1))
EVT_CASE_EQ(2)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 2))
EVT_CASE_EQ(3)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 3))
EVT_CASE_EQ(4)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 4))
EVT_CASE_EQ(5)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 5))
EVT_CASE_EQ(6)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 6))
EVT_CASE_EQ(7)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 7))
EVT_CASE_EQ(8)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 8))
EVT_CASE_EQ(9)
EVT_BITWISE_AND_CONST(LVar1, ~(1 << 9))
EVT_END_SWITCH
EVT_CALL(SetActorVar, ACTOR_HUFF_N_PUFF, AVAR_WobbleMode, LVar1)
EVT_RETURN
EVT_END
Call(ActorExists, ACTOR_HUFF_N_PUFF, LVar0)
IfFalse(LVar0)
Return
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_Index, LVar0)
Call(GetActorVar, ACTOR_HUFF_N_PUFF, AVAR_HuffNPuff_Flags, LVar1)
Switch(LVar0)
CaseEq(0)
BitwiseAndConst(LVar1, ~(1 << 0))
CaseEq(1)
BitwiseAndConst(LVar1, ~(1 << 1))
CaseEq(2)
BitwiseAndConst(LVar1, ~(1 << 2))
CaseEq(3)
BitwiseAndConst(LVar1, ~(1 << 3))
CaseEq(4)
BitwiseAndConst(LVar1, ~(1 << 4))
CaseEq(5)
BitwiseAndConst(LVar1, ~(1 << 5))
CaseEq(6)
BitwiseAndConst(LVar1, ~(1 << 6))
CaseEq(7)
BitwiseAndConst(LVar1, ~(1 << 7))
CaseEq(8)
BitwiseAndConst(LVar1, ~(1 << 8))
CaseEq(9)
BitwiseAndConst(LVar1, ~(1 << 9))
EndSwitch
Call(SetActorVar, ACTOR_HUFF_N_PUFF, AVAR_WobbleMode, LVar1)
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(EVENT_HIT_COMBO)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0D)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_CASE_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0D)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar0, 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0E)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim10)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar2)
EVT_IF_FALSE(LVar2)
EVT_SET_CONST(LVar2, ANIM_TuffPuff_Anim0F)
EVT_ELSE
EVT_SET_CONST(LVar2, ANIM_TuffPuff_Anim11)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET(LVar0, 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0E)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim10)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar2)
EVT_IF_FALSE(LVar2)
EVT_SET_CONST(LVar2, ANIM_TuffPuff_Anim0F)
EVT_ELSE
EVT_SET_CONST(LVar2, ANIM_TuffPuff_Anim11)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_EXEC_WAIT(N(onDeath))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0F)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim11)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_ZERO_DAMAGE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim02)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim03)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_CASE_EQ(EVENT_IMMUNE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim02)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim03)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0D)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_EXEC_WAIT(N(onDeath))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0D)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Death)
EVT_RETURN
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim02)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim03)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_Recover)
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim06)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim07)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_AirLift)
EVT_CASE_EQ(EVENT_BLOW_AWAY)
EVT_EXEC_WAIT(N(onDeath))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0C)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim0D)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_BlowAway)
EVT_RETURN
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
EVT_IF_FALSE(LVar1)
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim02)
EVT_ELSE
EVT_SET_CONST(LVar1, ANIM_TuffPuff_Anim03)
EVT_END_IF
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseEq(EVENT_HIT_COMBO)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0C)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim0D)
EndIf
ExecWait(EVS_Enemy_Hit)
CaseEq(EVENT_HIT)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0C)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim0D)
EndIf
ExecWait(EVS_Enemy_Hit)
CaseEq(EVENT_BURN_HIT)
Set(LVar0, 1)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0E)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim10)
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar2)
IfFalse(LVar2)
SetConst(LVar2, ANIM_TuffPuff_Anim0F)
Else
SetConst(LVar2, ANIM_TuffPuff_Anim11)
EndIf
ExecWait(EVS_Enemy_BurnHit)
CaseEq(EVENT_BURN_DEATH)
Set(LVar0, 1)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0E)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim10)
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar2)
IfFalse(LVar2)
SetConst(LVar2, ANIM_TuffPuff_Anim0F)
Else
SetConst(LVar2, ANIM_TuffPuff_Anim11)
EndIf
ExecWait(EVS_Enemy_BurnHit)
ExecWait(N(onDeath))
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0F)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim11)
EndIf
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_ZERO_DAMAGE)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim02)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim03)
EndIf
ExecWait(EVS_Enemy_NoDamageHit)
CaseEq(EVENT_IMMUNE)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim02)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim03)
EndIf
ExecWait(EVS_Enemy_NoDamageHit)
CaseEq(EVENT_DEATH)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0C)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim0D)
EndIf
ExecWait(EVS_Enemy_Hit)
ExecWait(N(onDeath))
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0C)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim0D)
EndIf
ExecWait(EVS_Enemy_Death)
Return
CaseEq(EVENT_RECOVER_STATUS)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim02)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim03)
EndIf
ExecWait(EVS_Enemy_Recover)
CaseEq(EVENT_BEGIN_AIR_LIFT)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim06)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim07)
EndIf
ExecWait(EVS_Enemy_AirLift)
CaseEq(EVENT_BLOW_AWAY)
ExecWait(N(onDeath))
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim0C)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim0D)
EndIf
ExecWait(EVS_Enemy_BlowAway)
Return
CaseEq(EVENT_AIR_LIFT_FAILED)
SetConst(LVar0, PRT_MAIN)
Call(GetActorVar, ACTOR_SELF, AVAR_IsLarge, LVar1)
IfFalse(LVar1)
SetConst(LVar1, ANIM_TuffPuff_Anim02)
Else
SetConst(LVar1, ANIM_TuffPuff_Anim03)
EndIf
ExecWait(EVS_Enemy_NoDamageHit)
CaseDefault
EndSwitch
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
// do nothing
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};

View File

@ -102,183 +102,183 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_FirstTurn, TRUE)
EVT_EXEC(N(EVS_ManageTutorial))
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(SetActorVar, ACTOR_SELF, AVAR_FirstTurn, TRUE)
Exec(N(EVS_ManageTutorial))
Return
End
};
EvtScript N(EVS_Idle) = {
EVT_RETURN
EVT_END
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_THREAD
EVT_CALL(FreezeBattleState, TRUE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(EVENT_HIT)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_FirstTurn, LVar0)
EVT_IF_EQ(LVar0, FALSE)
EVT_CALL(RandInt, 2, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_CALL(ActorSpeak, MSG_HOS_002D, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_HurtStill, ANIM_BattleGoombario_Walk)
EVT_CASE_EQ(1)
EVT_CALL(ActorSpeak, MSG_HOS_002E, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_HurtStill, ANIM_BattleGoombario_Walk)
EVT_CASE_EQ(2)
EVT_END_SWITCH
EVT_END_IF
EVT_END_SWITCH
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleGoombario_HurtStill)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_END_CASE_GROUP
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleGoombario_Idle)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_30)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleGoombario_HurtStill)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_WAIT(1000)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Thread
Call(FreezeBattleState, TRUE)
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseEq(EVENT_HIT)
Call(GetActorVar, ACTOR_SELF, AVAR_FirstTurn, LVar0)
IfEq(LVar0, FALSE)
Call(RandInt, 2, LVar0)
Switch(LVar0)
CaseEq(0)
Call(ActorSpeak, MSG_HOS_002D, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_HurtStill, ANIM_BattleGoombario_Walk)
CaseEq(1)
Call(ActorSpeak, MSG_HOS_002E, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_HurtStill, ANIM_BattleGoombario_Walk)
CaseEq(2)
EndSwitch
EndIf
EndSwitch
Call(FreezeBattleState, FALSE)
EndThread
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleGoombario_HurtStill)
ExecWait(EVS_Enemy_Hit)
EndCaseGroup
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleGoombario_Idle)
ExecWait(EVS_Enemy_NoDamageHit)
EndCaseGroup
CaseEq(EVENT_30)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleGoombario_HurtStill)
ExecWait(EVS_Enemy_Hit)
Wait(1000)
CaseDefault
EndSwitch
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 400)
EVT_CALL(SetBattleCamOffsetZ, 40)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Run)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -1, 0)
EVT_WAIT(1)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -2, 0)
EVT_WAIT(5)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 10, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_66)
EVT_CALL(SetBattleCamZoom, 400)
EVT_CALL(SetBattleCamOffsetZ, 40)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(AddGoalPos, ACTOR_SELF, -10, 0, 0)
EVT_CALL(GetBattleFlags2, LVar0)
EVT_IF_FLAG(LVar0, BS_FLAGS2_DOING_JUMP_TUTORIAL)
EVT_CALL(AddGoalPos, ACTOR_SELF, 5, 10, 0)
EVT_END_IF
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.1))
EVT_THREAD
EVT_WAIT(4)
EVT_SET(LVar0, 0)
EVT_LOOP(4)
EVT_ADD(LVar0, 45)
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(LoadActionCommand, ACTION_COMMAND_JUMP)
EVT_CALL(action_command_jump_init)
EVT_CALL(ShowActionHud, TRUE)
EVT_WAIT(10)
EVT_CALL(action_command_jump_start, 12, 3)
EVT_END_THREAD
EVT_CALL(PlaySound, SOUND_ACTOR_JUMP)
EVT_CALL(JumpToGoal, ACTOR_SELF, 22, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.1), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.3), EVT_FLOAT(0.5), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(GetActionCommandMode, LVar0)
EVT_IF_EQ(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_WAIT_INPUT)
EVT_LOOP(0)
EVT_CALL(GetActionCommandMode, LVar0)
EVT_IF_LT(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_FirstTurn, LVar0)
EVT_IF_EQ(LVar0, TRUE)
EVT_CALL(SetDamageSource, DMG_SRC_TUTORIAL_GOOMBARIO)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 1, BS_FLAGS1_TRIGGER_EVENTS)
EVT_CALL(CloseActionCommandInfo)
EVT_SET(LVarF, LVar0)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.1), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
EVT_ADD(LVar0, 30)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
EVT_ADD(LVar0, 20)
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
EVT_SUB(LVar0, 10)
EVT_CALL(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EVT_WAIT(8)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(YieldTurn)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Run)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
Call(SetBattleCamZoom, 400)
Call(SetBattleCamOffsetZ, 40)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Run)
Call(SetGoalToTarget, ACTOR_SELF)
Call(AddGoalPos, ACTOR_SELF, 50, 0, 0)
Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
Call(SetActorDispOffset, ACTOR_SELF, 0, -1, 0)
Wait(1)
Call(SetActorDispOffset, ACTOR_SELF, 0, -2, 0)
Wait(5)
Call(SetActorDispOffset, ACTOR_SELF, 0, 10, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
Call(UseBattleCamPreset, BTL_CAM_PRESET_66)
Call(SetBattleCamZoom, 400)
Call(SetBattleCamOffsetZ, 40)
Call(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
Call(BattleCamTargetActor, ACTOR_SELF)
Call(SetGoalToTarget, ACTOR_SELF)
Call(AddGoalPos, ACTOR_SELF, -10, 0, 0)
Call(GetBattleFlags2, LVar0)
IfFlag(LVar0, BS_FLAGS2_DOING_JUMP_TUTORIAL)
Call(AddGoalPos, ACTOR_SELF, 5, 10, 0)
EndIf
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.1))
Thread
Wait(4)
Set(LVar0, 0)
Loop(4)
Add(LVar0, 45)
Call(SetActorRotation, ACTOR_SELF, 0, 0, LVar0)
Wait(1)
EndLoop
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
EndThread
Thread
Call(LoadActionCommand, ACTION_COMMAND_JUMP)
Call(action_command_jump_init)
Call(ShowActionHud, TRUE)
Wait(10)
Call(action_command_jump_start, 12, 3)
EndThread
Call(PlaySound, SOUND_ACTOR_JUMP)
Call(JumpToGoal, ACTOR_SELF, 22, FALSE, TRUE, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Headbonk)
Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
Wait(1)
Call(SetActorScale, ACTOR_SELF, Float(1.3), Float(0.5), Float(1.0))
Wait(1)
Call(GetActionCommandMode, LVar0)
IfEq(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_WAIT_INPUT)
Loop(0)
Call(GetActionCommandMode, LVar0)
IfLt(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
BreakLoop
EndIf
Wait(1)
EndLoop
EndIf
Call(GetActorVar, ACTOR_SELF, AVAR_FirstTurn, LVar0)
IfEq(LVar0, TRUE)
Call(SetDamageSource, DMG_SRC_TUTORIAL_GOOMBARIO)
EndIf
Wait(2)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 1, BS_FLAGS1_TRIGGER_EVENTS)
Call(CloseActionCommandInfo)
Set(LVarF, LVar0)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
CaseOrEq(HIT_RESULT_10)
Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
Wait(1)
Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
Wait(1)
Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
Call(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Add(LVar0, 40)
Set(LVar1, 0)
Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
Add(LVar0, 30)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
Add(LVar0, 20)
Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
Sub(LVar0, 10)
Call(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
Wait(8)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(YieldTurn)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
Call(SetGoalToHome, ACTOR_SELF)
Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Run)
Call(RunToGoal, ACTOR_SELF, 0, FALSE)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleGoombario_Idle)
EndCaseGroup
EndSwitch
Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
API_CALLABLE(N(SetPartnerGoombario)) {
@ -289,258 +289,258 @@ API_CALLABLE(N(SetPartnerGoombario)) {
}
EvtScript N(EVS_ManageTutorial) = {
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_TUTORIAL_BATTLE, TRUE)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_WAIT(15)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_PARTNER, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetActorJumpGravity, ACTOR_PARTNER, EVT_FLOAT(1.0))
EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_CALL(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_PARTNER, 10, FALSE, FALSE, FALSE)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0019, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_JUMP)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MOVE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
EVT_CALL(SetGoalPos, ACTOR_PARTNER, -73, 40, 202)
EVT_CALL(FlyToGoal, ACTOR_PARTNER, 20, 20, EASING_COS_IN_OUT)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_001A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_4000, FALSE)
EVT_CALL(SetMessageBoxDuration, -1)
EVT_THREAD
EVT_LOOP(15)
EVT_CALL(SetMessageBoxDuration, 35)
EVT_WAIT(1)
EVT_END_LOOP
EVT_END_THREAD
EVT_WAIT(15)
EVT_CALL(SetGoalToHome, ACTOR_PARTNER)
EVT_CALL(FlyToGoal, ACTOR_PARTNER, 20, 20, EASING_COS_IN_OUT)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(WaitForState, BATTLE_STATE_0)
EVT_CALL(SetBattleFlagBits2, BS_FLAGS2_DOING_JUMP_TUTORIAL, TRUE)
EVT_LOOP(0)
EVT_CALL(GetActionCommandMode, LVar0)
EVT_IF_NE(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
Call(SetBattleFlagBits, BS_FLAGS1_TUTORIAL_BATTLE, TRUE)
Call(EnableBattleStatusBar, FALSE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Wait(15)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(EnableIdleScript, ACTOR_PARTNER, IDLE_SCRIPT_DISABLE)
Call(SetActorJumpGravity, ACTOR_PARTNER, Float(1.0))
Call(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Call(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2)
Call(JumpToGoal, ACTOR_PARTNER, 10, FALSE, FALSE, FALSE)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0019, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_JUMP)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(WaitForState, BATTLE_STATE_PLAYER_MOVE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(SetGoalPos, ACTOR_PARTNER, -73, 40, 202)
Call(FlyToGoal, ACTOR_PARTNER, 20, 20, EASING_COS_IN_OUT)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_001A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(SetBattleFlagBits, BS_FLAGS1_4000, FALSE)
Call(SetMessageBoxDuration, -1)
Thread
Loop(15)
Call(SetMessageBoxDuration, 35)
Wait(1)
EndLoop
EndThread
Wait(15)
Call(SetGoalToHome, ACTOR_PARTNER)
Call(FlyToGoal, ACTOR_PARTNER, 20, 20, EASING_COS_IN_OUT)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(WaitForState, BATTLE_STATE_0)
Call(SetBattleFlagBits2, BS_FLAGS2_DOING_JUMP_TUTORIAL, TRUE)
Loop(0)
Call(GetActionCommandMode, LVar0)
IfNe(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
BreakLoop
EndIf
Wait(1)
EndLoop
// 'Press [A] at exactly this moment.'
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_001B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LOOP(0)
EVT_CALL(CheckButtonDown, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(0)
EVT_CALL(CheckButtonPress, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionSuccess, 1)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_001B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Loop(0)
Call(CheckButtonDown, BUTTON_A, LVar0)
IfEq(LVar0, 0)
BreakLoop
EndIf
Wait(1)
EndLoop
Loop(0)
Call(CheckButtonPress, BUTTON_A, LVar0)
IfEq(LVar0, 1)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionSuccess, 1)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
// 'When you see "Nice" appear ...'
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_001D, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(WaitForState, BATTLE_STATE_9)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_001E, ACTOR_ENEMY0, 1, ANIM_BattleGoombario_Talk, ANIM_BattleGoombario_Idle)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(WaitForState, BATTLE_STATE_0)
EVT_LOOP(0)
EVT_CALL(GetActionCommandMode, LVar0)
EVT_IF_NE(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_001F, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LOOP(0)
EVT_CALL(CheckButtonDown, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(0)
EVT_CALL(CheckButtonPress, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionSuccess, 1)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_BLOCK)
EVT_CALL(WaitForState, BATTLE_STATE_END_TURN)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0020, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_SMASH)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MOVE)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0022, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LOOP(0)
EVT_CALL(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(0)
EVT_CALL(CheckButtonPress, BUTTON_STICK_LEFT, LVar0)
EVT_IF_EQ(LVar0, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(WaitForState, BATTLE_STATE_0)
EVT_WAIT(5)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_LOOP(0)
EVT_CALL(GetActionCommandMode, LVar0)
EVT_IF_NE(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
EVT_BREAK_LOOP
EVT_END_IF
EVT_CALL(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_BLOCK)
EVT_CALL(PauseTakeTurn, ACTOR_PLAYER)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0023, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LOOP(0)
EVT_CALL(CheckButtonPress, BUTTON_STICK_LEFT, LVar0)
EVT_IF_EQ(LVar0, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(ResumeTakeTurn, ACTOR_PLAYER)
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_LOOP(0)
EVT_CALL(GetActionQuality, LVar0)
EVT_IF_EQ(LVar0, 3)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0024, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LOOP(0)
EVT_CALL(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActionSuccess, 1)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_WAIT(15)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0025, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActorFlagBits, ACTOR_ENEMY0, ACTOR_FLAG_NO_ATTACK, TRUE)
EVT_CALL(WaitForState, BATTLE_STATE_0)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_CALL(ShowBattleChoice, MSG_Choice_001D)
EVT_CALL(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_IF_EQ(LVar0, 1)
EVT_CALL(ActorSpeak, MSG_HOS_0027, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_GOTO(100)
EVT_END_IF
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_0028, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_FirstTurn, FALSE)
EVT_CALL(SetBattleFlagBits2, BS_FLAGS2_DOING_JUMP_TUTORIAL, FALSE)
EVT_LABEL(10)
EVT_CALL(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_JUMP | BTL_MENU_ENABLED_SMASH | BTL_MENU_ENABLED_STRATEGIES)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MOVE)
EVT_CALL(GetMenuSelection, LVar0, LVar1, LVar2)
EVT_IF_EQ(LVar0, BTL_MENU_TYPE_STRATEGIES)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(GetActionResult, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(ACTION_RESULT_EARLY)
EVT_CALL(ActorSpeak, MSG_HOS_002A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CASE_EQ(ACTION_RESULT_FAIL)
EVT_CALL(ActorSpeak, MSG_HOS_002B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CASE_EQ(ACTION_RESULT_SUCCESS)
EVT_CALL(ActorSpeak, MSG_HOS_0029, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(SetEnemyHP, ACTOR_ENEMY0, 99)
EVT_CALL(SetActorFlagBits, ACTOR_ENEMY0, ACTOR_FLAG_NO_ATTACK, FALSE)
EVT_CALL(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
EVT_CALL(WaitForState, BATTLE_STATE_END_TURN)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(GetBlockResult, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(BLOCK_RESULT_EARLY)
EVT_CALL(ActorSpeak, MSG_HOS_002A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CASE_EQ(BLOCK_RESULT_FAIL)
EVT_CALL(ActorSpeak, MSG_HOS_002B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_CASE_EQ(BLOCK_RESULT_SUCCESS)
EVT_CALL(ActorSpeak, MSG_HOS_0029, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, TRUE)
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
EVT_GOTO(10)
EVT_LABEL(99)
EVT_CALL(UseIdleAnimation, ACTOR_PARTNER, FALSE)
EVT_CALL(ActorSpeak, MSG_HOS_002C, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EVT_LABEL(100)
EVT_CALL(WaitForState, BATTLE_STATE_0)
EVT_CALL(SetBattleState, BATTLE_STATE_END_TRAINING_BATTLE)
EVT_CALL(N(SetPartnerGoombario))
EVT_WAIT(10000)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_001D, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(WaitForState, BATTLE_STATE_9)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_001E, ACTOR_ENEMY0, 1, ANIM_BattleGoombario_Talk, ANIM_BattleGoombario_Idle)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(WaitForState, BATTLE_STATE_0)
Loop(0)
Call(GetActionCommandMode, LVar0)
IfNe(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_001F, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Loop(0)
Call(CheckButtonDown, BUTTON_A, LVar0)
IfEq(LVar0, 0)
BreakLoop
EndIf
Wait(1)
EndLoop
Loop(0)
Call(CheckButtonPress, BUTTON_A, LVar0)
IfEq(LVar0, 1)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionSuccess, 1)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_BLOCK)
Call(WaitForState, BATTLE_STATE_END_TURN)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0020, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_SMASH)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(WaitForState, BATTLE_STATE_PLAYER_MOVE)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0022, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Loop(0)
Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
IfEq(LVar0, 0)
BreakLoop
EndIf
Wait(1)
EndLoop
Loop(0)
Call(CheckButtonPress, BUTTON_STICK_LEFT, LVar0)
IfEq(LVar0, 1)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(WaitForState, BATTLE_STATE_0)
Wait(5)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Loop(0)
Call(GetActionCommandMode, LVar0)
IfNe(LVar0, ACTION_COMMAND_MODE_TUTORIAL)
BreakLoop
EndIf
Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
IfEq(LVar0, 0)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL_BLOCK)
Call(PauseTakeTurn, ACTOR_PLAYER)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0023, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Loop(0)
Call(CheckButtonPress, BUTTON_STICK_LEFT, LVar0)
IfEq(LVar0, 1)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(ResumeTakeTurn, ACTOR_PLAYER)
EndIf
Wait(1)
EndLoop
Loop(0)
Call(GetActionQuality, LVar0)
IfEq(LVar0, 3)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0024, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Loop(0)
Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
IfEq(LVar0, 0)
BreakLoop
EndIf
Wait(1)
EndLoop
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActionSuccess, 1)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Wait(15)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0025, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActorFlagBits, ACTOR_ENEMY0, ACTOR_FLAG_NO_ATTACK, TRUE)
Call(WaitForState, BATTLE_STATE_0)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Call(ShowBattleChoice, MSG_Choice_001D)
Call(EndActorSpeech, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
IfEq(LVar0, 1)
Call(ActorSpeak, MSG_HOS_0027, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Goto(100)
EndIf
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_0028, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetActorVar, ACTOR_SELF, AVAR_FirstTurn, FALSE)
Call(SetBattleFlagBits2, BS_FLAGS2_DOING_JUMP_TUTORIAL, FALSE)
Label(10)
Call(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_JUMP | BTL_MENU_ENABLED_SMASH | BTL_MENU_ENABLED_STRATEGIES)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_TUTORIAL)
Call(WaitForState, BATTLE_STATE_PLAYER_MOVE)
Call(GetMenuSelection, LVar0, LVar1, LVar2)
IfEq(LVar0, BTL_MENU_TYPE_STRATEGIES)
Goto(99)
EndIf
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(WaitForState, BATTLE_STATE_BEGIN_PARTNER_TURN)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(GetActionResult, LVar0)
Switch(LVar0)
CaseEq(ACTION_RESULT_EARLY)
Call(ActorSpeak, MSG_HOS_002A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
CaseEq(ACTION_RESULT_FAIL)
Call(ActorSpeak, MSG_HOS_002B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
CaseEq(ACTION_RESULT_SUCCESS)
Call(ActorSpeak, MSG_HOS_0029, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EndSwitch
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(SetEnemyHP, ACTOR_ENEMY0, 99)
Call(SetActorFlagBits, ACTOR_ENEMY0, ACTOR_FLAG_NO_ATTACK, FALSE)
Call(SetActionCommandMode, ACTION_COMMAND_MODE_LEARNED)
Call(WaitForState, BATTLE_STATE_END_TURN)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(GetBlockResult, LVar0)
Switch(LVar0)
CaseEq(BLOCK_RESULT_EARLY)
Call(ActorSpeak, MSG_HOS_002A, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
CaseEq(BLOCK_RESULT_FAIL)
Call(ActorSpeak, MSG_HOS_002B, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
CaseEq(BLOCK_RESULT_SUCCESS)
Call(ActorSpeak, MSG_HOS_0029, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
EndSwitch
Call(UseIdleAnimation, ACTOR_PARTNER, TRUE)
Call(WaitForState, BATTLE_STATE_PLAYER_MENU)
Goto(10)
Label(99)
Call(UseIdleAnimation, ACTOR_PARTNER, FALSE)
Call(ActorSpeak, MSG_HOS_002C, ACTOR_PARTNER, 1, ANIM_Twink_Talk, ANIM_Twink_Fly)
Label(100)
Call(WaitForState, BATTLE_STATE_0)
Call(SetBattleState, BATTLE_STATE_END_TRAINING_BATTLE)
Call(N(SetPartnerGoombario))
Wait(10000)
Return
End
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -119,15 +119,15 @@ ActorBlueprint NAMESPACE = {
};
EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(SetBattleFlagBits2, BS_FLAGS2_DONT_STOP_MUSIC, TRUE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Speaking, FALSE)
EVT_RETURN
EVT_END
Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
Call(BindHandlePhase, ACTOR_SELF, Ref(N(EVS_HandlePhase)))
Call(SetBattleFlagBits2, BS_FLAGS2_DONT_STOP_MUSIC, TRUE)
Call(SetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 0)
Call(SetActorVar, ACTOR_SELF, AVAR_Speaking, FALSE)
Return
End
};
s32 N(BobPhase) = 0;
@ -143,45 +143,45 @@ API_CALLABLE(N(AddFlightBobbing)) {
}
EvtScript N(EVS_Idle) = {
EVT_LOOP(0)
EVT_CALL(N(AddFlightBobbing))
EVT_WAIT(1)
EVT_END_LOOP
EVT_RETURN
EVT_END
Loop(0)
Call(N(AddFlightBobbing))
Wait(1)
EndLoop
Return
End
};
EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleKammy_Anim0D)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_EXEC_WAIT(N(EVS_CommentOnHit))
EVT_END_CASE_GROUP
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleKammy_Anim05)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_EXEC_WAIT(N(EVS_CommentOnHit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleKammy_Anim0D)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_WAIT(10)
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(GetLastEvent, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseEq(EVENT_BEGIN_FIRST_STRIKE)
CaseOrEq(EVENT_HIT_COMBO)
CaseOrEq(EVENT_HIT)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleKammy_Anim0D)
ExecWait(EVS_Enemy_Hit)
ExecWait(N(EVS_CommentOnHit))
EndCaseGroup
CaseOrEq(EVENT_ZERO_DAMAGE)
CaseOrEq(EVENT_IMMUNE)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleKammy_Anim05)
ExecWait(EVS_Enemy_NoDamageHit)
ExecWait(N(EVS_CommentOnHit))
EndCaseGroup
CaseEq(EVENT_DEATH)
SetConst(LVar0, PRT_MAIN)
SetConst(LVar1, ANIM_BattleKammy_Anim0D)
ExecWait(EVS_Enemy_Hit)
Wait(10)
ExecWait(N(EVS_Death))
Return
CaseDefault
EndSwitch
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
#include "world/common/todo/SetEntityPositionF.inc.c"
@ -263,279 +263,279 @@ API_CALLABLE(N(DropBlock)) {
}
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_WAIT(30)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim07)
EVT_WAIT(5)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_SUMMON_MAGIC)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 25)
EVT_ADD(LVar1, 40)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 0, LVar0, LVar1, LVar2, 1, 100, 0)
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 80, 95, 15)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(MoveBattleCamOver, 60)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_SUMMON_BLOCK)
EVT_SUB(LVar0, 15)
EVT_ADD(LVar1, 30)
EVT_SET(LVar3, LVar1)
EVT_ADD(LVar3, 20)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 60, 0)
EVT_WAIT(20)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 60, 0)
EVT_WAIT(10)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 60, 0)
EVT_WAIT(5)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 60, 0)
EVT_WAIT(3)
EVT_PLAY_EFFECT(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, EVT_FLOAT(1.0), 60, 0)
EVT_CALL(MakeEntity, EVT_PTR(Entity_Hammer1Block), LVar0, LVar1, LVar2, 0, MAKE_ENTITY_END)
EVT_SET(LVar9, LVar0)
EVT_CALL(N(BlockAppear))
EVT_THREAD
EVT_CALL(N(FadeInScreenBlur))
EVT_END_THREAD
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_RAISE_OBJECT)
EVT_CALL(N(GetEntityPosition), LVar9, LVar2, LVar3, LVar4)
EVT_CALL(MakeLerp, LVar3, 300, 20, EASING_QUADRATIC_IN)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar2, LVar0, LVar4)
EVT_WAIT(1)
EVT_IF_NE(LVar1, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim08)
EVT_WAIT(10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, -80, 37, 5)
EVT_CALL(SetBattleCamZoom, 256)
EVT_CALL(MoveBattleCamOver, 1)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CHILD_THREAD
EVT_WAIT(10)
EVT_CALL(AddBattleCamZoom, 100)
EVT_CALL(MoveBattleCamOver, 10)
EVT_WAIT(5)
EVT_CALL(N(FadeOutScreenBlur))
EVT_END_CHILD_THREAD
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_LOWER_OBJECT)
EVT_SET(LVar5, LVar1)
EVT_ADD(LVar5, 200)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar0, LVar5, LVar2)
EVT_CALL(N(GetEntityPosition), LVar9, LVar2, LVar3, LVar4)
EVT_CALL(MakeLerp, LVar5, LVar1, 20, EASING_CUBIC_IN)
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_CALL(N(SetEntityPositionF), LVar9, LVar2, LVar0, LVar4)
EVT_WAIT(1)
EVT_IF_NE(LVar1, 1)
EVT_BREAK_LOOP
EVT_END_IF
EVT_END_LOOP
EVT_CALL(N(DropBlock))
EVT_CHILD_THREAD
EVT_CALL(StartRumble, BTL_RUMBLE_HIT_EXTREME)
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(1.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(3.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(6.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(5.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(4.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(3.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(2.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(1.0))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(0.5))
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 2, EVT_FLOAT(0.2))
EVT_END_CHILD_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim05)
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_BLOCK_DROP, BS_FLAGS1_TRIGGER_EVENTS)
EVT_SET(LVarF, LVar0)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_WAIT(19)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(GetLastDamage, ACTOR_PARTNER, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 69, 14, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(FreezeBattleCam, TRUE)
EVT_WAIT(20)
EVT_THREAD
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(AddGoalPos, ACTOR_SELF, 10, 5, 0)
EVT_CALL(FlyToGoal, ACTOR_SELF, 6, 0, EASING_LINEAR)
EVT_END_THREAD
EVT_CALL(ActorSpeak, MSG_CH8_009A, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
EVT_WAIT(10)
EVT_CALL(FreezeBattleCam, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_END_IF
EVT_WAIT(10)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
Call(UseBattleCamPreset, BTL_CAM_PRESET_14)
Call(BattleCamTargetActor, ACTOR_SELF)
Wait(30)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim07)
Wait(5)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_SUMMON_MAGIC)
Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
Sub(LVar0, 25)
Add(LVar1, 40)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 0, LVar0, LVar1, LVar2, 1, 100, 0)
Wait(20)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 80, 95, 15)
Call(SetBattleCamZoom, 340)
Call(MoveBattleCamOver, 60)
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_SUMMON_BLOCK)
Sub(LVar0, 15)
Add(LVar1, 30)
Set(LVar3, LVar1)
Add(LVar3, 20)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, Float(1.0), 60, 0)
Wait(20)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, Float(1.0), 60, 0)
Wait(10)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, Float(1.0), 60, 0)
Wait(5)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, Float(1.0), 60, 0)
Wait(3)
PlayEffect(EFFECT_GATHER_ENERGY_PINK, 1, LVar0, LVar3, LVar2, Float(1.0), 60, 0)
Call(MakeEntity, Ref(Entity_Hammer1Block), LVar0, LVar1, LVar2, 0, MAKE_ENTITY_END)
Set(LVar9, LVar0)
Call(N(BlockAppear))
Thread
Call(N(FadeInScreenBlur))
EndThread
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_RAISE_OBJECT)
Call(N(GetEntityPosition), LVar9, LVar2, LVar3, LVar4)
Call(MakeLerp, LVar3, 300, 20, EASING_QUADRATIC_IN)
Loop(0)
Call(UpdateLerp)
Call(N(SetEntityPositionF), LVar9, LVar2, LVar0, LVar4)
Wait(1)
IfNe(LVar1, 1)
BreakLoop
EndIf
EndLoop
Wait(20)
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim08)
Wait(10)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, -80, 37, 5)
Call(SetBattleCamZoom, 256)
Call(MoveBattleCamOver, 1)
Call(SetGoalToTarget, ACTOR_SELF)
Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
ChildThread
Wait(10)
Call(AddBattleCamZoom, 100)
Call(MoveBattleCamOver, 10)
Wait(5)
Call(N(FadeOutScreenBlur))
EndChildThread
Call(PlaySoundAtActor, ACTOR_SELF, SOUND_KAMMY_LOWER_OBJECT)
Set(LVar5, LVar1)
Add(LVar5, 200)
Call(N(SetEntityPositionF), LVar9, LVar0, LVar5, LVar2)
Call(N(GetEntityPosition), LVar9, LVar2, LVar3, LVar4)
Call(MakeLerp, LVar5, LVar1, 20, EASING_CUBIC_IN)
Loop(0)
Call(UpdateLerp)
Call(N(SetEntityPositionF), LVar9, LVar2, LVar0, LVar4)
Wait(1)
IfNe(LVar1, 1)
BreakLoop
EndIf
EndLoop
Call(N(DropBlock))
ChildThread
Call(StartRumble, BTL_RUMBLE_HIT_EXTREME)
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(1.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(3.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(6.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(5.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(4.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(3.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(2.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(1.0))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(0.5))
Call(ShakeCam, CAM_BATTLE, 0, 2, Float(0.2))
EndChildThread
Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim05)
Wait(2)
Call(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_BLOCK_DROP, BS_FLAGS1_TRIGGER_EVENTS)
Set(LVarF, LVar0)
Switch(LVarF)
CaseOrEq(HIT_RESULT_HIT)
CaseOrEq(HIT_RESULT_NO_DAMAGE)
Wait(19)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
EndCaseGroup
EndSwitch
Call(GetLastDamage, ACTOR_PARTNER, LVar0)
IfEq(LVar0, 0)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 69, 14, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 20)
Call(FreezeBattleCam, TRUE)
Wait(20)
Thread
Call(SetGoalToHome, ACTOR_SELF)
Call(AddGoalPos, ACTOR_SELF, 10, 5, 0)
Call(FlyToGoal, ACTOR_SELF, 6, 0, EASING_LINEAR)
EndThread
Call(ActorSpeak, MSG_CH8_009A, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
Wait(10)
Call(FreezeBattleCam, FALSE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
EndIf
Wait(10)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_HandlePhase) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetBattlePhase, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 69, 14, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT(20)
EVT_CALL(ActorSpeak, MSG_CH8_0093, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
EVT_WAIT(10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, -56, -9, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 1)
EVT_WAIT(10)
EVT_CALL(ActorSpeak, MSG_CH8_0094, ACTOR_PARTNER, 1, ANIM_Twink_ShoutAngry, ANIM_Twink_Angry)
EVT_WAIT(10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, -66, -9, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 10)
EVT_WAIT(10)
EVT_CALL(ActorSpeak, MSG_CH8_0095, ACTOR_PLAYER, 1, ANIM_BattleParakarry_EnterShell, ANIM_BattleParakarry_ShellFly)
EVT_WAIT(10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 1)
EVT_END_SWITCH
EVT_CASE_EQ(PHASE_ENEMY_BEGIN)
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(GetBattlePhase, LVar0)
Switch(LVar0)
CaseEq(PHASE_PLAYER_BEGIN)
Call(GetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, LVar0)
Switch(LVar0)
CaseEq(0)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 69, 14, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 20)
Wait(20)
Call(ActorSpeak, MSG_CH8_0093, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
Wait(10)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, -56, -9, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 1)
Wait(10)
Call(ActorSpeak, MSG_CH8_0094, ACTOR_PARTNER, 1, ANIM_Twink_ShoutAngry, ANIM_Twink_Angry)
Wait(10)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, -66, -9, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 10)
Wait(10)
Call(ActorSpeak, MSG_CH8_0095, ACTOR_PLAYER, 1, ANIM_BattleParakarry_EnterShell, ANIM_BattleParakarry_ShellFly)
Wait(10)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(AddActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 1)
EndSwitch
CaseEq(PHASE_ENEMY_BEGIN)
// do nothing
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
EndSwitch
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Return
End
};
EvtScript N(EVS_CommentOnHit) = {
EVT_CALL(FreezeBattleState, TRUE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Speaking, TRUE)
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(10)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 69, 14, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(FreezeBattleCam, TRUE)
EVT_WAIT(20)
EVT_CALL(ActorSpeak, MSG_CH8_0097, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim09, ANIM_BattleKammy_Anim05)
EVT_WAIT(10)
EVT_CALL(FreezeBattleCam, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CASE_OR_EQ(9)
EVT_CASE_OR_EQ(8)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 69, 14, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(FreezeBattleCam, TRUE)
EVT_WAIT(20)
EVT_CALL(ActorSpeak, MSG_CH8_0098, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim0A, ANIM_BattleKammy_Anim05)
EVT_WAIT(10)
EVT_CALL(FreezeBattleCam, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_END_CASE_GROUP
EVT_CASE_OR_EQ(7)
EVT_CASE_OR_EQ(6)
EVT_CASE_OR_EQ(5)
EVT_CASE_OR_EQ(4)
EVT_CASE_OR_EQ(3)
EVT_CASE_OR_EQ(2)
EVT_CASE_OR_EQ(1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, LVar0)
EVT_IF_EQ(LVar0, 2)
EVT_BREAK_SWITCH
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 69, 14, -18)
EVT_CALL(SetBattleCamZoom, 340)
EVT_CALL(SetBattleCamOffsetZ, 62)
EVT_CALL(MoveBattleCamOver, 20)
EVT_CALL(FreezeBattleCam, TRUE)
EVT_WAIT(20)
EVT_CALL(ActorSpeak, MSG_CH8_0099, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
EVT_WAIT(10)
EVT_CALL(FreezeBattleCam, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 1)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Speaking, FALSE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_RETURN
EVT_END
Call(FreezeBattleState, TRUE)
Call(UseIdleAnimation, ACTOR_SELF, FALSE)
Call(SetActorVar, ACTOR_SELF, AVAR_Speaking, TRUE)
Call(GetActorHP, ACTOR_SELF, LVar0)
Switch(LVar0)
CaseEq(10)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 69, 14, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 20)
Call(FreezeBattleCam, TRUE)
Wait(20)
Call(ActorSpeak, MSG_CH8_0097, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim09, ANIM_BattleKammy_Anim05)
Wait(10)
Call(FreezeBattleCam, FALSE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
CaseOrEq(9)
CaseOrEq(8)
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 69, 14, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 20)
Call(FreezeBattleCam, TRUE)
Wait(20)
Call(ActorSpeak, MSG_CH8_0098, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim0A, ANIM_BattleKammy_Anim05)
Wait(10)
Call(FreezeBattleCam, FALSE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
EndCaseGroup
CaseOrEq(7)
CaseOrEq(6)
CaseOrEq(5)
CaseOrEq(4)
CaseOrEq(3)
CaseOrEq(2)
CaseOrEq(1)
Call(GetActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, LVar0)
IfEq(LVar0, 2)
BreakSwitch
EndIf
Call(UseBattleCamPreset, BTL_CAM_PRESET_19)
Call(SetBattleCamTarget, 69, 14, -18)
Call(SetBattleCamZoom, 340)
Call(SetBattleCamOffsetZ, 62)
Call(MoveBattleCamOver, 20)
Call(FreezeBattleCam, TRUE)
Wait(20)
Call(ActorSpeak, MSG_CH8_0099, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim06, ANIM_BattleKammy_Anim05)
Wait(10)
Call(FreezeBattleCam, FALSE)
Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
Call(AddActorVar, ACTOR_SELF, AVAR_PlayerTurnCount, 1)
EndCaseGroup
EndSwitch
Call(SetActorVar, ACTOR_SELF, AVAR_Speaking, FALSE)
Call(UseIdleAnimation, ACTOR_SELF, TRUE)
Call(FreezeBattleState, FALSE)
Return
End
};
EvtScript N(EVS_Death) = {
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(HideHealthBar, ACTOR_SELF)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 60)
EVT_WAIT(10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKammy_Anim02)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar2, 1)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_BROOM, LVar0, LVar1, LVar2)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BROOM, ACTOR_PART_FLAG_INVISIBLE, FALSE)