Make gamemode moves actually work

This commit is contained in:
JappaWakka 2022-06-09 21:29:30 +02:00
parent 813992bf51
commit a40a44181b
2 changed files with 69 additions and 49 deletions

View File

@ -3798,7 +3798,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3813,7 +3812,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3828,7 +3826,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3843,7 +3840,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3858,7 +3854,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3873,7 +3868,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3888,7 +3882,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -3902,11 +3895,9 @@
Dim p As Pokemon = BattleScreen.OwnPokemon Dim p As Pokemon = BattleScreen.OwnPokemon
Dim op As Pokemon = BattleScreen.OppPokemon Dim op As Pokemon = BattleScreen.OppPokemon
Dim pNPC As NPC = BattleScreen.OwnPokemonNPC Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
If own = False Then
pNPC = BattleScreen.OppPokemonNPC
End If
If own = False Then If own = False Then
p = BattleScreen.OppPokemon p = BattleScreen.OppPokemon
pNPC = BattleScreen.OppPokemonNPC
op = BattleScreen.OwnPokemon op = BattleScreen.OwnPokemon
End If End If
@ -4082,7 +4073,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4097,7 +4087,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4112,7 +4101,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4127,7 +4115,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4142,7 +4129,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4157,7 +4143,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
Return True Return True
@ -4172,7 +4157,6 @@
'Do nothing 'Do nothing
Case Else 'Print message given in 'message' Case Else 'Print message given in 'message'
BattleScreen.BattleQuery.Add(New TextQueryObject(message)) BattleScreen.BattleQuery.Add(New TextQueryObject(message))
BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage))
End Select End Select
If val > 0 Then If val > 0 Then
@ -5337,11 +5321,11 @@
End If End If
End If End If
ChangeCameraAngle(0, True, BattleScreen)
Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16) Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
Dim cq2 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, False, 16) Dim cq2 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, False, 16)
cq2.PassThis = True cq2.PassThis = True
BattleScreen.BattleQuery.AddRange({cq1, cq2}) BattleScreen.BattleQuery.AddRange({cq1, cq2})

View File

