On this page
  1. Related
  2. Games
  3. References
  4. Sources

In the Pokémon games from Gold and Silver on, each item record carries a held effect and a parameter, and battle routines check the holder’s item as they run1. The Quick Claw shows the parameter at work: 60 in 256 in Gold and Silver2, 20% in Ruby and Sapphire3. Pokémon FireRed and LeafGreen order turns as Pokémon Emerald does, Quick Claw included, except that they withhold the third badge’s Speed bonus in link battles alone, where Emerald also withholds it in recorded-link and Frontier battles4,5.

Pokémon Crystal keeps Gold and Silver’s BrightPowder and Quick Claw code unchanged6,2. A held Smoke Ball in Crystal always escapes a wild battle7.

Games

GameYearHowNote
Pokémon Gold and Silver1999each item carries a held effect and a parameter that battle code reads
Pokémon Crystal2000Gold and Silver's held effects: a Scope Lens, a BrightPowder, a Quick Claw, and a Smoke Ball
Pokémon Ruby and Sapphire2002items carry a hold effect and a parameter; the Quick Claw's is 20%
Pokémon Emerald2004a Scope Lens, a Smoke Ball, a Macho Brace, and a Quick Claw
Pokémon Platinum2008the critical-rate items, as in Emerald
Pokémon HeartGold and SoulSilver2009a Cleanse Tag or Pure Incense on the lead Pokémon cuts the encounter rate to two thirds
Every claim about this mechanic, by game (19)
Super Mario Bros. 2 1988Each character's stats table holds a second take-off for each kind of jump, used while carrying something. Standing, charged, and running, they are: Mario $B0, $98, $AA; Luigi $D6, $C9, $D4; Toad $B2, $98, $AD; the Princess $B3, $98, $B3. Against the empty-handed ones (mario-stats and the rest), an item lowers only the running jump: Mario's and Luigi's by $04, and the Princess's to her standing one; Toad's are unchanged. The same tables hold the ground caps, $18 empty-handed for all four, and carrying $18, $16, $1D, and $15 (carry-speed).Code
What the player carries sets the ground cap: an enemy, a mushroom block, or a POW block uses the character's carrying speed (Mario $18, Luigi $16, Toad $1D, the Princess $15), and anything else (vegetables, shells, coins, bombs, rockets, keys, potions) the empty-handed $18. Sunk 4 pixels or more into quicksand, every character's cap is $04. B raises each by half (run-cap).Code
Pulling something up, from the ground or off an enemy's or a block's top, holds a first pose for 6 frames, then steps through six more poses whose waits are the character's pick-up speeds, read from last to first: Mario's and Luigi's 7, 4, 1, 2, 4, 0, Toad's 2, 1, 1, 1, 1, 0, and the Princess's 12, 6, 2, 4, 6, 0, a wait of 0 lasting one frame. A small vegetable or dug sand takes Toad's waits whoever pulls it. Measured in Mesen (MesenCE 2.2.1) from power-on, pulling the large vegetable on the ledge in 1-1's first area, Mario and Luigi lift for 25 frames, Toad for 13, and the Princess for 37.Verified
B throws what the player carries, unless it is sand from digging. A bomb, rocket, mushroom block, POW block, key, or potion needs room in the tile ahead; enemies, vegetables, shells, and coins fly at once. Those fly forward at $30 (3 px/frame), rising at $08 (0.5 px/frame) if the player was moving at $08 or more and falling at $18 if not. The others fly forward at $30 level if the player was moving, and if standing are set down 16 px ahead, falling at $18.Code
Pokémon Gold and Silver 1999Gold and Silver already use the staged critical hit that Crystal keeps line for line: Focus Energy (+1), a high-critical move (+2), and a Scope Lens (+1) add to a critical level, which reads 17, 32, 64, 85, or 128 in 256 from CriticalHitChances. Chansey holding a Lucky Punch and Farfetch'd holding a Stick get level 2 at once and skip the other bonuses.Code
Gold and Silver's BattleCommand_CheckHit, which Crystal keeps unchanged, subtracts a target's BrightPowder value (20) from the stage-scaled accuracy byte, lets a byte of 255 always hit, and otherwise hits on a random byte below it.Code
On each step, Gold and Silver's TryWildEncounter reads the map's encounter rate for the current time of day (morning, day, or night), or its water rate, doubles it for the Pokémon March or Ruins of Alph radio, halves it for the Pokémon Lullaby or a Cleanse Tag, and starts a battle when Random is below it; Crystal keeps this unchanged.Code
Gold and Silver's escape formula is Red and Blue's, ⌊32P/(⌊E/4⌋mod256)⌋ plus 30 for each earlier attempt against a random byte, with a held Smoke Ball that always escapes; Crystal adds two battle types, Celebi's and Suicune's, that block escape.Code
Gold and Silver order moves by priority, 3 for Protect and Endure, 2 for the priority-hit moves, 0 for Vital Throw and the force-switch, Counter, and Mirror Coat effects, and 1 for the rest; at equal priority a held Quick Claw goes first when a random byte is below its value, 60, about 23% of the time, and otherwise the higher Speed goes first, with a tie split evenly; Crystal keeps the routine.Code
Each Gold and Silver item record carries a held effect and a parameter, which battle code reads from the item a Pokémon holds; Quick Claw's is 60, BrightPowder's 20, Leftovers' 10, and Scope Lens's HELD_CRITICAL_UP has 0.Code
Pokémon Ruby and Sapphire 2002Ruby and Sapphire's atk04_critcalc, which Emerald keeps apart from a renamed helper, sums Focus Energy (+2), a move whose effect is high-critical, Sky Attack, Blaze Kick, or Poison Tail (+1), a Scope Lens (+1), and Lucky Punch or Stick on their species (+2), caps the stage at 4, and hits critically 1 time in 16, 8, 4, 3, or 2. Battle Armor or Shell Armor on the target, the STATUS3_CANT_SCORE_A_CRIT flag on the attacker, Wally's tutorial, and the first battle rule it out.Code
Ruby and Sapphire's atk01_accuracycheck, which Emerald keeps with renamed constants, scales a move's percent accuracy by one combined stage ratio, applies Compound Eyes (×1.3), Sand Veil in a sandstorm and Hustle on physical moves (×0.8 each), and a target's evasion item, and misses when a roll from 1 to 100 exceeds the result.Code
Ruby and Sapphire multiply the area's encounter rate by 16, cut it to 80% on the Mach or Acro Bike, apply the flute and Cleanse Tag modifiers, halve it for a lead with Stench and double it for Illuminate, cap it at 2,880, and start a battle when Random() % 2880 is below it. Emerald keeps the roll and adds more ability modifiers.Code
Ruby and Sapphire's TryRunFromBattle always escapes with a Smoke Ball or Run Away; otherwise, in a single battle, a Pokémon at least as fast as the foe escapes, and a slower one when ⌊128P/E⌋+30t, for t earlier tries, beats a random byte. Emerald adds only the Battle Pyramid's and Frontier's rules.Code
Ruby and Sapphire's GetWhoStrikesFirst puts the higher-priority move first; at equal priority the higher adjusted Speed goes first, and a tie is a coin flip. Adjusted Speed applies stat stages, doubles for Swift Swim in rain or Chlorophyll in sun, takes ×1.1 for the player's Pokémon with the third badge outside link battles, halves with a Macho Brace, and quarters under paralysis; a held Quick Claw sets it to the maximum when a per-turn random number is below its parameter, 20, as a percent of 0xFFFF.Code
Pokémon FireRed and LeafGreen 2004FireRed and LeafGreen's GetWhoStrikesFirst is Emerald's rule: the higher-priority move first, then the higher adjusted Speed, with a tie a coin flip, and a Quick Claw that sets Speed to the maximum on its roll. It differs only in withholding the third badge's ×1.1 Speed in link battles alone, where Emerald also withholds it in recorded-link and Frontier battles.Code
Pokémon Platinum 2008BattleSystem_CalcCriticalMulti keeps Emerald's stage table, 1 in 16, 8, 4, 3, or 2, capped at stage 4, and its sum: +2 for Focus Energy, +1 for a held item with HOLD_EFFECT_CRITRATE_UP, +2 for Chansey or Farfetch'd holding an item whose hold effect names that species, plus the move's boosts, which in Platinum come from a battle-script variable (criticalBoosts) rather than a list of move effects. It adds +1 for the ability Super Luck, which Emerald's sum doesn't read. Besides Battle Armor and Shell Armor, which an attacker with Mold Breaker ignores, Lucky Chant on the target's side blocks a critical, and so does a MOVE_EFFECT_NO_CRITICAL flag that a comment in the header says is checked but never set. Platinum draws its 16-bit roll before those tests, where Emerald draws it only after its other tests pass.Code
Pokémon HeartGold and SoulSilver 2009Before the two rolls, HeartGold and SoulSilver adjust the map's rate in this order: the lead Pokémon's ability (unless it is an Egg) doubles it for Arena Trap, No Guard, or Illuminate, halves it for White Smoke, Quick Feet, or Stench, or for Snow Cloak in snow, capped at 100; the Black Flute halves it and the White Flute raises it by half; and a Cleanse Tag or Pure Incense held by the lead Pokémon cuts it to 2/3. Gold and Silver instead double the rate for the Pokémon March or the Ruins of Alph radio and halve it for the Pokémon Lullaby or a Cleanse Tag.Code
HeartGold and SoulSilver's TryCriticalHit keeps Platinum's critical-hit rule: the stage sum (+2 Focus Energy, +1 for a HOLD_EFFECT_CRITRATE_UP item, +1 Super Luck, +2 for Chansey or Farfetch'd with its own item, plus the move's boosts) capped at 4, a chance of 1 in 16, 8, 4, 3, or 2, blocked by Battle Armor or Shell Armor unless ignored, by Lucky Chant on the target's side, or by bit 15 of the target's move-effect flags (named MOVE_EFFECT_FLAG_LUCKY_CHANT here), and Sniper turning ×2 into ×3.Code

