Fix Scale Shot bug and use Canceller Multihit Moves (#3290)

This commit is contained in:
Alex 2023-09-10 16:57:19 +02:00 committed by GitHub
parent 49e791f128
commit 18577ce598
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 471 additions and 348 deletions

View File

@ -145,7 +145,6 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectPresent @ EFFECT_PRESENT
.4byte BattleScript_EffectHit @ EFFECT_FRUSTRATION
.4byte BattleScript_EffectSafeguard @ EFFECT_SAFEGUARD
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_125
.4byte BattleScript_EffectMagnitude @ EFFECT_MAGNITUDE
.4byte BattleScript_EffectBatonPass @ EFFECT_BATON_PASS
.4byte BattleScript_EffectHit @ EFFECT_PURSUIT
@ -406,7 +405,6 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectHit @ EFFECT_BOLT_BEAK
.4byte BattleScript_EffectSkyDrop @ EFFECT_SKY_DROP
.4byte BattleScript_EffectHit @ EFFECT_EXPANDING_FORCE
.4byte BattleScript_EffectScaleShot @ EFFECT_SCALE_SHOT
.4byte BattleScript_EffectMeteorBeam @ EFFECT_METEOR_BEAM
.4byte BattleScript_EffectHit @ EFFECT_RISING_VOLTAGE
.4byte BattleScript_EffectHit @ EFFECT_BEAK_BLAST
@ -723,60 +721,6 @@ BattleScript_FirstChargingTurnMeteorBeam::
seteffectsecondary
return
BattleScript_EffectScaleShot::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
setmultihitcounter 0x0
initmultihitstring
sethword sMULTIHIT_EFFECT, 0x0
BattleScript_ScaleShotLoop::
jumpifhasnohp BS_ATTACKER, BattleScript_ScaleShotEnd
jumpifhasnohp BS_TARGET, BattleScript_ScaleShotPrintStrings
jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_ScaleShotDoMultiHit
jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_ScaleShotPrintStrings
BattleScript_ScaleShotDoMultiHit::
movevaluescleanup
copyhword sMOVE_EFFECT, sMULTIHIT_EFFECT
critcalc
damagecalc
jumpifmovehadnoeffect BattleScript_ScaleShotMultiHitNoMoreHits
adjustdamage
attackanimation
waitanimation
effectivenesssound
hitanimation BS_TARGET
waitstate
healthbarupdate BS_TARGET
datahpupdate BS_TARGET
critmessage
waitmessage B_WAIT_TIME_LONG
multihitresultmessage
printstring STRINGID_EMPTYSTRING3
waitmessage 1
addbyte sMULTIHIT_STRING + 4, 0x1
moveendto MOVEEND_NEXT_TARGET
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_ScaleShotPrintStrings
decrementmultihit BattleScript_ScaleShotLoop
goto BattleScript_ScaleShotPrintStrings
BattleScript_ScaleShotMultiHitNoMoreHits::
pause B_WAIT_TIME_SHORT
BattleScript_ScaleShotPrintStrings::
resultmessage
waitmessage B_WAIT_TIME_LONG
jumpifmovehadnoeffect BattleScript_ScaleShotEnd
copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
printstring STRINGID_HITXTIMES
waitmessage B_WAIT_TIME_LONG
BattleScript_ScaleShotEnd::
setmoveeffect MOVE_EFFECT_SCALE_SHOT | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
seteffectwithchance
tryfaintmon BS_TARGET
moveendcase MOVEEND_SYNCHRONIZE_TARGET
moveendfrom MOVEEND_STATUS_IMMUNITY_ABILITIES
end
BattleScript_EffectSkyDrop:
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2
attackcanceler
@ -881,7 +825,7 @@ BattleScript_FlingEnd:
tryfaintmon BS_TARGET
trysymbiosis
goto BattleScript_MoveEnd
BattleScript_FlingFailConsumeItem::
removeitem BS_ATTACKER
goto BattleScript_FailedFromAtkString

View File

@ -124,290 +124,289 @@
#define EFFECT_PRESENT 120
#define EFFECT_FRUSTRATION 121
#define EFFECT_SAFEGUARD 122
#define EFFECT_UNUSED_125 123
#define EFFECT_MAGNITUDE 124
#define EFFECT_BATON_PASS 125
#define EFFECT_PURSUIT 126
#define EFFECT_RAPID_SPIN 127
#define EFFECT_SONICBOOM 128
#define EFFECT_CAPTIVATE 129
#define EFFECT_MORNING_SUN 130
#define EFFECT_SYNTHESIS 131
#define EFFECT_MOONLIGHT 132
#define EFFECT_HIDDEN_POWER 133
#define EFFECT_RAIN_DANCE 134
#define EFFECT_SUNNY_DAY 135
#define EFFECT_DEFENSE_UP_HIT 136
#define EFFECT_ATTACK_UP_HIT 137
#define EFFECT_ALL_STATS_UP_HIT 138
#define EFFECT_FELL_STINGER 139
#define EFFECT_BELLY_DRUM 140
#define EFFECT_PSYCH_UP 141
#define EFFECT_MIRROR_COAT 142
#define EFFECT_SKULL_BASH 143
#define EFFECT_TWISTER 144
#define EFFECT_EARTHQUAKE 145
#define EFFECT_FUTURE_SIGHT 146
#define EFFECT_GUST 147
#define EFFECT_FLINCH_MINIMIZE_HIT 148
#define EFFECT_SOLAR_BEAM 149
#define EFFECT_THUNDER 150
#define EFFECT_TELEPORT 151
#define EFFECT_BEAT_UP 152
#define EFFECT_SEMI_INVULNERABLE 153
#define EFFECT_DEFENSE_CURL 154
#define EFFECT_SOFTBOILED 155
#define EFFECT_FAKE_OUT 156
#define EFFECT_UPROAR 157
#define EFFECT_STOCKPILE 158
#define EFFECT_SPIT_UP 159
#define EFFECT_SWALLOW 160
#define EFFECT_WORRY_SEED 161
#define EFFECT_HAIL 162
#define EFFECT_TORMENT 163
#define EFFECT_FLATTER 164
#define EFFECT_WILL_O_WISP 165
#define EFFECT_MEMENTO 166
#define EFFECT_FACADE 167
#define EFFECT_FOCUS_PUNCH 168
#define EFFECT_SMELLINGSALT 169
#define EFFECT_FOLLOW_ME 170
#define EFFECT_NATURE_POWER 171
#define EFFECT_CHARGE 172
#define EFFECT_TAUNT 173
#define EFFECT_HELPING_HAND 174
#define EFFECT_TRICK 175
#define EFFECT_ROLE_PLAY 176
#define EFFECT_WISH 177
#define EFFECT_ASSIST 178
#define EFFECT_INGRAIN 179
#define EFFECT_SUPERPOWER 180
#define EFFECT_MAGIC_COAT 181
#define EFFECT_RECYCLE 182
#define EFFECT_REVENGE 183
#define EFFECT_BRICK_BREAK 184
#define EFFECT_YAWN 185
#define EFFECT_KNOCK_OFF 186
#define EFFECT_ENDEAVOR 187
#define EFFECT_ERUPTION 188
#define EFFECT_SKILL_SWAP 189
#define EFFECT_IMPRISON 190
#define EFFECT_REFRESH 191
#define EFFECT_GRUDGE 192
#define EFFECT_SNATCH 193
#define EFFECT_LOW_KICK 194
#define EFFECT_SECRET_POWER 195
#define EFFECT_RECOIL_33 196
#define EFFECT_TEETER_DANCE 197
#define EFFECT_HIT_ESCAPE 198
#define EFFECT_MUD_SPORT 199
#define EFFECT_POISON_FANG 200
#define EFFECT_WEATHER_BALL 201
#define EFFECT_OVERHEAT 202
#define EFFECT_TICKLE 203
#define EFFECT_COSMIC_POWER 204
#define EFFECT_SKY_UPPERCUT 205
#define EFFECT_BULK_UP 206
#define EFFECT_PLACEHOLDER 207
#define EFFECT_WATER_SPORT 208
#define EFFECT_CALM_MIND 209
#define EFFECT_DRAGON_DANCE 210
#define EFFECT_CAMOUFLAGE 211
#define EFFECT_MAGNITUDE 123
#define EFFECT_BATON_PASS 124
#define EFFECT_PURSUIT 125
#define EFFECT_RAPID_SPIN 126
#define EFFECT_SONICBOOM 127
#define EFFECT_CAPTIVATE 128
#define EFFECT_MORNING_SUN 129
#define EFFECT_SYNTHESIS 130
#define EFFECT_MOONLIGHT 131
#define EFFECT_HIDDEN_POWER 132
#define EFFECT_RAIN_DANCE 133
#define EFFECT_SUNNY_DAY 134
#define EFFECT_DEFENSE_UP_HIT 135
#define EFFECT_ATTACK_UP_HIT 136
#define EFFECT_ALL_STATS_UP_HIT 137
#define EFFECT_FELL_STINGER 138
#define EFFECT_BELLY_DRUM 139
#define EFFECT_PSYCH_UP 140
#define EFFECT_MIRROR_COAT 141
#define EFFECT_SKULL_BASH 142
#define EFFECT_TWISTER 143
#define EFFECT_EARTHQUAKE 144
#define EFFECT_FUTURE_SIGHT 145
#define EFFECT_GUST 146
#define EFFECT_FLINCH_MINIMIZE_HIT 147
#define EFFECT_SOLAR_BEAM 148
#define EFFECT_THUNDER 149
#define EFFECT_TELEPORT 150
#define EFFECT_BEAT_UP 151
#define EFFECT_SEMI_INVULNERABLE 152
#define EFFECT_DEFENSE_CURL 153
#define EFFECT_SOFTBOILED 154
#define EFFECT_FAKE_OUT 155
#define EFFECT_UPROAR 156
#define EFFECT_STOCKPILE 157
#define EFFECT_SPIT_UP 158
#define EFFECT_SWALLOW 159
#define EFFECT_WORRY_SEED 160
#define EFFECT_HAIL 161
#define EFFECT_TORMENT 162
#define EFFECT_FLATTER 163
#define EFFECT_WILL_O_WISP 164
#define EFFECT_MEMENTO 165
#define EFFECT_FACADE 166
#define EFFECT_FOCUS_PUNCH 167
#define EFFECT_SMELLINGSALT 168
#define EFFECT_FOLLOW_ME 169
#define EFFECT_NATURE_POWER 170
#define EFFECT_CHARGE 171
#define EFFECT_TAUNT 172
#define EFFECT_HELPING_HAND 173
#define EFFECT_TRICK 174
#define EFFECT_ROLE_PLAY 175
#define EFFECT_WISH 176
#define EFFECT_ASSIST 177
#define EFFECT_INGRAIN 178
#define EFFECT_SUPERPOWER 179
#define EFFECT_MAGIC_COAT 180
#define EFFECT_RECYCLE 181
#define EFFECT_REVENGE 182
#define EFFECT_BRICK_BREAK 183
#define EFFECT_YAWN 184
#define EFFECT_KNOCK_OFF 185
#define EFFECT_ENDEAVOR 186
#define EFFECT_ERUPTION 187
#define EFFECT_SKILL_SWAP 188
#define EFFECT_IMPRISON 189
#define EFFECT_REFRESH 190
#define EFFECT_GRUDGE 191
#define EFFECT_SNATCH 192
#define EFFECT_LOW_KICK 193
#define EFFECT_SECRET_POWER 194
#define EFFECT_RECOIL_33 195
#define EFFECT_TEETER_DANCE 196
#define EFFECT_HIT_ESCAPE 197
#define EFFECT_MUD_SPORT 198
#define EFFECT_POISON_FANG 199
#define EFFECT_WEATHER_BALL 200
#define EFFECT_OVERHEAT 201
#define EFFECT_TICKLE 202
#define EFFECT_COSMIC_POWER 203
#define EFFECT_SKY_UPPERCUT 204
#define EFFECT_BULK_UP 205
#define EFFECT_PLACEHOLDER 206
#define EFFECT_WATER_SPORT 207
#define EFFECT_CALM_MIND 208
#define EFFECT_DRAGON_DANCE 209
#define EFFECT_CAMOUFLAGE 210
// New move effects
#define EFFECT_PLEDGE 212
#define EFFECT_FLING 213
#define EFFECT_NATURAL_GIFT 214
#define EFFECT_WAKE_UP_SLAP 215
#define EFFECT_WRING_OUT 216
#define EFFECT_HEX 217
#define EFFECT_ASSURANCE 218
#define EFFECT_TRUMP_CARD 219
#define EFFECT_ACROBATICS 220
#define EFFECT_HEAT_CRASH 221
#define EFFECT_PUNISHMENT 222
#define EFFECT_STORED_POWER 223
#define EFFECT_ELECTRO_BALL 224
#define EFFECT_GYRO_BALL 225
#define EFFECT_ECHOED_VOICE 226
#define EFFECT_PAYBACK 227
#define EFFECT_ROUND 228
#define EFFECT_BRINE 229
#define EFFECT_VENOSHOCK 230
#define EFFECT_RETALIATE 231
#define EFFECT_BULLDOZE 232
#define EFFECT_FOUL_PLAY 233
#define EFFECT_PSYSHOCK 234
#define EFFECT_ROOST 235
#define EFFECT_GRAVITY 236
#define EFFECT_MIRACLE_EYE 237
#define EFFECT_TAILWIND 238
#define EFFECT_EMBARGO 239
#define EFFECT_AQUA_RING 240
#define EFFECT_TRICK_ROOM 241
#define EFFECT_WONDER_ROOM 242
#define EFFECT_MAGIC_ROOM 243
#define EFFECT_MAGNET_RISE 244
#define EFFECT_TOXIC_SPIKES 245
#define EFFECT_GASTRO_ACID 246
#define EFFECT_STEALTH_ROCK 247
#define EFFECT_TELEKINESIS 248
#define EFFECT_POWER_SWAP 249
#define EFFECT_GUARD_SWAP 250
#define EFFECT_HEART_SWAP 251
#define EFFECT_POWER_SPLIT 252
#define EFFECT_GUARD_SPLIT 253
#define EFFECT_STICKY_WEB 254
#define EFFECT_METAL_BURST 255
#define EFFECT_LUCKY_CHANT 256
#define EFFECT_SUCKER_PUNCH 257
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 258
#define EFFECT_SIMPLE_BEAM 259
#define EFFECT_ENTRAINMENT 260
#define EFFECT_HEAL_PULSE 261
#define EFFECT_QUASH 262
#define EFFECT_ION_DELUGE 263
#define EFFECT_FREEZE_DRY 264
#define EFFECT_TOPSY_TURVY 265
#define EFFECT_MISTY_TERRAIN 266
#define EFFECT_GRASSY_TERRAIN 267
#define EFFECT_ELECTRIC_TERRAIN 268
#define EFFECT_PSYCHIC_TERRAIN 269
#define EFFECT_ATTACK_ACCURACY_UP 270
#define EFFECT_ATTACK_SPATK_UP 271
#define EFFECT_HURRICANE 272
#define EFFECT_TWO_TYPED_MOVE 273
#define EFFECT_ME_FIRST 274
#define EFFECT_SPEED_UP_HIT 275
#define EFFECT_QUIVER_DANCE 276
#define EFFECT_COIL 277
#define EFFECT_ELECTRIFY 278
#define EFFECT_REFLECT_TYPE 279
#define EFFECT_SOAK 280
#define EFFECT_GROWTH 281
#define EFFECT_CLOSE_COMBAT 282
#define EFFECT_LAST_RESORT 283
#define EFFECT_RECOIL_33_STATUS 284
#define EFFECT_FLINCH_STATUS 285
#define EFFECT_RECOIL_50 286
#define EFFECT_SHELL_SMASH 287
#define EFFECT_SHIFT_GEAR 288
#define EFFECT_DEFENSE_UP_3 289
#define EFFECT_NOBLE_ROAR 290
#define EFFECT_VENOM_DRENCH 291
#define EFFECT_TOXIC_THREAD 292
#define EFFECT_CLEAR_SMOG 293
#define EFFECT_HIT_SWITCH_TARGET 294
#define EFFECT_FINAL_GAMBIT 295
#define EFFECT_CHANGE_TYPE_ON_ITEM 296
#define EFFECT_AUTOTOMIZE 297
#define EFFECT_COPYCAT 298
#define EFFECT_DEFOG 299
#define EFFECT_HIT_ENEMY_HEAL_ALLY 300
#define EFFECT_SMACK_DOWN 301
#define EFFECT_SYNCHRONOISE 302
#define EFFECT_PSYCHO_SHIFT 303
#define EFFECT_POWER_TRICK 304
#define EFFECT_FLAME_BURST 305
#define EFFECT_AFTER_YOU 306
#define EFFECT_BESTOW 307
#define EFFECT_ROTOTILLER 308
#define EFFECT_FLOWER_SHIELD 309
#define EFFECT_HIT_PREVENT_ESCAPE 310
#define EFFECT_SPEED_SWAP 311
#define EFFECT_DEFENSE_UP2_HIT 312
#define EFFECT_REVELATION_DANCE 313
#define EFFECT_AURORA_VEIL 314
#define EFFECT_THIRD_TYPE 315
#define EFFECT_FEINT 316
#define EFFECT_SPARKLING_ARIA 317
#define EFFECT_ACUPRESSURE 318
#define EFFECT_AROMATIC_MIST 319
#define EFFECT_POWDER 320
#define EFFECT_SP_ATTACK_UP_HIT 321
#define EFFECT_BELCH 322
#define EFFECT_PARTING_SHOT 323
#define EFFECT_SPECTRAL_THIEF 324
#define EFFECT_V_CREATE 325
#define EFFECT_MAT_BLOCK 326
#define EFFECT_STOMPING_TANTRUM 327
#define EFFECT_CORE_ENFORCER 328
#define EFFECT_INSTRUCT 329
#define EFFECT_THROAT_CHOP 330
#define EFFECT_LASER_FOCUS 331
#define EFFECT_MAGNETIC_FLUX 332
#define EFFECT_GEAR_UP 333
#define EFFECT_INCINERATE 334
#define EFFECT_BUG_BITE 335
#define EFFECT_STRENGTH_SAP 336
#define EFFECT_MIND_BLOWN 337
#define EFFECT_PURIFY 338
#define EFFECT_BURN_UP 339
#define EFFECT_SHORE_UP 340
#define EFFECT_GEOMANCY 341
#define EFFECT_FAIRY_LOCK 342
#define EFFECT_ALLY_SWITCH 343
#define EFFECT_RELIC_SONG 344
#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 345
#define EFFECT_BODY_PRESS 346
#define EFFECT_EERIE_SPELL 347
#define EFFECT_JUNGLE_HEALING 348
#define EFFECT_COACHING 349
#define EFFECT_LASH_OUT 350
#define EFFECT_GRASSY_GLIDE 351
#define EFFECT_REMOVE_TERRAIN 352
#define EFFECT_DYNAMAX_DOUBLE_DMG 353
#define EFFECT_DECORATE 354
#define EFFECT_SNIPE_SHOT 355
#define EFFECT_RECOIL_HP_25 356
#define EFFECT_STUFF_CHEEKS 357
#define EFFECT_GRAV_APPLE 358
#define EFFECT_EVASION_UP_HIT 359
#define EFFECT_GLITZY_GLOW 360
#define EFFECT_BADDY_BAD 361
#define EFFECT_SAPPY_SEED 362
#define EFFECT_FREEZY_FROST 363
#define EFFECT_SPARKLY_SWIRL 364
#define EFFECT_PLASMA_FISTS 365
#define EFFECT_HYPERSPACE_FURY 366
#define EFFECT_AURA_WHEEL 367
#define EFFECT_PHOTON_GEYSER 368
#define EFFECT_SHELL_SIDE_ARM 369
#define EFFECT_TERRAIN_PULSE 370
#define EFFECT_JAW_LOCK 371
#define EFFECT_NO_RETREAT 372
#define EFFECT_TAR_SHOT 373
#define EFFECT_POLTERGEIST 374
#define EFFECT_OCTOLOCK 375
#define EFFECT_CLANGOROUS_SOUL 376
#define EFFECT_BOLT_BEAK 377
#define EFFECT_SKY_DROP 378
#define EFFECT_EXPANDING_FORCE 379
#define EFFECT_SCALE_SHOT 380
#define EFFECT_METEOR_BEAM 381
#define EFFECT_RISING_VOLTAGE 382
#define EFFECT_BEAK_BLAST 383
#define EFFECT_COURT_CHANGE 384
#define EFFECT_STEEL_BEAM 385
#define EFFECT_EXTREME_EVOBOOST 386
#define EFFECT_HIT_SET_REMOVE_TERRAIN 387 // genesis supernova
#define EFFECT_DARK_VOID 388
#define EFFECT_SLEEP_HIT 389
#define EFFECT_DOUBLE_SHOCK 390
#define EFFECT_SPECIAL_ATTACK_UP_HIT 391
#define EFFECT_VICTORY_DANCE 392
#define EFFECT_TEATIME 393
#define EFFECT_ATTACK_UP_USER_ALLY 394 // Howl 8th Gen
#define EFFECT_SHELL_TRAP 395
#define EFFECT_PSYBLADE 396
#define EFFECT_HYDRO_STEAM 397
#define EFFECT_HIT_SET_ENTRY_HAZARD 398
#define EFFECT_DIRE_CLAW 399
#define EFFECT_BARB_BARRAGE 400
#define EFFECT_REVIVAL_BLESSING 401
#define EFFECT_FROSTBITE_HIT 402
#define EFFECT_SNOWSCAPE 403
#define EFFECT_PLEDGE 211
#define EFFECT_FLING 212
#define EFFECT_NATURAL_GIFT 213
#define EFFECT_WAKE_UP_SLAP 214
#define EFFECT_WRING_OUT 215
#define EFFECT_HEX 216
#define EFFECT_ASSURANCE 217
#define EFFECT_TRUMP_CARD 218
#define EFFECT_ACROBATICS 219
#define EFFECT_HEAT_CRASH 220
#define EFFECT_PUNISHMENT 221
#define EFFECT_STORED_POWER 222
#define EFFECT_ELECTRO_BALL 223
#define EFFECT_GYRO_BALL 224
#define EFFECT_ECHOED_VOICE 225
#define EFFECT_PAYBACK 226
#define EFFECT_ROUND 227
#define EFFECT_BRINE 228
#define EFFECT_VENOSHOCK 229
#define EFFECT_RETALIATE 230
#define EFFECT_BULLDOZE 231
#define EFFECT_FOUL_PLAY 232
#define EFFECT_PSYSHOCK 233
#define EFFECT_ROOST 234
#define EFFECT_GRAVITY 235
#define EFFECT_MIRACLE_EYE 236
#define EFFECT_TAILWIND 237
#define EFFECT_EMBARGO 238
#define EFFECT_AQUA_RING 239
#define EFFECT_TRICK_ROOM 240
#define EFFECT_WONDER_ROOM 241
#define EFFECT_MAGIC_ROOM 242
#define EFFECT_MAGNET_RISE 243
#define EFFECT_TOXIC_SPIKES 244
#define EFFECT_GASTRO_ACID 245
#define EFFECT_STEALTH_ROCK 246
#define EFFECT_TELEKINESIS 247
#define EFFECT_POWER_SWAP 248
#define EFFECT_GUARD_SWAP 249
#define EFFECT_HEART_SWAP 250
#define EFFECT_POWER_SPLIT 251
#define EFFECT_GUARD_SPLIT 252
#define EFFECT_STICKY_WEB 253
#define EFFECT_METAL_BURST 254
#define EFFECT_LUCKY_CHANT 255
#define EFFECT_SUCKER_PUNCH 256
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 257
#define EFFECT_SIMPLE_BEAM 258
#define EFFECT_ENTRAINMENT 259
#define EFFECT_HEAL_PULSE 260
#define EFFECT_QUASH 261
#define EFFECT_ION_DELUGE 262
#define EFFECT_FREEZE_DRY 263
#define EFFECT_TOPSY_TURVY 264
#define EFFECT_MISTY_TERRAIN 265
#define EFFECT_GRASSY_TERRAIN 266
#define EFFECT_ELECTRIC_TERRAIN 267
#define EFFECT_PSYCHIC_TERRAIN 268
#define EFFECT_ATTACK_ACCURACY_UP 269
#define EFFECT_ATTACK_SPATK_UP 270
#define EFFECT_HURRICANE 271
#define EFFECT_TWO_TYPED_MOVE 272
#define EFFECT_ME_FIRST 273
#define EFFECT_SPEED_UP_HIT 274
#define EFFECT_QUIVER_DANCE 275
#define EFFECT_COIL 276
#define EFFECT_ELECTRIFY 277
#define EFFECT_REFLECT_TYPE 278
#define EFFECT_SOAK 279
#define EFFECT_GROWTH 280
#define EFFECT_CLOSE_COMBAT 281
#define EFFECT_LAST_RESORT 282
#define EFFECT_RECOIL_33_STATUS 283
#define EFFECT_FLINCH_STATUS 284
#define EFFECT_RECOIL_50 285
#define EFFECT_SHELL_SMASH 286
#define EFFECT_SHIFT_GEAR 287
#define EFFECT_DEFENSE_UP_3 288
#define EFFECT_NOBLE_ROAR 289
#define EFFECT_VENOM_DRENCH 290
#define EFFECT_TOXIC_THREAD 291
#define EFFECT_CLEAR_SMOG 292
#define EFFECT_HIT_SWITCH_TARGET 293
#define EFFECT_FINAL_GAMBIT 294
#define EFFECT_CHANGE_TYPE_ON_ITEM 295
#define EFFECT_AUTOTOMIZE 296
#define EFFECT_COPYCAT 297
#define EFFECT_DEFOG 298
#define EFFECT_HIT_ENEMY_HEAL_ALLY 299
#define EFFECT_SMACK_DOWN 300
#define EFFECT_SYNCHRONOISE 301
#define EFFECT_PSYCHO_SHIFT 302
#define EFFECT_POWER_TRICK 303
#define EFFECT_FLAME_BURST 304
#define EFFECT_AFTER_YOU 305
#define EFFECT_BESTOW 306
#define EFFECT_ROTOTILLER 307
#define EFFECT_FLOWER_SHIELD 308
#define EFFECT_HIT_PREVENT_ESCAPE 309
#define EFFECT_SPEED_SWAP 310
#define EFFECT_DEFENSE_UP2_HIT 311
#define EFFECT_REVELATION_DANCE 312
#define EFFECT_AURORA_VEIL 313
#define EFFECT_THIRD_TYPE 314
#define EFFECT_FEINT 315
#define EFFECT_SPARKLING_ARIA 316
#define EFFECT_ACUPRESSURE 317
#define EFFECT_AROMATIC_MIST 318
#define EFFECT_POWDER 319
#define EFFECT_SP_ATTACK_UP_HIT 320
#define EFFECT_BELCH 321
#define EFFECT_PARTING_SHOT 322
#define EFFECT_SPECTRAL_THIEF 323
#define EFFECT_V_CREATE 324
#define EFFECT_MAT_BLOCK 325
#define EFFECT_STOMPING_TANTRUM 326
#define EFFECT_CORE_ENFORCER 327
#define EFFECT_INSTRUCT 328
#define EFFECT_THROAT_CHOP 329
#define EFFECT_LASER_FOCUS 330
#define EFFECT_MAGNETIC_FLUX 331
#define EFFECT_GEAR_UP 332
#define EFFECT_INCINERATE 333
#define EFFECT_BUG_BITE 334
#define EFFECT_STRENGTH_SAP 335
#define EFFECT_MIND_BLOWN 336
#define EFFECT_PURIFY 337
#define EFFECT_BURN_UP 338
#define EFFECT_SHORE_UP 339
#define EFFECT_GEOMANCY 340
#define EFFECT_FAIRY_LOCK 341
#define EFFECT_ALLY_SWITCH 342
#define EFFECT_RELIC_SONG 343
#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 344
#define EFFECT_BODY_PRESS 345
#define EFFECT_EERIE_SPELL 346
#define EFFECT_JUNGLE_HEALING 347
#define EFFECT_COACHING 348
#define EFFECT_LASH_OUT 349
#define EFFECT_GRASSY_GLIDE 350
#define EFFECT_REMOVE_TERRAIN 351
#define EFFECT_DYNAMAX_DOUBLE_DMG 352
#define EFFECT_DECORATE 353
#define EFFECT_SNIPE_SHOT 354
#define EFFECT_RECOIL_HP_25 355
#define EFFECT_STUFF_CHEEKS 356
#define EFFECT_GRAV_APPLE 357
#define EFFECT_EVASION_UP_HIT 358
#define EFFECT_GLITZY_GLOW 359
#define EFFECT_BADDY_BAD 360
#define EFFECT_SAPPY_SEED 361
#define EFFECT_FREEZY_FROST 362
#define EFFECT_SPARKLY_SWIRL 363
#define EFFECT_PLASMA_FISTS 364
#define EFFECT_HYPERSPACE_FURY 365
#define EFFECT_AURA_WHEEL 366
#define EFFECT_PHOTON_GEYSER 367
#define EFFECT_SHELL_SIDE_ARM 368
#define EFFECT_TERRAIN_PULSE 369
#define EFFECT_JAW_LOCK 370
#define EFFECT_NO_RETREAT 371
#define EFFECT_TAR_SHOT 372
#define EFFECT_POLTERGEIST 373
#define EFFECT_OCTOLOCK 374
#define EFFECT_CLANGOROUS_SOUL 375
#define EFFECT_BOLT_BEAK 376
#define EFFECT_SKY_DROP 377
#define EFFECT_EXPANDING_FORCE 378
#define EFFECT_METEOR_BEAM 379
#define EFFECT_RISING_VOLTAGE 380
#define EFFECT_BEAK_BLAST 381
#define EFFECT_COURT_CHANGE 382
#define EFFECT_STEEL_BEAM 383
#define EFFECT_EXTREME_EVOBOOST 384
#define EFFECT_HIT_SET_REMOVE_TERRAIN 385 // genesis supernova
#define EFFECT_DARK_VOID 386
#define EFFECT_SLEEP_HIT 387
#define EFFECT_DOUBLE_SHOCK 388
#define EFFECT_SPECIAL_ATTACK_UP_HIT 389
#define EFFECT_VICTORY_DANCE 390
#define EFFECT_TEATIME 391
#define EFFECT_ATTACK_UP_USER_ALLY 392 // Howl 8th Gen
#define EFFECT_SHELL_TRAP 393
#define EFFECT_PSYBLADE 394
#define EFFECT_HYDRO_STEAM 395
#define EFFECT_HIT_SET_ENTRY_HAZARD 396
#define EFFECT_DIRE_CLAW 397
#define EFFECT_BARB_BARRAGE 398
#define EFFECT_REVIVAL_BLESSING 399
#define EFFECT_FROSTBITE_HIT 400
#define EFFECT_SNOWSCAPE 401
#define NUM_BATTLE_MOVE_EFFECTS 404
#define NUM_BATTLE_MOVE_EFFECTS 402
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -3864,13 +3864,6 @@ void SetMoveEffect(bool32 primary, u32 certain)
gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
gBattleMons[gBattlerAttacker].status2 |= STATUS2_ESCAPE_PREVENTION;
break;
case MOVE_EFFECT_SCALE_SHOT:
if (!NoAliveMonsForEitherParty())
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_DefDownSpeedUp;
}
break;
case MOVE_EFFECT_BURN_UP:
// This seems unnecessary but is done to make it work properly with Parental Bond
BattleScriptPush(gBattlescriptCurrInstr + 1);
@ -6095,6 +6088,12 @@ static void Cmd_moveend(void)
gBattleScripting.multihitString[4]++;
if (--gMultiHitCounter == 0)
{
if (gBattleMoves[gCurrentMove].argument == MOVE_EFFECT_SCALE_SHOT && !NoAliveMonsForEitherParty())
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_DefDownSpeedUp;
}
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings;
effect = TRUE;

