mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-21 19:45:10 +00:00
Unhardcoded all behavior dialogs, allowed replacement of dialogs
This commit is contained in:
parent
98f02458e3
commit
c75e71f24e
44 changed files with 1716 additions and 169 deletions
|
@ -32,6 +32,7 @@ in_files = [
|
|||
"src/game/obj_behaviors.c",
|
||||
"src/game/save_file.h",
|
||||
"src/game/obj_behaviors_2.h",
|
||||
"include/dialog_ids.h",
|
||||
]
|
||||
|
||||
exclude_constants = {
|
||||
|
|
|
@ -63,7 +63,7 @@ override_field_names = {
|
|||
|
||||
override_field_types = {
|
||||
"Surface": { "normal": "Vec3f" },
|
||||
"Object": { "oAnimations": "ObjectAnimPointer*"}
|
||||
"Object": { "oAnimations": "ObjectAnimPointer*"},
|
||||
}
|
||||
|
||||
override_field_mutable = {
|
||||
|
|
|
@ -2570,6 +2570,521 @@ CT_WARIO = 4
|
|||
--- @type CharacterType
|
||||
CT_MAX = 5
|
||||
|
||||
--- @class DialogId
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_000 = 0
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_001 = 1
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_002 = 2
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_003 = 3
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_004 = 4
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_005 = 5
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_006 = 6
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_007 = 7
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_008 = 8
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_009 = 9
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_010 = 10
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_011 = 11
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_012 = 12
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_013 = 13
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_014 = 14
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_015 = 15
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_016 = 16
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_017 = 17
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_018 = 18
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_019 = 19
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_020 = 20
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_021 = 21
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_022 = 22
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_023 = 23
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_024 = 24
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_025 = 25
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_026 = 26
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_027 = 27
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_028 = 28
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_029 = 29
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_030 = 30
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_031 = 31
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_032 = 32
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_033 = 33
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_034 = 34
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_035 = 35
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_036 = 36
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_037 = 37
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_038 = 38
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_039 = 39
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_040 = 40
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_041 = 41
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_042 = 42
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_043 = 43
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_044 = 44
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_045 = 45
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_046 = 46
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_047 = 47
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_048 = 48
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_049 = 49
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_050 = 50
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_051 = 51
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_052 = 52
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_053 = 53
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_054 = 54
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_055 = 55
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_056 = 56
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_057 = 57
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_058 = 58
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_059 = 59
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_060 = 60
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_061 = 61
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_062 = 62
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_063 = 63
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_064 = 64
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_065 = 65
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_066 = 66
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_067 = 67
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_068 = 68
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_069 = 69
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_070 = 70
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_071 = 71
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_072 = 72
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_073 = 73
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_074 = 74
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_075 = 75
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_076 = 76
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_077 = 77
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_078 = 78
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_079 = 79
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_080 = 80
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_081 = 81
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_082 = 82
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_083 = 83
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_084 = 84
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_085 = 85
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_086 = 86
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_087 = 87
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_088 = 88
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_089 = 89
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_090 = 90
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_091 = 91
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_092 = 92
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_093 = 93
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_094 = 94
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_095 = 95
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_096 = 96
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_097 = 97
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_098 = 98
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_099 = 99
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_100 = 100
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_101 = 101
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_102 = 102
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_103 = 103
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_104 = 104
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_105 = 105
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_106 = 106
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_107 = 107
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_108 = 108
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_109 = 109
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_110 = 110
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_111 = 111
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_112 = 112
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_113 = 113
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_114 = 114
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_115 = 115
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_116 = 116
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_117 = 117
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_118 = 118
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_119 = 119
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_120 = 120
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_121 = 121
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_122 = 122
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_123 = 123
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_124 = 124
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_125 = 125
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_126 = 126
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_127 = 127
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_128 = 128
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_129 = 129
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_130 = 130
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_131 = 131
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_132 = 132
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_133 = 133
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_134 = 134
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_135 = 135
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_136 = 136
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_137 = 137
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_138 = 138
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_139 = 139
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_140 = 140
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_141 = 141
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_142 = 142
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_143 = 143
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_144 = 144
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_145 = 145
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_146 = 146
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_147 = 147
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_148 = 148
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_149 = 149
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_150 = 150
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_151 = 151
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_152 = 152
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_153 = 153
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_154 = 154
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_155 = 155
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_156 = 156
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_157 = 157
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_158 = 158
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_159 = 159
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_160 = 160
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_161 = 161
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_162 = 162
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_163 = 163
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_164 = 164
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_165 = 165
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_166 = 166
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_167 = 167
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_168 = 168
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_169 = 169
|
||||
|
||||
--- @type DialogId
|
||||
DIALOG_COUNT = 170
|
||||
|
||||
--- @class DjuiFontType
|
||||
|
||||
--- @type DjuiFontType
|
||||
|
|
|
@ -7045,6 +7045,22 @@ function deref_s32_pointer(pointer)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param dialogId DialogId
|
||||
--- @param unused integer
|
||||
--- @param linesPerBox integer
|
||||
--- @param leftOffset integer
|
||||
--- @param width integer
|
||||
--- @param str string
|
||||
--- @return nil
|
||||
function dialog_replace(dialogId, unused, linesPerBox, leftOffset, width, str)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return nil
|
||||
function dialog_reset_all()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
function get_current_save_file_num()
|
||||
-- ...
|
||||
|
|
|
@ -41,6 +41,92 @@
|
|||
--- @field public terrainType integer
|
||||
--- @field public warpNodes ObjectWarpNode
|
||||
|
||||
--- @class BehaviorDialogs
|
||||
--- @field public BobombBuddyBob1Dialog DialogId
|
||||
--- @field public BobombBuddyBob2Dialog DialogId
|
||||
--- @field public BobombBuddyOther1Dialog DialogId
|
||||
--- @field public BobombBuddyOther2Dialog DialogId
|
||||
--- @field public Bowser1DefeatedDialog DialogId
|
||||
--- @field public Bowser1Dialog DialogId
|
||||
--- @field public Bowser2DefeatedDialog DialogId
|
||||
--- @field public Bowser2Dialog DialogId
|
||||
--- @field public Bowser3Defeated120StarsDialog DialogId
|
||||
--- @field public Bowser3DefeatedDialog DialogId
|
||||
--- @field public Bowser3Dialog DialogId
|
||||
--- @field public CapswitchBaseDialog DialogId
|
||||
--- @field public CapswitchMetalDialog DialogId
|
||||
--- @field public CapswitchVanishDialog DialogId
|
||||
--- @field public CapswitchWingDialog DialogId
|
||||
--- @field public CastleEnterDialog DialogId
|
||||
--- @field public CollectedStarDialog DialogId
|
||||
--- @field public DefaultCutsceneDialog DialogId
|
||||
--- @field public DoorNeed1StarDialog DialogId
|
||||
--- @field public DoorNeed30StarsDialog DialogId
|
||||
--- @field public DoorNeed3StarsDialog DialogId
|
||||
--- @field public DoorNeed50StarsDialog DialogId
|
||||
--- @field public DoorNeed70StarsDialog DialogId
|
||||
--- @field public DoorNeed8StarsDialog DialogId
|
||||
--- @field public DoorNeedKeyDialog DialogId
|
||||
--- @field public EyerokDefeatedDialog DialogId
|
||||
--- @field public EyerokIntroDialog DialogId
|
||||
--- @field public GhostHuntAfterDialog DialogId
|
||||
--- @field public GhostHuntDialog DialogId
|
||||
--- @field public HootIntroDialog DialogId
|
||||
--- @field public HootTiredDialog DialogId
|
||||
--- @field public HundredCoinsDialog DialogId
|
||||
--- @field public IntroPipeDialog DialogId
|
||||
--- @field public KeyDoor1DontHaveDialog DialogId
|
||||
--- @field public KeyDoor1HaveDialog DialogId
|
||||
--- @field public KeyDoor2DontHaveDialog DialogId
|
||||
--- @field public KeyDoor2HaveDialog DialogId
|
||||
--- @field public KingBobombCheatDialog DialogId
|
||||
--- @field public KingBobombDefeatDialog DialogId
|
||||
--- @field public KingBobombIntroDialog DialogId
|
||||
--- @field public KingWhompDefeatDialog DialogId
|
||||
--- @field public KingWhompDialog DialogId
|
||||
--- @field public KoopaQuickBobStartDialog DialogId
|
||||
--- @field public KoopaQuickBobWinDialog DialogId
|
||||
--- @field public KoopaQuickCheatedDialog DialogId
|
||||
--- @field public KoopaQuickLostDialog DialogId
|
||||
--- @field public KoopaQuickThiStartDialog DialogId
|
||||
--- @field public KoopaQuickThiWinDialog DialogId
|
||||
--- @field public LakituIntroDialog DialogId
|
||||
--- @field public MetalCourseDialog DialogId
|
||||
--- @field public Mips1Dialog DialogId
|
||||
--- @field public Mips2Dialog DialogId
|
||||
--- @field public PeachLetterDialog DialogId
|
||||
--- @field public RacingPenguinBigStartDialog DialogId
|
||||
--- @field public RacingPenguinCheatDialog DialogId
|
||||
--- @field public RacingPenguinLostDialog DialogId
|
||||
--- @field public RacingPenguinStartDialog DialogId
|
||||
--- @field public RacingPenguinWinDialog DialogId
|
||||
--- @field public SnowmanHeadAfterDialog DialogId
|
||||
--- @field public SnowmanHeadBodyDialog DialogId
|
||||
--- @field public SnowmanHeadDialog DialogId
|
||||
--- @field public SnowmanWindDialog DialogId
|
||||
--- @field public StarCollectionBaseDialog DialogId
|
||||
--- @field public StarDoorDialog DialogId
|
||||
--- @field public ToadStar1AfterDialog DialogId
|
||||
--- @field public ToadStar1Dialog DialogId
|
||||
--- @field public ToadStar2AfterDialog DialogId
|
||||
--- @field public ToadStar2Dialog DialogId
|
||||
--- @field public ToadStar3AfterDialog DialogId
|
||||
--- @field public ToadStar3Dialog DialogId
|
||||
--- @field public TuxieMotherBabyFoundDialog DialogId
|
||||
--- @field public TuxieMotherBabyWrongDialog DialogId
|
||||
--- @field public TuxieMotherDialog DialogId
|
||||
--- @field public UkikiCageDialog DialogId
|
||||
--- @field public UkikiCapGiveDialog DialogId
|
||||
--- @field public UkikiCapStealDialog DialogId
|
||||
--- @field public UkikiHeldDialog DialogId
|
||||
--- @field public VanishCourseDialog DialogId
|
||||
--- @field public WigglerAttack1Dialog DialogId
|
||||
--- @field public WigglerAttack2Dialog DialogId
|
||||
--- @field public WigglerAttack3Dialog DialogId
|
||||
--- @field public WigglerDialog DialogId
|
||||
--- @field public WingCourseDialog DialogId
|
||||
--- @field public YoshiDialog DialogId
|
||||
|
||||
--- @class BehaviorTrajectories
|
||||
--- @field public BowlingBallBob2Trajectory Pointer_Trajectory
|
||||
--- @field public BowlingBallBobTrajectory Pointer_Trajectory
|
||||
|
@ -75,6 +161,14 @@
|
|||
--- @field public KoopaBobAgility number
|
||||
--- @field public KoopaCatchupAgility number
|
||||
--- @field public KoopaThiAgility number
|
||||
--- @field public RacingPenguinBigHeight number
|
||||
--- @field public RacingPenguinBigRadius number
|
||||
--- @field public RacingPenguinHeight number
|
||||
--- @field public RacingPenguinRadius number
|
||||
--- @field public ToadStar1Requirement integer
|
||||
--- @field public ToadStar2Requirement integer
|
||||
--- @field public ToadStar3Requirement integer
|
||||
--- @field public dialogs BehaviorDialogs
|
||||
--- @field public trajectories BehaviorTrajectories
|
||||
|
||||
--- @class BullyCollisionData
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
- [characters.h](#charactersh)
|
||||
- [enum CharacterSound](#enum-CharacterSound)
|
||||
- [enum CharacterType](#enum-CharacterType)
|
||||
- [dialog_ids.h](#dialog_idsh)
|
||||
- [enum DialogId](#enum-DialogId)
|
||||
- [djui_hud_utils.h](#djui_hud_utilsh)
|
||||
- [enum DjuiFontType](#enum-DjuiFontType)
|
||||
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
|
||||
|
@ -843,6 +845,187 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [dialog_ids.h](#dialog_ids.h)
|
||||
|
||||
### [enum DialogId](#DialogId)
|
||||
| Identifier | Value |
|
||||
| :--------- | :---- |
|
||||
| DIALOG_000 | 0 |
|
||||
| DIALOG_001 | 1 |
|
||||
| DIALOG_002 | 2 |
|
||||
| DIALOG_003 | 3 |
|
||||
| DIALOG_004 | 4 |
|
||||
| DIALOG_005 | 5 |
|
||||
| DIALOG_006 | 6 |
|
||||
| DIALOG_007 | 7 |
|
||||
| DIALOG_008 | 8 |
|
||||
| DIALOG_009 | 9 |
|
||||
| DIALOG_010 | 10 |
|
||||
| DIALOG_011 | 11 |
|
||||
| DIALOG_012 | 12 |
|
||||
| DIALOG_013 | 13 |
|
||||
| DIALOG_014 | 14 |
|
||||
| DIALOG_015 | 15 |
|
||||
| DIALOG_016 | 16 |
|
||||
| DIALOG_017 | 17 |
|
||||
| DIALOG_018 | 18 |
|
||||
| DIALOG_019 | 19 |
|
||||
| DIALOG_020 | 20 |
|
||||
| DIALOG_021 | 21 |
|
||||
| DIALOG_022 | 22 |
|
||||
| DIALOG_023 | 23 |
|
||||
| DIALOG_024 | 24 |
|
||||
| DIALOG_025 | 25 |
|
||||
| DIALOG_026 | 26 |
|
||||
| DIALOG_027 | 27 |
|
||||
| DIALOG_028 | 28 |
|
||||
| DIALOG_029 | 29 |
|
||||
| DIALOG_030 | 30 |
|
||||
| DIALOG_031 | 31 |
|
||||
| DIALOG_032 | 32 |
|
||||
| DIALOG_033 | 33 |
|
||||
| DIALOG_034 | 34 |
|
||||
| DIALOG_035 | 35 |
|
||||
| DIALOG_036 | 36 |
|
||||
| DIALOG_037 | 37 |
|
||||
| DIALOG_038 | 38 |
|
||||
| DIALOG_039 | 39 |
|
||||
| DIALOG_040 | 40 |
|
||||
| DIALOG_041 | 41 |
|
||||
| DIALOG_042 | 42 |
|
||||
| DIALOG_043 | 43 |
|
||||
| DIALOG_044 | 44 |
|
||||
| DIALOG_045 | 45 |
|
||||
| DIALOG_046 | 46 |
|
||||
| DIALOG_047 | 47 |
|
||||
| DIALOG_048 | 48 |
|
||||
| DIALOG_049 | 49 |
|
||||
| DIALOG_050 | 50 |
|
||||
| DIALOG_051 | 51 |
|
||||
| DIALOG_052 | 52 |
|
||||
| DIALOG_053 | 53 |
|
||||
| DIALOG_054 | 54 |
|
||||
| DIALOG_055 | 55 |
|
||||
| DIALOG_056 | 56 |
|
||||
| DIALOG_057 | 57 |
|
||||
| DIALOG_058 | 58 |
|
||||
| DIALOG_059 | 59 |
|
||||
| DIALOG_060 | 60 |
|
||||
| DIALOG_061 | 61 |
|
||||
| DIALOG_062 | 62 |
|
||||
| DIALOG_063 | 63 |
|
||||
| DIALOG_064 | 64 |
|
||||
| DIALOG_065 | 65 |
|
||||
| DIALOG_066 | 66 |
|
||||
| DIALOG_067 | 67 |
|
||||
| DIALOG_068 | 68 |
|
||||
| DIALOG_069 | 69 |
|
||||
| DIALOG_070 | 70 |
|
||||
| DIALOG_071 | 71 |
|
||||
| DIALOG_072 | 72 |
|
||||
| DIALOG_073 | 73 |
|
||||
| DIALOG_074 | 74 |
|
||||
| DIALOG_075 | 75 |
|
||||
| DIALOG_076 | 76 |
|
||||
| DIALOG_077 | 77 |
|
||||
| DIALOG_078 | 78 |
|
||||
| DIALOG_079 | 79 |
|
||||
| DIALOG_080 | 80 |
|
||||
| DIALOG_081 | 81 |
|
||||
| DIALOG_082 | 82 |
|
||||
| DIALOG_083 | 83 |
|
||||
| DIALOG_084 | 84 |
|
||||
| DIALOG_085 | 85 |
|
||||
| DIALOG_086 | 86 |
|
||||
| DIALOG_087 | 87 |
|
||||
| DIALOG_088 | 88 |
|
||||
| DIALOG_089 | 89 |
|
||||
| DIALOG_090 | 90 |
|
||||
| DIALOG_091 | 91 |
|
||||
| DIALOG_092 | 92 |
|
||||
| DIALOG_093 | 93 |
|
||||
| DIALOG_094 | 94 |
|
||||
| DIALOG_095 | 95 |
|
||||
| DIALOG_096 | 96 |
|
||||
| DIALOG_097 | 97 |
|
||||
| DIALOG_098 | 98 |
|
||||
| DIALOG_099 | 99 |
|
||||
| DIALOG_100 | 100 |
|
||||
| DIALOG_101 | 101 |
|
||||
| DIALOG_102 | 102 |
|
||||
| DIALOG_103 | 103 |
|
||||
| DIALOG_104 | 104 |
|
||||
| DIALOG_105 | 105 |
|
||||
| DIALOG_106 | 106 |
|
||||
| DIALOG_107 | 107 |
|
||||
| DIALOG_108 | 108 |
|
||||
| DIALOG_109 | 109 |
|
||||
| DIALOG_110 | 110 |
|
||||
| DIALOG_111 | 111 |
|
||||
| DIALOG_112 | 112 |
|
||||
| DIALOG_113 | 113 |
|
||||
| DIALOG_114 | 114 |
|
||||
| DIALOG_115 | 115 |
|
||||
| DIALOG_116 | 116 |
|
||||
| DIALOG_117 | 117 |
|
||||
| DIALOG_118 | 118 |
|
||||
| DIALOG_119 | 119 |
|
||||
| DIALOG_120 | 120 |
|
||||
| DIALOG_121 | 121 |
|
||||
| DIALOG_122 | 122 |
|
||||
| DIALOG_123 | 123 |
|
||||
| DIALOG_124 | 124 |
|
||||
| DIALOG_125 | 125 |
|
||||
| DIALOG_126 | 126 |
|
||||
| DIALOG_127 | 127 |
|
||||
| DIALOG_128 | 128 |
|
||||
| DIALOG_129 | 129 |
|
||||
| DIALOG_130 | 130 |
|
||||
| DIALOG_131 | 131 |
|
||||
| DIALOG_132 | 132 |
|
||||
| DIALOG_133 | 133 |
|
||||
| DIALOG_134 | 134 |
|
||||
| DIALOG_135 | 135 |
|
||||
| DIALOG_136 | 136 |
|
||||
| DIALOG_137 | 137 |
|
||||
| DIALOG_138 | 138 |
|
||||
| DIALOG_139 | 139 |
|
||||
| DIALOG_140 | 140 |
|
||||
| DIALOG_141 | 141 |
|
||||
| DIALOG_142 | 142 |
|
||||
| DIALOG_143 | 143 |
|
||||
| DIALOG_144 | 144 |
|
||||
| DIALOG_145 | 145 |
|
||||
| DIALOG_146 | 146 |
|
||||
| DIALOG_147 | 147 |
|
||||
| DIALOG_148 | 148 |
|
||||
| DIALOG_149 | 149 |
|
||||
| DIALOG_150 | 150 |
|
||||
| DIALOG_151 | 151 |
|
||||
| DIALOG_152 | 152 |
|
||||
| DIALOG_153 | 153 |
|
||||
| DIALOG_154 | 154 |
|
||||
| DIALOG_155 | 155 |
|
||||
| DIALOG_156 | 156 |
|
||||
| DIALOG_157 | 157 |
|
||||
| DIALOG_158 | 158 |
|
||||
| DIALOG_159 | 159 |
|
||||
| DIALOG_160 | 160 |
|
||||
| DIALOG_161 | 161 |
|
||||
| DIALOG_162 | 162 |
|
||||
| DIALOG_163 | 163 |
|
||||
| DIALOG_164 | 164 |
|
||||
| DIALOG_165 | 165 |
|
||||
| DIALOG_166 | 166 |
|
||||
| DIALOG_167 | 167 |
|
||||
| DIALOG_168 | 168 |
|
||||
| DIALOG_169 | 169 |
|
||||
| DIALOG_COUNT | 170 |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [djui_hud_utils.h](#djui_hud_utils.h)
|
||||
|
||||
### [enum DjuiFontType](#DjuiFontType)
|
||||
|
|
|
@ -1311,6 +1311,8 @@
|
|||
- smlua_misc_utils.h
|
||||
- [allocate_mario_action](#allocate_mario_action)
|
||||
- [deref_s32_pointer](#deref_s32_pointer)
|
||||
- [dialog_replace](#dialog_replace)
|
||||
- [dialog_reset_all](#dialog_reset_all)
|
||||
- [get_current_save_file_num](#get_current_save_file_num)
|
||||
- [get_environment_region](#get_environment_region)
|
||||
- [get_hand_foot_pos_x](#get_hand_foot_pos_x)
|
||||
|
@ -24633,6 +24635,49 @@ The `reliable` field will ensure that the packet arrives, but should be used spa
|
|||
|
||||
<br />
|
||||
|
||||
## [dialog_replace](#dialog_replace)
|
||||
|
||||
### Lua Example
|
||||
`dialog_replace(dialogId, unused, linesPerBox, leftOffset, width, str)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| dialogId | [enum DialogId](constants.md#enum-DialogId) |
|
||||
| unused | `integer` |
|
||||
| linesPerBox | `integer` |
|
||||
| leftOffset | `integer` |
|
||||
| width | `integer` |
|
||||
| str | `string` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void dialog_replace(enum DialogId dialogId, u32 unused, s8 linesPerBox, s16 leftOffset, s16 width, const char* str);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [dialog_reset_all](#dialog_reset_all)
|
||||
|
||||
### Lua Example
|
||||
`dialog_reset_all()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void dialog_reset_all(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [get_current_save_file_num](#get_current_save_file_num)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
- [AnimInfo](#AnimInfo)
|
||||
- [Animation](#Animation)
|
||||
- [Area](#Area)
|
||||
- [BehaviorDialogs](#BehaviorDialogs)
|
||||
- [BehaviorTrajectories](#BehaviorTrajectories)
|
||||
- [BehaviorValues](#BehaviorValues)
|
||||
- [BullyCollisionData](#BullyCollisionData)
|
||||
|
@ -131,6 +132,99 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [BehaviorDialogs](#BehaviorDialogs)
|
||||
|
||||
| Field | Type | Access |
|
||||
| ----- | ---- | ------ |
|
||||
| BobombBuddyBob1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| BobombBuddyBob2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| BobombBuddyOther1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| BobombBuddyOther2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser1DefeatedDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser2DefeatedDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser3Defeated120StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser3DefeatedDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Bowser3Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CapswitchBaseDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CapswitchMetalDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CapswitchVanishDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CapswitchWingDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CastleEnterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| CollectedStarDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DefaultCutsceneDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed1StarDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed30StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed3StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed50StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed70StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeed8StarsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| DoorNeedKeyDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| EyerokDefeatedDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| EyerokIntroDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| GhostHuntAfterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| GhostHuntDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| HootIntroDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| HootTiredDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| HundredCoinsDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| IntroPipeDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KeyDoor1DontHaveDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KeyDoor1HaveDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KeyDoor2DontHaveDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KeyDoor2HaveDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KingBobombCheatDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KingBobombDefeatDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KingBobombIntroDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KingWhompDefeatDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KingWhompDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickBobStartDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickBobWinDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickCheatedDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickLostDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickThiStartDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| KoopaQuickThiWinDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| LakituIntroDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| MetalCourseDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Mips1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| Mips2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| PeachLetterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| RacingPenguinBigStartDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| RacingPenguinCheatDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| RacingPenguinLostDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| RacingPenguinStartDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| RacingPenguinWinDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| SnowmanHeadAfterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| SnowmanHeadBodyDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| SnowmanHeadDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| SnowmanWindDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| StarCollectionBaseDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| StarDoorDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar1AfterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar2AfterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar3AfterDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| ToadStar3Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| TuxieMotherBabyFoundDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| TuxieMotherBabyWrongDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| TuxieMotherDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| UkikiCageDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| UkikiCapGiveDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| UkikiCapStealDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| UkikiHeldDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| VanishCourseDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| WigglerAttack1Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| WigglerAttack2Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| WigglerAttack3Dialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| WigglerDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| WingCourseDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
| YoshiDialog | [enum DialogId](constants.md#enum-DialogId) | |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [BehaviorTrajectories](#BehaviorTrajectories)
|
||||
|
||||
| Field | Type | Access |
|
||||
|
@ -175,6 +269,14 @@
|
|||
| KoopaBobAgility | `number` | |
|
||||
| KoopaCatchupAgility | `number` | |
|
||||
| KoopaThiAgility | `number` | |
|
||||
| RacingPenguinBigHeight | `number` | |
|
||||
| RacingPenguinBigRadius | `number` | |
|
||||
| RacingPenguinHeight | `number` | |
|
||||
| RacingPenguinRadius | `number` | |
|
||||
| ToadStar1Requirement | `integer` | |
|
||||
| ToadStar2Requirement | `integer` | |
|
||||
| ToadStar3Requirement | `integer` | |
|
||||
| dialogs | [BehaviorDialogs](structs.md#BehaviorDialogs) | read-only |
|
||||
| trajectories | [BehaviorTrajectories](structs.md#BehaviorTrajectories) | read-only |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "game/level_update.h"
|
||||
#include "game/object_list_processor.h"
|
||||
#include "game/camera.h"
|
||||
#include "game/hardcoded.h"
|
||||
#include "seq_ids.h"
|
||||
#include "dialog_ids.h"
|
||||
#include "level_table.h"
|
||||
|
@ -2276,7 +2277,7 @@ void play_dialog_sound(u8 dialogID) {
|
|||
|
||||
#ifndef VERSION_JP
|
||||
// "You've stepped on the (Wing|Metal|Vanish) Cap Switch"
|
||||
if (dialogID == DIALOG_010 || dialogID == DIALOG_011 || dialogID == DIALOG_012) {
|
||||
if (dialogID == gBehaviorValues.dialogs.CapswitchWingDialog || dialogID == gBehaviorValues.dialogs.CapswitchMetalDialog || dialogID == gBehaviorValues.dialogs.CapswitchVanishDialog) {
|
||||
play_puzzle_jingle();
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -405,9 +405,9 @@ void bobomb_buddy_act_talk(void) {
|
|||
|
||||
case BOBOMB_BUDDY_ROLE_CANNON:
|
||||
if (gCurrCourseNum == COURSE_BOB) {
|
||||
bobomb_buddy_cannon_dialog(DIALOG_004, DIALOG_105);
|
||||
bobomb_buddy_cannon_dialog(gBehaviorValues.dialogs.BobombBuddyBob1Dialog, gBehaviorValues.dialogs.BobombBuddyBob2Dialog);
|
||||
} else {
|
||||
bobomb_buddy_cannon_dialog(DIALOG_047, DIALOG_106);
|
||||
bobomb_buddy_cannon_dialog(gBehaviorValues.dialogs.BobombBuddyOther1Dialog, gBehaviorValues.dialogs.BobombBuddyOther2Dialog);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -508,9 +508,9 @@ static void boo_act_4(void) {
|
|||
|
||||
// If there are no remaining "minion" boos, show the dialog of the Big Boo
|
||||
if (cur_obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) {
|
||||
dialogID = DIALOG_108;
|
||||
dialogID = gBehaviorValues.dialogs.GhostHuntAfterDialog;
|
||||
} else {
|
||||
dialogID = DIALOG_107;
|
||||
dialogID = gBehaviorValues.dialogs.GhostHuntDialog;
|
||||
}
|
||||
|
||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
|
@ -518,7 +518,7 @@ static void boo_act_4(void) {
|
|||
create_sound_spawner(SOUND_OBJ_DYING_ENEMY1);
|
||||
obj_mark_for_deletion(o);
|
||||
|
||||
if (dialogID == DIALOG_108) { // If the Big Boo should spawn, play the jingle
|
||||
if (dialogID == (s32) gBehaviorValues.dialogs.GhostHuntAfterDialog) { // If the Big Boo should spawn, play the jingle
|
||||
play_puzzle_jingle();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,11 @@ s8 D_8032F4FC[] = { 7, 8, 9, 12, 13, 14, 15, 4, 3, 16, 17, 19, 3, 3, 3, 3 };
|
|||
s16 D_8032F50C[] = { 60, 0 };
|
||||
s16 D_8032F510[] = { 50, 0 };
|
||||
s8 D_8032F514[] = { 24, 42, 60, -1 };
|
||||
s16 sBowserDefeatedDialogText[3] = { DIALOG_119, DIALOG_120, DIALOG_121 };
|
||||
s16* sBowserDefeatedDialogText[3] = {
|
||||
(s16*) &gBehaviorValues.dialogs.Bowser1DefeatedDialog,
|
||||
(s16*) &gBehaviorValues.dialogs.Bowser2DefeatedDialog,
|
||||
(s16*) &gBehaviorValues.dialogs.Bowser3DefeatedDialog
|
||||
};
|
||||
s16 D_8032F520[][3] = { { 1, 10, 40 }, { 0, 0, 74 }, { -1, -10, 114 }, { 1, -20, 134 },
|
||||
{ -1, 20, 154 }, { 1, 40, 164 }, { -1, -40, 174 }, { 1, -80, 179 },
|
||||
{ -1, 80, 184 }, { 1, 160, 186 }, { -1, -160, 186 }, { 1, 0, 0 }, };
|
||||
|
@ -968,7 +972,7 @@ s32 bowser_dead_not_bits_end(void) {
|
|||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
||||
o->oBowserUnkF8++;
|
||||
}
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog(marioState, 2, 18, sBowserDefeatedDialogText[o->oBehParams2ndByte], 0, bowser_dead_not_bits_end_continue_dialog)) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog(marioState, 2, 18, *sBowserDefeatedDialogText[o->oBehParams2ndByte], 0, bowser_dead_not_bits_end_continue_dialog)) {
|
||||
o->oBowserUnkF8++;
|
||||
cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_EXPLODE);
|
||||
seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);
|
||||
|
@ -992,9 +996,9 @@ s32 bowser_dead_bits_end(void) {
|
|||
struct MarioState *marioState = nearest_mario_state_to_object(o);
|
||||
|
||||
if (o->oBowserUnkF8 < 2) {
|
||||
s32 dialogID = DIALOG_163;
|
||||
s32 dialogID = gBehaviorValues.dialogs.Bowser3Defeated120StarsDialog;
|
||||
if (gHudDisplay.stars < 120) {
|
||||
dialogID = DIALOG_121;
|
||||
dialogID = gBehaviorValues.dialogs.Bowser3DefeatedDialog;
|
||||
}
|
||||
if (o->oBowserUnkF8 == 0) {
|
||||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
||||
|
|
|
@ -178,7 +178,7 @@ static void camera_lakitu_intro_act_show_dialog(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG, DIALOG_034, camera_lakitu_intro_act_show_dialog_continue_dialog) != 0) {
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG, gBehaviorValues.dialogs.LakituIntroDialog, camera_lakitu_intro_act_show_dialog_continue_dialog) != 0) {
|
||||
o->oCameraLakituFinishedDialog = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ u8 eyerok_boss_act_show_intro_text_continue_dialog(void) { return o->oAction ==
|
|||
static void eyerok_boss_act_show_intro_text(void) {
|
||||
// todo: get dialog working again
|
||||
/*struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, DIALOG_117, eyerok_boss_act_show_intro_text_continue_dialog)) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, gBehaviorValues.dialogs.EyerokIntroDialog, eyerok_boss_act_show_intro_text_continue_dialog)) {
|
||||
o->oAction = EYEROK_BOSS_ACT_FIGHT;
|
||||
network_send_object_reliability(o, TRUE);
|
||||
}*/
|
||||
|
@ -186,7 +186,7 @@ static void eyerok_boss_act_die(void) {
|
|||
// todo: get dialog working again
|
||||
/*struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
if (o->oTimer == 60) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, DIALOG_118, eyerok_boss_act_die_continue_dialog)) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, gBehaviorValues.dialogs.EyerokDefeatedDialog, eyerok_boss_act_die_continue_dialog)) {
|
||||
f32* starPos = gLevelValues.starPositions.EyerockStarPos;
|
||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
||||
} else {
|
||||
|
|
|
@ -206,7 +206,7 @@ void hoot_action_loop(void) {
|
|||
if (o->oPosY < 2700.0f) {
|
||||
//set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
|
||||
|
||||
if (marioState == &gMarioStates[0] && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_045)) {
|
||||
if (marioState == &gMarioStates[0] && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, gBehaviorValues.dialogs.HootTiredDialog)) {
|
||||
clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
|
||||
|
||||
o->oAction = HOOT_ACT_TIRED;
|
||||
|
@ -284,7 +284,7 @@ void bhv_hoot_loop(void) {
|
|||
localTalkToHoot = 1;
|
||||
}
|
||||
|
||||
if (localTalkToHoot == 1 && set_mario_npc_dialog(&gMarioStates[0], 2, hoot_wants_to_talk_continue_dialog) == 2 && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_044)) {
|
||||
if (localTalkToHoot == 1 && set_mario_npc_dialog(&gMarioStates[0], 2, hoot_wants_to_talk_continue_dialog) == 2 && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, gBehaviorValues.dialogs.HootIntroDialog)) {
|
||||
localTalkToHoot = 2;
|
||||
set_mario_npc_dialog(&gMarioStates[0], 0, NULL);
|
||||
cur_obj_become_tangible();
|
||||
|
|
|
@ -61,7 +61,7 @@ void king_bobomb_act_0(void) {
|
|||
o->oSubAction++;
|
||||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
||||
}
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, DIALOG_017, king_bobomb_act_0_continue_dialog)) {
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, gBehaviorValues.dialogs.KingBobombIntroDialog, king_bobomb_act_0_continue_dialog)) {
|
||||
o->oAction = 2;
|
||||
o->oFlags |= OBJ_FLAG_HOLDABLE;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void king_bobomb_act_7(void) {
|
|||
|
||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
u8 updateDialog = should_start_or_continue_dialog(marioState, o) || (gMarioStates[0].pos[1] >= o->oPosY - 100.0f);
|
||||
if (updateDialog && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 2, CUTSCENE_DIALOG, DIALOG_116, king_bobomb_act_7_continue_dialog)) {
|
||||
if (updateDialog && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 2, CUTSCENE_DIALOG, gBehaviorValues.dialogs.KingBobombDefeatDialog, king_bobomb_act_7_continue_dialog)) {
|
||||
o->oAction = 8;
|
||||
network_send_object(o);
|
||||
}
|
||||
|
@ -333,7 +333,7 @@ void king_bobomb_act_5(void) { // bobomb returns home
|
|||
o->oSubAction++;
|
||||
break;
|
||||
case 4:
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, DIALOG_128, king_bobomb_act_5_continue_dialog))
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, gBehaviorValues.dialogs.KingBobombCheatDialog, king_bobomb_act_5_continue_dialog))
|
||||
o->oAction = 2;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -51,16 +51,16 @@ static u8 sKoopaShelledAttackHandlers[] = {
|
|||
* Data to control the behavior of each instance of Koopa the Quick.
|
||||
*/
|
||||
struct KoopaTheQuickProperties {
|
||||
s16 initText;
|
||||
s16 winText;
|
||||
s16* initText;
|
||||
s16* winText;
|
||||
};
|
||||
|
||||
/**
|
||||
* Properties for the BoB race and the THI race.
|
||||
*/
|
||||
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
|
||||
{ DIALOG_005, DIALOG_007 },
|
||||
{ DIALOG_009, DIALOG_031 }
|
||||
{ (s16*) &gBehaviorValues.dialogs.KoopaQuickBobStartDialog, (s16*) &gBehaviorValues.dialogs.KoopaQuickBobWinDialog },
|
||||
{ (s16*) &gBehaviorValues.dialogs.KoopaQuickThiStartDialog, (s16*) &gBehaviorValues.dialogs.KoopaQuickThiWinDialog }
|
||||
};
|
||||
|
||||
static u32 koopaPathedStartWaypoint = 0;
|
||||
|
@ -629,7 +629,7 @@ static void koopa_the_quick_act_show_init_text(void) {
|
|||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
s32 response = 0;
|
||||
if (should_start_or_continue_dialog(marioState, o)) {
|
||||
response = obj_update_race_proposition_dialog(&gMarioStates[0], sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].initText, koopa_the_quick_act_show_init_text_continue_dialog);
|
||||
response = obj_update_race_proposition_dialog(&gMarioStates[0], *sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].initText, koopa_the_quick_act_show_init_text_continue_dialog);
|
||||
}
|
||||
|
||||
if (response == 1) {
|
||||
|
@ -849,14 +849,14 @@ static void koopa_the_quick_act_after_race(void) {
|
|||
if (o->parentObj->oKoopaRaceEndpointRaceStatus < 0) {
|
||||
// Mario cheated
|
||||
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_006;
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = gBehaviorValues.dialogs.KoopaQuickCheatedDialog;
|
||||
} else {
|
||||
// Mario won
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winText;
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = *sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winText;
|
||||
}
|
||||
} else {
|
||||
// KtQ won
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_041;
|
||||
o->parentObj->oKoopaRaceEndpointUnk100 = gBehaviorValues.dialogs.KoopaQuickLostDialog;
|
||||
}
|
||||
|
||||
o->oFlags &= ~OBJ_FLAG_ACTIVE_FROM_AFAR;
|
||||
|
|
|
@ -276,9 +276,9 @@ void bhv_mips_held(void) {
|
|||
if (o->oMipsStarStatus == MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR) {
|
||||
// Choose dialog based on which MIPS encounter this is.
|
||||
if (o->oBehParams2ndByte == 0)
|
||||
dialogID = DIALOG_084;
|
||||
dialogID = gBehaviorValues.dialogs.Mips1Dialog;
|
||||
else
|
||||
dialogID = DIALOG_162;
|
||||
dialogID = gBehaviorValues.dialogs.Mips2Dialog;
|
||||
|
||||
if (should_start_or_continue_dialog(&gMarioStates[o->heldByPlayerIndex], o) && set_mario_npc_dialog(&gMarioStates[0], 1, bhv_mips_held_continue_dialog) == 2) {
|
||||
//o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
struct RacingPenguinData {
|
||||
s16 text;
|
||||
f32 radius;
|
||||
f32 height;
|
||||
s16* text;
|
||||
f32* radius;
|
||||
f32* height;
|
||||
};
|
||||
|
||||
static struct RacingPenguinData sRacingPenguinData[] = {
|
||||
{ DIALOG_055, 200.0f, 200.0f },
|
||||
{ DIALOG_164, 350.0f, 250.0f },
|
||||
{ (s16*) &gBehaviorValues.dialogs.RacingPenguinStartDialog, &gBehaviorValues.RacingPenguinRadius, &gBehaviorValues.RacingPenguinHeight },
|
||||
{ (s16*) &gBehaviorValues.dialogs.RacingPenguinBigStartDialog, &gBehaviorValues.RacingPenguinBigRadius, &gBehaviorValues.RacingPenguinBigHeight },
|
||||
};
|
||||
|
||||
static u32 penguinPathedStartWaypoint = 0;
|
||||
|
@ -32,8 +32,8 @@ void bhv_racing_penguin_the_quick_override_ownership(u8* shouldOverride, u8* sho
|
|||
void bhv_racing_penguin_run_once(void) {
|
||||
cur_obj_align_gfx_with_floor();
|
||||
cur_obj_push_mario_away_from_cylinder(
|
||||
sRacingPenguinData[o->oBehParams2ndByte].radius,
|
||||
sRacingPenguinData[o->oBehParams2ndByte].height);
|
||||
*sRacingPenguinData[o->oBehParams2ndByte].radius,
|
||||
*sRacingPenguinData[o->oBehParams2ndByte].height);
|
||||
}
|
||||
|
||||
void bhv_racing_penguin_init(void) {
|
||||
|
@ -93,7 +93,7 @@ static void racing_penguin_act_wait_for_mario(void) {
|
|||
u8 racing_penguin_act_show_init_text_continue_dialog(void) { return o->oAction == RACING_PENGUIN_ACT_SHOW_INIT_TEXT; }
|
||||
|
||||
static void racing_penguin_act_show_init_text(void) {
|
||||
s32 response = obj_update_race_proposition_dialog(&gMarioStates[0], sRacingPenguinData[o->oBehParams2ndByte].text, racing_penguin_act_show_init_text_continue_dialog);
|
||||
s32 response = obj_update_race_proposition_dialog(&gMarioStates[0], *sRacingPenguinData[o->oBehParams2ndByte].text, racing_penguin_act_show_init_text_continue_dialog);
|
||||
|
||||
if (response == 1) {
|
||||
struct Object *child;
|
||||
|
@ -227,13 +227,13 @@ static void racing_penguin_act_show_final_text(void) {
|
|||
if (cur_obj_can_mario_activate_textbox_2(&gMarioStates[0], 400.0f, 400.0f)) {
|
||||
if (o->oRacingPenguinMarioWon) {
|
||||
if (o->oRacingPenguinMarioCheated) {
|
||||
o->oRacingPenguinFinalTextbox = DIALOG_132;
|
||||
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinCheatDialog;
|
||||
o->oRacingPenguinMarioWon = FALSE;
|
||||
} else {
|
||||
o->oRacingPenguinFinalTextbox = DIALOG_056;
|
||||
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinWinDialog;
|
||||
}
|
||||
} else {
|
||||
o->oRacingPenguinFinalTextbox = DIALOG_037;
|
||||
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinLostDialog;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -36,7 +36,7 @@ void bhv_sl_snowman_wind_loop(void) {
|
|||
|
||||
// Mario has come close, begin dialog.
|
||||
} else if (o->oSubAction == SL_SNOWMAN_WIND_ACT_TALKING) {
|
||||
if (cur_obj_update_dialog(&gMarioStates[0], 2, 2, DIALOG_153, 0, bhv_sl_snowman_wind_loop_continue_dialog)) {
|
||||
if (cur_obj_update_dialog(&gMarioStates[0], 2, 2, gBehaviorValues.dialogs.SnowmanWindDialog, 0, bhv_sl_snowman_wind_loop_continue_dialog)) {
|
||||
o->oSubAction++;
|
||||
network_send_object(o);
|
||||
}
|
||||
|
|
|
@ -140,7 +140,7 @@ void bhv_snowmans_bottom_loop(void) {
|
|||
if (should_start_or_continue_dialog(marioState, o)
|
||||
&& (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400) == 1)
|
||||
&& set_mario_npc_dialog(&gMarioStates[0], 1, bhv_snowmans_bottom_loop_continue_dialog) == 2) {
|
||||
sp1E = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_110);
|
||||
sp1E = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, gBehaviorValues.dialogs.SnowmanHeadBodyDialog);
|
||||
if (sp1E) {
|
||||
o->oForwardVel = 10.0f;
|
||||
o->oAction = 1;
|
||||
|
@ -217,7 +217,7 @@ void bhv_snowmans_head_loop(void) {
|
|||
|
||||
switch (o->oAction) {
|
||||
case 0:
|
||||
if (trigger_obj_dialog_when_facing(&gMarioStates[0], &o->oSnowmansHeadUnkF4, DIALOG_109, 400.0f, 1, bhv_snowmans_head_action_0_continue_dialog))
|
||||
if (trigger_obj_dialog_when_facing(&gMarioStates[0], &o->oSnowmansHeadUnkF4, gBehaviorValues.dialogs.SnowmanHeadDialog, 400.0f, 1, bhv_snowmans_head_action_0_continue_dialog))
|
||||
o->oAction = 1;
|
||||
break;
|
||||
|
||||
|
@ -241,7 +241,7 @@ void bhv_snowmans_head_loop(void) {
|
|||
break;
|
||||
|
||||
case 4:
|
||||
if (trigger_obj_dialog_when_facing(&gMarioStates[0], &o->oSnowmansHeadUnkF4, DIALOG_111, 700.0f, 2, bhv_snowmans_head_action_4_continue_dialog)) {
|
||||
if (trigger_obj_dialog_when_facing(&gMarioStates[0], &o->oSnowmansHeadUnkF4, gBehaviorValues.dialogs.SnowmanHeadAfterDialog, 700.0f, 2, bhv_snowmans_head_action_4_continue_dialog)) {
|
||||
spawn_mist_particles();
|
||||
f32* starPos = gLevelValues.starPositions.SnowmanHeadStarPos;
|
||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
||||
|
|
|
@ -58,15 +58,17 @@ void tuxies_mother_act_1(void) {
|
|||
if (!cur_obj_is_mario_on_platform()) {
|
||||
sp2C = (o->oBehParams >> 0x10) & 0xFF;
|
||||
sp28 = (o->prevObj->oBehParams >> 0x10) & 0xFF;
|
||||
if (sp2C == sp28)
|
||||
dialogID = DIALOG_058;
|
||||
else
|
||||
dialogID = DIALOG_059;
|
||||
if (sp2C == sp28) {
|
||||
dialogID = gBehaviorValues.dialogs.TuxieMotherBabyFoundDialog;
|
||||
} else {
|
||||
dialogID = gBehaviorValues.dialogs.TuxieMotherBabyWrongDialog;
|
||||
}
|
||||
if (cur_obj_update_dialog_with_cutscene(marioState, 2, 1, CUTSCENE_DIALOG, dialogID, tuxies_mother_act_1_continue_dialog)) {
|
||||
if (dialogID == DIALOG_058)
|
||||
if (dialogID == (s32) gBehaviorValues.dialogs.TuxieMotherBabyFoundDialog) {
|
||||
o->oSubAction = 1;
|
||||
else
|
||||
} else {
|
||||
o->oSubAction = 2;
|
||||
}
|
||||
o->prevObj->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
||||
}
|
||||
} else
|
||||
|
@ -134,7 +136,7 @@ void tuxies_mother_act_0(void) {
|
|||
o->oSubAction++;
|
||||
break;
|
||||
case 1:
|
||||
if (cur_obj_update_dialog_with_cutscene(marioState, 2, 1, CUTSCENE_DIALOG, DIALOG_057, tuxies_mother_act_0_continue_dialog))
|
||||
if (cur_obj_update_dialog_with_cutscene(marioState, 2, 1, CUTSCENE_DIALOG, gBehaviorValues.dialogs.TuxieMotherDialog, tuxies_mother_act_0_continue_dialog))
|
||||
o->oSubAction++;
|
||||
break;
|
||||
case 2:
|
||||
|
|
|
@ -405,7 +405,7 @@ void ukiki_act_go_to_cage(void) {
|
|||
case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO:
|
||||
cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND);
|
||||
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 3, 1, CUTSCENE_DIALOG, DIALOG_080, ukiki_act_go_to_cage_continue_dialog)) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 3, 1, CUTSCENE_DIALOG, gBehaviorValues.dialogs.UkikiCageDialog, ukiki_act_go_to_cage_continue_dialog)) {
|
||||
o->oSubAction++;
|
||||
network_send_object_reliability(o, TRUE);
|
||||
}
|
||||
|
@ -547,7 +547,7 @@ void cage_ukiki_held_loop(void) {
|
|||
switch(o->oUkikiTextState) {
|
||||
case UKIKI_TEXT_DEFAULT:
|
||||
if (set_mario_npc_dialog(heldByMario, 2, cage_ukiki_held_default_continue_dialog) == 2) {
|
||||
create_dialog_box_with_response(DIALOG_079);
|
||||
create_dialog_box_with_response(gBehaviorValues.dialogs.UkikiHeldDialog);
|
||||
o->oUkikiTextState = UKIKI_TEXT_CAGE_TEXTBOX;
|
||||
}
|
||||
break;
|
||||
|
@ -611,7 +611,7 @@ void cap_ukiki_held_loop(void) {
|
|||
break;
|
||||
|
||||
case UKIKI_TEXT_STEAL_CAP:
|
||||
if (should_start_or_continue_dialog(heldByMario, o) && cur_obj_update_dialog(heldByMario, 2, 2, DIALOG_100, 0, hat_ukiki_held_loop_1)) {
|
||||
if (should_start_or_continue_dialog(heldByMario, o) && cur_obj_update_dialog(heldByMario, 2, 2, gBehaviorValues.dialogs.UkikiCapStealDialog, 0, hat_ukiki_held_loop_1)) {
|
||||
o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
||||
o->oUkikiTextState = UKIKI_TEXT_STOLE_CAP;
|
||||
network_send_object(o);
|
||||
|
@ -622,7 +622,7 @@ void cap_ukiki_held_loop(void) {
|
|||
break;
|
||||
|
||||
case UKIKI_TEXT_HAS_CAP:
|
||||
if (should_start_or_continue_dialog(heldByMario, o) && cur_obj_update_dialog(heldByMario, 2, 18, DIALOG_101, 0, hat_ukiki_held_loop_2)) {
|
||||
if (should_start_or_continue_dialog(heldByMario, o) && cur_obj_update_dialog(heldByMario, 2, 18, gBehaviorValues.dialogs.UkikiCapGiveDialog, 0, hat_ukiki_held_loop_2)) {
|
||||
mario_retrieve_cap(heldByMario);
|
||||
set_mario_npc_dialog(heldByMario, 0, NULL);
|
||||
o->oUkikiHasCap &= ~UKIKI_CAP_ON;
|
||||
|
|
|
@ -34,7 +34,7 @@ void whomp_act_0(void) {
|
|||
cur_obj_set_pos_to_home();
|
||||
o->oHealth = 3;
|
||||
}
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, DIALOG_114, whomp_act_0_continue_dialog)) {
|
||||
} else if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 1, CUTSCENE_DIALOG, gBehaviorValues.dialogs.KingWhompDialog, whomp_act_0_continue_dialog)) {
|
||||
o->oAction = 2;
|
||||
network_send_object(o);
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ u8 whomp_act_8_continue_dialog(void) { return o->oAction == 8; }
|
|||
void whomp_act_8(void) {
|
||||
if (o->oBehParams2ndByte != 0) {
|
||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 2, CUTSCENE_DIALOG, DIALOG_115, whomp_act_8_continue_dialog)) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 2, CUTSCENE_DIALOG, gBehaviorValues.dialogs.KingWhompDefeatDialog, whomp_act_8_continue_dialog)) {
|
||||
obj_set_angle(o, 0, 0, 0);
|
||||
cur_obj_hide();
|
||||
cur_obj_become_intangible();
|
||||
|
|
|
@ -226,7 +226,7 @@ static void wiggler_act_walk(void) {
|
|||
|
||||
// If Mario is positioned below the wiggler, assume he entered through the
|
||||
// lower cave entrance, so don't display text.
|
||||
if (player->oPosY < o->oPosY || (cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, DIALOG_150, wiggler_act_walk_continue_dialog) != 0)) {
|
||||
if (player->oPosY < o->oPosY || (cur_obj_update_dialog_with_cutscene(&gMarioStates[0], 2, 0, CUTSCENE_DIALOG, gBehaviorValues.dialogs.WigglerDialog, wiggler_act_walk_continue_dialog) != 0)) {
|
||||
o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_COMPLETED_DIALOG;
|
||||
network_send_object_reliability(o, TRUE);
|
||||
}
|
||||
|
@ -295,7 +295,11 @@ static void wiggler_act_jumped_on(void) {
|
|||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||
|
||||
// Text to show on first, second, and third attack.
|
||||
s32 attackText[3] = { DIALOG_152, DIALOG_168, DIALOG_151 };
|
||||
s32* attackText[3] = {
|
||||
(s32*) &gBehaviorValues.dialogs.WigglerAttack1Dialog,
|
||||
(s32*) &gBehaviorValues.dialogs.WigglerAttack2Dialog,
|
||||
(s32*) &gBehaviorValues.dialogs.WigglerAttack3Dialog
|
||||
};
|
||||
|
||||
// Shrink until the squish speed becomes 0, then unisquish
|
||||
if (approach_f32_ptr(&o->oWigglerSquishSpeed, 0.0f, 0.05f)) {
|
||||
|
@ -309,7 +313,7 @@ static void wiggler_act_jumped_on(void) {
|
|||
// defeated) or go back to walking
|
||||
if (o->header.gfx.scale[1] >= 4.0f) {
|
||||
if (o->oTimer > 30) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(marioState, 2, 0, CUTSCENE_DIALOG, attackText[o->oHealth - 2], wiggler_act_jumped_on_continue_dialog) != 0) {
|
||||
if (should_start_or_continue_dialog(marioState, o) && cur_obj_update_dialog_with_cutscene(marioState, 2, 0, CUTSCENE_DIALOG, *attackText[o->oHealth - 2], wiggler_act_jumped_on_continue_dialog) != 0) {
|
||||
// Because we don't want the wiggler to disappear after being
|
||||
// defeated, we leave its health at 1
|
||||
if (--o->oHealth <= 1) {
|
||||
|
|
|
@ -201,7 +201,7 @@ void bhv_yoshi_loop(void) {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_161)) {
|
||||
if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, gBehaviorValues.dialogs.YoshiDialog)) {
|
||||
sYoshiTalkingState = 3;
|
||||
o->oInteractStatus = 0;
|
||||
o->oHomeX = sYoshiHomeLocations[2];
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "paintings.h"
|
||||
#include "engine/graph_node.h"
|
||||
#include "level_table.h"
|
||||
#include "game/hardcoded.h"
|
||||
#include "pc/configfile.h"
|
||||
#include "pc/network/network.h"
|
||||
|
||||
|
@ -6995,7 +6996,7 @@ s16 cutscene_object_with_dialog(u8 cutscene, struct Object *o, s16 dialogID) {
|
|||
if (dialogID != -1) {
|
||||
sCutsceneDialogID = dialogID;
|
||||
} else {
|
||||
sCutsceneDialogID = DIALOG_001;
|
||||
sCutsceneDialogID = (s16) gBehaviorValues.dialogs.DefaultCutsceneDialog;
|
||||
}
|
||||
} else {
|
||||
response = sCutsceneDialogResponse;
|
||||
|
@ -8256,13 +8257,13 @@ BAD_RETURN(s32) bowser_fight_intro_dialog(UNUSED struct Camera *c) {
|
|||
|
||||
switch (gCurrLevelNum) {
|
||||
case LEVEL_BOWSER_1:
|
||||
dialog = DIALOG_067;
|
||||
dialog = gBehaviorValues.dialogs.Bowser1Dialog;
|
||||
break;
|
||||
case LEVEL_BOWSER_2:
|
||||
dialog = DIALOG_092;
|
||||
dialog = gBehaviorValues.dialogs.Bowser2Dialog;
|
||||
break;
|
||||
default:
|
||||
dialog = DIALOG_093;
|
||||
dialog = gBehaviorValues.dialogs.Bowser3Dialog;
|
||||
}
|
||||
|
||||
create_dialog_box(dialog);
|
||||
|
@ -9499,7 +9500,7 @@ BAD_RETURN(s32) cutscene_cap_switch_press_pan_left(struct Camera *c) {
|
|||
* Create a dialog box with the cap switch's text.
|
||||
*/
|
||||
BAD_RETURN(s32) cutscene_cap_switch_press_create_dialog(UNUSED struct Camera *c) {
|
||||
create_dialog_box_with_response(gCutsceneFocus->oBehParams2ndByte + DIALOG_010);
|
||||
create_dialog_box_with_response(gCutsceneFocus->oBehParams2ndByte + gBehaviorValues.dialogs.CapswitchBaseDialog);
|
||||
}
|
||||
|
||||
static UNUSED BAD_RETURN(s32) unused_cap_switch_retrieve_info(struct Camera *c) {
|
||||
|
@ -9640,7 +9641,7 @@ s32 intro_peach_move_camera_start_to_pipe(struct Camera *c, struct CutsceneSplin
|
|||
* Create a dialog box with the letter text
|
||||
*/
|
||||
BAD_RETURN(s32) peach_letter_text(UNUSED struct Camera *c) {
|
||||
create_dialog_box(DIALOG_020);
|
||||
create_dialog_box(gBehaviorValues.dialogs.PeachLetterDialog);
|
||||
}
|
||||
|
||||
#ifndef VERSION_JP
|
||||
|
@ -9712,7 +9713,7 @@ BAD_RETURN(s32) cutscene_intro_peach_handheld_shake_off(UNUSED struct Camera *c)
|
|||
}
|
||||
|
||||
BAD_RETURN(s32) intro_pipe_exit_text(UNUSED struct Camera *c) {
|
||||
create_dialog_box(DIALOG_033);
|
||||
create_dialog_box(gBehaviorValues.dialogs.IntroPipeDialog);
|
||||
}
|
||||
|
||||
#ifndef VERSION_JP
|
||||
|
|
|
@ -79,8 +79,101 @@ struct LevelValues gLevelValues = {
|
|||
|
||||
struct BehaviorValues gBehaviorValues = {
|
||||
.KoopaBobAgility = 4.0f,
|
||||
.KoopaThiAgility = 6.0f,
|
||||
.KoopaCatchupAgility = 8.0f,
|
||||
.KoopaThiAgility = 6.0f,
|
||||
.RacingPenguinBigHeight = 250.0f,
|
||||
.RacingPenguinBigRadius = 350.0f,
|
||||
.RacingPenguinHeight = 200.0f,
|
||||
.RacingPenguinRadius = 200.0f,
|
||||
.ToadStar1Requirement = 12,
|
||||
.ToadStar2Requirement = 25,
|
||||
.ToadStar3Requirement = 35,
|
||||
.dialogs = {
|
||||
.BobombBuddyBob1Dialog = DIALOG_004,
|
||||
.BobombBuddyBob2Dialog = DIALOG_105,
|
||||
.BobombBuddyOther1Dialog = DIALOG_047,
|
||||
.BobombBuddyOther2Dialog = DIALOG_106,
|
||||
.Bowser1DefeatedDialog = DIALOG_119,
|
||||
.Bowser1Dialog = DIALOG_067,
|
||||
.Bowser2DefeatedDialog = DIALOG_120,
|
||||
.Bowser2Dialog = DIALOG_092,
|
||||
.Bowser3Defeated120StarsDialog = DIALOG_163,
|
||||
.Bowser3DefeatedDialog = DIALOG_121,
|
||||
.Bowser3Dialog = DIALOG_093,
|
||||
.CapswitchBaseDialog = DIALOG_010,
|
||||
.CapswitchMetalDialog = DIALOG_011,
|
||||
.CapswitchVanishDialog = DIALOG_012,
|
||||
.CapswitchWingDialog = DIALOG_010,
|
||||
.CastleEnterDialog = DIALOG_021,
|
||||
.CollectedStarDialog = DIALOG_014,
|
||||
.DefaultCutsceneDialog = DIALOG_001,
|
||||
.DoorNeed1StarDialog = DIALOG_024,
|
||||
.DoorNeed30StarsDialog = DIALOG_027,
|
||||
.DoorNeed3StarsDialog = DIALOG_025,
|
||||
.DoorNeed50StarsDialog = DIALOG_028,
|
||||
.DoorNeed70StarsDialog = DIALOG_029,
|
||||
.DoorNeed8StarsDialog = DIALOG_026,
|
||||
.DoorNeedKeyDialog = DIALOG_022,
|
||||
.EyerokDefeatedDialog = DIALOG_118,
|
||||
.EyerokIntroDialog = DIALOG_117,
|
||||
.GhostHuntAfterDialog = DIALOG_108,
|
||||
.GhostHuntDialog = DIALOG_107,
|
||||
.HootIntroDialog = DIALOG_044,
|
||||
.HootTiredDialog = DIALOG_045,
|
||||
.HundredCoinsDialog = DIALOG_013,
|
||||
.IntroPipeDialog = DIALOG_033,
|
||||
.KeyDoor1DontHaveDialog = DIALOG_022,
|
||||
.KeyDoor1HaveDialog = DIALOG_023,
|
||||
.KeyDoor2DontHaveDialog = DIALOG_022,
|
||||
.KeyDoor2HaveDialog = DIALOG_023,
|
||||
.KingBobombCheatDialog = DIALOG_128,
|
||||
.KingBobombDefeatDialog = DIALOG_116,
|
||||
.KingBobombIntroDialog = DIALOG_017,
|
||||
.KingWhompDefeatDialog = DIALOG_115,
|
||||
.KingWhompDialog = DIALOG_114,
|
||||
.KoopaQuickBobStartDialog = DIALOG_005,
|
||||
.KoopaQuickBobWinDialog = DIALOG_007,
|
||||
.KoopaQuickCheatedDialog = DIALOG_006,
|
||||
.KoopaQuickLostDialog = DIALOG_041,
|
||||
.KoopaQuickThiStartDialog = DIALOG_009,
|
||||
.KoopaQuickThiWinDialog = DIALOG_031,
|
||||
.LakituIntroDialog = DIALOG_034,
|
||||
.MetalCourseDialog = DIALOG_130,
|
||||
.Mips1Dialog = DIALOG_084,
|
||||
.Mips2Dialog = DIALOG_162,
|
||||
.PeachLetterDialog = DIALOG_020,
|
||||
.RacingPenguinBigStartDialog = DIALOG_164,
|
||||
.RacingPenguinCheatDialog = DIALOG_132,
|
||||
.RacingPenguinLostDialog = DIALOG_037,
|
||||
.RacingPenguinStartDialog = DIALOG_055,
|
||||
.RacingPenguinWinDialog = DIALOG_056,
|
||||
.SnowmanHeadAfterDialog = DIALOG_111,
|
||||
.SnowmanHeadBodyDialog = DIALOG_110,
|
||||
.SnowmanHeadDialog = DIALOG_109,
|
||||
.SnowmanWindDialog = DIALOG_153,
|
||||
.StarCollectionBaseDialog = DIALOG_141,
|
||||
.StarDoorDialog = DIALOG_038,
|
||||
.ToadStar1AfterDialog = DIALOG_154,
|
||||
.ToadStar1Dialog = DIALOG_082,
|
||||
.ToadStar2AfterDialog = DIALOG_155,
|
||||
.ToadStar2Dialog = DIALOG_076,
|
||||
.ToadStar3AfterDialog = DIALOG_156,
|
||||
.ToadStar3Dialog = DIALOG_083,
|
||||
.TuxieMotherDialog = DIALOG_057,
|
||||
.TuxieMotherBabyFoundDialog = DIALOG_058,
|
||||
.TuxieMotherBabyWrongDialog = DIALOG_059,
|
||||
.UkikiCageDialog = DIALOG_080,
|
||||
.UkikiCapGiveDialog = DIALOG_101,
|
||||
.UkikiCapStealDialog = DIALOG_100,
|
||||
.UkikiHeldDialog = DIALOG_079,
|
||||
.VanishCourseDialog = DIALOG_129,
|
||||
.WigglerAttack1Dialog = DIALOG_152,
|
||||
.WigglerAttack2Dialog = DIALOG_168,
|
||||
.WigglerAttack3Dialog = DIALOG_151,
|
||||
.WigglerDialog = DIALOG_150,
|
||||
.WingCourseDialog = DIALOG_131,
|
||||
.YoshiDialog = DIALOG_161,
|
||||
},
|
||||
.trajectories = {
|
||||
.KoopaBobTrajectory = (Trajectory*) bob_seg7_trajectory_koopa,
|
||||
.KoopaThiTrajectory = (Trajectory*) thi_seg7_trajectory_koopa,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef HARDCODED_H
|
||||
#include "types.h"
|
||||
#include "level_table.h"
|
||||
#include "dialog_ids.h"
|
||||
|
||||
////////////
|
||||
// Levels //
|
||||
|
@ -77,10 +78,105 @@ struct BehaviorTrajectories {
|
|||
Trajectory* PlatformLll2Trajectory;
|
||||
};
|
||||
|
||||
struct BehaviorDialogs {
|
||||
enum DialogId BobombBuddyBob1Dialog;
|
||||
enum DialogId BobombBuddyBob2Dialog;
|
||||
enum DialogId BobombBuddyOther1Dialog;
|
||||
enum DialogId BobombBuddyOther2Dialog;
|
||||
enum DialogId Bowser1DefeatedDialog;
|
||||
enum DialogId Bowser1Dialog;
|
||||
enum DialogId Bowser2DefeatedDialog;
|
||||
enum DialogId Bowser2Dialog;
|
||||
enum DialogId Bowser3Defeated120StarsDialog;
|
||||
enum DialogId Bowser3DefeatedDialog;
|
||||
enum DialogId Bowser3Dialog;
|
||||
enum DialogId CapswitchBaseDialog;
|
||||
enum DialogId CapswitchMetalDialog;
|
||||
enum DialogId CapswitchVanishDialog;
|
||||
enum DialogId CapswitchWingDialog;
|
||||
enum DialogId CastleEnterDialog;
|
||||
enum DialogId CollectedStarDialog;
|
||||
enum DialogId DefaultCutsceneDialog;
|
||||
enum DialogId DoorNeed1StarDialog;
|
||||
enum DialogId DoorNeed30StarsDialog;
|
||||
enum DialogId DoorNeed3StarsDialog;
|
||||
enum DialogId DoorNeed50StarsDialog;
|
||||
enum DialogId DoorNeed70StarsDialog;
|
||||
enum DialogId DoorNeed8StarsDialog;
|
||||
enum DialogId DoorNeedKeyDialog;
|
||||
enum DialogId EyerokDefeatedDialog;
|
||||
enum DialogId EyerokIntroDialog;
|
||||
enum DialogId GhostHuntAfterDialog;
|
||||
enum DialogId GhostHuntDialog;
|
||||
enum DialogId HootIntroDialog;
|
||||
enum DialogId HootTiredDialog;
|
||||
enum DialogId HundredCoinsDialog;
|
||||
enum DialogId IntroPipeDialog;
|
||||
enum DialogId KeyDoor1DontHaveDialog;
|
||||
enum DialogId KeyDoor1HaveDialog;
|
||||
enum DialogId KeyDoor2DontHaveDialog;
|
||||
enum DialogId KeyDoor2HaveDialog;
|
||||
enum DialogId KingBobombCheatDialog;
|
||||
enum DialogId KingBobombDefeatDialog;
|
||||
enum DialogId KingBobombIntroDialog;
|
||||
enum DialogId KingWhompDefeatDialog;
|
||||
enum DialogId KingWhompDialog;
|
||||
enum DialogId KoopaQuickBobStartDialog;
|
||||
enum DialogId KoopaQuickBobWinDialog;
|
||||
enum DialogId KoopaQuickCheatedDialog;
|
||||
enum DialogId KoopaQuickLostDialog;
|
||||
enum DialogId KoopaQuickThiStartDialog;
|
||||
enum DialogId KoopaQuickThiWinDialog;
|
||||
enum DialogId LakituIntroDialog;
|
||||
enum DialogId MetalCourseDialog;
|
||||
enum DialogId Mips1Dialog;
|
||||
enum DialogId Mips2Dialog;
|
||||
enum DialogId PeachLetterDialog;
|
||||
enum DialogId RacingPenguinBigStartDialog;
|
||||
enum DialogId RacingPenguinCheatDialog;
|
||||
enum DialogId RacingPenguinLostDialog;
|
||||
enum DialogId RacingPenguinStartDialog;
|
||||
enum DialogId RacingPenguinWinDialog;
|
||||
enum DialogId SnowmanHeadAfterDialog;
|
||||
enum DialogId SnowmanHeadBodyDialog;
|
||||
enum DialogId SnowmanHeadDialog;
|
||||
enum DialogId SnowmanWindDialog;
|
||||
enum DialogId StarCollectionBaseDialog;
|
||||
enum DialogId StarDoorDialog;
|
||||
enum DialogId ToadStar1AfterDialog;
|
||||
enum DialogId ToadStar1Dialog;
|
||||
enum DialogId ToadStar2AfterDialog;
|
||||
enum DialogId ToadStar2Dialog;
|
||||
enum DialogId ToadStar3AfterDialog;
|
||||
enum DialogId ToadStar3Dialog;
|
||||
enum DialogId TuxieMotherDialog;
|
||||
enum DialogId TuxieMotherBabyFoundDialog;
|
||||
enum DialogId TuxieMotherBabyWrongDialog;
|
||||
enum DialogId UkikiCageDialog;
|
||||
enum DialogId UkikiCapGiveDialog;
|
||||
enum DialogId UkikiCapStealDialog;
|
||||
enum DialogId UkikiHeldDialog;
|
||||
enum DialogId VanishCourseDialog;
|
||||
enum DialogId WigglerAttack1Dialog;
|
||||
enum DialogId WigglerAttack2Dialog;
|
||||
enum DialogId WigglerAttack3Dialog;
|
||||
enum DialogId WigglerDialog;
|
||||
enum DialogId WingCourseDialog;
|
||||
enum DialogId YoshiDialog;
|
||||
};
|
||||
|
||||
struct BehaviorValues {
|
||||
f32 KoopaBobAgility;
|
||||
f32 KoopaThiAgility;
|
||||
f32 KoopaCatchupAgility;
|
||||
f32 KoopaThiAgility;
|
||||
f32 RacingPenguinBigHeight;
|
||||
f32 RacingPenguinBigRadius;
|
||||
f32 RacingPenguinHeight;
|
||||
f32 RacingPenguinRadius;
|
||||
u16 ToadStar1Requirement;
|
||||
u16 ToadStar2Requirement;
|
||||
u16 ToadStar3Requirement;
|
||||
struct BehaviorDialogs dialogs;
|
||||
struct BehaviorTrajectories trajectories;
|
||||
};
|
||||
|
||||
|
|
|
@ -418,31 +418,73 @@ void render_multi_text_string(s16 *xPos, s16 *yPos, s8 multiTextID)
|
|||
|
||||
u8 str_ascii_char_to_dialog(char c) {
|
||||
switch (c) {
|
||||
case '/': return 0xD0;
|
||||
case '>': return 0x53;
|
||||
case '<': return 0x52;
|
||||
case '|': return 0x51;
|
||||
case '^': return 0x50;
|
||||
case '\n': return 0xFE;
|
||||
case '$': return 0xF9;
|
||||
case '~': return 0xF7;
|
||||
case '?': return 0xF4;
|
||||
case '%': return 0xF3;
|
||||
case '!': return 0xF2;
|
||||
case ':': return 0xE6;
|
||||
case '&': return 0xE5;
|
||||
case '+': return 0xE4;
|
||||
case ')': return 0xE3;
|
||||
case '(': return 0xE1;
|
||||
case '-': return 0x9F;
|
||||
case ' ': return 0x9E;
|
||||
case ',': return 0x6F;
|
||||
case '.': return 0x3F;
|
||||
case '\'': return 0x3E;
|
||||
case '.': return 0x3F;
|
||||
case ',': return DIALOG_CHAR_COMMA;
|
||||
case '-': return 0x9F;
|
||||
case '(': return 0xE1;
|
||||
case ')': return 0xE3;
|
||||
case '&': return 0xE5;
|
||||
case '!': return 0xF2;
|
||||
case '%': return 0xF3;
|
||||
case '?': return 0xF4;
|
||||
case '"': return 0xF6; // 0xF5 is opening quote
|
||||
case '~': return 0xF7;
|
||||
case '*': return 0xFB;
|
||||
case ' ': return DIALOG_CHAR_SPACE;
|
||||
case '\n': return DIALOG_CHAR_NEWLINE;
|
||||
case '\0': return DIALOG_CHAR_TERMINATOR;
|
||||
default: return ((u8)c < 0xF0) ? ASCII_TO_DIALOG(c) : c;
|
||||
}
|
||||
}
|
||||
|
||||
void str_ascii_to_dialog(const char* string, u8* dialog, u16 length) {
|
||||
for (s32 i = 0; i < length; i++) {
|
||||
dialog[i] = str_ascii_char_to_dialog(string[i]);
|
||||
char* c = (char*) string;
|
||||
u8* d = dialog;
|
||||
u16 converted = 0;
|
||||
|
||||
while (*c != '\0' && converted < (length - 1)) {
|
||||
if (!strncmp(c, "you", 3) && (c[3] < 'a' || c[3] > 'z')) {
|
||||
*d = 0xD2;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "the", 3) && (c[3] < 'a' || c[3] > 'z')) {
|
||||
*d = 0xD1;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[R]", 3)) {
|
||||
*d = 0x58;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[Z]", 3)) {
|
||||
*d = 0x57;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[C]", 3)) {
|
||||
*d = 0x56;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[B]", 3)) {
|
||||
*d = 0x55;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[A]", 3)) {
|
||||
*d = 0x54;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, "[Z]", 3)) {
|
||||
*d = 0x57;
|
||||
c += 2;
|
||||
} else if (!strncmp(c, ")(", 2)) {
|
||||
*d = 0xE2;
|
||||
c += 1;
|
||||
} else {
|
||||
*d = str_ascii_char_to_dialog(*c);
|
||||
}
|
||||
d++;
|
||||
c++;
|
||||
converted++;
|
||||
}
|
||||
dialog[length] = DIALOG_CHAR_TERMINATOR;
|
||||
*d = DIALOG_CHAR_TERMINATOR;
|
||||
}
|
||||
|
||||
f32 get_generic_dialog_width(u8* dialog) {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#define ASCII_TO_DIALOG(asc) \
|
||||
(((asc) >= '0' && (asc) <= '9') ? ((asc) - '0') : \
|
||||
((asc) >= 'A' && (asc) <= 'Z') ? ((asc) - 'A' + 0x0A) : \
|
||||
((asc) >= 'a' && (asc) <= 'z') ? ((asc) - 'a' + 0x24) : 0x00)
|
||||
((asc) >= 'a' && (asc) <= 'z') ? ((asc) - 'a' + 0x24) : 0xF4)
|
||||
|
||||
#define MENU_MTX_PUSH 1
|
||||
#define MENU_MTX_NOPUSH 2
|
||||
|
|
|
@ -1063,7 +1063,7 @@ u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Obj
|
|||
if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) {
|
||||
if (warpDoorId == 1 && !(saveFlags & SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) {
|
||||
if (!(saveFlags & SAVE_FLAG_HAVE_KEY_2)) {
|
||||
if (display_door_dialog(m, (saveFlags & SAVE_FLAG_HAVE_KEY_1) ? DIALOG_023 : DIALOG_022)) {
|
||||
if (display_door_dialog(m, (saveFlags & SAVE_FLAG_HAVE_KEY_1) ? gBehaviorValues.dialogs.KeyDoor1HaveDialog : gBehaviorValues.dialogs.KeyDoor1DontHaveDialog)) {
|
||||
sDisplayingDoorText = TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -1074,7 +1074,7 @@ u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Obj
|
|||
|
||||
if (warpDoorId == 2 && !(saveFlags & SAVE_FLAG_UNLOCKED_BASEMENT_DOOR)) {
|
||||
if (!(saveFlags & SAVE_FLAG_HAVE_KEY_1)) {
|
||||
if (display_door_dialog(m, (saveFlags & SAVE_FLAG_HAVE_KEY_2) ? DIALOG_023 : DIALOG_022)) {
|
||||
if (display_door_dialog(m, (saveFlags & SAVE_FLAG_HAVE_KEY_2) ? gBehaviorValues.dialogs.KeyDoor2HaveDialog : gBehaviorValues.dialogs.KeyDoor2DontHaveDialog)) {
|
||||
sDisplayingDoorText = TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -1180,26 +1180,26 @@ u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *
|
|||
|
||||
return set_mario_action(m, enterDoorAction, actionArg);
|
||||
} else if (!sDisplayingDoorText) {
|
||||
u32 text = DIALOG_022 << 16;
|
||||
u32 text = gBehaviorValues.dialogs.DoorNeedKeyDialog << 16;
|
||||
|
||||
switch (requiredNumStars) {
|
||||
case 1:
|
||||
text = DIALOG_024 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed1StarDialog << 16;
|
||||
break;
|
||||
case 3:
|
||||
text = DIALOG_025 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed3StarsDialog << 16;
|
||||
break;
|
||||
case 8:
|
||||
text = DIALOG_026 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed8StarsDialog << 16;
|
||||
break;
|
||||
case 30:
|
||||
text = DIALOG_027 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed30StarsDialog << 16;
|
||||
break;
|
||||
case 50:
|
||||
text = DIALOG_028 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed50StarsDialog << 16;
|
||||
break;
|
||||
case 70:
|
||||
text = DIALOG_029 << 16;
|
||||
text = gBehaviorValues.dialogs.DoorNeed70StarsDialog << 16;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "ingame_menu.h"
|
||||
#include "obj_behaviors.h"
|
||||
#include "save_file.h"
|
||||
#include "hardcoded.h"
|
||||
#include "debug_course.h"
|
||||
#ifdef VERSION_EU
|
||||
#include "memory.h"
|
||||
|
@ -280,26 +281,16 @@ void load_level_init_text(u32 arg) {
|
|||
s32 gotAchievement;
|
||||
u32 dialogID = gCurrentArea->dialog[arg];
|
||||
|
||||
switch (dialogID) {
|
||||
case DIALOG_129:
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;
|
||||
break;
|
||||
|
||||
case DIALOG_130:
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;
|
||||
break;
|
||||
|
||||
case DIALOG_131:
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_WING_CAP;
|
||||
break;
|
||||
|
||||
case 255:
|
||||
gotAchievement = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
gotAchievement = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
|
||||
break;
|
||||
if (dialogID == gBehaviorValues.dialogs.VanishCourseDialog) {
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;
|
||||
} else if (dialogID == gBehaviorValues.dialogs.MetalCourseDialog) {
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;
|
||||
} else if (dialogID == gBehaviorValues.dialogs.WingCourseDialog) {
|
||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_WING_CAP;
|
||||
} else if (dialogID == 255) {
|
||||
gotAchievement = TRUE;
|
||||
} else {
|
||||
gotAchievement = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
|
||||
}
|
||||
|
||||
if (!gotAchievement) {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "sound_init.h"
|
||||
#include "rumble_init.h"
|
||||
#include "obj_behaviors.h"
|
||||
#include "hardcoded.h"
|
||||
#include "../../include/libc/stdlib.h"
|
||||
#include "pc/debuglog.h"
|
||||
#include "pc/pc_main.h"
|
||||
|
@ -243,7 +244,7 @@ s32 get_star_collection_dialog(struct MarioState *m) {
|
|||
for (s32 i = 0; i < ARRAY_COUNT(sStarsNeededForDialog); i++) {
|
||||
s32 numStarsRequired = sStarsNeededForDialog[i];
|
||||
if (m->prevNumStarsForDialog < numStarsRequired && m->numStars >= numStarsRequired) {
|
||||
dialogID = i + DIALOG_141;
|
||||
dialogID = i + gBehaviorValues.dialogs.StarCollectionBaseDialog;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -693,7 +694,9 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
|
|||
level_trigger_warp(m, WARP_OP_STAR_EXIT);
|
||||
} else if (m->playerIndex == 0) {
|
||||
enable_time_stop_if_alone();
|
||||
create_dialog_box_with_response(gLastCompletedStarNum == 7 ? DIALOG_013 : DIALOG_014);
|
||||
create_dialog_box_with_response((gLastCompletedStarNum == 7)
|
||||
? gBehaviorValues.dialogs.HundredCoinsDialog
|
||||
: gBehaviorValues.dialogs.CollectedStarDialog);
|
||||
m->actionState = 1;
|
||||
} else {
|
||||
set_mario_action(m, isInWater ? ACT_WATER_IDLE : ACT_IDLE, 0);
|
||||
|
@ -957,7 +960,7 @@ s32 act_unlocking_star_door(struct MarioState *m) {
|
|||
if (m->playerIndex != 0) { allowRemoteStarSpawn = TRUE; }
|
||||
if (is_anim_at_end(m)) {
|
||||
save_file_set_flags(get_door_save_file_flag(m->usedObj));
|
||||
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_038);
|
||||
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, gBehaviorValues.dialogs.StarDoorDialog);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1084,7 +1087,7 @@ s32 act_warp_door_spawn(struct MarioState *m) {
|
|||
} else if (m->usedObj == NULL || (m->usedObj->oAction == 0 || m->usedObj->oAction == 100)) {
|
||||
if (m->playerIndex == 0) {
|
||||
if (gNeverEnteredCastle == TRUE && gCurrLevelNum == LEVEL_CASTLE) {
|
||||
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_021);
|
||||
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, gBehaviorValues.dialogs.CastleEnterDialog);
|
||||
} else {
|
||||
set_mario_action(m, ACT_IDLE, 0);
|
||||
}
|
||||
|
|
|
@ -22,20 +22,21 @@
|
|||
#include "rendering_graph_node.h"
|
||||
#include "save_file.h"
|
||||
#include "skybox.h"
|
||||
#include "hardcoded.h"
|
||||
#include "sound_init.h"
|
||||
#include "pc/network/network.h"
|
||||
|
||||
#define TOAD_STAR_1_REQUIREMENT 12
|
||||
#define TOAD_STAR_2_REQUIREMENT 25
|
||||
#define TOAD_STAR_3_REQUIREMENT 35
|
||||
#define TOAD_STAR_1_REQUIREMENT gBehaviorValues.ToadStar1Requirement
|
||||
#define TOAD_STAR_2_REQUIREMENT gBehaviorValues.ToadStar2Requirement
|
||||
#define TOAD_STAR_3_REQUIREMENT gBehaviorValues.ToadStar3Requirement
|
||||
|
||||
#define TOAD_STAR_1_DIALOG DIALOG_082
|
||||
#define TOAD_STAR_2_DIALOG DIALOG_076
|
||||
#define TOAD_STAR_3_DIALOG DIALOG_083
|
||||
#define TOAD_STAR_1_DIALOG gBehaviorValues.dialogs.ToadStar1Dialog
|
||||
#define TOAD_STAR_2_DIALOG gBehaviorValues.dialogs.ToadStar2Dialog
|
||||
#define TOAD_STAR_3_DIALOG gBehaviorValues.dialogs.ToadStar3Dialog
|
||||
|
||||
#define TOAD_STAR_1_DIALOG_AFTER DIALOG_154
|
||||
#define TOAD_STAR_2_DIALOG_AFTER DIALOG_155
|
||||
#define TOAD_STAR_3_DIALOG_AFTER DIALOG_156
|
||||
#define TOAD_STAR_1_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar1AfterDialog
|
||||
#define TOAD_STAR_2_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar2AfterDialog
|
||||
#define TOAD_STAR_3_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar3AfterDialog
|
||||
|
||||
enum ToadMessageStates {
|
||||
TOAD_MESSAGE_FADED,
|
||||
|
@ -212,19 +213,17 @@ static void toad_message_talking(void) {
|
|||
!= 0) {
|
||||
gCurrentObject->oToadMessageRecentlyTalked = TRUE;
|
||||
gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;
|
||||
switch (gCurrentObject->oToadMessageDialogId) {
|
||||
case TOAD_STAR_1_DIALOG:
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 0, TRUE);
|
||||
break;
|
||||
case TOAD_STAR_2_DIALOG:
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 1, TRUE);
|
||||
break;
|
||||
case TOAD_STAR_3_DIALOG:
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 2, TRUE);
|
||||
break;
|
||||
|
||||
u32 dialogId = gCurrentObject->oToadMessageDialogId;
|
||||
if (dialogId == TOAD_STAR_1_DIALOG) {
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 0, TRUE);
|
||||
} else if (dialogId == TOAD_STAR_2_DIALOG) {
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 1, TRUE);
|
||||
} else if (dialogId == TOAD_STAR_3_DIALOG) {
|
||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 2, TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -270,26 +269,23 @@ void bhv_toad_message_init(void) {
|
|||
s32 dialogId = (gCurrentObject->oBehParams >> 24) & 0xFF;
|
||||
s32 enoughStars = TRUE;
|
||||
|
||||
switch (dialogId) {
|
||||
case TOAD_STAR_1_DIALOG:
|
||||
enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_1) {
|
||||
dialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||
}
|
||||
break;
|
||||
case TOAD_STAR_2_DIALOG:
|
||||
enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_2) {
|
||||
dialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||
}
|
||||
break;
|
||||
case TOAD_STAR_3_DIALOG:
|
||||
enoughStars = (starCount >= TOAD_STAR_3_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_3) {
|
||||
dialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||
}
|
||||
break;
|
||||
if (dialogId == (s32)TOAD_STAR_1_DIALOG) {
|
||||
enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_1) {
|
||||
dialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||
}
|
||||
} else if (dialogId == (s32)TOAD_STAR_2_DIALOG) {
|
||||
enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_2) {
|
||||
dialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||
}
|
||||
} else if (dialogId == (s32)TOAD_STAR_3_DIALOG) {
|
||||
enoughStars = (starCount >= TOAD_STAR_3_REQUIREMENT);
|
||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_3) {
|
||||
dialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||
}
|
||||
}
|
||||
|
||||
if (enoughStars) {
|
||||
gCurrentObject->oToadMessageDialogId = dialogId;
|
||||
gCurrentObject->oToadMessageRecentlyTalked = FALSE;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/gbi.h>
|
||||
#include "dialog_ids.h"
|
||||
|
||||
extern u8 seg2_course_name_table[];
|
||||
extern u8 seg2_act_name_table[];
|
||||
|
@ -52,6 +53,7 @@ extern void *main_credits_font_lut[];
|
|||
extern u8* main_hud_camera_lut[6];
|
||||
extern Gfx dl_draw_text_bg_box[];
|
||||
extern Gfx dl_draw_triangle[];
|
||||
extern const u8* seg2_dialog_original[];
|
||||
extern void *seg2_dialog_table[];
|
||||
extern Gfx dl_billboard_num_0[];
|
||||
extern Gfx dl_billboard_num_1[];
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include "pc/mods/mods.h"
|
||||
#include "pc/mods/mods_utils.h"
|
||||
#include "pc/crash_handler.h"
|
||||
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||
|
||||
lua_State* gLuaState = NULL;
|
||||
u8 gLuaInitializingScript = 0;
|
||||
|
@ -141,6 +142,7 @@ void smlua_update(void) {
|
|||
}
|
||||
|
||||
void smlua_shutdown(void) {
|
||||
dialog_reset_all();
|
||||
smlua_cobject_allowlist_shutdown();
|
||||
smlua_cpointer_allowlist_shutdown();
|
||||
lua_State* L = gLuaState;
|
||||
|
|
|
@ -72,6 +72,94 @@ static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
|
|||
// { "whirlpools", LOT_???, offsetof(struct Area, whirlpools), false, LOT_??? }, <--- UNIMPLEMENTED
|
||||
};
|
||||
|
||||
#define LUA_BEHAVIOR_DIALOGS_FIELD_COUNT 84
|
||||
static struct LuaObjectField sBehaviorDialogsFields[LUA_BEHAVIOR_DIALOGS_FIELD_COUNT] = {
|
||||
{ "BobombBuddyBob1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, BobombBuddyBob1Dialog), false, LOT_NONE },
|
||||
{ "BobombBuddyBob2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, BobombBuddyBob2Dialog), false, LOT_NONE },
|
||||
{ "BobombBuddyOther1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, BobombBuddyOther1Dialog), false, LOT_NONE },
|
||||
{ "BobombBuddyOther2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, BobombBuddyOther2Dialog), false, LOT_NONE },
|
||||
{ "Bowser1DefeatedDialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser1DefeatedDialog), false, LOT_NONE },
|
||||
{ "Bowser1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser1Dialog), false, LOT_NONE },
|
||||
{ "Bowser2DefeatedDialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser2DefeatedDialog), false, LOT_NONE },
|
||||
{ "Bowser2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser2Dialog), false, LOT_NONE },
|
||||
{ "Bowser3Defeated120StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser3Defeated120StarsDialog), false, LOT_NONE },
|
||||
{ "Bowser3DefeatedDialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser3DefeatedDialog), false, LOT_NONE },
|
||||
{ "Bowser3Dialog", LVT_S32, offsetof(struct BehaviorDialogs, Bowser3Dialog), false, LOT_NONE },
|
||||
{ "CapswitchBaseDialog", LVT_S32, offsetof(struct BehaviorDialogs, CapswitchBaseDialog), false, LOT_NONE },
|
||||
{ "CapswitchMetalDialog", LVT_S32, offsetof(struct BehaviorDialogs, CapswitchMetalDialog), false, LOT_NONE },
|
||||
{ "CapswitchVanishDialog", LVT_S32, offsetof(struct BehaviorDialogs, CapswitchVanishDialog), false, LOT_NONE },
|
||||
{ "CapswitchWingDialog", LVT_S32, offsetof(struct BehaviorDialogs, CapswitchWingDialog), false, LOT_NONE },
|
||||
{ "CastleEnterDialog", LVT_S32, offsetof(struct BehaviorDialogs, CastleEnterDialog), false, LOT_NONE },
|
||||
{ "CollectedStarDialog", LVT_S32, offsetof(struct BehaviorDialogs, CollectedStarDialog), false, LOT_NONE },
|
||||
{ "DefaultCutsceneDialog", LVT_S32, offsetof(struct BehaviorDialogs, DefaultCutsceneDialog), false, LOT_NONE },
|
||||
{ "DoorNeed1StarDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed1StarDialog), false, LOT_NONE },
|
||||
{ "DoorNeed30StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed30StarsDialog), false, LOT_NONE },
|
||||
{ "DoorNeed3StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed3StarsDialog), false, LOT_NONE },
|
||||
{ "DoorNeed50StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed50StarsDialog), false, LOT_NONE },
|
||||
{ "DoorNeed70StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed70StarsDialog), false, LOT_NONE },
|
||||
{ "DoorNeed8StarsDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeed8StarsDialog), false, LOT_NONE },
|
||||
{ "DoorNeedKeyDialog", LVT_S32, offsetof(struct BehaviorDialogs, DoorNeedKeyDialog), false, LOT_NONE },
|
||||
{ "EyerokDefeatedDialog", LVT_S32, offsetof(struct BehaviorDialogs, EyerokDefeatedDialog), false, LOT_NONE },
|
||||
{ "EyerokIntroDialog", LVT_S32, offsetof(struct BehaviorDialogs, EyerokIntroDialog), false, LOT_NONE },
|
||||
{ "GhostHuntAfterDialog", LVT_S32, offsetof(struct BehaviorDialogs, GhostHuntAfterDialog), false, LOT_NONE },
|
||||
{ "GhostHuntDialog", LVT_S32, offsetof(struct BehaviorDialogs, GhostHuntDialog), false, LOT_NONE },
|
||||
{ "HootIntroDialog", LVT_S32, offsetof(struct BehaviorDialogs, HootIntroDialog), false, LOT_NONE },
|
||||
{ "HootTiredDialog", LVT_S32, offsetof(struct BehaviorDialogs, HootTiredDialog), false, LOT_NONE },
|
||||
{ "HundredCoinsDialog", LVT_S32, offsetof(struct BehaviorDialogs, HundredCoinsDialog), false, LOT_NONE },
|
||||
{ "IntroPipeDialog", LVT_S32, offsetof(struct BehaviorDialogs, IntroPipeDialog), false, LOT_NONE },
|
||||
{ "KeyDoor1DontHaveDialog", LVT_S32, offsetof(struct BehaviorDialogs, KeyDoor1DontHaveDialog), false, LOT_NONE },
|
||||
{ "KeyDoor1HaveDialog", LVT_S32, offsetof(struct BehaviorDialogs, KeyDoor1HaveDialog), false, LOT_NONE },
|
||||
{ "KeyDoor2DontHaveDialog", LVT_S32, offsetof(struct BehaviorDialogs, KeyDoor2DontHaveDialog), false, LOT_NONE },
|
||||
{ "KeyDoor2HaveDialog", LVT_S32, offsetof(struct BehaviorDialogs, KeyDoor2HaveDialog), false, LOT_NONE },
|
||||
{ "KingBobombCheatDialog", LVT_S32, offsetof(struct BehaviorDialogs, KingBobombCheatDialog), false, LOT_NONE },
|
||||
{ "KingBobombDefeatDialog", LVT_S32, offsetof(struct BehaviorDialogs, KingBobombDefeatDialog), false, LOT_NONE },
|
||||
{ "KingBobombIntroDialog", LVT_S32, offsetof(struct BehaviorDialogs, KingBobombIntroDialog), false, LOT_NONE },
|
||||
{ "KingWhompDefeatDialog", LVT_S32, offsetof(struct BehaviorDialogs, KingWhompDefeatDialog), false, LOT_NONE },
|
||||
{ "KingWhompDialog", LVT_S32, offsetof(struct BehaviorDialogs, KingWhompDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickBobStartDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickBobStartDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickBobWinDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickBobWinDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickCheatedDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickCheatedDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickLostDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickLostDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickThiStartDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickThiStartDialog), false, LOT_NONE },
|
||||
{ "KoopaQuickThiWinDialog", LVT_S32, offsetof(struct BehaviorDialogs, KoopaQuickThiWinDialog), false, LOT_NONE },
|
||||
{ "LakituIntroDialog", LVT_S32, offsetof(struct BehaviorDialogs, LakituIntroDialog), false, LOT_NONE },
|
||||
{ "MetalCourseDialog", LVT_S32, offsetof(struct BehaviorDialogs, MetalCourseDialog), false, LOT_NONE },
|
||||
{ "Mips1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, Mips1Dialog), false, LOT_NONE },
|
||||
{ "Mips2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, Mips2Dialog), false, LOT_NONE },
|
||||
{ "PeachLetterDialog", LVT_S32, offsetof(struct BehaviorDialogs, PeachLetterDialog), false, LOT_NONE },
|
||||
{ "RacingPenguinBigStartDialog", LVT_S32, offsetof(struct BehaviorDialogs, RacingPenguinBigStartDialog), false, LOT_NONE },
|
||||
{ "RacingPenguinCheatDialog", LVT_S32, offsetof(struct BehaviorDialogs, RacingPenguinCheatDialog), false, LOT_NONE },
|
||||
{ "RacingPenguinLostDialog", LVT_S32, offsetof(struct BehaviorDialogs, RacingPenguinLostDialog), false, LOT_NONE },
|
||||
{ "RacingPenguinStartDialog", LVT_S32, offsetof(struct BehaviorDialogs, RacingPenguinStartDialog), false, LOT_NONE },
|
||||
{ "RacingPenguinWinDialog", LVT_S32, offsetof(struct BehaviorDialogs, RacingPenguinWinDialog), false, LOT_NONE },
|
||||
{ "SnowmanHeadAfterDialog", LVT_S32, offsetof(struct BehaviorDialogs, SnowmanHeadAfterDialog), false, LOT_NONE },
|
||||
{ "SnowmanHeadBodyDialog", LVT_S32, offsetof(struct BehaviorDialogs, SnowmanHeadBodyDialog), false, LOT_NONE },
|
||||
{ "SnowmanHeadDialog", LVT_S32, offsetof(struct BehaviorDialogs, SnowmanHeadDialog), false, LOT_NONE },
|
||||
{ "SnowmanWindDialog", LVT_S32, offsetof(struct BehaviorDialogs, SnowmanWindDialog), false, LOT_NONE },
|
||||
{ "StarCollectionBaseDialog", LVT_S32, offsetof(struct BehaviorDialogs, StarCollectionBaseDialog), false, LOT_NONE },
|
||||
{ "StarDoorDialog", LVT_S32, offsetof(struct BehaviorDialogs, StarDoorDialog), false, LOT_NONE },
|
||||
{ "ToadStar1AfterDialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar1AfterDialog), false, LOT_NONE },
|
||||
{ "ToadStar1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar1Dialog), false, LOT_NONE },
|
||||
{ "ToadStar2AfterDialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar2AfterDialog), false, LOT_NONE },
|
||||
{ "ToadStar2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar2Dialog), false, LOT_NONE },
|
||||
{ "ToadStar3AfterDialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar3AfterDialog), false, LOT_NONE },
|
||||
{ "ToadStar3Dialog", LVT_S32, offsetof(struct BehaviorDialogs, ToadStar3Dialog), false, LOT_NONE },
|
||||
{ "TuxieMotherBabyFoundDialog", LVT_S32, offsetof(struct BehaviorDialogs, TuxieMotherBabyFoundDialog), false, LOT_NONE },
|
||||
{ "TuxieMotherBabyWrongDialog", LVT_S32, offsetof(struct BehaviorDialogs, TuxieMotherBabyWrongDialog), false, LOT_NONE },
|
||||
{ "TuxieMotherDialog", LVT_S32, offsetof(struct BehaviorDialogs, TuxieMotherDialog), false, LOT_NONE },
|
||||
{ "UkikiCageDialog", LVT_S32, offsetof(struct BehaviorDialogs, UkikiCageDialog), false, LOT_NONE },
|
||||
{ "UkikiCapGiveDialog", LVT_S32, offsetof(struct BehaviorDialogs, UkikiCapGiveDialog), false, LOT_NONE },
|
||||
{ "UkikiCapStealDialog", LVT_S32, offsetof(struct BehaviorDialogs, UkikiCapStealDialog), false, LOT_NONE },
|
||||
{ "UkikiHeldDialog", LVT_S32, offsetof(struct BehaviorDialogs, UkikiHeldDialog), false, LOT_NONE },
|
||||
{ "VanishCourseDialog", LVT_S32, offsetof(struct BehaviorDialogs, VanishCourseDialog), false, LOT_NONE },
|
||||
{ "WigglerAttack1Dialog", LVT_S32, offsetof(struct BehaviorDialogs, WigglerAttack1Dialog), false, LOT_NONE },
|
||||
{ "WigglerAttack2Dialog", LVT_S32, offsetof(struct BehaviorDialogs, WigglerAttack2Dialog), false, LOT_NONE },
|
||||
{ "WigglerAttack3Dialog", LVT_S32, offsetof(struct BehaviorDialogs, WigglerAttack3Dialog), false, LOT_NONE },
|
||||
{ "WigglerDialog", LVT_S32, offsetof(struct BehaviorDialogs, WigglerDialog), false, LOT_NONE },
|
||||
{ "WingCourseDialog", LVT_S32, offsetof(struct BehaviorDialogs, WingCourseDialog), false, LOT_NONE },
|
||||
{ "YoshiDialog", LVT_S32, offsetof(struct BehaviorDialogs, YoshiDialog), false, LOT_NONE },
|
||||
};
|
||||
|
||||
#define LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT 28
|
||||
static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT] = {
|
||||
{ "BowlingBallBob2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBob2Trajectory), false, LOT_POINTER },
|
||||
|
@ -104,12 +192,20 @@ static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORI
|
|||
{ "UnagiTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, UnagiTrajectory), false, LOT_POINTER },
|
||||
};
|
||||
|
||||
#define LUA_BEHAVIOR_VALUES_FIELD_COUNT 4
|
||||
#define LUA_BEHAVIOR_VALUES_FIELD_COUNT 12
|
||||
static struct LuaObjectField sBehaviorValuesFields[LUA_BEHAVIOR_VALUES_FIELD_COUNT] = {
|
||||
{ "KoopaBobAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaBobAgility), false, LOT_NONE },
|
||||
{ "KoopaCatchupAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaCatchupAgility), false, LOT_NONE },
|
||||
{ "KoopaThiAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaThiAgility), false, LOT_NONE },
|
||||
{ "trajectories", LVT_COBJECT, offsetof(struct BehaviorValues, trajectories), true, LOT_BEHAVIORTRAJECTORIES },
|
||||
{ "KoopaBobAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaBobAgility), false, LOT_NONE },
|
||||
{ "KoopaCatchupAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaCatchupAgility), false, LOT_NONE },
|
||||
{ "KoopaThiAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaThiAgility), false, LOT_NONE },
|
||||
{ "RacingPenguinBigHeight", LVT_F32, offsetof(struct BehaviorValues, RacingPenguinBigHeight), false, LOT_NONE },
|
||||
{ "RacingPenguinBigRadius", LVT_F32, offsetof(struct BehaviorValues, RacingPenguinBigRadius), false, LOT_NONE },
|
||||
{ "RacingPenguinHeight", LVT_F32, offsetof(struct BehaviorValues, RacingPenguinHeight), false, LOT_NONE },
|
||||
{ "RacingPenguinRadius", LVT_F32, offsetof(struct BehaviorValues, RacingPenguinRadius), false, LOT_NONE },
|
||||
{ "ToadStar1Requirement", LVT_U16, offsetof(struct BehaviorValues, ToadStar1Requirement), false, LOT_NONE },
|
||||
{ "ToadStar2Requirement", LVT_U16, offsetof(struct BehaviorValues, ToadStar2Requirement), false, LOT_NONE },
|
||||
{ "ToadStar3Requirement", LVT_U16, offsetof(struct BehaviorValues, ToadStar3Requirement), false, LOT_NONE },
|
||||
{ "dialogs", LVT_COBJECT, offsetof(struct BehaviorValues, dialogs), true, LOT_BEHAVIORDIALOGS },
|
||||
{ "trajectories", LVT_COBJECT, offsetof(struct BehaviorValues, trajectories), true, LOT_BEHAVIORTRAJECTORIES },
|
||||
};
|
||||
|
||||
#define LUA_BULLY_COLLISION_DATA_FIELD_COUNT 6
|
||||
|
@ -1775,6 +1871,7 @@ struct LuaObjectTable sLuaObjectAutogenTable[LOT_AUTOGEN_MAX - LOT_AUTOGEN_MIN]
|
|||
{ LOT_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
|
||||
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
|
||||
{ LOT_AREA, sAreaFields, LUA_AREA_FIELD_COUNT },
|
||||
{ LOT_BEHAVIORDIALOGS, sBehaviorDialogsFields, LUA_BEHAVIOR_DIALOGS_FIELD_COUNT },
|
||||
{ LOT_BEHAVIORTRAJECTORIES, sBehaviorTrajectoriesFields, LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT },
|
||||
{ LOT_BEHAVIORVALUES, sBehaviorValuesFields, LUA_BEHAVIOR_VALUES_FIELD_COUNT },
|
||||
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
|
||||
|
|
|
@ -8,6 +8,7 @@ enum LuaObjectAutogenType {
|
|||
LOT_ANIMINFO,
|
||||
LOT_ANIMATION,
|
||||
LOT_AREA,
|
||||
LOT_BEHAVIORDIALOGS,
|
||||
LOT_BEHAVIORTRAJECTORIES,
|
||||
LOT_BEHAVIORVALUES,
|
||||
LOT_BULLYCOLLISIONDATA,
|
||||
|
|
|
@ -1008,6 +1008,177 @@ char gSmluaConstants[] = ""
|
|||
"CHAR_SOUND_SO_LONGA_BOWSER = 40\n"
|
||||
"CHAR_SOUND_IMA_TIRED = 41\n"
|
||||
"CHAR_SOUND_MAX = 42\n"
|
||||
"DIALOG_000 = 0\n"
|
||||
"DIALOG_001 = 1\n"
|
||||
"DIALOG_002 = 2\n"
|
||||
"DIALOG_003 = 3\n"
|
||||
"DIALOG_004 = 4\n"
|
||||
"DIALOG_005 = 5\n"
|
||||
"DIALOG_006 = 6\n"
|
||||
"DIALOG_007 = 7\n"
|
||||
"DIALOG_008 = 8\n"
|
||||
"DIALOG_009 = 9\n"
|
||||
"DIALOG_010 = 10\n"
|
||||
"DIALOG_011 = 11\n"
|
||||
"DIALOG_012 = 12\n"
|
||||
"DIALOG_013 = 13\n"
|
||||
"DIALOG_014 = 14\n"
|
||||
"DIALOG_015 = 15\n"
|
||||
"DIALOG_016 = 16\n"
|
||||
"DIALOG_017 = 17\n"
|
||||
"DIALOG_018 = 18\n"
|
||||
"DIALOG_019 = 19\n"
|
||||
"DIALOG_020 = 20\n"
|
||||
"DIALOG_021 = 21\n"
|
||||
"DIALOG_022 = 22\n"
|
||||
"DIALOG_023 = 23\n"
|
||||
"DIALOG_024 = 24\n"
|
||||
"DIALOG_025 = 25\n"
|
||||
"DIALOG_026 = 26\n"
|
||||
"DIALOG_027 = 27\n"
|
||||
"DIALOG_028 = 28\n"
|
||||
"DIALOG_029 = 29\n"
|
||||
"DIALOG_030 = 30\n"
|
||||
"DIALOG_031 = 31\n"
|
||||
"DIALOG_032 = 32\n"
|
||||
"DIALOG_033 = 33\n"
|
||||
"DIALOG_034 = 34\n"
|
||||
"DIALOG_035 = 35\n"
|
||||
"DIALOG_036 = 36\n"
|
||||
"DIALOG_037 = 37\n"
|
||||
"DIALOG_038 = 38\n"
|
||||
"DIALOG_039 = 39\n"
|
||||
"DIALOG_040 = 40\n"
|
||||
"DIALOG_041 = 41\n"
|
||||
"DIALOG_042 = 42\n"
|
||||
"DIALOG_043 = 43\n"
|
||||
"DIALOG_044 = 44\n"
|
||||
"DIALOG_045 = 45\n"
|
||||
"DIALOG_046 = 46\n"
|
||||
"DIALOG_047 = 47\n"
|
||||
"DIALOG_048 = 48\n"
|
||||
"DIALOG_049 = 49\n"
|
||||
"DIALOG_050 = 50\n"
|
||||
"DIALOG_051 = 51\n"
|
||||
"DIALOG_052 = 52\n"
|
||||
"DIALOG_053 = 53\n"
|
||||
"DIALOG_054 = 54\n"
|
||||
"DIALOG_055 = 55\n"
|
||||
"DIALOG_056 = 56\n"
|
||||
"DIALOG_057 = 57\n"
|
||||
"DIALOG_058 = 58\n"
|
||||
"DIALOG_059 = 59\n"
|
||||
"DIALOG_060 = 60\n"
|
||||
"DIALOG_061 = 61\n"
|
||||
"DIALOG_062 = 62\n"
|
||||
"DIALOG_063 = 63\n"
|
||||
"DIALOG_064 = 64\n"
|
||||
"DIALOG_065 = 65\n"
|
||||
"DIALOG_066 = 66\n"
|
||||
"DIALOG_067 = 67\n"
|
||||
"DIALOG_068 = 68\n"
|
||||
"DIALOG_069 = 69\n"
|
||||
"DIALOG_070 = 70\n"
|
||||
"DIALOG_071 = 71\n"
|
||||
"DIALOG_072 = 72\n"
|
||||
"DIALOG_073 = 73\n"
|
||||
"DIALOG_074 = 74\n"
|
||||
"DIALOG_075 = 75\n"
|
||||
"DIALOG_076 = 76\n"
|
||||
"DIALOG_077 = 77\n"
|
||||
"DIALOG_078 = 78\n"
|
||||
"DIALOG_079 = 79\n"
|
||||
"DIALOG_080 = 80\n"
|
||||
"DIALOG_081 = 81\n"
|
||||
"DIALOG_082 = 82\n"
|
||||
"DIALOG_083 = 83\n"
|
||||
"DIALOG_084 = 84\n"
|
||||
"DIALOG_085 = 85\n"
|
||||
"DIALOG_086 = 86\n"
|
||||
"DIALOG_087 = 87\n"
|
||||
"DIALOG_088 = 88\n"
|
||||
"DIALOG_089 = 89\n"
|
||||
"DIALOG_090 = 90\n"
|
||||
"DIALOG_091 = 91\n"
|
||||
"DIALOG_092 = 92\n"
|
||||
"DIALOG_093 = 93\n"
|
||||
"DIALOG_094 = 94\n"
|
||||
"DIALOG_095 = 95\n"
|
||||
"DIALOG_096 = 96\n"
|
||||
"DIALOG_097 = 97\n"
|
||||
"DIALOG_098 = 98\n"
|
||||
"DIALOG_099 = 99\n"
|
||||
"DIALOG_100 = 100\n"
|
||||
"DIALOG_101 = 101\n"
|
||||
"DIALOG_102 = 102\n"
|
||||
"DIALOG_103 = 103\n"
|
||||
"DIALOG_104 = 104\n"
|
||||
"DIALOG_105 = 105\n"
|
||||
"DIALOG_106 = 106\n"
|
||||
"DIALOG_107 = 107\n"
|
||||
"DIALOG_108 = 108\n"
|
||||
"DIALOG_109 = 109\n"
|
||||
"DIALOG_110 = 110\n"
|
||||
"DIALOG_111 = 111\n"
|
||||
"DIALOG_112 = 112\n"
|
||||
"DIALOG_113 = 113\n"
|
||||
"DIALOG_114 = 114\n"
|
||||
"DIALOG_115 = 115\n"
|
||||
"DIALOG_116 = 116\n"
|
||||
"DIALOG_117 = 117\n"
|
||||
"DIALOG_118 = 118\n"
|
||||
"DIALOG_119 = 119\n"
|
||||
"DIALOG_120 = 120\n"
|
||||
"DIALOG_121 = 121\n"
|
||||
"DIALOG_122 = 122\n"
|
||||
"DIALOG_123 = 123\n"
|
||||
"DIALOG_124 = 124\n"
|
||||
"DIALOG_125 = 125\n"
|
||||
"DIALOG_126 = 126\n"
|
||||
"DIALOG_127 = 127\n"
|
||||
"DIALOG_128 = 128\n"
|
||||
"DIALOG_129 = 129\n"
|
||||
"DIALOG_130 = 130\n"
|
||||
"DIALOG_131 = 131\n"
|
||||
"DIALOG_132 = 132\n"
|
||||
"DIALOG_133 = 133\n"
|
||||
"DIALOG_134 = 134\n"
|
||||
"DIALOG_135 = 135\n"
|
||||
"DIALOG_136 = 136\n"
|
||||
"DIALOG_137 = 137\n"
|
||||
"DIALOG_138 = 138\n"
|
||||
"DIALOG_139 = 139\n"
|
||||
"DIALOG_140 = 140\n"
|
||||
"DIALOG_141 = 141\n"
|
||||
"DIALOG_142 = 142\n"
|
||||
"DIALOG_143 = 143\n"
|
||||
"DIALOG_144 = 144\n"
|
||||
"DIALOG_145 = 145\n"
|
||||
"DIALOG_146 = 146\n"
|
||||
"DIALOG_147 = 147\n"
|
||||
"DIALOG_148 = 148\n"
|
||||
"DIALOG_149 = 149\n"
|
||||
"DIALOG_150 = 150\n"
|
||||
"DIALOG_151 = 151\n"
|
||||
"DIALOG_152 = 152\n"
|
||||
"DIALOG_153 = 153\n"
|
||||
"DIALOG_154 = 154\n"
|
||||
"DIALOG_155 = 155\n"
|
||||
"DIALOG_156 = 156\n"
|
||||
"DIALOG_157 = 157\n"
|
||||
"DIALOG_158 = 158\n"
|
||||
"DIALOG_159 = 159\n"
|
||||
"DIALOG_160 = 160\n"
|
||||
"DIALOG_161 = 161\n"
|
||||
"DIALOG_162 = 162\n"
|
||||
"DIALOG_163 = 163\n"
|
||||
"DIALOG_164 = 164\n"
|
||||
"DIALOG_165 = 165\n"
|
||||
"DIALOG_166 = 166\n"
|
||||
"DIALOG_167 = 167\n"
|
||||
"DIALOG_168 = 168\n"
|
||||
"DIALOG_169 = 169\n"
|
||||
"DIALOG_COUNT = 170\n"
|
||||
"RESOLUTION_DJUI = 0\n"
|
||||
"RESOLUTION_N64 = 1\n"
|
||||
"RESOLUTION_COUNT = 2\n"
|
||||
|
|
|
@ -14656,6 +14656,36 @@ int smlua_func_deref_s32_pointer(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_dialog_replace(lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 6)) { return 0; }
|
||||
|
||||
int dialogId = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
u32 unused = smlua_to_integer(L, 2);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
s8 linesPerBox = smlua_to_integer(L, 3);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
s16 leftOffset = smlua_to_integer(L, 4);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
s16 width = smlua_to_integer(L, 5);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
const char* str = smlua_to_string(L, 6);
|
||||
if (!gSmLuaConvertSuccess) { return 0; }
|
||||
|
||||
dialog_replace(dialogId, unused, linesPerBox, leftOffset, width, str);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_dialog_reset_all(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
||||
dialog_reset_all();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_current_save_file_num(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
@ -16818,6 +16848,8 @@ void smlua_bind_functions_autogen(void) {
|
|||
// smlua_misc_utils.h
|
||||
smlua_bind_function(L, "allocate_mario_action", smlua_func_allocate_mario_action);
|
||||
smlua_bind_function(L, "deref_s32_pointer", smlua_func_deref_s32_pointer);
|
||||
smlua_bind_function(L, "dialog_replace", smlua_func_dialog_replace);
|
||||
smlua_bind_function(L, "dialog_reset_all", smlua_func_dialog_reset_all);
|
||||
smlua_bind_function(L, "get_current_save_file_num", smlua_func_get_current_save_file_num);
|
||||
smlua_bind_function(L, "get_environment_region", smlua_func_get_environment_region);
|
||||
smlua_bind_function(L, "get_hand_foot_pos_x", smlua_func_get_hand_foot_pos_x);
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include "pc/lua/smlua.h"
|
||||
#include "smlua_misc_utils.h"
|
||||
#include "pc/debuglog.h"
|
||||
#include "game/ingame_menu.h"
|
||||
#include "game/segment2.h"
|
||||
|
||||
#include "game/object_list_processor.h"
|
||||
|
||||
|
@ -106,3 +108,42 @@ void set_environment_region(u8 index, s32 value) {
|
|||
gEnvironmentRegions[6 * (int)index] = value;
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
|
||||
static bool sReplacedDialog[DIALOG_COUNT] = { 0 };
|
||||
|
||||
void dialog_reset_all(void) {
|
||||
void **dialogTable = segmented_to_virtual(seg2_dialog_table);
|
||||
|
||||
for (s32 i = 0; i < DIALOG_COUNT; i++) {
|
||||
struct DialogEntry *dialog = segmented_to_virtual(dialogTable[i]);
|
||||
if (sReplacedDialog[i]) {
|
||||
free((u8*)dialog->str);
|
||||
dialog->str = seg2_dialog_original[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dialog_replace(enum DialogId dialogId, UNUSED u32 unused, s8 linesPerBox, s16 leftOffset, s16 width, const char* str) {
|
||||
if (dialogId >= DIALOG_COUNT) { return; }
|
||||
|
||||
void **dialogTable = segmented_to_virtual(seg2_dialog_table);
|
||||
struct DialogEntry *dialog = segmented_to_virtual(dialogTable[dialogId]);
|
||||
|
||||
s32 len = strlen(str);
|
||||
u8* dialogStr = calloc(len + 1, sizeof(u8));
|
||||
str_ascii_to_dialog(str, dialogStr, len);
|
||||
|
||||
if (sReplacedDialog[dialogId]) {
|
||||
free((u8*)dialog->str);
|
||||
}
|
||||
|
||||
dialog->unused = unused;
|
||||
dialog->linesPerBox = linesPerBox;
|
||||
dialog->leftOffset = leftOffset;
|
||||
dialog->width = width;
|
||||
dialog->str = (const u8*)dialogStr;
|
||||
sReplacedDialog[dialogId] = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef SMLUA_MISC_UTILS_H
|
||||
#define SMLUA_MISC_UTILS_H
|
||||
|
||||
#include "dialog_ids.h"
|
||||
|
||||
u32 get_network_area_timer(void);
|
||||
|
||||
s32* get_temp_s32_pointer(s32 initialValue);
|
||||
|
@ -20,6 +22,9 @@ f32 get_hand_foot_pos_x(struct MarioState* m, u8 index);
|
|||
f32 get_hand_foot_pos_y(struct MarioState* m, u8 index);
|
||||
f32 get_hand_foot_pos_z(struct MarioState* m, u8 index);
|
||||
|
||||
void dialog_reset_all(void);
|
||||
void dialog_replace(enum DialogId dialogId, u32 unused, s8 linesPerBox, s16 leftOffset, s16 width, const char* str);
|
||||
|
||||
s16 get_current_save_file_num(void);
|
||||
|
||||
void movtexqc_register(const char* name, s16 level, s16 area, s16 type);
|
||||
|
|
|
@ -44,9 +44,17 @@ const struct DialogEntry *const seg2_debug_text_table[] = {
|
|||
|
||||
#include "dialogs.h"
|
||||
|
||||
#undef DEFINE_DIALOG
|
||||
#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) dialog_text_ ## id,
|
||||
|
||||
const u8* seg2_dialog_original[] = {
|
||||
#include "dialogs.h"
|
||||
NULL
|
||||
};
|
||||
|
||||
#undef DEFINE_DIALOG
|
||||
#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \
|
||||
static const struct DialogEntry dialog_entry_ ## id = { \
|
||||
static struct DialogEntry dialog_entry_ ## id = { \
|
||||
unused, linesPerBox, leftOffset, width, dialog_text_ ## id \
|
||||
};
|
||||
|
||||
|
@ -60,7 +68,6 @@ const struct DialogEntry *const seg2_dialog_table[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
|
||||
// == courses ==
|
||||
// (defines en_course_name_table etc.)
|
||||
// The game duplicates this in levels/menu/leveldata.c in EU, so we split
|
||||
|
|
Loading…
Reference in a new issue