Merge pull request #2588 from TeamAquasHideout/upcoming

Fix Psycho Shift not buffering the string index for its printfromtable call
This commit is contained in:
Eduardo Quezada D'Ottone 2023-01-23 10:35:09 -03:00 committed by GitHub
commit 27fa8167c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9309,25 +9309,27 @@ static void Cmd_various(void)
gBattlescriptCurrInstr += 4; gBattlescriptCurrInstr += 4;
return; return;
case VARIOUS_PSYCHO_SHIFT: case VARIOUS_PSYCHO_SHIFT:
{ // Psycho shift works
if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS && !CanBeParalyzed(gBattlerTarget)) if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget))
|| (gBattleMons[gBattlerAttacker].status1 & STATUS1_PSN_ANY && !CanBePoisoned(gBattlerAttacker, gBattlerTarget)) gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|| (gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN && !CanBeBurned(gBattlerTarget)) else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_TOXIC_POISON) && CanBePoisoned(gBattlerAttacker, gBattlerTarget))
|| (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && !CanSleep(gBattlerTarget))) gBattleCommunication[MULTISTRING_CHOOSER] = 1;
{ else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_BURN) && CanBeBurned(gBattlerTarget))
// fails gBattleCommunication[MULTISTRING_CHOOSER] = 2;
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && CanBeParalyzed(gBattlerTarget))
} gBattleCommunication[MULTISTRING_CHOOSER] = 3;
else if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && CanSleep(gBattlerTarget))
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
else else
{ {
// Psycho shift works gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3);
return;
}
gBattleMons[gBattlerTarget].status1 = gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY; gBattleMons[gBattlerTarget].status1 = gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY;
gActiveBattler = gBattlerTarget; gActiveBattler = gBattlerTarget;
BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1); BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler); MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7; gBattlescriptCurrInstr += 7;
}
}
return; return;
case VARIOUS_CURE_STATUS: case VARIOUS_CURE_STATUS:
gBattleMons[gActiveBattler].status1 = 0; gBattleMons[gActiveBattler].status1 = 0;