View File

@ -469,7 +469,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
[EFFECT_BOLT_BEAK] = 0, // TODO: Assign points
[EFFECT_SKY_DROP] = 0, // TODO: Assign points
[EFFECT_EXPANDING_FORCE] = 0, // TODO: Assign points
[EFFECT_SCALE_SHOT] = 0, // TODO: Assign points
[EFFECT_METEOR_BEAM] = 0, // TODO: Assign points
[EFFECT_RISING_VOLTAGE] = 0, // TODO: Assign points
[EFFECT_BEAK_BLAST] = 0, // TODO: Assign points

View File

@ -12038,7 +12038,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
[MOVE_SCALE_SHOT] =
{
.effect = EFFECT_SCALE_SHOT,
.effect = EFFECT_MULTI_HIT,
.power = 25,
.type = TYPE_DRAGON,
.accuracy = 90,
@ -12049,6 +12049,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
.split = SPLIT_PHYSICAL,
.zMoveEffect = Z_EFFECT_NONE,
.argument = MOVE_EFFECT_SCALE_SHOT,
},
[MOVE_METEOR_BEAM] =

View File

@ -0,0 +1,181 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gBattleMoves[MOVE_BULLET_SEED].effect == EFFECT_MULTI_HIT);
}
SINGLE_BATTLE_TEST("Multi hit Moves hit the maximum amount with Skill Link")
{
PASSES_RANDOMLY(100, 100, RNG_HITS);
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SKILL_LINK); };
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 5 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit twice 35 Percent of the time")
{
PASSES_RANDOMLY(35, 100, RNG_HITS);
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 2 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit thrice 35 Percent of the time")
{
PASSES_RANDOMLY(35, 100, RNG_HITS);
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 3 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time")
{
PASSES_RANDOMLY(15, 100, RNG_HITS);
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 4 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit four times 35 Percent of the time")
{
PASSES_RANDOMLY(15, 100, RNG_HITS);
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 5 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit at least four times with Loaded Dice")
{
PASSES_RANDOMLY(50, 100, RNG_LOADED_DICE);
GIVEN {
ASSUME(gItems[ITEM_LOADED_DICE].holdEffect == HOLD_EFFECT_LOADED_DICE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LOADED_DICE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 4 time(s)!");
}
}
SINGLE_BATTLE_TEST("Multi hit Moves hit five times 50 Percent of the time with Loaded Dice")
{
PASSES_RANDOMLY(50, 100, RNG_LOADED_DICE);
GIVEN {
ASSUME(gItems[ITEM_LOADED_DICE].holdEffect == HOLD_EFFECT_LOADED_DICE);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LOADED_DICE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BULLET_SEED); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, player);
MESSAGE("Hit 5 time(s)!");
}
}
SINGLE_BATTLE_TEST("Scale Shot decreses defense and increases speed after final hit")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_SCALE_SHOT].effect == EFFECT_MULTI_HIT);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_SCALE_SHOT); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
MESSAGE("Hit 5 time(s)!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Defense fell!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Speed rose!");
}
}
SINGLE_BATTLE_TEST("Endure does not prevent multiply hits and stat changes accure at the end of the turn")
{
GIVEN {
ASSUME(gBattleMoves[MOVE_SCALE_SHOT].effect == EFFECT_MULTI_HIT);
ASSUME(gBattleMoves[MOVE_ENDURE].effect == EFFECT_ENDURE);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
} WHEN {
TURN { MOVE(opponent, MOVE_ENDURE); MOVE(player, MOVE_SCALE_SHOT); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
MESSAGE("Hit 5 time(s)!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Defense fell!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Speed rose!");
}
}