Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
Plants2.c
Go to the documentation of this file.
1#include "common.h"
2#include "effects.h"
3#include "entity.h"
4#include "animation_script.h"
5#include "ld_addrs.h"
6#include "sprite/player.h"
7
16
18
40
48
56
58 f32 xOffset, zOffset, angle;
59
60 angle = DEG_TO_RAD(clamp_angle(entity->rot.y));
61 xOffset = -26.0 * cos_rad(angle);
62 zOffset = 6.0 * sin_rad(angle);
63 fx_stars_burst(0, entity->pos.x + xOffset, entity->pos.y + 62.0f, entity->pos.z + zOffset, clamp_angle(entity->rot.y - 90.0), 54.0f, 2);
64}
65
67 TrumpetPlantData* data = entity->dataBuf.trumpetPlant;
68
70 if (data->numCoins < 3) {
71 f32 xOffset, zOffset, angle;
72
73 angle = DEG_TO_RAD(clamp_angle(entity->rot.y));
74 xOffset = -26.0 * cos_rad(angle);
75 zOffset = 6.0 * sin_rad(angle);
76
77 if (rand_int(32) > 16) {
78 f32 facingAngle = entity->rot.y - 110.0f + (data->numCoins % 3) * 30;
79 data->numCoins++;
81 entity->pos.x + xOffset,
82 entity->pos.y + 62.0f,
83 entity->pos.z + zOffset,
85 facingAngle, 0);
86 }
87 }
88}
89
94
106
112
114 MunchlesiaData* data = entity->dataBuf.munchlesia;
115 data->unk_18 = fabs(dist2D(entity->pos.x, entity->pos.z, gPlayerStatus.pos.x, gPlayerStatus.pos.z) * 0.25);
116 data->unk_14 = atan2(gPlayerStatus.pos.x, gPlayerStatus.pos.z, entity->pos.x, entity->pos.z);
117}
118
127
131
136
140
146
154
158
163
167
171
177
179 MunchlesiaData* data = entity->dataBuf.munchlesia;
180 data->unk_0C = gPlayerStatus.pos.y;
181 data->unk_10 = 0;
182}
183
185 MunchlesiaData* data = entity->dataBuf.munchlesia;
186 gPlayerStatus.pos.y = data->unk_0C + (sin_rad(DEG_TO_RAD(data->unk_10)) * 3.0f);
187
188 data->unk_10 += 24.0f;
189 if (data->unk_10 > 360.0f) {
190 data->unk_10 -= 360.0f;
191 }
192 if (data->unk_10 == 96.0f) {
194 }
195}
196
206
228
237
249
260
269
278
289
301
310
319
329
332 .typeDataSize = 0,
333 .renderCommandList = Entity_BellbellPlant_AnimationIdle,
334 .modelAnimationNodes = Entity_BellbellPlant_Mesh,
335 .fpInit = nullptr,
336 .updateEntityScript = Entity_BellbellPlant_Script,
337 .fpHandleCollision = nullptr,
338 { .dmaList = Entity_BellbellPlant_dma },
339 .entityType = ENTITY_TYPE_BELLBELL_PLANT,
340 .aabbSize = { 30, 40, 30 }
341};
342
345 .typeDataSize = sizeof(TrumpetPlantData),
346 .renderCommandList = Entity_TrumpetPlant_AnimationIdle,
347 .modelAnimationNodes = Entity_TrumpetPlant_Mesh,
348 .fpInit = nullptr,
349 .updateEntityScript = Entity_TrumpetPlant_Script,
350 .fpHandleCollision = nullptr,
351 { .dmaList = Entity_TrumpetPlant_dma },
352 .entityType = ENTITY_TYPE_TRUMPET_PLANT,
353 .aabbSize = { 30, 40, 30 }
354};
355
358 .typeDataSize = sizeof(MunchlesiaData),
359 .renderCommandList = Entity_RenderNone_Script,
360 .modelAnimationNodes = 0,
361 .fpInit = entity_Munchlesia_init,
362 .updateEntityScript = Entity_Munchlesia_Script,
363 .fpHandleCollision = nullptr,
364 { .dmaList = nullptr },
365 .entityType = ENTITY_TYPE_MUNCHLESIA,
366 .aabbSize = { 45, 20, 45 }
367};
368
371 .typeDataSize = sizeof(MunchlesiaData),
372 .renderCommandList = Entity_MunchlesiaReset_AnimationIdle,
373 .modelAnimationNodes = Entity_MunchlesiaReset_Mesh,
374 .fpInit = nullptr,
375 .updateEntityScript = Entity_MunchlesiaReset_Script,
376 .fpHandleCollision = nullptr,
377 { .dmaList = Entity_MunchlesiaReset_dma },
378 .entityType = ENTITY_TYPE_RESET_MUNCHLESIA,
379 .aabbSize = { 40, 20, 40 }
380};
381
384 .typeDataSize = sizeof(MunchlesiaData),
385 .renderCommandList = Entity_MunchlesiaGrab_Animation,
386 .modelAnimationNodes = Entity_MunchlesiaGrab_Mesh,
387 .fpInit = nullptr,
388 .updateEntityScript = Entity_MunchlesiaGrab_Script,
389 .fpHandleCollision = nullptr,
390 { .dmaList = Entity_MunchlesiaGrab_dma },
391 .entityType = ENTITY_TYPE_MUNCHLESIA_GRAB,
392 .aabbSize = { 40, 20, 40 }
393};
394
397 .typeDataSize = sizeof(MunchlesiaData),
398 .renderCommandList = Entity_MunchlesiaEnvelop_Animation,
399 .modelAnimationNodes = Entity_MunchlesiaEnvelop_Mesh,
400 .fpInit = nullptr,
401 .updateEntityScript = Entity_MunchlesiaEnvelop_Script,
402 .fpHandleCollision = nullptr,
403 { .dmaList = Entity_MunchlesiaEnvelop_dma },
404 .entityType = ENTITY_TYPE_MUNCHLESIA_ENVELOP,
405 .aabbSize = { 40, 20, 40 }
406};
407
410 .typeDataSize = sizeof(MunchlesiaData),
411 .renderCommandList = Entity_MunchlesiaBeginChew_Animation,
412 .modelAnimationNodes = Entity_MunchlesiaBeginChew_Mesh,
413 .fpInit = nullptr,
414 .updateEntityScript = Entity_MunchlesiaBeginChew_Script,
415 .fpHandleCollision = nullptr,
416 { .dmaList = Entity_MunchlesiaBeginChew_dma },
418 .aabbSize = { 40, 20, 40 }
419};
420
423 .typeDataSize = sizeof(MunchlesiaData),
424 .renderCommandList = Entity_MunchlesiaChewing_Animation,
425 .modelAnimationNodes = Entity_MunchlesiaChewing_Mesh,
427 .updateEntityScript = Entity_MunchlesiaChewing_Script,
428 .fpHandleCollision = nullptr,
429 { .dmaList = Entity_MunchlesiaChewing_dma },
430 .entityType = ENTITY_TYPE_MUNCHLESIA_CHEWING,
431 .aabbSize = { 40, 20, 40 }
432};
433
436 .typeDataSize = sizeof(MunchlesiaData),
437 .renderCommandList = Entity_MunchlesiaSpitOut_Animation,
438 .modelAnimationNodes = Entity_MunchlesiaSpitOut_Mesh,
439 .fpInit = nullptr,
440 .updateEntityScript = Entity_MunchlesiaSpitOut_Script,
441 .fpHandleCollision = nullptr,
442 { .dmaList = Entity_MunchlesiaSpitOut_dma },
444 .aabbSize = { 40, 20, 40 }
445};
446
449 .typeDataSize = sizeof(MunchlesiaData),
450 .renderCommandList = Entity_MunchlesiaReset1_Animation,
451 .modelAnimationNodes = Entity_MunchlesiaReset1_Mesh,
452 .fpInit = nullptr,
453 .updateEntityScript = Entity_MunchlesiaReset1_Script,
454 .fpHandleCollision = nullptr,
455 { .dmaList = Entity_MunchlesiaReset1_dma },
456 .entityType = ENTITY_TYPE_MUNCHLESIA_RESET1,
457 .aabbSize = { 40, 20, 40 }
458};
459
462 .typeDataSize = sizeof(MunchlesiaData),
463 .renderCommandList = Entity_MunchlesiaReset_AnimationIdle,
464 .modelAnimationNodes = Entity_MunchlesiaReset_Mesh,
465 .fpInit = nullptr,
466 .updateEntityScript = Entity_MunchlesiaReset2_Script,
467 .fpHandleCollision = nullptr,
468 { .dmaList = Entity_MunchlesiaReset_dma },
469 .entityType = ENTITY_TYPE_MUNCHLESIA_RESET2,
470 .aabbSize = { 40, 20, 40 }
471};
BSS s32 PopupMenu_SelectedIndex
void func_802BC050_E2E980(Entity *entity)
Definition Plants2.c:95
EntityModelScript Entity_RenderNone_Script
Definition Shadow.c:73
void entity_TrumpetPlant_idle(Entity *entity)
Definition Plants2.c:49
EntityScript Entity_MunchlesiaSpitOut_Script
Definition Plants2.c:290
void func_802BC2B4_E2EBE4(Entity *entity)
Definition Plants2.c:147
EntityScript Entity_MunchlesiaReset2_Script
Definition Plants2.c:311
EntityBlueprint Entity_MunchlesiaReset2
Definition Plants2.c:460
void entity_TrumpetPlant_spawn_coin(Entity *entity)
Definition Plants2.c:66
AnimScript Entity_MunchlesiaReset_AnimationReset
AnimScript Entity_TrumpetPlant_AnimationIdle
EntityScript Entity_MunchlesiaReset1_Script
Definition Plants2.c:302
AnimScript Entity_MunchlesiaChewing_Animation
DmaEntry Entity_MunchlesiaSpitOut_dma[]
Definition Plants2.c:325
void func_802BC308_E2EC38(Entity *entity)
Definition Plants2.c:155
StaticAnimatorNode * Entity_TrumpetPlant_Mesh[]
DmaEntry Entity_MunchlesiaBeginChew_dma[]
Definition Plants2.c:323
AnimScript Entity_MunchlesiaGrab_Animation
void entity_BellbellPlant_idle(Entity *entity)
Definition Plants2.c:41
AnimScript Entity_MunchlesiaBeginChew_Animation
void func_802BC274_E2EBA4(Entity *entity)
Definition Plants2.c:141
DmaEntry Entity_MunchlesiaChewing_dma[]
Definition Plants2.c:324
StaticAnimatorNode * Entity_MunchlesiaEnvelop_Mesh[]
StaticAnimatorNode * Entity_MunchlesiaReset1_Mesh[]
void entity_Munchlesia_create_child_reset1(Entity *entity)
Definition Plants2.c:164
EntityBlueprint Entity_Munchlesia
Definition Plants2.c:356
EntityBlueprint Entity_MunchlesiaReset
Definition Plants2.c:369
StaticAnimatorNode * Entity_MunchlesiaReset_Mesh[]
EntityScript Entity_BellbellPlant_Script
Definition Plants2.c:197
AnimScript Entity_MunchlesiaSpitOut_Animation
EntityScript Entity_MunchlesiaChewing_Script
Definition Plants2.c:279
void entity_Munchlesia_create_child_reset2(Entity *entity)
Definition Plants2.c:168
EntityScript Entity_TrumpetPlant_Script
Definition Plants2.c:207
DmaEntry Entity_MunchlesiaReset_dma[]
Definition Plants2.c:320
EntityBlueprint Entity_MunchlesiaSpitOut
Definition Plants2.c:434
AnimScript Entity_BellbellPlant_AnimationIdle
AnimScript Entity_MunchlesiaReset1_Animation
DmaEntry Entity_TrumpetPlant_dma[]
Definition Plants2.c:328
EntityBlueprint Entity_MunchlesiaEnvelop
Definition Plants2.c:395
EntityBlueprint Entity_BellbellPlant
Definition Plants2.c:330
AnimScript Entity_MunchlesiaReset_AnimationIdle
EntityScript Entity_Munchlesia_Script
Definition Plants2.c:229
void func_802BC220_E2EB50(Entity *entity)
Definition Plants2.c:132
void func_802BC250_E2EB80(Entity *entity)
Definition Plants2.c:137
EntityScript Entity_MunchlesiaBeginChew_Script
Definition Plants2.c:270
AnimScript Entity_BellbellPlant_AnimationUse
DmaEntry Entity_MunchlesiaReset1_dma[]
Definition Plants2.c:326
EntityScript Entity_MunchlesiaEnvelop_Script
Definition Plants2.c:261
EntityBlueprint Entity_MunchlesiaGrab
Definition Plants2.c:382
void func_802BC32C_E2EC5C(Entity *entity)
Definition Plants2.c:159
DmaEntry Entity_MunchlesiaGrab_dma[]
Definition Plants2.c:321
EntityScript Entity_MunchlesiaReset_Script
Definition Plants2.c:238
void func_802BC0F0_E2EA20(Entity *entity)
Definition Plants2.c:113
EntityBlueprint Entity_TrumpetPlant
Definition Plants2.c:343
EntityBlueprint Entity_MunchlesiaBeginChew
Definition Plants2.c:408
AnimScript Entity_TrumpetPlant_AnimationUse
StaticAnimatorNode * Entity_MunchlesiaBeginChew_Mesh[]
void entity_MunchlesiaChewing_init(Entity *entity)
Definition Plants2.c:178
DmaEntry Entity_MunchlesiaEnvelop_dma[]
Definition Plants2.c:322
DmaEntry Entity_BellbellPlant_dma[]
Definition Plants2.c:327
EntityBlueprint Entity_MunchlesiaReset1
Definition Plants2.c:447
StaticAnimatorNode * Entity_MunchlesiaGrab_Mesh[]
void entity_TrumpetPlant_create_effect(Entity *entity)
Definition Plants2.c:57
AnimScript Entity_MunchlesiaEnvelop_Animation
void func_802BC0B8_E2E9E8(Entity *entity)
Definition Plants2.c:107
void func_802BC3E4_E2ED14(Entity *entity)
Definition Plants2.c:184
StaticAnimatorNode * Entity_MunchlesiaChewing_Mesh[]
EntityBlueprint Entity_MunchlesiaChewing
Definition Plants2.c:421
s32 entity_Munchlesia_create_child(Entity *entity, EntityBlueprint *EntityBlueprint)
Definition Plants2.c:128
StaticAnimatorNode * Entity_MunchlesiaSpitOut_Mesh[]
void func_802BC3A0_E2ECD0(void)
Definition Plants2.c:172
StaticAnimatorNode * Entity_BellbellPlant_Mesh[]
EntityScript Entity_MunchlesiaGrab_Script
Definition Plants2.c:250
void entity_Munchlesia_init(Entity *entity)
Definition Plants2.c:90
void func_802BC17C_E2EAAC(Entity *entity)
Definition Plants2.c:119
s16 AnimScript[]
#define rand_int
#define clamp_angle
#define atan2
s32 EntityModelScript[]
Definition entity.h:7
#define es_Call(func)
Definition entity.h:37
#define es_Restart
Definition entity.h:40
#define es_SetCallback(func, time)
Definition entity.h:38
#define es_SetFlags(flags)
Definition entity.h:43
#define ENTITY_ROM(name)
Definition entity.h:65
#define es_Label(labelId)
Definition entity.h:41
#define es_Goto(labelId)
Definition entity.h:39
s32 EntityScript[]
Definition entity.h:6
#define es_End
Definition entity.h:35
#define es_PlaySound(soundId)
Definition entity.h:45
#define es_ClearFlags(flags)
Definition entity.h:44
@ ITEM_SPAWN_MODE_FIXED_SPAWN_ALWAYS_NEVER_VANISH
Definition enums.h:2296
@ ITEM_SPAWN_MODE_TOSS_SPAWN_ALWAYS
Definition enums.h:2280
@ ENTITY_TYPE_TRUMPET_PLANT
Definition enums.h:2577
@ ENTITY_TYPE_MUNCHLESIA_ENVELOP
Definition enums.h:2589
@ ENTITY_TYPE_BELLBELL_PLANT
Definition enums.h:2576
@ ENTITY_TYPE_MUNCHLESIA_CHEWING
Definition enums.h:2591
@ ENTITY_TYPE_MUNCHLESIA_BEGIN_CHEW
Definition enums.h:2590
@ ENTITY_TYPE_MUNCHLESIA_RESET2
Definition enums.h:2594
@ ENTITY_TYPE_MUNCHLESIA_GRAB
Definition enums.h:2588
@ ENTITY_TYPE_MUNCHLESIA_SPIT_OUT
Definition enums.h:2592
@ ENTITY_TYPE_RESET_MUNCHLESIA
Definition enums.h:2587
@ ENTITY_TYPE_MUNCHLESIA_RESET1
Definition enums.h:2593
@ ENTITY_TYPE_MUNCHLESIA
Definition enums.h:2578
@ PA_FLAG_INTERRUPT_USE_PARTNER
forces actions with bow, parakarry, watt, and lakilester to end (sushie not tested)
Definition enums.h:3127
@ PA_FLAG_INTERACT_PROMPT_AVAILABLE
! prompt
Definition enums.h:3129
@ ENTITY_COLLISION_PLAYER_HAMMER
Definition enums.h:2640
@ ENTITY_COLLISION_PLAYER_TOUCH_WALL
Definition enums.h:2637
@ ENTITY_COLLISION_PLAYER_TOUCH_FLOOR
Definition enums.h:2634
@ SOUND_PLANTS_TRUMPET
Definition enums.h:732
@ SOUND_MUNCHLESIA_SPIT
Definition enums.h:1220
@ SOUND_PLANTS_BELL
Definition enums.h:730
@ SOUND_MUNCHLESIA_SUCTION
Definition enums.h:1450
@ SOUND_MUNCHLESIA_CHEW
Definition enums.h:1219
@ ENTITY_FLAG_HAS_ANIMATED_MODEL
Definition enums.h:2602
@ ENTITY_FLAG_400
Definition enums.h:2609
@ ENTITY_FLAG_FIXED_SHADOW_SIZE
Definition enums.h:2608
@ ENTITY_FLAG_SHOWS_INSPECT_PROMPT
Definition enums.h:2611
@ ENTITY_FLAG_HIDDEN
Definition enums.h:2599
@ ENTITY_FLAG_PENDING_INSTANCE_DELETE
Definition enums.h:2628
@ ENTITY_FLAG_DISABLE_COLLISION
Definition enums.h:2604
@ ENTITY_FLAG_CIRCULAR_SHADOW
Definition enums.h:2610
@ ACTION_STATE_USE_MUNCHLESIA
Set by the jan_09 squishy flower entity; throws the player in the air.
Definition enums.h:2444
@ ACTION_STATE_USE_SPRING
Definition enums.h:2452
@ CAM_DEFAULT
Definition enums.h:1826
Entity * get_entity_by_index(s32 index)
Definition entity.c:530
void play_model_animation(s32, s16 *)
Definition animator.c:1100
f64 fabs(f64 f)
void suggest_player_anim_always_forward(AnimID anim)
Definition 77480.c:912
s32 disable_player_input(void)
Definition 77480.c:989
f32 cos_rad(f32 x)
Definition 43F0.c:717
s32 make_item_entity_nodelay(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupVar)
s32 enable_player_input(void)
Definition 77480.c:997
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
Definition 43F0.c:670
void enable_player_shadow(void)
Definition 77480.c:963
s32 make_item_entity(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupDelay, s32 angle, s32 pickupVar)
void set_action_state(s32 actionState)
Definition 7E9D0.c:209
void enable_partner_ai(void)
Definition partners.c:2387
void exec_entity_commandlist(Entity *entity)
Definition entity.c:313
void subtract_hp(s32 amt)
Definition inventory.c:2202
f32 sin_rad(f32 x)
Definition 43F0.c:713
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
Definition 43F0.c:685
void func_800EF300(void)
Definition partners.c:2379
s32 create_entity(EntityBlueprint *bp,...)
Definition entity.c:1192
void disable_player_shadow(void)
Definition 77480.c:967
void sfx_play_sound(s32 soundID)
#define DEG_TO_RAD(deg)
Definition macros.h:145
Vec3f targetPos
Camera gCameras[4]
Definition cam_main.c:16
PlayerStatus gPlayerStatus
Definition 77480.c:38