void AWeapon::EndPowerup () { if (SisterWeapon != NULL && WeaponFlags&WIF_POWERED_UP) { if (GetReadyState() != SisterWeapon->GetReadyState()) { if (Owner->player->PendingWeapon == NULL || Owner->player->PendingWeapon == WP_NOCHANGE) Owner->player->PendingWeapon = SisterWeapon; } else { DPSprite *psp = Owner->player->FindPSprite(PSP_WEAPON); if (psp != nullptr && psp->GetCaller() == Owner->player->ReadyWeapon) { // If the weapon changes but the state does not, we have to manually change the PSprite's caller here. psp->SetCaller(SisterWeapon); Owner->player->ReadyWeapon = SisterWeapon; } else { // Something went wrong. Initiate a regular weapon change. Owner->player->PendingWeapon = SisterWeapon; } } } }
void AWeapon::EndPowerup () { if (SisterWeapon != NULL && WeaponFlags&WIF_POWERED_UP) { if (GetReadyState() != SisterWeapon->GetReadyState()) { if (Owner->player->PendingWeapon == NULL || Owner->player->PendingWeapon == WP_NOCHANGE) Owner->player->PendingWeapon = SisterWeapon; } else { Owner->player->ReadyWeapon = SisterWeapon; } } }