mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Fix Scale Shot bug and use Canceller Multihit Moves (#3290)
This commit is contained in:
parent
49e791f128
commit
18577ce598
@ -145,7 +145,6 @@ gBattleScriptsForMoveEffects::
|
|||||||
.4byte BattleScript_EffectPresent @ EFFECT_PRESENT
|
.4byte BattleScript_EffectPresent @ EFFECT_PRESENT
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_FRUSTRATION
|
.4byte BattleScript_EffectHit @ EFFECT_FRUSTRATION
|
||||||
.4byte BattleScript_EffectSafeguard @ EFFECT_SAFEGUARD
|
.4byte BattleScript_EffectSafeguard @ EFFECT_SAFEGUARD
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_125
|
|
||||||
.4byte BattleScript_EffectMagnitude @ EFFECT_MAGNITUDE
|
.4byte BattleScript_EffectMagnitude @ EFFECT_MAGNITUDE
|
||||||
.4byte BattleScript_EffectBatonPass @ EFFECT_BATON_PASS
|
.4byte BattleScript_EffectBatonPass @ EFFECT_BATON_PASS
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_PURSUIT
|
.4byte BattleScript_EffectHit @ EFFECT_PURSUIT
|
||||||
@ -406,7 +405,6 @@ gBattleScriptsForMoveEffects::
|
|||||||
.4byte BattleScript_EffectHit @ EFFECT_BOLT_BEAK
|
.4byte BattleScript_EffectHit @ EFFECT_BOLT_BEAK
|
||||||
.4byte BattleScript_EffectSkyDrop @ EFFECT_SKY_DROP
|
.4byte BattleScript_EffectSkyDrop @ EFFECT_SKY_DROP
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_EXPANDING_FORCE
|
.4byte BattleScript_EffectHit @ EFFECT_EXPANDING_FORCE
|
||||||
.4byte BattleScript_EffectScaleShot @ EFFECT_SCALE_SHOT
|
|
||||||
.4byte BattleScript_EffectMeteorBeam @ EFFECT_METEOR_BEAM
|
.4byte BattleScript_EffectMeteorBeam @ EFFECT_METEOR_BEAM
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_RISING_VOLTAGE
|
.4byte BattleScript_EffectHit @ EFFECT_RISING_VOLTAGE
|
||||||
.4byte BattleScript_EffectHit @ EFFECT_BEAK_BLAST
|
.4byte BattleScript_EffectHit @ EFFECT_BEAK_BLAST
|
||||||
@ -723,60 +721,6 @@ BattleScript_FirstChargingTurnMeteorBeam::
|
|||||||
seteffectsecondary
|
seteffectsecondary
|
||||||
return
|
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:
|
BattleScript_EffectSkyDrop:
|
||||||
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2
|
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2
|
||||||
attackcanceler
|
attackcanceler
|
||||||
@ -881,7 +825,7 @@ BattleScript_FlingEnd:
|
|||||||
tryfaintmon BS_TARGET
|
tryfaintmon BS_TARGET
|
||||||
trysymbiosis
|
trysymbiosis
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_FlingFailConsumeItem::
|
BattleScript_FlingFailConsumeItem::
|
||||||
removeitem BS_ATTACKER
|
removeitem BS_ATTACKER
|
||||||
goto BattleScript_FailedFromAtkString
|
goto BattleScript_FailedFromAtkString
|
||||||
|
@ -124,290 +124,289 @@
|
|||||||
#define EFFECT_PRESENT 120
|
#define EFFECT_PRESENT 120
|
||||||
#define EFFECT_FRUSTRATION 121
|
#define EFFECT_FRUSTRATION 121
|
||||||
#define EFFECT_SAFEGUARD 122
|
#define EFFECT_SAFEGUARD 122
|
||||||
#define EFFECT_UNUSED_125 123
|
|
||||||
#define EFFECT_MAGNITUDE 124
|
#define EFFECT_MAGNITUDE 123
|
||||||
#define EFFECT_BATON_PASS 125
|
#define EFFECT_BATON_PASS 124
|
||||||
#define EFFECT_PURSUIT 126
|
#define EFFECT_PURSUIT 125
|
||||||
#define EFFECT_RAPID_SPIN 127
|
#define EFFECT_RAPID_SPIN 126
|
||||||
#define EFFECT_SONICBOOM 128
|
#define EFFECT_SONICBOOM 127
|
||||||
#define EFFECT_CAPTIVATE 129
|
#define EFFECT_CAPTIVATE 128
|
||||||
#define EFFECT_MORNING_SUN 130
|
#define EFFECT_MORNING_SUN 129
|
||||||
#define EFFECT_SYNTHESIS 131
|
#define EFFECT_SYNTHESIS 130
|
||||||
#define EFFECT_MOONLIGHT 132
|
#define EFFECT_MOONLIGHT 131
|
||||||
#define EFFECT_HIDDEN_POWER 133
|
#define EFFECT_HIDDEN_POWER 132
|
||||||
#define EFFECT_RAIN_DANCE 134
|
#define EFFECT_RAIN_DANCE 133
|
||||||
#define EFFECT_SUNNY_DAY 135
|
#define EFFECT_SUNNY_DAY 134
|
||||||
#define EFFECT_DEFENSE_UP_HIT 136
|
#define EFFECT_DEFENSE_UP_HIT 135
|
||||||
#define EFFECT_ATTACK_UP_HIT 137
|
#define EFFECT_ATTACK_UP_HIT 136
|
||||||
#define EFFECT_ALL_STATS_UP_HIT 138
|
#define EFFECT_ALL_STATS_UP_HIT 137
|
||||||
#define EFFECT_FELL_STINGER 139
|
#define EFFECT_FELL_STINGER 138
|
||||||
#define EFFECT_BELLY_DRUM 140
|
#define EFFECT_BELLY_DRUM 139
|
||||||
#define EFFECT_PSYCH_UP 141
|
#define EFFECT_PSYCH_UP 140
|
||||||
#define EFFECT_MIRROR_COAT 142
|
#define EFFECT_MIRROR_COAT 141
|
||||||
#define EFFECT_SKULL_BASH 143
|
#define EFFECT_SKULL_BASH 142
|
||||||
#define EFFECT_TWISTER 144
|
#define EFFECT_TWISTER 143
|
||||||
#define EFFECT_EARTHQUAKE 145
|
#define EFFECT_EARTHQUAKE 144
|
||||||
#define EFFECT_FUTURE_SIGHT 146
|
#define EFFECT_FUTURE_SIGHT 145
|
||||||
#define EFFECT_GUST 147
|
#define EFFECT_GUST 146
|
||||||
#define EFFECT_FLINCH_MINIMIZE_HIT 148
|
#define EFFECT_FLINCH_MINIMIZE_HIT 147
|
||||||
#define EFFECT_SOLAR_BEAM 149
|
#define EFFECT_SOLAR_BEAM 148
|
||||||
#define EFFECT_THUNDER 150
|
#define EFFECT_THUNDER 149
|
||||||
#define EFFECT_TELEPORT 151
|
#define EFFECT_TELEPORT 150
|
||||||
#define EFFECT_BEAT_UP 152
|
#define EFFECT_BEAT_UP 151
|
||||||
#define EFFECT_SEMI_INVULNERABLE 153
|
#define EFFECT_SEMI_INVULNERABLE 152
|
||||||
#define EFFECT_DEFENSE_CURL 154
|
#define EFFECT_DEFENSE_CURL 153
|
||||||
#define EFFECT_SOFTBOILED 155
|
#define EFFECT_SOFTBOILED 154
|
||||||
#define EFFECT_FAKE_OUT 156
|
#define EFFECT_FAKE_OUT 155
|
||||||
#define EFFECT_UPROAR 157
|
#define EFFECT_UPROAR 156
|
||||||
#define EFFECT_STOCKPILE 158
|
#define EFFECT_STOCKPILE 157
|
||||||
#define EFFECT_SPIT_UP 159
|
#define EFFECT_SPIT_UP 158
|
||||||
#define EFFECT_SWALLOW 160
|
#define EFFECT_SWALLOW 159
|
||||||
#define EFFECT_WORRY_SEED 161
|
#define EFFECT_WORRY_SEED 160
|
||||||
#define EFFECT_HAIL 162
|
#define EFFECT_HAIL 161
|
||||||
#define EFFECT_TORMENT 163
|
#define EFFECT_TORMENT 162
|
||||||
#define EFFECT_FLATTER 164
|
#define EFFECT_FLATTER 163
|
||||||
#define EFFECT_WILL_O_WISP 165
|
#define EFFECT_WILL_O_WISP 164
|
||||||
#define EFFECT_MEMENTO 166
|
#define EFFECT_MEMENTO 165
|
||||||
#define EFFECT_FACADE 167
|
#define EFFECT_FACADE 166
|
||||||
#define EFFECT_FOCUS_PUNCH 168
|
#define EFFECT_FOCUS_PUNCH 167
|
||||||
#define EFFECT_SMELLINGSALT 169
|
#define EFFECT_SMELLINGSALT 168
|
||||||
#define EFFECT_FOLLOW_ME 170
|
#define EFFECT_FOLLOW_ME 169
|
||||||
#define EFFECT_NATURE_POWER 171
|
#define EFFECT_NATURE_POWER 170
|
||||||
#define EFFECT_CHARGE 172
|
#define EFFECT_CHARGE 171
|
||||||
#define EFFECT_TAUNT 173
|
#define EFFECT_TAUNT 172
|
||||||
#define EFFECT_HELPING_HAND 174
|
#define EFFECT_HELPING_HAND 173
|
||||||
#define EFFECT_TRICK 175
|
#define EFFECT_TRICK 174
|
||||||
#define EFFECT_ROLE_PLAY 176
|
#define EFFECT_ROLE_PLAY 175
|
||||||
#define EFFECT_WISH 177
|
#define EFFECT_WISH 176
|
||||||
#define EFFECT_ASSIST 178
|
#define EFFECT_ASSIST 177
|
||||||
#define EFFECT_INGRAIN 179
|
#define EFFECT_INGRAIN 178
|
||||||
#define EFFECT_SUPERPOWER 180
|
#define EFFECT_SUPERPOWER 179
|
||||||
#define EFFECT_MAGIC_COAT 181
|
#define EFFECT_MAGIC_COAT 180
|
||||||
#define EFFECT_RECYCLE 182
|
#define EFFECT_RECYCLE 181
|
||||||
#define EFFECT_REVENGE 183
|
#define EFFECT_REVENGE 182
|
||||||
#define EFFECT_BRICK_BREAK 184
|
#define EFFECT_BRICK_BREAK 183
|
||||||
#define EFFECT_YAWN 185
|
#define EFFECT_YAWN 184
|
||||||
#define EFFECT_KNOCK_OFF 186
|
#define EFFECT_KNOCK_OFF 185
|
||||||
#define EFFECT_ENDEAVOR 187
|
#define EFFECT_ENDEAVOR 186
|
||||||
#define EFFECT_ERUPTION 188
|
#define EFFECT_ERUPTION 187
|
||||||
#define EFFECT_SKILL_SWAP 189
|
#define EFFECT_SKILL_SWAP 188
|
||||||
#define EFFECT_IMPRISON 190
|
#define EFFECT_IMPRISON 189
|
||||||
#define EFFECT_REFRESH 191
|
#define EFFECT_REFRESH 190
|
||||||
#define EFFECT_GRUDGE 192
|
#define EFFECT_GRUDGE 191
|
||||||
#define EFFECT_SNATCH 193
|
#define EFFECT_SNATCH 192
|
||||||
#define EFFECT_LOW_KICK 194
|
#define EFFECT_LOW_KICK 193
|
||||||
#define EFFECT_SECRET_POWER 195
|
#define EFFECT_SECRET_POWER 194
|
||||||
#define EFFECT_RECOIL_33 196
|
#define EFFECT_RECOIL_33 195
|
||||||
#define EFFECT_TEETER_DANCE 197
|
#define EFFECT_TEETER_DANCE 196
|
||||||
#define EFFECT_HIT_ESCAPE 198
|
#define EFFECT_HIT_ESCAPE 197
|
||||||
#define EFFECT_MUD_SPORT 199
|
#define EFFECT_MUD_SPORT 198
|
||||||
#define EFFECT_POISON_FANG 200
|
#define EFFECT_POISON_FANG 199
|
||||||
#define EFFECT_WEATHER_BALL 201
|
#define EFFECT_WEATHER_BALL 200
|
||||||
#define EFFECT_OVERHEAT 202
|
#define EFFECT_OVERHEAT 201
|
||||||
#define EFFECT_TICKLE 203
|
#define EFFECT_TICKLE 202
|
||||||
#define EFFECT_COSMIC_POWER 204
|
#define EFFECT_COSMIC_POWER 203
|
||||||
#define EFFECT_SKY_UPPERCUT 205
|
#define EFFECT_SKY_UPPERCUT 204
|
||||||
#define EFFECT_BULK_UP 206
|
#define EFFECT_BULK_UP 205
|
||||||
#define EFFECT_PLACEHOLDER 207
|
#define EFFECT_PLACEHOLDER 206
|
||||||
#define EFFECT_WATER_SPORT 208
|
#define EFFECT_WATER_SPORT 207
|
||||||
#define EFFECT_CALM_MIND 209
|
#define EFFECT_CALM_MIND 208
|
||||||
#define EFFECT_DRAGON_DANCE 210
|
#define EFFECT_DRAGON_DANCE 209
|
||||||
#define EFFECT_CAMOUFLAGE 211
|
#define EFFECT_CAMOUFLAGE 210
|
||||||
|
|
||||||
// New move effects
|
// New move effects
|
||||||
#define EFFECT_PLEDGE 212
|
#define EFFECT_PLEDGE 211
|
||||||
#define EFFECT_FLING 213
|
#define EFFECT_FLING 212
|
||||||
#define EFFECT_NATURAL_GIFT 214
|
#define EFFECT_NATURAL_GIFT 213
|
||||||
#define EFFECT_WAKE_UP_SLAP 215
|
#define EFFECT_WAKE_UP_SLAP 214
|
||||||
#define EFFECT_WRING_OUT 216
|
#define EFFECT_WRING_OUT 215
|
||||||
#define EFFECT_HEX 217
|
#define EFFECT_HEX 216
|
||||||
#define EFFECT_ASSURANCE 218
|
#define EFFECT_ASSURANCE 217
|
||||||
#define EFFECT_TRUMP_CARD 219
|
#define EFFECT_TRUMP_CARD 218
|
||||||
#define EFFECT_ACROBATICS 220
|
#define EFFECT_ACROBATICS 219
|
||||||
#define EFFECT_HEAT_CRASH 221
|
#define EFFECT_HEAT_CRASH 220
|
||||||
#define EFFECT_PUNISHMENT 222
|
#define EFFECT_PUNISHMENT 221
|
||||||
#define EFFECT_STORED_POWER 223
|
#define EFFECT_STORED_POWER 222
|
||||||
#define EFFECT_ELECTRO_BALL 224
|
#define EFFECT_ELECTRO_BALL 223
|
||||||
#define EFFECT_GYRO_BALL 225
|
#define EFFECT_GYRO_BALL 224
|
||||||
#define EFFECT_ECHOED_VOICE 226
|
#define EFFECT_ECHOED_VOICE 225
|
||||||
#define EFFECT_PAYBACK 227
|
#define EFFECT_PAYBACK 226
|
||||||
#define EFFECT_ROUND 228
|
#define EFFECT_ROUND 227
|
||||||
#define EFFECT_BRINE 229
|
#define EFFECT_BRINE 228
|
||||||
#define EFFECT_VENOSHOCK 230
|
#define EFFECT_VENOSHOCK 229
|
||||||
#define EFFECT_RETALIATE 231
|
#define EFFECT_RETALIATE 230
|
||||||
#define EFFECT_BULLDOZE 232
|
#define EFFECT_BULLDOZE 231
|
||||||
#define EFFECT_FOUL_PLAY 233
|
#define EFFECT_FOUL_PLAY 232
|
||||||
#define EFFECT_PSYSHOCK 234
|
#define EFFECT_PSYSHOCK 233
|
||||||
#define EFFECT_ROOST 235
|
#define EFFECT_ROOST 234
|
||||||
#define EFFECT_GRAVITY 236
|
#define EFFECT_GRAVITY 235
|
||||||
#define EFFECT_MIRACLE_EYE 237
|
#define EFFECT_MIRACLE_EYE 236
|
||||||
#define EFFECT_TAILWIND 238
|
#define EFFECT_TAILWIND 237
|
||||||
#define EFFECT_EMBARGO 239
|
#define EFFECT_EMBARGO 238
|
||||||
#define EFFECT_AQUA_RING 240
|
#define EFFECT_AQUA_RING 239
|
||||||
#define EFFECT_TRICK_ROOM 241
|
#define EFFECT_TRICK_ROOM 240
|
||||||
#define EFFECT_WONDER_ROOM 242
|
#define EFFECT_WONDER_ROOM 241
|
||||||
#define EFFECT_MAGIC_ROOM 243
|
#define EFFECT_MAGIC_ROOM 242
|
||||||
#define EFFECT_MAGNET_RISE 244
|
#define EFFECT_MAGNET_RISE 243
|
||||||
#define EFFECT_TOXIC_SPIKES 245
|
#define EFFECT_TOXIC_SPIKES 244
|
||||||
#define EFFECT_GASTRO_ACID 246
|
#define EFFECT_GASTRO_ACID 245
|
||||||
#define EFFECT_STEALTH_ROCK 247
|
#define EFFECT_STEALTH_ROCK 246
|
||||||
#define EFFECT_TELEKINESIS 248
|
#define EFFECT_TELEKINESIS 247
|
||||||
#define EFFECT_POWER_SWAP 249
|
#define EFFECT_POWER_SWAP 248
|
||||||
#define EFFECT_GUARD_SWAP 250
|
#define EFFECT_GUARD_SWAP 249
|
||||||
#define EFFECT_HEART_SWAP 251
|
#define EFFECT_HEART_SWAP 250
|
||||||
#define EFFECT_POWER_SPLIT 252
|
#define EFFECT_POWER_SPLIT 251
|
||||||
#define EFFECT_GUARD_SPLIT 253
|
#define EFFECT_GUARD_SPLIT 252
|
||||||
#define EFFECT_STICKY_WEB 254
|
#define EFFECT_STICKY_WEB 253
|
||||||
#define EFFECT_METAL_BURST 255
|
#define EFFECT_METAL_BURST 254
|
||||||
#define EFFECT_LUCKY_CHANT 256
|
#define EFFECT_LUCKY_CHANT 255
|
||||||
#define EFFECT_SUCKER_PUNCH 257
|
#define EFFECT_SUCKER_PUNCH 256
|
||||||
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 258
|
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2 257
|
||||||
#define EFFECT_SIMPLE_BEAM 259
|
#define EFFECT_SIMPLE_BEAM 258
|
||||||
#define EFFECT_ENTRAINMENT 260
|
#define EFFECT_ENTRAINMENT 259
|
||||||
#define EFFECT_HEAL_PULSE 261
|
#define EFFECT_HEAL_PULSE 260
|
||||||
#define EFFECT_QUASH 262
|
#define EFFECT_QUASH 261
|
||||||
#define EFFECT_ION_DELUGE 263
|
#define EFFECT_ION_DELUGE 262
|
||||||
#define EFFECT_FREEZE_DRY 264
|
#define EFFECT_FREEZE_DRY 263
|
||||||
#define EFFECT_TOPSY_TURVY 265
|
#define EFFECT_TOPSY_TURVY 264
|
||||||
#define EFFECT_MISTY_TERRAIN 266
|
#define EFFECT_MISTY_TERRAIN 265
|
||||||
#define EFFECT_GRASSY_TERRAIN 267
|
#define EFFECT_GRASSY_TERRAIN 266
|
||||||
#define EFFECT_ELECTRIC_TERRAIN 268
|
#define EFFECT_ELECTRIC_TERRAIN 267
|
||||||
#define EFFECT_PSYCHIC_TERRAIN 269
|
#define EFFECT_PSYCHIC_TERRAIN 268
|
||||||
#define EFFECT_ATTACK_ACCURACY_UP 270
|
#define EFFECT_ATTACK_ACCURACY_UP 269
|
||||||
#define EFFECT_ATTACK_SPATK_UP 271
|
#define EFFECT_ATTACK_SPATK_UP 270
|
||||||
#define EFFECT_HURRICANE 272
|
#define EFFECT_HURRICANE 271
|
||||||
#define EFFECT_TWO_TYPED_MOVE 273
|
#define EFFECT_TWO_TYPED_MOVE 272
|
||||||
#define EFFECT_ME_FIRST 274
|
#define EFFECT_ME_FIRST 273
|
||||||
#define EFFECT_SPEED_UP_HIT 275
|
#define EFFECT_SPEED_UP_HIT 274
|
||||||
#define EFFECT_QUIVER_DANCE 276
|
#define EFFECT_QUIVER_DANCE 275
|
||||||
#define EFFECT_COIL 277
|
#define EFFECT_COIL 276
|
||||||
#define EFFECT_ELECTRIFY 278
|
#define EFFECT_ELECTRIFY 277
|
||||||
#define EFFECT_REFLECT_TYPE 279
|
#define EFFECT_REFLECT_TYPE 278
|
||||||
#define EFFECT_SOAK 280
|
#define EFFECT_SOAK 279
|
||||||
#define EFFECT_GROWTH 281
|
#define EFFECT_GROWTH 280
|
||||||
#define EFFECT_CLOSE_COMBAT 282
|
#define EFFECT_CLOSE_COMBAT 281
|
||||||
#define EFFECT_LAST_RESORT 283
|
#define EFFECT_LAST_RESORT 282
|
||||||
#define EFFECT_RECOIL_33_STATUS 284
|
#define EFFECT_RECOIL_33_STATUS 283
|
||||||
#define EFFECT_FLINCH_STATUS 285
|
#define EFFECT_FLINCH_STATUS 284
|
||||||
#define EFFECT_RECOIL_50 286
|
#define EFFECT_RECOIL_50 285
|
||||||
#define EFFECT_SHELL_SMASH 287
|
#define EFFECT_SHELL_SMASH 286
|
||||||
#define EFFECT_SHIFT_GEAR 288
|
#define EFFECT_SHIFT_GEAR 287
|
||||||
#define EFFECT_DEFENSE_UP_3 289
|
#define EFFECT_DEFENSE_UP_3 288
|
||||||
#define EFFECT_NOBLE_ROAR 290
|
#define EFFECT_NOBLE_ROAR 289
|
||||||
#define EFFECT_VENOM_DRENCH 291
|
#define EFFECT_VENOM_DRENCH 290
|
||||||
#define EFFECT_TOXIC_THREAD 292
|
#define EFFECT_TOXIC_THREAD 291
|
||||||
#define EFFECT_CLEAR_SMOG 293
|
#define EFFECT_CLEAR_SMOG 292
|
||||||
#define EFFECT_HIT_SWITCH_TARGET 294
|
#define EFFECT_HIT_SWITCH_TARGET 293
|
||||||
#define EFFECT_FINAL_GAMBIT 295
|
#define EFFECT_FINAL_GAMBIT 294
|
||||||
#define EFFECT_CHANGE_TYPE_ON_ITEM 296
|
#define EFFECT_CHANGE_TYPE_ON_ITEM 295
|
||||||
#define EFFECT_AUTOTOMIZE 297
|
#define EFFECT_AUTOTOMIZE 296
|
||||||
#define EFFECT_COPYCAT 298
|
#define EFFECT_COPYCAT 297
|
||||||
#define EFFECT_DEFOG 299
|
#define EFFECT_DEFOG 298
|
||||||
#define EFFECT_HIT_ENEMY_HEAL_ALLY 300
|
#define EFFECT_HIT_ENEMY_HEAL_ALLY 299
|
||||||
#define EFFECT_SMACK_DOWN 301
|
#define EFFECT_SMACK_DOWN 300
|
||||||
#define EFFECT_SYNCHRONOISE 302
|
#define EFFECT_SYNCHRONOISE 301
|
||||||
#define EFFECT_PSYCHO_SHIFT 303
|
#define EFFECT_PSYCHO_SHIFT 302
|
||||||
#define EFFECT_POWER_TRICK 304
|
#define EFFECT_POWER_TRICK 303
|
||||||
#define EFFECT_FLAME_BURST 305
|
#define EFFECT_FLAME_BURST 304
|
||||||
#define EFFECT_AFTER_YOU 306
|
#define EFFECT_AFTER_YOU 305
|
||||||
#define EFFECT_BESTOW 307
|
#define EFFECT_BESTOW 306
|
||||||
#define EFFECT_ROTOTILLER 308
|
#define EFFECT_ROTOTILLER 307
|
||||||
#define EFFECT_FLOWER_SHIELD 309
|
#define EFFECT_FLOWER_SHIELD 308
|
||||||
#define EFFECT_HIT_PREVENT_ESCAPE 310
|
#define EFFECT_HIT_PREVENT_ESCAPE 309
|
||||||
#define EFFECT_SPEED_SWAP 311
|
#define EFFECT_SPEED_SWAP 310
|
||||||
#define EFFECT_DEFENSE_UP2_HIT 312
|
#define EFFECT_DEFENSE_UP2_HIT 311
|
||||||
#define EFFECT_REVELATION_DANCE 313
|
#define EFFECT_REVELATION_DANCE 312
|
||||||
#define EFFECT_AURORA_VEIL 314
|
#define EFFECT_AURORA_VEIL 313
|
||||||
#define EFFECT_THIRD_TYPE 315
|
#define EFFECT_THIRD_TYPE 314
|
||||||
#define EFFECT_FEINT 316
|
#define EFFECT_FEINT 315
|
||||||
#define EFFECT_SPARKLING_ARIA 317
|
#define EFFECT_SPARKLING_ARIA 316
|
||||||
#define EFFECT_ACUPRESSURE 318
|
#define EFFECT_ACUPRESSURE 317
|
||||||
#define EFFECT_AROMATIC_MIST 319
|
#define EFFECT_AROMATIC_MIST 318
|
||||||
#define EFFECT_POWDER 320
|
#define EFFECT_POWDER 319
|
||||||
#define EFFECT_SP_ATTACK_UP_HIT 321
|
#define EFFECT_SP_ATTACK_UP_HIT 320
|
||||||
#define EFFECT_BELCH 322
|
#define EFFECT_BELCH 321
|
||||||
#define EFFECT_PARTING_SHOT 323
|
#define EFFECT_PARTING_SHOT 322
|
||||||
#define EFFECT_SPECTRAL_THIEF 324
|
#define EFFECT_SPECTRAL_THIEF 323
|
||||||
#define EFFECT_V_CREATE 325
|
#define EFFECT_V_CREATE 324
|
||||||
#define EFFECT_MAT_BLOCK 326
|
#define EFFECT_MAT_BLOCK 325
|
||||||
#define EFFECT_STOMPING_TANTRUM 327
|
#define EFFECT_STOMPING_TANTRUM 326
|
||||||
#define EFFECT_CORE_ENFORCER 328
|
#define EFFECT_CORE_ENFORCER 327
|
||||||
#define EFFECT_INSTRUCT 329
|
#define EFFECT_INSTRUCT 328
|
||||||
#define EFFECT_THROAT_CHOP 330
|
#define EFFECT_THROAT_CHOP 329
|
||||||
#define EFFECT_LASER_FOCUS 331
|
#define EFFECT_LASER_FOCUS 330
|
||||||
#define EFFECT_MAGNETIC_FLUX 332
|
#define EFFECT_MAGNETIC_FLUX 331
|
||||||
#define EFFECT_GEAR_UP 333
|
#define EFFECT_GEAR_UP 332
|
||||||
#define EFFECT_INCINERATE 334
|
#define EFFECT_INCINERATE 333
|
||||||
#define EFFECT_BUG_BITE 335
|
#define EFFECT_BUG_BITE 334
|
||||||
#define EFFECT_STRENGTH_SAP 336
|
#define EFFECT_STRENGTH_SAP 335
|
||||||
#define EFFECT_MIND_BLOWN 337
|
#define EFFECT_MIND_BLOWN 336
|
||||||
#define EFFECT_PURIFY 338
|
#define EFFECT_PURIFY 337
|
||||||
#define EFFECT_BURN_UP 339
|
#define EFFECT_BURN_UP 338
|
||||||
#define EFFECT_SHORE_UP 340
|
#define EFFECT_SHORE_UP 339
|
||||||
#define EFFECT_GEOMANCY 341
|
#define EFFECT_GEOMANCY 340
|
||||||
#define EFFECT_FAIRY_LOCK 342
|
#define EFFECT_FAIRY_LOCK 341
|
||||||
#define EFFECT_ALLY_SWITCH 343
|
#define EFFECT_ALLY_SWITCH 342
|
||||||
#define EFFECT_RELIC_SONG 344
|
#define EFFECT_RELIC_SONG 343
|
||||||
#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 345
|
#define EFFECT_ATTACKER_DEFENSE_DOWN_HIT 344
|
||||||
#define EFFECT_BODY_PRESS 346
|
#define EFFECT_BODY_PRESS 345
|
||||||
#define EFFECT_EERIE_SPELL 347
|
#define EFFECT_EERIE_SPELL 346
|
||||||
#define EFFECT_JUNGLE_HEALING 348
|
#define EFFECT_JUNGLE_HEALING 347
|
||||||
#define EFFECT_COACHING 349
|
#define EFFECT_COACHING 348
|
||||||
#define EFFECT_LASH_OUT 350
|
#define EFFECT_LASH_OUT 349
|
||||||
#define EFFECT_GRASSY_GLIDE 351
|
#define EFFECT_GRASSY_GLIDE 350
|
||||||
#define EFFECT_REMOVE_TERRAIN 352
|
#define EFFECT_REMOVE_TERRAIN 351
|
||||||
#define EFFECT_DYNAMAX_DOUBLE_DMG 353
|
#define EFFECT_DYNAMAX_DOUBLE_DMG 352
|
||||||
#define EFFECT_DECORATE 354
|
#define EFFECT_DECORATE 353
|
||||||
#define EFFECT_SNIPE_SHOT 355
|
#define EFFECT_SNIPE_SHOT 354
|
||||||
#define EFFECT_RECOIL_HP_25 356
|
#define EFFECT_RECOIL_HP_25 355
|
||||||
#define EFFECT_STUFF_CHEEKS 357
|
#define EFFECT_STUFF_CHEEKS 356
|
||||||
#define EFFECT_GRAV_APPLE 358
|
#define EFFECT_GRAV_APPLE 357
|
||||||
#define EFFECT_EVASION_UP_HIT 359
|
#define EFFECT_EVASION_UP_HIT 358
|
||||||
#define EFFECT_GLITZY_GLOW 360
|
#define EFFECT_GLITZY_GLOW 359
|
||||||
#define EFFECT_BADDY_BAD 361
|
#define EFFECT_BADDY_BAD 360
|
||||||
#define EFFECT_SAPPY_SEED 362
|
#define EFFECT_SAPPY_SEED 361
|
||||||
#define EFFECT_FREEZY_FROST 363
|
#define EFFECT_FREEZY_FROST 362
|
||||||
#define EFFECT_SPARKLY_SWIRL 364
|
#define EFFECT_SPARKLY_SWIRL 363
|
||||||
#define EFFECT_PLASMA_FISTS 365
|
#define EFFECT_PLASMA_FISTS 364
|
||||||
#define EFFECT_HYPERSPACE_FURY 366
|
#define EFFECT_HYPERSPACE_FURY 365
|
||||||
#define EFFECT_AURA_WHEEL 367
|
#define EFFECT_AURA_WHEEL 366
|
||||||
#define EFFECT_PHOTON_GEYSER 368
|
#define EFFECT_PHOTON_GEYSER 367
|
||||||
#define EFFECT_SHELL_SIDE_ARM 369
|
#define EFFECT_SHELL_SIDE_ARM 368
|
||||||
#define EFFECT_TERRAIN_PULSE 370
|
#define EFFECT_TERRAIN_PULSE 369
|
||||||
#define EFFECT_JAW_LOCK 371
|
#define EFFECT_JAW_LOCK 370
|
||||||
#define EFFECT_NO_RETREAT 372
|
#define EFFECT_NO_RETREAT 371
|
||||||
#define EFFECT_TAR_SHOT 373
|
#define EFFECT_TAR_SHOT 372
|
||||||
#define EFFECT_POLTERGEIST 374
|
#define EFFECT_POLTERGEIST 373
|
||||||
#define EFFECT_OCTOLOCK 375
|
#define EFFECT_OCTOLOCK 374
|
||||||
#define EFFECT_CLANGOROUS_SOUL 376
|
#define EFFECT_CLANGOROUS_SOUL 375
|
||||||
#define EFFECT_BOLT_BEAK 377
|
#define EFFECT_BOLT_BEAK 376
|
||||||
#define EFFECT_SKY_DROP 378
|
#define EFFECT_SKY_DROP 377
|
||||||
#define EFFECT_EXPANDING_FORCE 379
|
#define EFFECT_EXPANDING_FORCE 378
|
||||||
#define EFFECT_SCALE_SHOT 380
|
#define EFFECT_METEOR_BEAM 379
|
||||||
#define EFFECT_METEOR_BEAM 381
|
#define EFFECT_RISING_VOLTAGE 380
|
||||||
#define EFFECT_RISING_VOLTAGE 382
|
#define EFFECT_BEAK_BLAST 381
|
||||||
#define EFFECT_BEAK_BLAST 383
|
#define EFFECT_COURT_CHANGE 382
|
||||||
#define EFFECT_COURT_CHANGE 384
|
#define EFFECT_STEEL_BEAM 383
|
||||||
#define EFFECT_STEEL_BEAM 385
|
#define EFFECT_EXTREME_EVOBOOST 384
|
||||||
#define EFFECT_EXTREME_EVOBOOST 386
|
#define EFFECT_HIT_SET_REMOVE_TERRAIN 385 // genesis supernova
|
||||||
#define EFFECT_HIT_SET_REMOVE_TERRAIN 387 // genesis supernova
|
#define EFFECT_DARK_VOID 386
|
||||||
#define EFFECT_DARK_VOID 388
|
#define EFFECT_SLEEP_HIT 387
|
||||||
#define EFFECT_SLEEP_HIT 389
|
#define EFFECT_DOUBLE_SHOCK 388
|
||||||
#define EFFECT_DOUBLE_SHOCK 390
|
#define EFFECT_SPECIAL_ATTACK_UP_HIT 389
|
||||||
#define EFFECT_SPECIAL_ATTACK_UP_HIT 391
|
#define EFFECT_VICTORY_DANCE 390
|
||||||
#define EFFECT_VICTORY_DANCE 392
|
#define EFFECT_TEATIME 391
|
||||||
#define EFFECT_TEATIME 393
|
#define EFFECT_ATTACK_UP_USER_ALLY 392 // Howl 8th Gen
|
||||||
#define EFFECT_ATTACK_UP_USER_ALLY 394 // Howl 8th Gen
|
#define EFFECT_SHELL_TRAP 393
|
||||||
#define EFFECT_SHELL_TRAP 395
|
#define EFFECT_PSYBLADE 394
|
||||||
#define EFFECT_PSYBLADE 396
|
#define EFFECT_HYDRO_STEAM 395
|
||||||
#define EFFECT_HYDRO_STEAM 397
|
#define EFFECT_HIT_SET_ENTRY_HAZARD 396
|
||||||
#define EFFECT_HIT_SET_ENTRY_HAZARD 398
|
#define EFFECT_DIRE_CLAW 397
|
||||||
#define EFFECT_DIRE_CLAW 399
|
#define EFFECT_BARB_BARRAGE 398
|
||||||
#define EFFECT_BARB_BARRAGE 400
|
#define EFFECT_REVIVAL_BLESSING 399
|
||||||
#define EFFECT_REVIVAL_BLESSING 401
|
#define EFFECT_FROSTBITE_HIT 400
|
||||||
#define EFFECT_FROSTBITE_HIT 402
|
#define EFFECT_SNOWSCAPE 401
|
||||||
#define EFFECT_SNOWSCAPE 403
|
|
||||||
|
|
||||||
#define NUM_BATTLE_MOVE_EFFECTS 404
|
#define NUM_BATTLE_MOVE_EFFECTS 402
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||||
|
@ -3864,13 +3864,6 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||||||
gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
|
gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
|
||||||
gBattleMons[gBattlerAttacker].status2 |= STATUS2_ESCAPE_PREVENTION;
|
gBattleMons[gBattlerAttacker].status2 |= STATUS2_ESCAPE_PREVENTION;
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_SCALE_SHOT:
|
|
||||||
if (!NoAliveMonsForEitherParty())
|
|
||||||
{
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
|
||||||
gBattlescriptCurrInstr = BattleScript_DefDownSpeedUp;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case MOVE_EFFECT_BURN_UP:
|
case MOVE_EFFECT_BURN_UP:
|
||||||
// This seems unnecessary but is done to make it work properly with Parental Bond
|
// This seems unnecessary but is done to make it work properly with Parental Bond
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
@ -6095,6 +6088,12 @@ static void Cmd_moveend(void)
|
|||||||
gBattleScripting.multihitString[4]++;
|
gBattleScripting.multihitString[4]++;
|
||||||
if (--gMultiHitCounter == 0)
|
if (--gMultiHitCounter == 0)
|
||||||
{
|
{
|
||||||
|
if (gBattleMoves[gCurrentMove].argument == MOVE_EFFECT_SCALE_SHOT && !NoAliveMonsForEitherParty())
|
||||||
|
{
|
||||||
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
|
gBattlescriptCurrInstr = BattleScript_DefDownSpeedUp;
|
||||||
|
}
|
||||||
|
|
||||||
BattleScriptPushCursor();
|
BattleScriptPushCursor();
|
||||||
gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings;
|
gBattlescriptCurrInstr = BattleScript_MultiHitPrintStrings;
|
||||||
effect = TRUE;
|
effect = TRUE;
|
||||||
|
@ -469,7 +469,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
|
|||||||
[EFFECT_BOLT_BEAK] = 0, // TODO: Assign points
|
[EFFECT_BOLT_BEAK] = 0, // TODO: Assign points
|
||||||
[EFFECT_SKY_DROP] = 0, // TODO: Assign points
|
[EFFECT_SKY_DROP] = 0, // TODO: Assign points
|
||||||
[EFFECT_EXPANDING_FORCE] = 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_METEOR_BEAM] = 0, // TODO: Assign points
|
||||||
[EFFECT_RISING_VOLTAGE] = 0, // TODO: Assign points
|
[EFFECT_RISING_VOLTAGE] = 0, // TODO: Assign points
|
||||||
[EFFECT_BEAK_BLAST] = 0, // TODO: Assign points
|
[EFFECT_BEAK_BLAST] = 0, // TODO: Assign points
|
||||||
|
@ -12038,7 +12038,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
|
|
||||||
[MOVE_SCALE_SHOT] =
|
[MOVE_SCALE_SHOT] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_SCALE_SHOT,
|
.effect = EFFECT_MULTI_HIT,
|
||||||
.power = 25,
|
.power = 25,
|
||||||
.type = TYPE_DRAGON,
|
.type = TYPE_DRAGON,
|
||||||
.accuracy = 90,
|
.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,
|
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
|
||||||
.split = SPLIT_PHYSICAL,
|
.split = SPLIT_PHYSICAL,
|
||||||
.zMoveEffect = Z_EFFECT_NONE,
|
.zMoveEffect = Z_EFFECT_NONE,
|
||||||
|
.argument = MOVE_EFFECT_SCALE_SHOT,
|
||||||
},
|
},
|
||||||
|
|
||||||
[MOVE_METEOR_BEAM] =
|
[MOVE_METEOR_BEAM] =
|
||||||
|
181
test/battle/move_effect/multi_hit.c
Normal file
181
test/battle/move_effect/multi_hit.c
Normal 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!");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user