mirror of
https://github.com/pmret/papermario.git
synced 2025-05-23 21:46:32 +02:00
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:
parent
f1edb83213
commit
9574baebaf
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
138
src/38F00.c
138
src/38F00.c
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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
@ -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)
|
||||