mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +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/obj_behaviors.c",
|
||||||
"src/game/save_file.h",
|
"src/game/save_file.h",
|
||||||
"src/game/obj_behaviors_2.h",
|
"src/game/obj_behaviors_2.h",
|
||||||
|
"include/dialog_ids.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
exclude_constants = {
|
exclude_constants = {
|
||||||
|
|
|
@ -63,7 +63,7 @@ override_field_names = {
|
||||||
|
|
||||||
override_field_types = {
|
override_field_types = {
|
||||||
"Surface": { "normal": "Vec3f" },
|
"Surface": { "normal": "Vec3f" },
|
||||||
"Object": { "oAnimations": "ObjectAnimPointer*"}
|
"Object": { "oAnimations": "ObjectAnimPointer*"},
|
||||||
}
|
}
|
||||||
|
|
||||||
override_field_mutable = {
|
override_field_mutable = {
|
||||||
|
|
|
@ -2570,6 +2570,521 @@ CT_WARIO = 4
|
||||||
--- @type CharacterType
|
--- @type CharacterType
|
||||||
CT_MAX = 5
|
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
|
--- @class DjuiFontType
|
||||||
|
|
||||||
--- @type DjuiFontType
|
--- @type DjuiFontType
|
||||||
|
|
|
@ -7045,6 +7045,22 @@ function deref_s32_pointer(pointer)
|
||||||
-- ...
|
-- ...
|
||||||
end
|
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
|
--- @return integer
|
||||||
function get_current_save_file_num()
|
function get_current_save_file_num()
|
||||||
-- ...
|
-- ...
|
||||||
|
|
|
@ -41,6 +41,92 @@
|
||||||
--- @field public terrainType integer
|
--- @field public terrainType integer
|
||||||
--- @field public warpNodes ObjectWarpNode
|
--- @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
|
--- @class BehaviorTrajectories
|
||||||
--- @field public BowlingBallBob2Trajectory Pointer_Trajectory
|
--- @field public BowlingBallBob2Trajectory Pointer_Trajectory
|
||||||
--- @field public BowlingBallBobTrajectory Pointer_Trajectory
|
--- @field public BowlingBallBobTrajectory Pointer_Trajectory
|
||||||
|
@ -75,6 +161,14 @@
|
||||||
--- @field public KoopaBobAgility number
|
--- @field public KoopaBobAgility number
|
||||||
--- @field public KoopaCatchupAgility number
|
--- @field public KoopaCatchupAgility number
|
||||||
--- @field public KoopaThiAgility 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
|
--- @field public trajectories BehaviorTrajectories
|
||||||
|
|
||||||
--- @class BullyCollisionData
|
--- @class BullyCollisionData
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
- [characters.h](#charactersh)
|
- [characters.h](#charactersh)
|
||||||
- [enum CharacterSound](#enum-CharacterSound)
|
- [enum CharacterSound](#enum-CharacterSound)
|
||||||
- [enum CharacterType](#enum-CharacterType)
|
- [enum CharacterType](#enum-CharacterType)
|
||||||
|
- [dialog_ids.h](#dialog_idsh)
|
||||||
|
- [enum DialogId](#enum-DialogId)
|
||||||
- [djui_hud_utils.h](#djui_hud_utilsh)
|
- [djui_hud_utils.h](#djui_hud_utilsh)
|
||||||
- [enum DjuiFontType](#enum-DjuiFontType)
|
- [enum DjuiFontType](#enum-DjuiFontType)
|
||||||
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
|
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
|
||||||
|
@ -843,6 +845,187 @@
|
||||||
|
|
||||||
<br />
|
<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)
|
## [djui_hud_utils.h](#djui_hud_utils.h)
|
||||||
|
|
||||||
### [enum DjuiFontType](#DjuiFontType)
|
### [enum DjuiFontType](#DjuiFontType)
|
||||||
|
|
|
@ -1311,6 +1311,8 @@
|
||||||
- smlua_misc_utils.h
|
- smlua_misc_utils.h
|
||||||
- [allocate_mario_action](#allocate_mario_action)
|
- [allocate_mario_action](#allocate_mario_action)
|
||||||
- [deref_s32_pointer](#deref_s32_pointer)
|
- [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_current_save_file_num](#get_current_save_file_num)
|
||||||
- [get_environment_region](#get_environment_region)
|
- [get_environment_region](#get_environment_region)
|
||||||
- [get_hand_foot_pos_x](#get_hand_foot_pos_x)
|
- [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 />
|
<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)
|
## [get_current_save_file_num](#get_current_save_file_num)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
- [AnimInfo](#AnimInfo)
|
- [AnimInfo](#AnimInfo)
|
||||||
- [Animation](#Animation)
|
- [Animation](#Animation)
|
||||||
- [Area](#Area)
|
- [Area](#Area)
|
||||||
|
- [BehaviorDialogs](#BehaviorDialogs)
|
||||||
- [BehaviorTrajectories](#BehaviorTrajectories)
|
- [BehaviorTrajectories](#BehaviorTrajectories)
|
||||||
- [BehaviorValues](#BehaviorValues)
|
- [BehaviorValues](#BehaviorValues)
|
||||||
- [BullyCollisionData](#BullyCollisionData)
|
- [BullyCollisionData](#BullyCollisionData)
|
||||||
|
@ -131,6 +132,99 @@
|
||||||
|
|
||||||
<br />
|
<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)
|
## [BehaviorTrajectories](#BehaviorTrajectories)
|
||||||
|
|
||||||
| Field | Type | Access |
|
| Field | Type | Access |
|
||||||
|
@ -175,6 +269,14 @@
|
||||||
| KoopaBobAgility | `number` | |
|
| KoopaBobAgility | `number` | |
|
||||||
| KoopaCatchupAgility | `number` | |
|
| KoopaCatchupAgility | `number` | |
|
||||||
| KoopaThiAgility | `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 |
|
| trajectories | [BehaviorTrajectories](structs.md#BehaviorTrajectories) | read-only |
|
||||||
|
|
||||||
[:arrow_up_small:](#)
|
[:arrow_up_small:](#)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
#include "game/object_list_processor.h"
|
#include "game/object_list_processor.h"
|
||||||
#include "game/camera.h"
|
#include "game/camera.h"
|
||||||
|
#include "game/hardcoded.h"
|
||||||
#include "seq_ids.h"
|
#include "seq_ids.h"
|
||||||
#include "dialog_ids.h"
|
#include "dialog_ids.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
@ -2276,7 +2277,7 @@ void play_dialog_sound(u8 dialogID) {
|
||||||
|
|
||||||
#ifndef VERSION_JP
|
#ifndef VERSION_JP
|
||||||
// "You've stepped on the (Wing|Metal|Vanish) Cap Switch"
|
// "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();
|
play_puzzle_jingle();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -405,9 +405,9 @@ void bobomb_buddy_act_talk(void) {
|
||||||
|
|
||||||
case BOBOMB_BUDDY_ROLE_CANNON:
|
case BOBOMB_BUDDY_ROLE_CANNON:
|
||||||
if (gCurrCourseNum == COURSE_BOB) {
|
if (gCurrCourseNum == COURSE_BOB) {
|
||||||
bobomb_buddy_cannon_dialog(DIALOG_004, DIALOG_105);
|
bobomb_buddy_cannon_dialog(gBehaviorValues.dialogs.BobombBuddyBob1Dialog, gBehaviorValues.dialogs.BobombBuddyBob2Dialog);
|
||||||
} else {
|
} else {
|
||||||
bobomb_buddy_cannon_dialog(DIALOG_047, DIALOG_106);
|
bobomb_buddy_cannon_dialog(gBehaviorValues.dialogs.BobombBuddyOther1Dialog, gBehaviorValues.dialogs.BobombBuddyOther2Dialog);
|
||||||
}
|
}
|
||||||
break;
|
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 there are no remaining "minion" boos, show the dialog of the Big Boo
|
||||||
if (cur_obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) {
|
if (cur_obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) {
|
||||||
dialogID = DIALOG_108;
|
dialogID = gBehaviorValues.dialogs.GhostHuntAfterDialog;
|
||||||
} else {
|
} else {
|
||||||
dialogID = DIALOG_107;
|
dialogID = gBehaviorValues.dialogs.GhostHuntDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
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);
|
create_sound_spawner(SOUND_OBJ_DYING_ENEMY1);
|
||||||
obj_mark_for_deletion(o);
|
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();
|
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_8032F50C[] = { 60, 0 };
|
||||||
s16 D_8032F510[] = { 50, 0 };
|
s16 D_8032F510[] = { 50, 0 };
|
||||||
s8 D_8032F514[] = { 24, 42, 60, -1 };
|
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 },
|
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, 20, 154 }, { 1, 40, 164 }, { -1, -40, 174 }, { 1, -80, 179 },
|
||||||
{ -1, 80, 184 }, { 1, 160, 186 }, { -1, -160, 186 }, { 1, 0, 0 }, };
|
{ -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);
|
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
||||||
o->oBowserUnkF8++;
|
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++;
|
o->oBowserUnkF8++;
|
||||||
cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_EXPLODE);
|
cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_EXPLODE);
|
||||||
seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);
|
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);
|
struct MarioState *marioState = nearest_mario_state_to_object(o);
|
||||||
|
|
||||||
if (o->oBowserUnkF8 < 2) {
|
if (o->oBowserUnkF8 < 2) {
|
||||||
s32 dialogID = DIALOG_163;
|
s32 dialogID = gBehaviorValues.dialogs.Bowser3Defeated120StarsDialog;
|
||||||
if (gHudDisplay.stars < 120) {
|
if (gHudDisplay.stars < 120) {
|
||||||
dialogID = DIALOG_121;
|
dialogID = gBehaviorValues.dialogs.Bowser3DefeatedDialog;
|
||||||
}
|
}
|
||||||
if (o->oBowserUnkF8 == 0) {
|
if (o->oBowserUnkF8 == 0) {
|
||||||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
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;
|
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) {
|
static void eyerok_boss_act_show_intro_text(void) {
|
||||||
// todo: get dialog working again
|
// todo: get dialog working again
|
||||||
/*struct MarioState* marioState = nearest_mario_state_to_object(o);
|
/*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;
|
o->oAction = EYEROK_BOSS_ACT_FIGHT;
|
||||||
network_send_object_reliability(o, TRUE);
|
network_send_object_reliability(o, TRUE);
|
||||||
}*/
|
}*/
|
||||||
|
@ -186,7 +186,7 @@ static void eyerok_boss_act_die(void) {
|
||||||
// todo: get dialog working again
|
// todo: get dialog working again
|
||||||
/*struct MarioState* marioState = nearest_mario_state_to_object(o);
|
/*struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||||
if (o->oTimer == 60) {
|
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;
|
f32* starPos = gLevelValues.starPositions.EyerockStarPos;
|
||||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -206,7 +206,7 @@ void hoot_action_loop(void) {
|
||||||
if (o->oPosY < 2700.0f) {
|
if (o->oPosY < 2700.0f) {
|
||||||
//set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
|
//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);
|
clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
|
||||||
|
|
||||||
o->oAction = HOOT_ACT_TIRED;
|
o->oAction = HOOT_ACT_TIRED;
|
||||||
|
@ -284,7 +284,7 @@ void bhv_hoot_loop(void) {
|
||||||
localTalkToHoot = 1;
|
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;
|
localTalkToHoot = 2;
|
||||||
set_mario_npc_dialog(&gMarioStates[0], 0, NULL);
|
set_mario_npc_dialog(&gMarioStates[0], 0, NULL);
|
||||||
cur_obj_become_tangible();
|
cur_obj_become_tangible();
|
||||||
|
|
|
@ -61,7 +61,7 @@ void king_bobomb_act_0(void) {
|
||||||
o->oSubAction++;
|
o->oSubAction++;
|
||||||
seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);
|
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->oAction = 2;
|
||||||
o->oFlags |= OBJ_FLAG_HOLDABLE;
|
o->oFlags |= OBJ_FLAG_HOLDABLE;
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ void king_bobomb_act_7(void) {
|
||||||
|
|
||||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
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);
|
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;
|
o->oAction = 8;
|
||||||
network_send_object(o);
|
network_send_object(o);
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,7 @@ void king_bobomb_act_5(void) { // bobomb returns home
|
||||||
o->oSubAction++;
|
o->oSubAction++;
|
||||||
break;
|
break;
|
||||||
case 4:
|
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;
|
o->oAction = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,16 +51,16 @@ static u8 sKoopaShelledAttackHandlers[] = {
|
||||||
* Data to control the behavior of each instance of Koopa the Quick.
|
* Data to control the behavior of each instance of Koopa the Quick.
|
||||||
*/
|
*/
|
||||||
struct KoopaTheQuickProperties {
|
struct KoopaTheQuickProperties {
|
||||||
s16 initText;
|
s16* initText;
|
||||||
s16 winText;
|
s16* winText;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Properties for the BoB race and the THI race.
|
* Properties for the BoB race and the THI race.
|
||||||
*/
|
*/
|
||||||
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
|
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
|
||||||
{ DIALOG_005, DIALOG_007 },
|
{ (s16*) &gBehaviorValues.dialogs.KoopaQuickBobStartDialog, (s16*) &gBehaviorValues.dialogs.KoopaQuickBobWinDialog },
|
||||||
{ DIALOG_009, DIALOG_031 }
|
{ (s16*) &gBehaviorValues.dialogs.KoopaQuickThiStartDialog, (s16*) &gBehaviorValues.dialogs.KoopaQuickThiWinDialog }
|
||||||
};
|
};
|
||||||
|
|
||||||
static u32 koopaPathedStartWaypoint = 0;
|
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);
|
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||||
s32 response = 0;
|
s32 response = 0;
|
||||||
if (should_start_or_continue_dialog(marioState, o)) {
|
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) {
|
if (response == 1) {
|
||||||
|
@ -849,14 +849,14 @@ static void koopa_the_quick_act_after_race(void) {
|
||||||
if (o->parentObj->oKoopaRaceEndpointRaceStatus < 0) {
|
if (o->parentObj->oKoopaRaceEndpointRaceStatus < 0) {
|
||||||
// Mario cheated
|
// Mario cheated
|
||||||
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
|
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
|
||||||
o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_006;
|
o->parentObj->oKoopaRaceEndpointUnk100 = gBehaviorValues.dialogs.KoopaQuickCheatedDialog;
|
||||||
} else {
|
} else {
|
||||||
// Mario won
|
// Mario won
|
||||||
o->parentObj->oKoopaRaceEndpointUnk100 = sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winText;
|
o->parentObj->oKoopaRaceEndpointUnk100 = *sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winText;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// KtQ won
|
// KtQ won
|
||||||
o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_041;
|
o->parentObj->oKoopaRaceEndpointUnk100 = gBehaviorValues.dialogs.KoopaQuickLostDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
o->oFlags &= ~OBJ_FLAG_ACTIVE_FROM_AFAR;
|
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) {
|
if (o->oMipsStarStatus == MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR) {
|
||||||
// Choose dialog based on which MIPS encounter this is.
|
// Choose dialog based on which MIPS encounter this is.
|
||||||
if (o->oBehParams2ndByte == 0)
|
if (o->oBehParams2ndByte == 0)
|
||||||
dialogID = DIALOG_084;
|
dialogID = gBehaviorValues.dialogs.Mips1Dialog;
|
||||||
else
|
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) {
|
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;
|
//o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
struct RacingPenguinData {
|
struct RacingPenguinData {
|
||||||
s16 text;
|
s16* text;
|
||||||
f32 radius;
|
f32* radius;
|
||||||
f32 height;
|
f32* height;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct RacingPenguinData sRacingPenguinData[] = {
|
static struct RacingPenguinData sRacingPenguinData[] = {
|
||||||
{ DIALOG_055, 200.0f, 200.0f },
|
{ (s16*) &gBehaviorValues.dialogs.RacingPenguinStartDialog, &gBehaviorValues.RacingPenguinRadius, &gBehaviorValues.RacingPenguinHeight },
|
||||||
{ DIALOG_164, 350.0f, 250.0f },
|
{ (s16*) &gBehaviorValues.dialogs.RacingPenguinBigStartDialog, &gBehaviorValues.RacingPenguinBigRadius, &gBehaviorValues.RacingPenguinBigHeight },
|
||||||
};
|
};
|
||||||
|
|
||||||
static u32 penguinPathedStartWaypoint = 0;
|
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) {
|
void bhv_racing_penguin_run_once(void) {
|
||||||
cur_obj_align_gfx_with_floor();
|
cur_obj_align_gfx_with_floor();
|
||||||
cur_obj_push_mario_away_from_cylinder(
|
cur_obj_push_mario_away_from_cylinder(
|
||||||
sRacingPenguinData[o->oBehParams2ndByte].radius,
|
*sRacingPenguinData[o->oBehParams2ndByte].radius,
|
||||||
sRacingPenguinData[o->oBehParams2ndByte].height);
|
*sRacingPenguinData[o->oBehParams2ndByte].height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bhv_racing_penguin_init(void) {
|
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; }
|
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) {
|
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) {
|
if (response == 1) {
|
||||||
struct Object *child;
|
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 (cur_obj_can_mario_activate_textbox_2(&gMarioStates[0], 400.0f, 400.0f)) {
|
||||||
if (o->oRacingPenguinMarioWon) {
|
if (o->oRacingPenguinMarioWon) {
|
||||||
if (o->oRacingPenguinMarioCheated) {
|
if (o->oRacingPenguinMarioCheated) {
|
||||||
o->oRacingPenguinFinalTextbox = DIALOG_132;
|
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinCheatDialog;
|
||||||
o->oRacingPenguinMarioWon = FALSE;
|
o->oRacingPenguinMarioWon = FALSE;
|
||||||
} else {
|
} else {
|
||||||
o->oRacingPenguinFinalTextbox = DIALOG_056;
|
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinWinDialog;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
o->oRacingPenguinFinalTextbox = DIALOG_037;
|
o->oRacingPenguinFinalTextbox = gBehaviorValues.dialogs.RacingPenguinLostDialog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -36,7 +36,7 @@ void bhv_sl_snowman_wind_loop(void) {
|
||||||
|
|
||||||
// Mario has come close, begin dialog.
|
// Mario has come close, begin dialog.
|
||||||
} else if (o->oSubAction == SL_SNOWMAN_WIND_ACT_TALKING) {
|
} 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++;
|
o->oSubAction++;
|
||||||
network_send_object(o);
|
network_send_object(o);
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,7 +140,7 @@ void bhv_snowmans_bottom_loop(void) {
|
||||||
if (should_start_or_continue_dialog(marioState, o)
|
if (should_start_or_continue_dialog(marioState, o)
|
||||||
&& (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400) == 1)
|
&& (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) {
|
&& 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) {
|
if (sp1E) {
|
||||||
o->oForwardVel = 10.0f;
|
o->oForwardVel = 10.0f;
|
||||||
o->oAction = 1;
|
o->oAction = 1;
|
||||||
|
@ -217,7 +217,7 @@ void bhv_snowmans_head_loop(void) {
|
||||||
|
|
||||||
switch (o->oAction) {
|
switch (o->oAction) {
|
||||||
case 0:
|
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;
|
o->oAction = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ void bhv_snowmans_head_loop(void) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
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();
|
spawn_mist_particles();
|
||||||
f32* starPos = gLevelValues.starPositions.SnowmanHeadStarPos;
|
f32* starPos = gLevelValues.starPositions.SnowmanHeadStarPos;
|
||||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
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()) {
|
if (!cur_obj_is_mario_on_platform()) {
|
||||||
sp2C = (o->oBehParams >> 0x10) & 0xFF;
|
sp2C = (o->oBehParams >> 0x10) & 0xFF;
|
||||||
sp28 = (o->prevObj->oBehParams >> 0x10) & 0xFF;
|
sp28 = (o->prevObj->oBehParams >> 0x10) & 0xFF;
|
||||||
if (sp2C == sp28)
|
if (sp2C == sp28) {
|
||||||
dialogID = DIALOG_058;
|
dialogID = gBehaviorValues.dialogs.TuxieMotherBabyFoundDialog;
|
||||||
else
|
} else {
|
||||||
dialogID = DIALOG_059;
|
dialogID = gBehaviorValues.dialogs.TuxieMotherBabyWrongDialog;
|
||||||
|
}
|
||||||
if (cur_obj_update_dialog_with_cutscene(marioState, 2, 1, CUTSCENE_DIALOG, dialogID, tuxies_mother_act_1_continue_dialog)) {
|
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;
|
o->oSubAction = 1;
|
||||||
else
|
} else {
|
||||||
o->oSubAction = 2;
|
o->oSubAction = 2;
|
||||||
|
}
|
||||||
o->prevObj->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
o->prevObj->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
@ -134,7 +136,7 @@ void tuxies_mother_act_0(void) {
|
||||||
o->oSubAction++;
|
o->oSubAction++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
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++;
|
o->oSubAction++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -405,7 +405,7 @@ void ukiki_act_go_to_cage(void) {
|
||||||
case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO:
|
case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO:
|
||||||
cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND);
|
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++;
|
o->oSubAction++;
|
||||||
network_send_object_reliability(o, TRUE);
|
network_send_object_reliability(o, TRUE);
|
||||||
}
|
}
|
||||||
|
@ -547,7 +547,7 @@ void cage_ukiki_held_loop(void) {
|
||||||
switch(o->oUkikiTextState) {
|
switch(o->oUkikiTextState) {
|
||||||
case UKIKI_TEXT_DEFAULT:
|
case UKIKI_TEXT_DEFAULT:
|
||||||
if (set_mario_npc_dialog(heldByMario, 2, cage_ukiki_held_default_continue_dialog) == 2) {
|
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;
|
o->oUkikiTextState = UKIKI_TEXT_CAGE_TEXTBOX;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -611,7 +611,7 @@ void cap_ukiki_held_loop(void) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UKIKI_TEXT_STEAL_CAP:
|
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->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
|
||||||
o->oUkikiTextState = UKIKI_TEXT_STOLE_CAP;
|
o->oUkikiTextState = UKIKI_TEXT_STOLE_CAP;
|
||||||
network_send_object(o);
|
network_send_object(o);
|
||||||
|
@ -622,7 +622,7 @@ void cap_ukiki_held_loop(void) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UKIKI_TEXT_HAS_CAP:
|
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);
|
mario_retrieve_cap(heldByMario);
|
||||||
set_mario_npc_dialog(heldByMario, 0, NULL);
|
set_mario_npc_dialog(heldByMario, 0, NULL);
|
||||||
o->oUkikiHasCap &= ~UKIKI_CAP_ON;
|
o->oUkikiHasCap &= ~UKIKI_CAP_ON;
|
||||||
|
|
|
@ -34,7 +34,7 @@ void whomp_act_0(void) {
|
||||||
cur_obj_set_pos_to_home();
|
cur_obj_set_pos_to_home();
|
||||||
o->oHealth = 3;
|
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;
|
o->oAction = 2;
|
||||||
network_send_object(o);
|
network_send_object(o);
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ u8 whomp_act_8_continue_dialog(void) { return o->oAction == 8; }
|
||||||
void whomp_act_8(void) {
|
void whomp_act_8(void) {
|
||||||
if (o->oBehParams2ndByte != 0) {
|
if (o->oBehParams2ndByte != 0) {
|
||||||
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
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);
|
obj_set_angle(o, 0, 0, 0);
|
||||||
cur_obj_hide();
|
cur_obj_hide();
|
||||||
cur_obj_become_intangible();
|
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
|
// If Mario is positioned below the wiggler, assume he entered through the
|
||||||
// lower cave entrance, so don't display text.
|
// 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;
|
o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_COMPLETED_DIALOG;
|
||||||
network_send_object_reliability(o, TRUE);
|
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);
|
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||||
|
|
||||||
// Text to show on first, second, and third attack.
|
// 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
|
// Shrink until the squish speed becomes 0, then unisquish
|
||||||
if (approach_f32_ptr(&o->oWigglerSquishSpeed, 0.0f, 0.05f)) {
|
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
|
// defeated) or go back to walking
|
||||||
if (o->header.gfx.scale[1] >= 4.0f) {
|
if (o->header.gfx.scale[1] >= 4.0f) {
|
||||||
if (o->oTimer > 30) {
|
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
|
// Because we don't want the wiggler to disappear after being
|
||||||
// defeated, we leave its health at 1
|
// defeated, we leave its health at 1
|
||||||
if (--o->oHealth <= 1) {
|
if (--o->oHealth <= 1) {
|
||||||
|
|
|
@ -201,7 +201,7 @@ void bhv_yoshi_loop(void) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
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;
|
sYoshiTalkingState = 3;
|
||||||
o->oInteractStatus = 0;
|
o->oInteractStatus = 0;
|
||||||
o->oHomeX = sYoshiHomeLocations[2];
|
o->oHomeX = sYoshiHomeLocations[2];
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "paintings.h"
|
#include "paintings.h"
|
||||||
#include "engine/graph_node.h"
|
#include "engine/graph_node.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
#include "game/hardcoded.h"
|
||||||
#include "pc/configfile.h"
|
#include "pc/configfile.h"
|
||||||
#include "pc/network/network.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) {
|
if (dialogID != -1) {
|
||||||
sCutsceneDialogID = dialogID;
|
sCutsceneDialogID = dialogID;
|
||||||
} else {
|
} else {
|
||||||
sCutsceneDialogID = DIALOG_001;
|
sCutsceneDialogID = (s16) gBehaviorValues.dialogs.DefaultCutsceneDialog;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
response = sCutsceneDialogResponse;
|
response = sCutsceneDialogResponse;
|
||||||
|
@ -8256,13 +8257,13 @@ BAD_RETURN(s32) bowser_fight_intro_dialog(UNUSED struct Camera *c) {
|
||||||
|
|
||||||
switch (gCurrLevelNum) {
|
switch (gCurrLevelNum) {
|
||||||
case LEVEL_BOWSER_1:
|
case LEVEL_BOWSER_1:
|
||||||
dialog = DIALOG_067;
|
dialog = gBehaviorValues.dialogs.Bowser1Dialog;
|
||||||
break;
|
break;
|
||||||
case LEVEL_BOWSER_2:
|
case LEVEL_BOWSER_2:
|
||||||
dialog = DIALOG_092;
|
dialog = gBehaviorValues.dialogs.Bowser2Dialog;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dialog = DIALOG_093;
|
dialog = gBehaviorValues.dialogs.Bowser3Dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_dialog_box(dialog);
|
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.
|
* Create a dialog box with the cap switch's text.
|
||||||
*/
|
*/
|
||||||
BAD_RETURN(s32) cutscene_cap_switch_press_create_dialog(UNUSED struct Camera *c) {
|
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) {
|
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
|
* Create a dialog box with the letter text
|
||||||
*/
|
*/
|
||||||
BAD_RETURN(s32) peach_letter_text(UNUSED struct Camera *c) {
|
BAD_RETURN(s32) peach_letter_text(UNUSED struct Camera *c) {
|
||||||
create_dialog_box(DIALOG_020);
|
create_dialog_box(gBehaviorValues.dialogs.PeachLetterDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef VERSION_JP
|
#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) {
|
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
|
#ifndef VERSION_JP
|
||||||
|
|
|
@ -79,8 +79,101 @@ struct LevelValues gLevelValues = {
|
||||||
|
|
||||||
struct BehaviorValues gBehaviorValues = {
|
struct BehaviorValues gBehaviorValues = {
|
||||||
.KoopaBobAgility = 4.0f,
|
.KoopaBobAgility = 4.0f,
|
||||||
.KoopaThiAgility = 6.0f,
|
|
||||||
.KoopaCatchupAgility = 8.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 = {
|
.trajectories = {
|
||||||
.KoopaBobTrajectory = (Trajectory*) bob_seg7_trajectory_koopa,
|
.KoopaBobTrajectory = (Trajectory*) bob_seg7_trajectory_koopa,
|
||||||
.KoopaThiTrajectory = (Trajectory*) thi_seg7_trajectory_koopa,
|
.KoopaThiTrajectory = (Trajectory*) thi_seg7_trajectory_koopa,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef HARDCODED_H
|
#ifndef HARDCODED_H
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
#include "dialog_ids.h"
|
||||||
|
|
||||||
////////////
|
////////////
|
||||||
// Levels //
|
// Levels //
|
||||||
|
@ -77,10 +78,105 @@ struct BehaviorTrajectories {
|
||||||
Trajectory* PlatformLll2Trajectory;
|
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 {
|
struct BehaviorValues {
|
||||||
f32 KoopaBobAgility;
|
f32 KoopaBobAgility;
|
||||||
f32 KoopaThiAgility;
|
|
||||||
f32 KoopaCatchupAgility;
|
f32 KoopaCatchupAgility;
|
||||||
|
f32 KoopaThiAgility;
|
||||||
|
f32 RacingPenguinBigHeight;
|
||||||
|
f32 RacingPenguinBigRadius;
|
||||||
|
f32 RacingPenguinHeight;
|
||||||
|
f32 RacingPenguinRadius;
|
||||||
|
u16 ToadStar1Requirement;
|
||||||
|
u16 ToadStar2Requirement;
|
||||||
|
u16 ToadStar3Requirement;
|
||||||
|
struct BehaviorDialogs dialogs;
|
||||||
struct BehaviorTrajectories trajectories;
|
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) {
|
u8 str_ascii_char_to_dialog(char c) {
|
||||||
switch (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 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;
|
case '\0': return DIALOG_CHAR_TERMINATOR;
|
||||||
default: return ((u8)c < 0xF0) ? ASCII_TO_DIALOG(c) : c;
|
default: return ((u8)c < 0xF0) ? ASCII_TO_DIALOG(c) : c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void str_ascii_to_dialog(const char* string, u8* dialog, u16 length) {
|
void str_ascii_to_dialog(const char* string, u8* dialog, u16 length) {
|
||||||
for (s32 i = 0; i < length; i++) {
|
char* c = (char*) string;
|
||||||
dialog[i] = str_ascii_char_to_dialog(string[i]);
|
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) {
|
f32 get_generic_dialog_width(u8* dialog) {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#define ASCII_TO_DIALOG(asc) \
|
#define ASCII_TO_DIALOG(asc) \
|
||||||
(((asc) >= '0' && (asc) <= '9') ? ((asc) - '0') : \
|
(((asc) >= '0' && (asc) <= '9') ? ((asc) - '0') : \
|
||||||
((asc) >= 'A' && (asc) <= 'Z') ? ((asc) - 'A' + 0x0A) : \
|
((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_PUSH 1
|
||||||
#define MENU_MTX_NOPUSH 2
|
#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 (m->action == ACT_WALKING || m->action == ACT_DECELERATING) {
|
||||||
if (warpDoorId == 1 && !(saveFlags & SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) {
|
if (warpDoorId == 1 && !(saveFlags & SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) {
|
||||||
if (!(saveFlags & SAVE_FLAG_HAVE_KEY_2)) {
|
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;
|
sDisplayingDoorText = TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
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 (warpDoorId == 2 && !(saveFlags & SAVE_FLAG_UNLOCKED_BASEMENT_DOOR)) {
|
||||||
if (!(saveFlags & SAVE_FLAG_HAVE_KEY_1)) {
|
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;
|
sDisplayingDoorText = TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1180,26 +1180,26 @@ u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *
|
||||||
|
|
||||||
return set_mario_action(m, enterDoorAction, actionArg);
|
return set_mario_action(m, enterDoorAction, actionArg);
|
||||||
} else if (!sDisplayingDoorText) {
|
} else if (!sDisplayingDoorText) {
|
||||||
u32 text = DIALOG_022 << 16;
|
u32 text = gBehaviorValues.dialogs.DoorNeedKeyDialog << 16;
|
||||||
|
|
||||||
switch (requiredNumStars) {
|
switch (requiredNumStars) {
|
||||||
case 1:
|
case 1:
|
||||||
text = DIALOG_024 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed1StarDialog << 16;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
text = DIALOG_025 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed3StarsDialog << 16;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
text = DIALOG_026 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed8StarsDialog << 16;
|
||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
text = DIALOG_027 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed30StarsDialog << 16;
|
||||||
break;
|
break;
|
||||||
case 50:
|
case 50:
|
||||||
text = DIALOG_028 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed50StarsDialog << 16;
|
||||||
break;
|
break;
|
||||||
case 70:
|
case 70:
|
||||||
text = DIALOG_029 << 16;
|
text = gBehaviorValues.dialogs.DoorNeed70StarsDialog << 16;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "ingame_menu.h"
|
#include "ingame_menu.h"
|
||||||
#include "obj_behaviors.h"
|
#include "obj_behaviors.h"
|
||||||
#include "save_file.h"
|
#include "save_file.h"
|
||||||
|
#include "hardcoded.h"
|
||||||
#include "debug_course.h"
|
#include "debug_course.h"
|
||||||
#ifdef VERSION_EU
|
#ifdef VERSION_EU
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
@ -280,26 +281,16 @@ void load_level_init_text(u32 arg) {
|
||||||
s32 gotAchievement;
|
s32 gotAchievement;
|
||||||
u32 dialogID = gCurrentArea->dialog[arg];
|
u32 dialogID = gCurrentArea->dialog[arg];
|
||||||
|
|
||||||
switch (dialogID) {
|
if (dialogID == gBehaviorValues.dialogs.VanishCourseDialog) {
|
||||||
case DIALOG_129:
|
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;
|
||||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;
|
} else if (dialogID == gBehaviorValues.dialogs.MetalCourseDialog) {
|
||||||
break;
|
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;
|
||||||
|
} else if (dialogID == gBehaviorValues.dialogs.WingCourseDialog) {
|
||||||
case DIALOG_130:
|
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_WING_CAP;
|
||||||
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;
|
} else if (dialogID == 255) {
|
||||||
break;
|
gotAchievement = TRUE;
|
||||||
|
} else {
|
||||||
case DIALOG_131:
|
gotAchievement = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
|
||||||
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 (!gotAchievement) {
|
if (!gotAchievement) {
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "sound_init.h"
|
#include "sound_init.h"
|
||||||
#include "rumble_init.h"
|
#include "rumble_init.h"
|
||||||
#include "obj_behaviors.h"
|
#include "obj_behaviors.h"
|
||||||
|
#include "hardcoded.h"
|
||||||
#include "../../include/libc/stdlib.h"
|
#include "../../include/libc/stdlib.h"
|
||||||
#include "pc/debuglog.h"
|
#include "pc/debuglog.h"
|
||||||
#include "pc/pc_main.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++) {
|
for (s32 i = 0; i < ARRAY_COUNT(sStarsNeededForDialog); i++) {
|
||||||
s32 numStarsRequired = sStarsNeededForDialog[i];
|
s32 numStarsRequired = sStarsNeededForDialog[i];
|
||||||
if (m->prevNumStarsForDialog < numStarsRequired && m->numStars >= numStarsRequired) {
|
if (m->prevNumStarsForDialog < numStarsRequired && m->numStars >= numStarsRequired) {
|
||||||
dialogID = i + DIALOG_141;
|
dialogID = i + gBehaviorValues.dialogs.StarCollectionBaseDialog;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -693,7 +694,9 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
|
||||||
level_trigger_warp(m, WARP_OP_STAR_EXIT);
|
level_trigger_warp(m, WARP_OP_STAR_EXIT);
|
||||||
} else if (m->playerIndex == 0) {
|
} else if (m->playerIndex == 0) {
|
||||||
enable_time_stop_if_alone();
|
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;
|
m->actionState = 1;
|
||||||
} else {
|
} else {
|
||||||
set_mario_action(m, isInWater ? ACT_WATER_IDLE : ACT_IDLE, 0);
|
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 (m->playerIndex != 0) { allowRemoteStarSpawn = TRUE; }
|
||||||
if (is_anim_at_end(m)) {
|
if (is_anim_at_end(m)) {
|
||||||
save_file_set_flags(get_door_save_file_flag(m->usedObj));
|
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;
|
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)) {
|
} else if (m->usedObj == NULL || (m->usedObj->oAction == 0 || m->usedObj->oAction == 100)) {
|
||||||
if (m->playerIndex == 0) {
|
if (m->playerIndex == 0) {
|
||||||
if (gNeverEnteredCastle == TRUE && gCurrLevelNum == LEVEL_CASTLE) {
|
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 {
|
} else {
|
||||||
set_mario_action(m, ACT_IDLE, 0);
|
set_mario_action(m, ACT_IDLE, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,20 +22,21 @@
|
||||||
#include "rendering_graph_node.h"
|
#include "rendering_graph_node.h"
|
||||||
#include "save_file.h"
|
#include "save_file.h"
|
||||||
#include "skybox.h"
|
#include "skybox.h"
|
||||||
|
#include "hardcoded.h"
|
||||||
#include "sound_init.h"
|
#include "sound_init.h"
|
||||||
#include "pc/network/network.h"
|
#include "pc/network/network.h"
|
||||||
|
|
||||||
#define TOAD_STAR_1_REQUIREMENT 12
|
#define TOAD_STAR_1_REQUIREMENT gBehaviorValues.ToadStar1Requirement
|
||||||
#define TOAD_STAR_2_REQUIREMENT 25
|
#define TOAD_STAR_2_REQUIREMENT gBehaviorValues.ToadStar2Requirement
|
||||||
#define TOAD_STAR_3_REQUIREMENT 35
|
#define TOAD_STAR_3_REQUIREMENT gBehaviorValues.ToadStar3Requirement
|
||||||
|
|
||||||
#define TOAD_STAR_1_DIALOG DIALOG_082
|
#define TOAD_STAR_1_DIALOG gBehaviorValues.dialogs.ToadStar1Dialog
|
||||||
#define TOAD_STAR_2_DIALOG DIALOG_076
|
#define TOAD_STAR_2_DIALOG gBehaviorValues.dialogs.ToadStar2Dialog
|
||||||
#define TOAD_STAR_3_DIALOG DIALOG_083
|
#define TOAD_STAR_3_DIALOG gBehaviorValues.dialogs.ToadStar3Dialog
|
||||||
|
|
||||||
#define TOAD_STAR_1_DIALOG_AFTER DIALOG_154
|
#define TOAD_STAR_1_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar1AfterDialog
|
||||||
#define TOAD_STAR_2_DIALOG_AFTER DIALOG_155
|
#define TOAD_STAR_2_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar2AfterDialog
|
||||||
#define TOAD_STAR_3_DIALOG_AFTER DIALOG_156
|
#define TOAD_STAR_3_DIALOG_AFTER gBehaviorValues.dialogs.ToadStar3AfterDialog
|
||||||
|
|
||||||
enum ToadMessageStates {
|
enum ToadMessageStates {
|
||||||
TOAD_MESSAGE_FADED,
|
TOAD_MESSAGE_FADED,
|
||||||
|
@ -212,19 +213,17 @@ static void toad_message_talking(void) {
|
||||||
!= 0) {
|
!= 0) {
|
||||||
gCurrentObject->oToadMessageRecentlyTalked = TRUE;
|
gCurrentObject->oToadMessageRecentlyTalked = TRUE;
|
||||||
gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;
|
gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;
|
||||||
switch (gCurrentObject->oToadMessageDialogId) {
|
|
||||||
case TOAD_STAR_1_DIALOG:
|
u32 dialogId = gCurrentObject->oToadMessageDialogId;
|
||||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_1_DIALOG_AFTER;
|
if (dialogId == TOAD_STAR_1_DIALOG) {
|
||||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 0, TRUE);
|
gCurrentObject->oToadMessageDialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||||
break;
|
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 0, TRUE);
|
||||||
case TOAD_STAR_2_DIALOG:
|
} else if (dialogId == TOAD_STAR_2_DIALOG) {
|
||||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_2_DIALOG_AFTER;
|
gCurrentObject->oToadMessageDialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 1, TRUE);
|
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 1, TRUE);
|
||||||
break;
|
} else if (dialogId == TOAD_STAR_3_DIALOG) {
|
||||||
case TOAD_STAR_3_DIALOG:
|
gCurrentObject->oToadMessageDialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||||
gCurrentObject->oToadMessageDialogId = TOAD_STAR_3_DIALOG_AFTER;
|
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 2, TRUE);
|
||||||
bhv_spawn_star_no_level_exit(gMarioStates[0].marioObj, 2, TRUE);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -270,26 +269,23 @@ void bhv_toad_message_init(void) {
|
||||||
s32 dialogId = (gCurrentObject->oBehParams >> 24) & 0xFF;
|
s32 dialogId = (gCurrentObject->oBehParams >> 24) & 0xFF;
|
||||||
s32 enoughStars = TRUE;
|
s32 enoughStars = TRUE;
|
||||||
|
|
||||||
switch (dialogId) {
|
if (dialogId == (s32)TOAD_STAR_1_DIALOG) {
|
||||||
case TOAD_STAR_1_DIALOG:
|
enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);
|
||||||
enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);
|
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_1) {
|
||||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_1) {
|
dialogId = TOAD_STAR_1_DIALOG_AFTER;
|
||||||
dialogId = TOAD_STAR_1_DIALOG_AFTER;
|
}
|
||||||
}
|
} else if (dialogId == (s32)TOAD_STAR_2_DIALOG) {
|
||||||
break;
|
enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);
|
||||||
case TOAD_STAR_2_DIALOG:
|
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_2) {
|
||||||
enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);
|
dialogId = TOAD_STAR_2_DIALOG_AFTER;
|
||||||
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);
|
||||||
break;
|
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_3) {
|
||||||
case TOAD_STAR_3_DIALOG:
|
dialogId = TOAD_STAR_3_DIALOG_AFTER;
|
||||||
enoughStars = (starCount >= TOAD_STAR_3_REQUIREMENT);
|
}
|
||||||
if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_3) {
|
|
||||||
dialogId = TOAD_STAR_3_DIALOG_AFTER;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enoughStars) {
|
if (enoughStars) {
|
||||||
gCurrentObject->oToadMessageDialogId = dialogId;
|
gCurrentObject->oToadMessageDialogId = dialogId;
|
||||||
gCurrentObject->oToadMessageRecentlyTalked = FALSE;
|
gCurrentObject->oToadMessageRecentlyTalked = FALSE;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <PR/ultratypes.h>
|
#include <PR/ultratypes.h>
|
||||||
#include <PR/gbi.h>
|
#include <PR/gbi.h>
|
||||||
|
#include "dialog_ids.h"
|
||||||
|
|
||||||
extern u8 seg2_course_name_table[];
|
extern u8 seg2_course_name_table[];
|
||||||
extern u8 seg2_act_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 u8* main_hud_camera_lut[6];
|
||||||
extern Gfx dl_draw_text_bg_box[];
|
extern Gfx dl_draw_text_bg_box[];
|
||||||
extern Gfx dl_draw_triangle[];
|
extern Gfx dl_draw_triangle[];
|
||||||
|
extern const u8* seg2_dialog_original[];
|
||||||
extern void *seg2_dialog_table[];
|
extern void *seg2_dialog_table[];
|
||||||
extern Gfx dl_billboard_num_0[];
|
extern Gfx dl_billboard_num_0[];
|
||||||
extern Gfx dl_billboard_num_1[];
|
extern Gfx dl_billboard_num_1[];
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "pc/mods/mods.h"
|
#include "pc/mods/mods.h"
|
||||||
#include "pc/mods/mods_utils.h"
|
#include "pc/mods/mods_utils.h"
|
||||||
#include "pc/crash_handler.h"
|
#include "pc/crash_handler.h"
|
||||||
|
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||||
|
|
||||||
lua_State* gLuaState = NULL;
|
lua_State* gLuaState = NULL;
|
||||||
u8 gLuaInitializingScript = 0;
|
u8 gLuaInitializingScript = 0;
|
||||||
|
@ -141,6 +142,7 @@ void smlua_update(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_shutdown(void) {
|
void smlua_shutdown(void) {
|
||||||
|
dialog_reset_all();
|
||||||
smlua_cobject_allowlist_shutdown();
|
smlua_cobject_allowlist_shutdown();
|
||||||
smlua_cpointer_allowlist_shutdown();
|
smlua_cpointer_allowlist_shutdown();
|
||||||
lua_State* L = gLuaState;
|
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
|
// { "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
|
#define LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT 28
|
||||||
static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT] = {
|
static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT] = {
|
||||||
{ "BowlingBallBob2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBob2Trajectory), false, LOT_POINTER },
|
{ "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 },
|
{ "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] = {
|
static struct LuaObjectField sBehaviorValuesFields[LUA_BEHAVIOR_VALUES_FIELD_COUNT] = {
|
||||||
{ "KoopaBobAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaBobAgility), false, LOT_NONE },
|
{ "KoopaBobAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaBobAgility), false, LOT_NONE },
|
||||||
{ "KoopaCatchupAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaCatchupAgility), false, LOT_NONE },
|
{ "KoopaCatchupAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaCatchupAgility), false, LOT_NONE },
|
||||||
{ "KoopaThiAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaThiAgility), false, LOT_NONE },
|
{ "KoopaThiAgility", LVT_F32, offsetof(struct BehaviorValues, KoopaThiAgility), false, LOT_NONE },
|
||||||
{ "trajectories", LVT_COBJECT, offsetof(struct BehaviorValues, trajectories), true, LOT_BEHAVIORTRAJECTORIES },
|
{ "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
|
#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_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
|
||||||
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
|
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
|
||||||
{ LOT_AREA, sAreaFields, LUA_AREA_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_BEHAVIORTRAJECTORIES, sBehaviorTrajectoriesFields, LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT },
|
||||||
{ LOT_BEHAVIORVALUES, sBehaviorValuesFields, LUA_BEHAVIOR_VALUES_FIELD_COUNT },
|
{ LOT_BEHAVIORVALUES, sBehaviorValuesFields, LUA_BEHAVIOR_VALUES_FIELD_COUNT },
|
||||||
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
|
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
|
||||||
|
|
|
@ -8,6 +8,7 @@ enum LuaObjectAutogenType {
|
||||||
LOT_ANIMINFO,
|
LOT_ANIMINFO,
|
||||||
LOT_ANIMATION,
|
LOT_ANIMATION,
|
||||||
LOT_AREA,
|
LOT_AREA,
|
||||||
|
LOT_BEHAVIORDIALOGS,
|
||||||
LOT_BEHAVIORTRAJECTORIES,
|
LOT_BEHAVIORTRAJECTORIES,
|
||||||
LOT_BEHAVIORVALUES,
|
LOT_BEHAVIORVALUES,
|
||||||
LOT_BULLYCOLLISIONDATA,
|
LOT_BULLYCOLLISIONDATA,
|
||||||
|
|
|
@ -1008,6 +1008,177 @@ char gSmluaConstants[] = ""
|
||||||
"CHAR_SOUND_SO_LONGA_BOWSER = 40\n"
|
"CHAR_SOUND_SO_LONGA_BOWSER = 40\n"
|
||||||
"CHAR_SOUND_IMA_TIRED = 41\n"
|
"CHAR_SOUND_IMA_TIRED = 41\n"
|
||||||
"CHAR_SOUND_MAX = 42\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_DJUI = 0\n"
|
||||||
"RESOLUTION_N64 = 1\n"
|
"RESOLUTION_N64 = 1\n"
|
||||||
"RESOLUTION_COUNT = 2\n"
|
"RESOLUTION_COUNT = 2\n"
|
||||||
|
|
|
@ -14656,6 +14656,36 @@ int smlua_func_deref_s32_pointer(lua_State* L) {
|
||||||
return 1;
|
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) {
|
int smlua_func_get_current_save_file_num(UNUSED lua_State* L) {
|
||||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
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_misc_utils.h
|
||||||
smlua_bind_function(L, "allocate_mario_action", smlua_func_allocate_mario_action);
|
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, "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_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_environment_region", smlua_func_get_environment_region);
|
||||||
smlua_bind_function(L, "get_hand_foot_pos_x", smlua_func_get_hand_foot_pos_x);
|
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 "pc/lua/smlua.h"
|
||||||
#include "smlua_misc_utils.h"
|
#include "smlua_misc_utils.h"
|
||||||
#include "pc/debuglog.h"
|
#include "pc/debuglog.h"
|
||||||
|
#include "game/ingame_menu.h"
|
||||||
|
#include "game/segment2.h"
|
||||||
|
|
||||||
#include "game/object_list_processor.h"
|
#include "game/object_list_processor.h"
|
||||||
|
|
||||||
|
@ -106,3 +108,42 @@ void set_environment_region(u8 index, s32 value) {
|
||||||
gEnvironmentRegions[6 * (int)index] = 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
|
#ifndef SMLUA_MISC_UTILS_H
|
||||||
#define SMLUA_MISC_UTILS_H
|
#define SMLUA_MISC_UTILS_H
|
||||||
|
|
||||||
|
#include "dialog_ids.h"
|
||||||
|
|
||||||
u32 get_network_area_timer(void);
|
u32 get_network_area_timer(void);
|
||||||
|
|
||||||
s32* get_temp_s32_pointer(s32 initialValue);
|
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_y(struct MarioState* m, u8 index);
|
||||||
f32 get_hand_foot_pos_z(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);
|
s16 get_current_save_file_num(void);
|
||||||
|
|
||||||
void movtexqc_register(const char* name, s16 level, s16 area, s16 type);
|
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"
|
#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
|
#undef DEFINE_DIALOG
|
||||||
#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \
|
#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 \
|
unused, linesPerBox, leftOffset, width, dialog_text_ ## id \
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -60,7 +68,6 @@ const struct DialogEntry *const seg2_dialog_table[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// == courses ==
|
// == courses ==
|
||||||
// (defines en_course_name_table etc.)
|
// (defines en_course_name_table etc.)
|
||||||
// The game duplicates this in levels/menu/leveldata.c in EU, so we split
|
// The game duplicates this in levels/menu/leveldata.c in EU, so we split
|
||||||
|
|
Loading…
Reference in a new issue