2#include "../src/world/partners.h"
3#include "sprite/npc/WorldKooper.h"
4#include "sprite/player.h"
7#define NAMESPACE world_kooper
73 kooper->collisionHeight = 37;
74 kooper->collisionDiameter = 24;
213 #define USE_STATE functionTemp[0]
254 switch (
script->USE_STATE) {
306 if (
kooper->duration != 0) {
325 kooper->collisionHeight = 12;
356 if (
kooper->jumpVel < 0.0f) {
380 kooper->planarFlyDist = 0.0f;
410 #define TEST_COLLISION_AT_ANGLE(testAngle) \
412 posX = kooper->pos.x, \
413 posY = kooper->pos.y, \
414 posZ = kooper->pos.z, \
415 npc_test_move_taller_with_slipping(COLLIDER_FLAG_IGNORE_SHELL, \
416 &posX, &posY, &posZ, kooper->moveSpeed, testAngle, \
417 kooper->collisionHeight, kooper->collisionDiameter / 2) \
463 if (
kooper->moveSpeed > 14.0) {
464 kooper->moveSpeed = 14.0f;
488 if (
kooper->moveSpeed < 0.01) {
489 kooper->moveSpeed = 0.01f;
490 kooper->planarFlyDist += 1.0;
498 if (
kooper->planarFlyDist > 140.0f) {
502 }
else if (
kooper->planarFlyDist > 105.0f) {
504 if (
kooper->moveSpeed < 0.01) {
505 kooper->moveSpeed = 0.01f;
506 kooper->planarFlyDist += 1.0;
519 kooper->collisionHeight, (
kooper->collisionDiameter / 2));
529 if (
kooper->moveSpeed < 0.01) {
530 kooper->moveSpeed = 0.01f;
531 kooper->planarFlyDist += 1.0;
561 kooper->moveSpeed += 4.0/3.0;
563 if (
kooper->moveSpeed > 14.0) {
564 kooper->moveSpeed = 14.0f;
591 posY =
kooper->pos.y + 8.0f;
602 if (
kooper->planarFlyDist + 15.0f <
kooper->moveSpeed) {
604 }
else if (
kooper->planarFlyDist + 15.0f < 35.0f) {
606 if (
kooper->moveSpeed < 4.0) {
626 kooper->collisionHeight = 24;
s32 partner_use_ability(void)
BSS s32 PopupMenu_SelectedIndex
@ TWEESTER_PARTNER_ATTRACT
@ TWEESTER_PARTNER_RELEASE
@ ITEM_ENTITY_FLAG_CANT_COLLECT
@ PARTNER_ACTION_KOOPER_GATHER
@ PARTNER_ACTION_KOOPER_TOSS
@ COLLIDER_FLAG_IGNORE_PLAYER
@ COLLIDER_FLAG_IGNORE_SHELL
@ SOUND_KOOPER_SHELL_SWIRL
@ SOUND_KOOPER_SHELL_KICK
@ SOUND_QUICK_PLAYER_JUMP
@ ACTION_STATE_HIT_FIRE
Causes Mario to fly up and take damage. Used for fire bars.
@ CAMERA_MOVE_IGNORE_PLAYER_Y
@ NPC_FLAG_IGNORE_WORLD_COLLISION
@ NPC_FLAG_IGNORE_PLAYER_COLLISION
@ NPC_FLAG_COLLIDING_WITH_NPC
@ NPC_FLAG_IGNORE_CAMERA_FOR_YAW
void disable_npc_blur(Npc *npc)
void partner_walking_update_motion(Npc *partner)
void partner_clear_player_tracking(Npc *partner)
s32 disable_player_input(void)
ItemEntity * get_item_entity(s32 itemEntityIndex)
void partner_walking_update_player_tracking(Npc *partner)
void enable_npc_blur(Npc *npc)
s32 enable_player_input(void)
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
void start_bounce_b(void)
void set_action_state(s32 actionState)
b32 npc_test_move_taller_with_slipping(s32, f32 *, f32 *, f32 *, f32, f32, f32, f32)
b32 npc_raycast_up(s32, f32 *, f32 *, f32 *, f32 *)
void suggest_player_anim_allow_backward(AnimID anim)
void partner_walking_enable(Npc *partner, s32 val)
void set_item_entity_flags(s32 itemEntityIndex, s32 flag)
void sin_cos_rad(f32 rad, f32 *outSinTheta, f32 *outCosTheta)
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
f32 get_clamped_angle_diff(f32, f32)
s32 npc_try_snap_to_ground(Npc *npc, f32 velocity)
void npc_surface_spawn_fx(Npc *npc, SurfaceInteractMode mode)
void npc_do_other_npc_collision(Npc *npc)
EncounterStatus gCurrentEncounter
void npc_move_heading(Npc *npc, f32 speed, f32 yaw)
s32 partner_init_get_out(Npc *npc)
s32 partner_init_put_away(Npc *partner)
s32 partner_put_away(Npc *partner)
s32 partner_force_player_flip_done(void)
s32 partner_get_out(Npc *partner)
void sfx_play_sound_at_npc(s32 soundID, s32 arg1, s32 npcID)
void sfx_stop_sound(s32 soundID)
ApiStatus HasItem(Evt *script, b32 isInitialCall)
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
#define COLLISION_WITH_ENTITY_BIT
#define Call(FUNC, ARGS...)
Calls a given C EVT API function with any number of arguments.
#define Return
Kills the current EVT thread.
Entity * TweesterTouchingPartner
CollisionStatus gCollisionStatus
PartnerStatus gPartnerStatus
s32 NpcHitQueryColliderID
PlayerStatus gPlayerStatus
EvtScript EVS_WorldKooper_TakeOut
s32 N check_for_item_collision(Npc *kooper)
void N pre_battle(Npc *kooper)
void fx_damage_stars(s32, f32, f32, f32, f32, f32, f32, s32)
s32 N test_first_strike(Npc *kooper, Npc *enemy)
#define TEST_COLLISION_AT_ANGLE(testAngle)
void auto_collect_item_entity(s32)
EvtScript EVS_WorldKooper_UseAbility
s32 entity_try_partner_interaction_trigger(s32)
@ SHELL_TOSS_HITBOX_HIT_ENEMY
@ SHELL_TOSS_HITBOX_ENABLED
@ SHELL_TOSS_HITBOX_DISABLED
s32 test_item_entity_position(f32, f32, f32, f32)
void N vertical_hit_interactable_entity(Npc *kooper)
void N try_cancel_tweester(Npc *kooper)
void N post_battle(Npc *npc)
EvtScript EVS_WorldKooper_Update
s32 N lateral_hit_interactable_entity(Npc *npc)
EvtScript EVS_WorldKooper_PutAway