24
24
#include " game_variables.h"
25
25
#include " game_actor.h"
26
26
#include " game_battler.h"
27
+ #include " game_enemy.h"
27
28
#include " main_data.h"
28
29
#include " player.h"
29
30
#include " output.h"
@@ -127,7 +128,7 @@ namespace {
127
128
void RuntimePatches::LockPatchesAsDiabled () {
128
129
#ifndef NO_RUNTIME_PATCHES
129
130
LockPatchArguments<2 >(EncounterRandomnessAlert::patch_args);
130
- LockPatchArguments<11 >(MonSca::patch_args);
131
+ LockPatchArguments<12 >(MonSca::patch_args);
131
132
LockPatchArguments<2 >(EXPlus::patch_args);
132
133
LockPatchArguments<2 >(GuardRevamp::patch_args);
133
134
#endif
@@ -140,7 +141,7 @@ bool RuntimePatches::ParseFromCommandLine(CmdlineParser& cp) {
140
141
return ParsePatchArguments<2 >(cp, arg, EncounterRandomnessAlert::patch_args);
141
142
}
142
143
if (cp.ParseNext (arg, 1 , { " --patch-monsca" , " --no-patch-monsca" })) {
143
- return ParsePatchArguments<11 >(cp, arg, MonSca::patch_args);
144
+ return ParsePatchArguments<12 >(cp, arg, MonSca::patch_args);
144
145
}
145
146
if (cp.ParseNext (arg, 1 , { " --patch-explus" , " --no-patch-explus" })) {
146
147
return ParsePatchArguments<2 >(cp, arg, EXPlus::patch_args);
@@ -158,7 +159,7 @@ bool RuntimePatches::ParseFromIni(lcf::INIReader& ini) {
158
159
#ifndef NO_RUNTIME_PATCHES
159
160
bool patch_override = false ;
160
161
patch_override |= ParsePatchFromIni<2 >(ini, EncounterRandomnessAlert::patch_args);
161
- patch_override |= ParsePatchFromIni<11 >(ini, MonSca::patch_args);
162
+ patch_override |= ParsePatchFromIni<12 >(ini, MonSca::patch_args);
162
163
patch_override |= ParsePatchFromIni<2 >(ini, EXPlus::patch_args);
163
164
patch_override |= ParsePatchFromIni<2 >(ini, GuardRevamp::patch_args);
164
165
return patch_override;
@@ -171,7 +172,7 @@ bool RuntimePatches::ParseFromIni(lcf::INIReader& ini) {
171
172
void RuntimePatches::DetermineActivePatches (std::vector<std::string>& patches) {
172
173
#ifndef NO_RUNTIME_PATCHES
173
174
PrintPatch<2 >(patches, EncounterRandomnessAlert::patch_args);
174
- PrintPatch<11 >(patches, MonSca::patch_args);
175
+ PrintPatch<12 >(patches, MonSca::patch_args);
175
176
PrintPatch<2 >(patches, EXPlus::patch_args);
176
177
PrintPatch<2 >(patches, GuardRevamp::patch_args);
177
178
#else
@@ -209,7 +210,15 @@ namespace RuntimePatches::MonSca {
209
210
return switch_id > 0 && Main_Data::game_switches->Get (switch_id);
210
211
}
211
212
212
- void ApplyScaling (int & val, int mod) {
213
+ int GetVariableId (Game_Enemy const & enemy, int var_id) {
214
+ if (Player::game_config.patch_monsca_plus .Get () > 0 ) {
215
+ return var_id + enemy.GetTroopMemberId ();
216
+ }
217
+ return var_id;
218
+ }
219
+
220
+ void ApplyScaling (Game_Enemy const & enemy, int & val, int var_id) {
221
+ int mod = Main_Data::game_variables->Get (GetVariableId (enemy, var_id));
213
222
if (mod == 0 ) {
214
223
return ;
215
224
}
@@ -221,113 +230,113 @@ namespace RuntimePatches::MonSca {
221
230
}
222
231
}
223
232
224
- void RuntimePatches::MonSca::ModifyMaxHp (int & val) {
233
+ void RuntimePatches::MonSca::ModifyMaxHp (Game_Enemy const & enemy, int & val) {
225
234
#ifdef NO_RUNTIME_PATCHES
226
235
// no-op
227
236
(void )val;
228
237
return ;
229
238
#endif
230
239
if (auto var_id = Player::game_config.patch_monsca_maxhp .Get (); var_id > 0 ) {
231
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
240
+ ApplyScaling (enemy, val, var_id);
232
241
}
233
242
}
234
243
235
- void RuntimePatches::MonSca::ModifyMaxSp (int & val) {
244
+ void RuntimePatches::MonSca::ModifyMaxSp (Game_Enemy const & enemy, int & val) {
236
245
#ifdef NO_RUNTIME_PATCHES
237
246
// no-op
238
247
(void )val;
239
248
return ;
240
249
#endif
241
250
if (auto var_id = Player::game_config.patch_monsca_maxsp .Get (); var_id > 0 ) {
242
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
251
+ ApplyScaling (enemy, val, var_id);
243
252
}
244
253
}
245
254
246
- void RuntimePatches::MonSca::ModifyAtk (int & val) {
255
+ void RuntimePatches::MonSca::ModifyAtk (Game_Enemy const & enemy, int & val) {
247
256
#ifdef NO_RUNTIME_PATCHES
248
257
// no-op
249
258
(void )val;
250
259
return ;
251
260
#endif
252
261
if (auto var_id = Player::game_config.patch_monsca_atk .Get (); var_id > 0 ) {
253
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
262
+ ApplyScaling (enemy, val, var_id);
254
263
}
255
264
}
256
265
257
- void RuntimePatches::MonSca::ModifyDef (int & val) {
266
+ void RuntimePatches::MonSca::ModifyDef (Game_Enemy const & enemy, int & val) {
258
267
#ifdef NO_RUNTIME_PATCHES
259
268
// no-op
260
269
(void )val;
261
270
return ;
262
271
#endif
263
272
if (auto var_id = Player::game_config.patch_monsca_def .Get (); var_id > 0 ) {
264
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
273
+ ApplyScaling (enemy, val, var_id);
265
274
}
266
275
}
267
276
268
- void RuntimePatches::MonSca::ModifySpi (int & val) {
277
+ void RuntimePatches::MonSca::ModifySpi (Game_Enemy const & enemy, int & val) {
269
278
#ifdef NO_RUNTIME_PATCHES
270
279
// no-op
271
280
(void )val;
272
281
return ;
273
282
#endif
274
283
if (auto var_id = Player::game_config.patch_monsca_spi .Get (); var_id > 0 ) {
275
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
284
+ ApplyScaling (enemy, val, var_id);
276
285
}
277
286
}
278
287
279
- void RuntimePatches::MonSca::ModifyAgi (int & val) {
288
+ void RuntimePatches::MonSca::ModifyAgi (Game_Enemy const & enemy, int & val) {
280
289
#ifdef NO_RUNTIME_PATCHES
281
290
// no-op
282
291
(void )val;
283
292
return ;
284
293
#endif
285
294
if (auto var_id = Player::game_config.patch_monsca_agi .Get (); var_id > 0 ) {
286
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
295
+ ApplyScaling (enemy, val, var_id);
287
296
}
288
297
}
289
298
290
- void RuntimePatches::MonSca::ModifyExpGained (int & val) {
299
+ void RuntimePatches::MonSca::ModifyExpGained (Game_Enemy const & enemy, int & val) {
291
300
#ifdef NO_RUNTIME_PATCHES
292
301
// no-op
293
302
(void )val;
294
303
return ;
295
304
#endif
296
305
if (auto var_id = Player::game_config.patch_monsca_exp .Get (); var_id > 0 ) {
297
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
306
+ ApplyScaling (enemy, val, var_id);
298
307
}
299
308
}
300
309
301
- void RuntimePatches::MonSca::ModifyMoneyGained (int & val) {
310
+ void RuntimePatches::MonSca::ModifyMoneyGained (Game_Enemy const & enemy, int & val) {
302
311
#ifdef NO_RUNTIME_PATCHES
303
312
// no-op
304
313
(void )val;
305
314
return ;
306
315
#endif
307
316
if (auto var_id = Player::game_config.patch_monsca_gold .Get (); var_id > 0 ) {
308
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
317
+ ApplyScaling (enemy, val, var_id);
309
318
}
310
319
}
311
320
312
- void RuntimePatches::MonSca::ModifyItemGained (int & item_id) {
321
+ void RuntimePatches::MonSca::ModifyItemGained (Game_Enemy const & enemy, int & item_id) {
313
322
#ifdef NO_RUNTIME_PATCHES
314
323
// no-op
315
324
(void )item_id;
316
325
return ;
317
326
#endif
318
327
if (auto var_id = Player::game_config.patch_monsca_item .Get (); var_id > 0 ) {
319
- item_id += Main_Data::game_variables->Get (var_id);
328
+ item_id += Main_Data::game_variables->Get (GetVariableId (enemy, var_id) );
320
329
}
321
330
}
322
331
323
- void RuntimePatches::MonSca::ModifyItemDropRate (int & val) {
332
+ void RuntimePatches::MonSca::ModifyItemDropRate (Game_Enemy const & enemy, int & val) {
324
333
#ifdef NO_RUNTIME_PATCHES
325
334
// no-op
326
335
(void )val;
327
336
return ;
328
337
#endif
329
338
if (auto var_id = Player::game_config.patch_monsca_droprate .Get (); var_id > 0 ) {
330
- ApplyScaling (val, Main_Data::game_variables-> Get ( var_id) );
339
+ ApplyScaling (enemy, val, var_id);
331
340
}
332
341
}
333
342
0 commit comments