References

  1. ^ abEach Gold and Silver item record carries a held effect and a parameter, which battle code reads from the item a Pokémon holds; Quick Claw's is 60, BrightPowder's 20, Leftovers' 10, and Scope Lens's HELD_CRITICAL_UP has 0.Codepret/pokegold
    How we know
    155; QUICK_CLAW
    156	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 155–156 at fc702b6 · upstream ↗
    289; SCOPE_LENS
    290	item_attribute 200, HELD_CRITICAL_UP, 0, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 289–290 at fc702b6 · upstream ↗
    302; LEFTOVERS
    303	item_attribute 200, HELD_LEFTOVERS, 10, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 302–303 at fc702b6 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  2. ^ abcGold and Silver order moves by priority, 3 for Protect and Endure, 2 for the priority-hit moves, 0 for Vital Throw and the force-switch, Counter, and Mirror Coat effects, and 1 for the rest; at equal priority a held Quick Claw goes first when a random byte is below its value, 60, about 23% of the time, and otherwise the higher Speed goes first, with a tie split evenly; Crystal keeps the routine.Codepret/pokegoldrevised
    How we know
    433	call CompareMovePriority
    ⋮
    445	cp HELD_QUICK_CLAW
    ⋮
    448	cp HELD_QUICK_CLAW
    ⋮
    450	call BattleRandom
    451	cp e
    
    engine/battle/core.asm lines 431–452 at fc702b6 · upstream ↗
    781GetMovePriority:
    782; Return the priority (0-3) of move a.
    ⋮
    786	; Vital Throw goes last.
    787	cp VITAL_THROW
    
    engine/battle/core.asm lines 781–792 at fc702b6 · upstream ↗
    1MoveEffectPriorities:
    2	db EFFECT_PROTECT,      3
    3	db EFFECT_ENDURE,       3
    4	db EFFECT_PRIORITY_HIT, 2
    5	db EFFECT_FORCE_SWITCH, 0
    6	db EFFECT_COUNTER,      0
    7	db EFFECT_MIRROR_COAT,  0
    
    data/moves/effects_priorities.asm lines 1–8 at fc702b6 · upstream ↗
    155; QUICK_CLAW
    156	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 155–156 at fc702b6 · upstream ↗
    485.speed_check
    486	ld de, wBattleMonSpeed
    487	ld hl, wEnemyMonSpeed
    488	ld c, 2
    489	call CompareBytes
    490	jr z, .speed_tie
    491	jp nc, .player_first
    492	jp .enemy_first
    ⋮
    494.speed_tie
    ⋮
    498	call BattleRandom
    499	cp 50 percent + 1
    ⋮
    501	jp .enemy_first
    
    engine/battle/core.asm lines 485–501 at fc702b6 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Revised after a check by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abRuby and Sapphire's GetWhoStrikesFirst puts the higher-priority move first; at equal priority the higher adjusted Speed goes first, and a tie is a coin flip. Adjusted Speed applies stat stages, doubles for Swift Swim in rain or Chlorophyll in sun, takes ×1.1 for the player's Pokémon with the third badge outside link battles, halves with a Macho Brace, and quarters under paralysis; a held Quick Claw sets it to the maximum when a per-turn random number is below its parameter, 20, as a percent of 0xFFFF.Codepret/pokerubyrevised
    How we know
    4594    // Check for abilities that boost speed in weather.
    ⋮
    4599            bank1SpeedMultiplier = 2;
    ⋮
    4615    // Calculate adjusted speed for first mon.
    4616    bank1AdjustedSpeed = (gBattleMons[bank1].speed * bank1SpeedMultiplier)
    4617        * gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0] / gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1];
    ⋮
    4631    if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBattlerSide(bank1) == 0)
    4632        bank1AdjustedSpeed = (bank1AdjustedSpeed * 110) / 100;
    ⋮
    4634    if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE)
    4635        bank1AdjustedSpeed /= 2;
    ⋮
    4637    if (gBattleMons[bank1].status1 & STATUS1_PARALYSIS)
    4638        bank1AdjustedSpeed /= 4;
    ⋮
    4640    if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100)
    ⋮
    
    src/battle_main.c lines 4594–4641 at 5784633 · upstream ↗
    4701    if (gBattleMoves[bank1Move].priority != 0 || gBattleMoves[bank2Move].priority != 0)
    ⋮
    4703        if (gBattleMoves[bank1Move].priority == gBattleMoves[bank2Move].priority)
    ⋮
    4705            if (bank1AdjustedSpeed == bank2AdjustedSpeed && (Random() & 1))
    4706                strikesFirst = 2;
    4707            else if (bank1AdjustedSpeed < bank2AdjustedSpeed)
    4708                strikesFirst = 1;
    ⋮
    4711            strikesFirst = 1;
    ⋮
    4713    else
    ⋮
    4715        if (bank1AdjustedSpeed == bank2AdjustedSpeed && (Random() & 1))
    4716            strikesFirst = 2;
    4717        else if (bank1AdjustedSpeed < bank2AdjustedSpeed)
    4718            strikesFirst = 1;
    
    src/battle_main.c lines 4701–4718 at 5784633 · upstream ↗
    2932        .name = _("QUICK CLAW"),
    ⋮
    2935        .holdEffect = HOLD_EFFECT_QUICK_CLAW,
    2936        .holdEffectParam = 20,
    
    src/data/items_en.h lines 2932–2936 at 5784633 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Revised after a check by a second AI model, 2026-10-21.

    In the claim ledger

  4. ^FireRed and LeafGreen's GetWhoStrikesFirst is Emerald's rule: the higher-priority move first, then the higher adjusted Speed, with a tie a coin flip, and a Quick Claw that sets Speed to the maximum on its roll. It differs only in withholding the third badge's ×1.1 Speed in link battles alone, where Emerald also withholds it in recorded-link and Frontier battles.Codepret/pokefirered · pret/pokeemeraldrevised
    How we know
    3442    // badge boost
    3443    if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)
    ⋮
    3451    if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
    3452        speedBattler1 = UINT_MAX;
    
    src/battle_main.c lines 3442–3452 at ce6406d · upstream ↗
    3505    if (gBattleMoves[moveBattler1].priority != 0 || gBattleMoves[moveBattler2].priority != 0)
    ⋮
    3508        if (gBattleMoves[moveBattler1].priority == gBattleMoves[moveBattler2].priority)
    ⋮
    3510            if (speedBattler1 == speedBattler2 && Random() & 1)
    ⋮
    3516        else if (gBattleMoves[moveBattler1].priority < gBattleMoves[moveBattler2].priority)
    3517            strikesFirst = 1; // battler2's move has greater priority
    
    src/battle_main.c lines 3505–3517 at ce6406d · upstream ↗
    4639    // badge boost
    4640    if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
    ⋮
    4653    if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
    4654        speedBattler1 = UINT_MAX;
    
    src/battle_main.c lines 4639–4654 at 731ad5b · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Revised after a check by a second AI model, 2026-10-21.

    In the claim ledger

  5. ^ abGetWhoStrikesFirst puts the higher-priority move first; at equal priority the higher Speed goes first, after stat stages, Swift Swim or Chlorophyll in their weather, the third badge's ×1.1 for the player, Macho Brace, paralysis's ×¼, and a Quick Claw that triggers; a tie is a coin flip.Codepret/pokeemerald
    How we know
    4595u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
    ⋮
    4609        else
    ⋮
    4615        else
    ⋮
    4618    else
    ⋮
    4633    else
    ⋮
    4644        speedBattler1 = (speedBattler1 * 110) / 100;
    ⋮
    4650    if (gBattleMons[battler1].status1 & STATUS1_PARALYSIS)
    4651        speedBattler1 /= 4;
    ⋮
    4653    if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
    4654        speedBattler1 = UINT_MAX;
    ⋮
    4667    else
    ⋮
    4687    if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
    ⋮
    
    src/battle_main.c lines 4595–4750 at 731ad5b · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  6. ^ abGold and Silver's BattleCommand_CheckHit, which Crystal keeps unchanged, subtracts a target's BrightPowder value (20) from the stage-scaled accuracy byte, lets a byte of 255 always hit, and otherwise hits on a random byte below it.Codepret/pokegold · pret/pokecrystal
    How we know
    1595	cp HELD_BRIGHTPOWDER
    ⋮
    1602	sub c
    ⋮
    1609	cp -1
    1610	jr z, .Hit
    ⋮
    1612	call BattleRandom
    1613	cp b
    1614	jr nc, .Miss
    
    engine/battle/effect_commands.asm lines 1595–1614 at fc702b6 · upstream ↗
    15; BRIGHTPOWDER
    16	item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 15–16 at fc702b6 · upstream ↗
    engine/battle/effect_commands.asm#L1546-L1850 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  7. ^ abCrystal keeps Red and Blue's escape formula: Speed at least the foe's escapes, and otherwise a random byte is compared with ⌊32P/(⌊E/4⌋mod256)⌋ plus 30 for each earlier attempt; a held Smoke Ball always escapes, and Mean Look or a trapping move prevents it.Codepret/pokecrystal
    How we know
    3700	ld a, [wBattleMode]
    3701	dec a
    3702	jp nz, .cant_run_from_trainer
    ⋮
    3704	ld a, [wEnemySubStatus5]
    3705	bit SUBSTATUS_CANT_RUN, a
    3706	jp nz, .cant_escape
    ⋮
    3708	ld a, [wPlayerWrapCount]
    ⋮
    3710	jp nz, .cant_escape
    ⋮
    3719	cp HELD_ESCAPE
    ⋮
    3731	ld a, [wNumFleeAttempts]
    3732	inc a
    3733	ld [wNumFleeAttempts], a
    ⋮
    
    engine/battle/core.asm lines 3700–3792 at 97187cd · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  8. ^BattleCommand_Critical sums a critical level, +1 for Focus Energy, +2 for a high-critical move, and +1 for a Scope Lens, then rolls against 17, 32, 64, 85, or 128 in 256 for levels 0 to 4; Chansey with a Lucky Punch and Farfetch'd with a Stick get level 2 and skip the other bonuses.Codepret/pokecrystal
    How we know
    1145	cp LUCKY_PUNCH
    1146	jr nz, .FocusEnergy
    ⋮
    1148; +2 critical level
    1149	ld c, 2
    1150	jr .Tally
    ⋮
    1154	jr nz, .FocusEnergy
    ⋮
    1157	jr nz, .FocusEnergy
    ⋮
    1159; +2 critical level
    1160	ld c, 2
    1161	jr .Tally
    ⋮
    1166	bit SUBSTATUS_FOCUS_ENERGY, a
    1167	jr z, .CheckCritical
    ⋮
    
    engine/battle/effect_commands.asm lines 1120–1207 at 97187cd · upstream ↗
    1CriticalHitChances:
    2	db 1 out_of 15 ;  0
    3	db 1 out_of 8  ; +1
    4	db 1 out_of 4  ; +2
    5	db 1 out_of 3  ; +3
    6	db 1 out_of 2  ; +4
    
    data/battle/critical_hit_chances.asm lines 1–8 at 97187cd · upstream ↗
    1CriticalHitMoves:
    2	db KARATE_CHOP
    3	db RAZOR_WIND
    4	db RAZOR_LEAF
    5	db CRABHAMMER
    6	db SLASH
    7	db AEROBLAST
    8	db CROSS_CHOP
    
    data/moves/critical_hit_moves.asm lines 1–9 at 97187cd · upstream ↗
    25; e.g. 1 out_of 2 == 50 percent + 1 == $80
    26DEF out_of EQUS "* $100 /"
    
    macros/data.asm lines 25–26 at 97187cd · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  9. ^BattleCommand_CheckHit scales the accuracy byte by the accuracy and evasion stages, subtracts 20 if the target holds a BrightPowder, and then hits on a random byte below it; an accuracy of 255 always hits.Codepret/pokecrystal
    How we know
    1584.BrightPowder:
    ⋮
    1587	ld a, b
    1588	cp HELD_BRIGHTPOWDER
    ⋮
    1594	ld a, b
    1595	sub c
    ⋮
    1600.skip_brightpowder
    1601	ld a, b
    1602	cp -1
    1603	jr z, .Hit
    ⋮
    1605	call BattleRandom
    1606	cp b
    1607	jr nc, .Miss
    
    engine/battle/effect_commands.asm lines 1584–1608 at 97187cd · upstream ↗
    4AccuracyLevelMultipliers:
    5	db  33, 100 ; -6 =  33%
    ⋮
    11	db   1,   1 ;  0 = 100%
    ⋮
    17	db   3,   1 ; +6 = 300%
    
    data/battle/accuracy_multipliers.asm lines 1–17 at 97187cd · upstream ↗
    16	item_attribute 10, HELD_BRIGHTPOWDER, 20, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 15–16 at 97187cd · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  10. ^Crystal ranks moves by priority: 3 for Protect and Endure, 2 for Quick Attack, Mach Punch, and ExtremeSpeed, 1 for most moves, and 0 for Roar, Whirlwind, Counter, Mirror Coat, and Vital Throw; at equal priority a held Quick Claw goes first on a random byte below 60, then higher Speed, then a coin flip.Codepret/pokecrystal
    How we know
    477.use_move
    478	ld a, [wBattlePlayerAction]
    479	and a ; BATTLEPLAYERACTION_USEMOVE?
    480	jp nz, .player_first
    481	call CompareMovePriority
    482	jr z, .equal_priority
    ⋮
    486.equal_priority
    ⋮
    493	cp HELD_QUICK_CLAW
    ⋮
    496	cp HELD_QUICK_CLAW
    ⋮
    498	call BattleRandom
    499	cp e
    500	jr nc, .speed_check
    ⋮
    
    engine/battle/core.asm lines 477–540 at 97187cd · upstream ↗
    829GetMovePriority:
    830; Return the priority (0-3) of move a.
    ⋮
    834	; Vital Throw goes last.
    835	cp VITAL_THROW
    ⋮
    849	ld a, BASE_PRIORITY
    
    engine/battle/core.asm lines 829–850 at 97187cd · upstream ↗
    1MoveEffectPriorities:
    2	db EFFECT_PROTECT,      3
    3	db EFFECT_ENDURE,       3
    4	db EFFECT_PRIORITY_HIT, 2
    5	db EFFECT_FORCE_SWITCH, 0
    6	db EFFECT_COUNTER,      0
    7	db EFFECT_MIRROR_COAT,  0
    
    data/moves/effects_priorities.asm lines 1–8 at 97187cd · upstream ↗
    156	item_attribute 100, HELD_QUICK_CLAW, 60, CANT_SELECT, ITEM, ITEMMENU_NOUSE, ITEMMENU_NOUSE
    
    data/items/attributes.asm lines 155–156 at 97187cd · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  11. ^Cmd_critcalc sums a critical stage, +2 for Focus Energy, +1 for a high-critical move (including Sky Attack, Blaze Kick, and Poison Tail), +1 for a Scope Lens, and +2 for Chansey with a Lucky Punch or Farfetch'd with a Stick, capped at 4; a 16-bit Random() taken modulo 16, 8, 4, 3, or 2 must be 0, a chance of 1/16, 1/8, 1/4, 21,846 in 65,536 (slightly over 1/3), or 1/2, and a target with Battle Armor or Shell Armor is never hit critically.Codepret/pokeemerald
    How we know
    605// The chance is 1/N for each stage.
    606static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2};
    
    src/battle_script_commands.c lines 605–606 at 731ad5b · upstream ↗
    1267    critChance  = 2 * ((gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0)
    1268                + (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL)
    ⋮
    1272                + (holdEffect == HOLD_EFFECT_SCOPE_LENS)
    ⋮
    1279    if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR)
    ⋮
    1282     && !(Random() % sCriticalHitChance[critChance]))
    1283        gCritMultiplier = 2;
    
    src/battle_script_commands.c lines 1267–1285 at 731ad5b · upstream ↗
    11u16 Random(void)
    ⋮
    15    return gRngValue >> 16;
    
    src/random.c lines 11–16 at 731ad5b · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  12. ^TryRunFromBattle always escapes with a Smoke Ball, or with the Run Away ability outside the Battle Pyramid. Otherwise, in a single battle outside the Pyramid, it escapes when the player's Pokémon is at least as fast as the foe, or when ⌊128P/E⌋+30n, stored in a byte, exceeds a random byte, for n earlier attempts.Codepret/pokeemeraldrevised
    How we know
    412    u8 speedVar;
    ⋮
    416    else
    ⋮
    421    if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
    ⋮
    425        effect++;
    ⋮
    427    else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY)
    ⋮
    429        if (CurrentBattlePyramidLocation() != PYRAMID_LOCATION_NONE)
    ⋮
    431            gBattleStruct->runTries++;
    ⋮
    434            if (speedVar > (Random() & 0xFF))
    ⋮
    438                effect++;
    ⋮
    441        else
    ⋮
    445            effect++;
    ⋮
    450        effect++;
    ⋮
    
    src/battle_util.c lines 407–475 at 731ad5b · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Revised after a check by a second AI model, 2026-10-21: The run formula holds only in single battles outside the Battle Pyramid.

    In the claim ledger

Sources

Code