@ -12,7 +12,7 @@
''' <param name="own">Own toggle.</param> ''' <param name="own">Own toggle.</param>
''' <param name="BattleScreen">Reference to the BattleScreen.</param> ''' <param name="BattleScreen">Reference to the BattleScreen.</param>
Public Shared Sub ExecuteMoveHitsFunction(ByVal Move As Attack, ByVal own As Boolean, ByVal BattleScreen As BattleScreen) Public Shared Sub ExecuteMoveHitsFunction(ByVal Move As Attack, ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
Dim functions() As String = Move.GameModeFunction.Split(CChar("|")) Dim functions() As String = Move.GameModeFunction.Split("|")
For i = 0 To functions.Count - 1 For i = 0 To functions.Count - 1
Dim f As String = functions(i) Dim f As String = functions(i)
Dim fMain As String = f Dim fMain As String = f
@ -23,59 +23,96 @@
Select Case fMain.ToLower() Select Case fMain.ToLower()
Case "cameraangle" Case "cameraangle"
Dim Direction As Integer = CInt(fSub) Dim Direction As Integer = CInt(fSub)
BattleScreen.Battle.ChangeCameraAngle(Direction, own, BattleScreen) Select Case Direction
Case "message" Case 0
fSub = Localization.GetString(f.GetSplit(1, ","), f.GetSplit(1, ",")) BattleScreen.Battle.ChangeCameraAngle(0, own, BattleScreen)
Case 1
BattleScreen.Battle.ChangeCameraAngle(1, True, BattleScreen)
Case 2
BattleScreen.Battle.ChangeCameraAngle(2, True, BattleScreen)
End Select
Case "message", "text"
fSub = Localization.GetString(fSub, fSub)
BattleScreen.BattleQuery.Add(New TextQueryObject(fSub)) BattleScreen.BattleQuery.Add(New TextQueryObject(fSub))
Case "raisestat", "increasestat"
Dim Stat As String = f.GetSplit(1, ",")
Dim Target As Boolean = own
Dim Message As String = ""
Dim RaiseAmount As Integer = 1
If f.Split(CChar(",")).Count > 2 Then
Target = CBool(f.GetSplit(2, ","))
If f.Split(CChar(",")).Count > 3 Then
Message = f.GetSplit(3, ",")
If f.Split(CChar(",")).Count > 4 Then
If CInt(f.GetSplit(4, ",")) > 0 Then
RaiseAmount = CInt(f.GetSplit(4, ","))
End If
End If
End If
End If
BattleScreen.Battle.RaiseStat(Target, own, BattleScreen, Stat, RaiseAmount, Message, "move:" & Move.Name)
Case "lowerstat", "decreasestat"
Dim Stat As String = f.GetSplit(1, ",")
Dim Message As String = ""
Dim Target As Boolean = own
Dim LowerAmount As Integer = 1
If f.Split(CChar(",")).Count > 2 Then
Target = CBool(f.GetSplit(2, ","))
If f.Split(CChar(",")).Count > 3 Then
Message = f.GetSplit(3, ",")
If f.Split(CChar(",")).Count > 4 Then
If CInt(f.GetSplit(4, ",")) > 0 Then
LowerAmount = CInt(f.GetSplit(4, ","))
End If
End If
End If
End If
BattleScreen.Battle.LowerStat(Target, own, BattleScreen, Stat, LowerAmount, Message, "move:" & Move.Name)
Case "reducehp", "drainhp", "damage" Case "reducehp", "drainhp", "damage"
Dim HPAmount As Integer = CInt(fSub.GetSplit(0, ",")) Dim Target As Boolean = CBool(f.GetSplit(1, ","))
Dim HPAmount As Integer = 0
Dim Message As String = "" Dim Message As String = ""
Dim Target As Boolean = True
If fSub.Split(CChar(",")).Count > 1 Then If f.Split(CChar(",")).Count > 2 Then
Target = CBool(fSub.GetSplit(1, ",")) HPAmount = CInt(f.GetSplit(2, ","))
If fSub.Split(CChar(",")).Count > 2 Then If f.Split(CChar(",")).Count > 3 Then
Message = fSub.GetSplit(2, ",") Message = f.GetSplit(3, ",")
End If End If
End If End If
BattleScreen.Battle.ReduceHP(HPAmount, Not Target, Target, BattleScreen, Message, Move.Name.ToLower) BattleScreen.Battle.ReduceHP(HPAmount, Target, own, BattleScreen, Message, Move.Name.ToLower)
Case "gainhp", "increasehp", "heal" Case "gainhp", "increasehp", "heal"
Dim HPAmount As Integer = CInt(fSub.GetSplit(0, ",")) Dim Target As Boolean = CBool(f.GetSplit(1, ","))
Dim HPAmount As Integer = 0
Dim Message As String = "" Dim Message As String = ""
Dim Target As Boolean = True
If fSub.Split(CChar(",")).Count > 1 Then If f.Split(CChar(",")).Count > 2 Then
Target = CBool(fSub.GetSplit(1, ",")) HPAmount = CInt(f.GetSplit(2, ","))
If fSub.Split(CChar(",")).Count > 2 Then If f.Split(CChar(",")).Count > 3 Then
Message = fSub.GetSplit(2, ",") Message = f.GetSplit(3, ",")
End If End If
End If End If
BattleScreen.Battle.GainHP(HPAmount, Target, Target, BattleScreen, Message, Move.Name.ToLower) BattleScreen.Battle.GainHP(HPAmount, Target, own, BattleScreen, Message, Move.Name.ToLower)
Case "endbattle" Case "endbattle"
Dim Blackout As Boolean = False Dim Blackout As Boolean = False
If fSub.Split(CChar(",")).Count > 1 Then If f.Split(CChar(",")).Count > 2 Then
Blackout = CBool(fSub.GetSplit(1, ",")) Blackout = CBool(fSub)
End If End If
BattleScreen.EndBattle(Blackout) BattleScreen.BattleQuery.Add(New EndBattleQueryObject(Blackout))
Case "faint" Case "faint"
Dim Target As Boolean = Not own Dim Target As Boolean = CBool(f.GetSplit(1, ","))
Dim Message As String = "" Dim Message As String = ""
If fSub.Split(CChar(",")).Count > 1 Then If f.Split(CChar(",")).Count > 2 Then
Target = Not CBool(fSub.GetSplit(1, ",")) Message = f.GetSplit(2, ",")
End If End If
If fSub.Split(CChar(",")).Count > 2 Then BattleScreen.Battle.FaintPokemon(Not Target, BattleScreen, Message)
Message = fSub.GetSplit(2, ",")
End If
BattleScreen.Battle.FaintPokemon(Target, BattleScreen, Message)
Case Else Case Else
fSub = CInt(f.GetSplit(1, ",")).Clamp(0, 100).ToString fSub = CInt(f.GetSplit(1, ",")).Clamp(0, 100).ToString
End Select End Select
Else Else
Select Case f.ToLower() Select Case f.ToLower()
Case "endbattle"
BattleScreen.EndBattle(False)
Case "freeze" Case "freeze"
fSub = "15" fSub = "15"
Case "poison" Case "poison"
@ -101,7 +138,6 @@
Case "sleep" Case "sleep"
Sleep(Move, own, BattleScreen, CInt(fSub)) Sleep(Move, own, BattleScreen, CInt(fSub))
End Select End Select
i += 1
Next Next
End Sub End Sub