After Faint Switching, revision 3: Fixed major bug related to multi turn action

This commit is contained in:
CaptainSegis 2016-11-05 10:55:57 -05:00
parent b1589a31bc
commit b59d4c7f6c
2 changed files with 15 additions and 13 deletions

View File

@ -5,6 +5,8 @@
Public Shared Won As Boolean = False Public Shared Won As Boolean = False
Public Shared Fled As Boolean = False Public Shared Fled As Boolean = False
Public IsAfterFaint As Boolean = False
#Region "StartRound" #Region "StartRound"
Public Structure RoundConst Public Structure RoundConst
@ -197,6 +199,9 @@
End Sub End Sub
Public Sub StartRound(ByVal BattleScreen As BattleScreen) Public Sub StartRound(ByVal BattleScreen As BattleScreen)
If BattleScreen.OwnFaint OrElse BattleScreen.OppFaint Then
IsAfterFaint = True
End If
BattleScreen.BattleMenu.MenuState = BattleMenu.MenuStates.Main BattleScreen.BattleMenu.MenuState = BattleMenu.MenuStates.Main
SelectedMoveOwn = True SelectedMoveOwn = True
SelectedMoveOpp = True SelectedMoveOpp = True
@ -234,7 +239,7 @@
Return New RoundConst() With {.StepType = RoundConst.StepTypes.Text, .Argument = "You have sent your next Pokemon!"} Return New RoundConst() With {.StepType = RoundConst.StepTypes.Text, .Argument = "You have sent your next Pokemon!"}
End If End If
If Not BattleScreen.IsAfterFaint Then If Not IsAfterFaint Then
If BattleScreen.FieldEffects.OppRecharge > 0 Then If BattleScreen.FieldEffects.OppRecharge > 0 Then
SelectedMoveOpp = False SelectedMoveOpp = False
BattleScreen.FieldEffects.OppRecharge -= 1 BattleScreen.FieldEffects.OppRecharge -= 1
@ -466,9 +471,6 @@
If BattleHasEnded(BattleScreen) Then If BattleHasEnded(BattleScreen) Then
Exit Sub Exit Sub
End If End If
If BattleScreen.OwnFaint OrElse BattleScreen.OppFaint Then
BattleScreen.IsAfterFaint = True
End If
Dim OppStep = GetOppStep(BattleScreen, OwnStep) Dim OppStep = GetOppStep(BattleScreen, OwnStep)
Me.OwnStep = OwnStep Me.OwnStep = OwnStep
Me.OppStep = OppStep Me.OppStep = OppStep
@ -4063,7 +4065,7 @@
EndRoundOpp(BattleScreen) EndRoundOpp(BattleScreen)
EndRoundOwn(BattleScreen) EndRoundOwn(BattleScreen)
End If End If
If BattleScreen.IsAfterFaint = False Then If IsAfterFaint = False Then
.FieldEffects.Rounds += 1 .FieldEffects.Rounds += 1
If .FieldEffects.WeatherRounds > 0 Then If .FieldEffects.WeatherRounds > 0 Then
.FieldEffects.WeatherRounds -= 1 .FieldEffects.WeatherRounds -= 1
@ -4154,7 +4156,7 @@
.FieldEffects.OppProtectMovesCount = 0 .FieldEffects.OppProtectMovesCount = 0
End If End If
End If End If
BattleScreen.IsAfterFaint = False IsAfterFaint = False
If .OwnPokemon.Status = Pokemon.StatusProblems.Fainted Or .OwnPokemon.HP <= 0 Then If .OwnPokemon.Status = Pokemon.StatusProblems.Fainted Or .OwnPokemon.HP <= 0 Then
.OwnPokemon.Status = Pokemon.StatusProblems.Fainted .OwnPokemon.Status = Pokemon.StatusProblems.Fainted
BattleScreen.OwnFaint = True BattleScreen.OwnFaint = True
@ -4306,7 +4308,7 @@
Exit Sub Exit Sub
End If End If
ChangeCameraAngel(0, True, BattleScreen) ChangeCameraAngel(0, True, BattleScreen)
If BattleScreen.IsAfterFaint = True Then If IsAfterFaint = True Then
Exit Sub Exit Sub
End If End If
With BattleScreen With BattleScreen
@ -5033,7 +5035,7 @@
Private Sub EndRoundOpp(ByVal BattleScreen As BattleScreen) Private Sub EndRoundOpp(ByVal BattleScreen As BattleScreen)
ChangeCameraAngel(0, True, BattleScreen) ChangeCameraAngel(0, True, BattleScreen)
If BattleScreen.IsAfterFaint = True Then If IsAfterFaint = True Then
Exit Sub Exit Sub
End If End If
With BattleScreen With BattleScreen
@ -6312,7 +6314,7 @@
Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean) Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
BattleSystem.BattleScreen.OwnFaint = False BattleSystem.BattleScreen.OwnFaint = False
BattleSystem.BattleScreen.OppFaint = False BattleSystem.BattleScreen.OppFaint = False
BattleSystem.BattleScreen.IsAfterFaint = False IsAfterFaint = False
If AddPVP = True Then If AddPVP = True Then
Select Case reason Select Case reason
Case EndBattleReasons.WinTrainer 'Lost Case EndBattleReasons.WinTrainer 'Lost

View File

@ -8,7 +8,7 @@
'Used for after fainting switching 'Used for after fainting switching
Public Shared OwnFaint As Boolean = False Public Shared OwnFaint As Boolean = False
Public Shared OppFaint As Boolean = False Public Shared OppFaint As Boolean = False
Public Shared IsAfterFaint As Boolean = False 'Is after faint switching round
'Used for lead picking in PvP Battles 'Used for lead picking in PvP Battles
@ -120,7 +120,7 @@
Me.IsTrainerBattle = False Me.IsTrainerBattle = False
Me.MouseVisible = False Me.MouseVisible = False
Me.PVPGameJoltID = "" Me.PVPGameJoltID = ""
IsAfterFaint = False
OppFaint = False OppFaint = False
OwnFaint = False OwnFaint = False
End Sub End Sub
@ -132,7 +132,7 @@
Me.IsTrainerBattle = True Me.IsTrainerBattle = True
Me.MouseVisible = False Me.MouseVisible = False
Me.PVPGameJoltID = "" Me.PVPGameJoltID = ""
IsAfterFaint = False
OppFaint = False OppFaint = False
OwnFaint = False OwnFaint = False
End Sub End Sub
@ -1468,7 +1468,7 @@ nextIndex:
Public Sub SendEndRoundData() Public Sub SendEndRoundData()
Dim lockData As String = "{}" Dim lockData As String = "{}"
Dim oppStep As Battle.RoundConst = Battle.GetOppStep(Me, Nothing) Dim oppStep As Battle.RoundConst = Battle.GetOppStep(Me, Battle.OwnStep)
If Battle.SelectedMoveOpp = False Then If Battle.SelectedMoveOpp = False Then
If oppStep.StepType = BattleSystem.Battle.RoundConst.StepTypes.Move Then If oppStep.StepType = BattleSystem.Battle.RoundConst.StepTypes.Move Then
lockData = "{" & CType(oppStep.Argument, Attack).ID.ToString() & "}" lockData = "{" & CType(oppStep.Argument, Attack).ID.ToString() & "}"