Merge pull request #1 from P3D-Legacy/master

Up to date
This commit is contained in:
Daniel Billing 2020-07-22 09:29:53 +02:00 committed by GitHub
commit 430199af67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2579 changed files with 24175 additions and 3540 deletions

11
NuGet.config Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<packageSources>
<add key="monogame-dev" value="http://teamcity.monogame.net/guestAuth/app/nuget/v1/FeedService.svc/" />
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@ -33,6 +33,12 @@
If moveName = "light screen" Or moveName = "reflect" Then If moveName = "light screen" Or moveName = "reflect" Then
turns = 8 turns = 8
End If End If
Case "terrain extender"
If moveName = "electric terrain" Or moveName = "grassy terrain" Or moveName = "misty terrain" Or moveName = "psychic terrain" Then
turns = 8
ElseIf ability = "electric surge" Or ability = "grassy surge" Or ability = "misty surge" Or ability = "psychic surge" Then
turns = 8
End If
End Select End Select
End If End If
Return turns Return turns
@ -75,11 +81,12 @@
End If End If
End If End If
If ownPokemon.Ability.Name.ToLower() = "gale wings" And ownAttack.Type.Type = Element.Types.Flying Then 'Added condition to check for full HP
If ownPokemon.Ability.Name.ToLower() = "gale wings" And ownAttack.Type.Type = Element.Types.Flying And ownPokemon.HP = ownPokemon.MaxHP Then
ownPriority += 1 ownPriority += 1
End If End If
If oppPokemon.Ability.Name.ToLower() = "gale wings" And oppAttack.Type.Type = Element.Types.Flying Then If oppPokemon.Ability.Name.ToLower() = "gale wings" And oppAttack.Type.Type = Element.Types.Flying And oppPokemon.HP = oppPokemon.MaxHP Then
oppPriority += 1 oppPriority += 1
End If End If
@ -226,7 +233,7 @@
End If End If
If p.Status = P3D.Pokemon.StatusProblems.Paralyzed And p.Ability.Name.ToLower() <> "quick feet" Then If p.Status = P3D.Pokemon.StatusProblems.Paralyzed And p.Ability.Name.ToLower() <> "quick feet" Then
speed = CInt(speed / 4) 'Divide the speed by 4 if the Pokemon is paralyzed. speed = CInt(speed / 2) 'Divide the speed by 2 (gen 7 standards) if the Pokemon is paralyzed.
End If End If
If Not p.Item Is Nothing Then If Not p.Item Is Nothing Then
@ -271,6 +278,14 @@
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sandstorm Then If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sandstorm Then
speed *= 2 speed *= 2
End If End If
Case "slush rush"
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Hailstorm Then
speed *= 2
End If
Case "surge surfer"
If BattleScreen.FieldEffects.ElectricTerrain > 0 Then
speed *= 2
End If
End Select End Select
Dim grassPledge As Integer = BattleScreen.FieldEffects.OppGrassPledge Dim grassPledge As Integer = BattleScreen.FieldEffects.OppGrassPledge
@ -290,11 +305,11 @@
If p.Ability.Name.ToLower() = "slow start" Then If p.Ability.Name.ToLower() = "slow start" Then
If own = True Then If own = True Then
If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
speed = CInt(speed / 2) speed = CInt(speed / 2)
End If End If
Else Else
If BattleScreen.FieldEffects.OppTurnCounts < 5 Then If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
speed = CInt(speed / 2) speed = CInt(speed / 2)
End If End If
End If End If
@ -305,6 +320,86 @@
Return speed Return speed
End Function End Function
Public Shared Function DetermineBattleAttack(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Integer
Dim p As Pokemon = BattleScreen.OwnPokemon
If own = False Then
p = BattleScreen.OppPokemon
End If
Dim attack As Integer = CInt(p.Attack * GetMultiplierFromStat(p.StatAttack)) 'Calculate the attack's basic value
If own = True Then
If BattleScreen.IsPVPBattle = False Then
If Core.Player.Badges.Contains(1) = True Then
attack = CInt(attack + (attack * (1 / 8))) 'Add 1/8 of the attack if the player has the 1st badge and it's not a PvP battle
End If
End If
End If
If p.Status = P3D.Pokemon.StatusProblems.Burn And p.Ability.Name.ToLower() <> "guts" Then
attack = CInt(attack / 2)
End If
If Not p.Item Is Nothing Then
If p.Item.Name = "Choice Band" Then
attack = CInt(attack * 1.5F)
End If
If p.Number = 25 Then
If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then
If p.Item.Name = "Light Ball" Then
attack *= 2
End If
End If
End If
If p.Number = 104 OrElse p.Number = 105 Then
If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then
If p.Item.Name = "Thick Club" Then
attack *= 2
End If
End If
End If
End If
Select Case p.Ability.Name.ToLower()
Case "huge power"
attack *= 2
Case "pure power"
attack *= 2
Case "defeatist"
If p.HP / p.MaxHP <= 0.5 Then
attack = CInt(attack / 2)
End If
Case "hustle"
attack = CInt(attack * 1.5F)
Case "flower gift"
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sunny Then
attack = CInt(attack * 1.5F)
End If
End Select
If p.Ability.Name.ToLower() = "guts" Then
If p.Status = Pokemon.StatusProblems.Paralyzed Or p.Status = Pokemon.StatusProblems.Burn Or p.Status = Pokemon.StatusProblems.Poison Or p.Status = Pokemon.StatusProblems.Sleep Or p.Status = Pokemon.StatusProblems.Freeze Then
attack = CInt(attack * 1.5F)
End If
End If
If p.Ability.Name.ToLower() = "slow start" Then
If own = True Then
If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
attack = CInt(attack / 2)
End If
Else
If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
attack = CInt(attack / 2)
End If
End If
End If
attack = attack.Clamp(1, 999)
Return attack
End Function
''' <summary> ''' <summary>
''' Outcome: 0=true/>1=false:1=sleeptalk/snore 2=other move 3=start sleep 4=X wont obey 5=X wont obey 6=X turned away 7=X is loafing around 8=X pretended to not notice ''' Outcome: 0=true/>1=false:1=sleeptalk/snore 2=other move 3=start sleep 4=X wont obey 5=X wont obey 6=X turned away 7=X is loafing around 8=X pretended to not notice
''' </summary> ''' </summary>
@ -380,6 +475,10 @@
Return True Return True
End If End If
If UsedAttack.GetUseAccEvasion(own, BattleScreen) = False Then
Return True
End If
Dim result As Single = 1.0F Dim result As Single = 1.0F
Dim INIT As Integer = UsedAttack.GetAccuracy(own, BattleScreen) Dim INIT As Integer = UsedAttack.GetAccuracy(own, BattleScreen)
@ -403,14 +502,10 @@
Dim ACCM As Single = GetMultiplierFromAccEvasion(ACC) Dim ACCM As Single = GetMultiplierFromAccEvasion(ACC)
If UsedAttack.GetUseAccEvasion(own, BattleScreen) = False Then
ACCM = 1.0F
End If
result = INIT * ACCM result = INIT * ACCM
If Not op.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(Not own) = True Then If Not op.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(Not own) = True Then
If op.Item.Name.ToLower() = "brightpowder" Or op.Item.Name.ToLower() = "lax incense" Then If op.Item.Name.ToLower() = "bright powder" Or op.Item.Name.ToLower() = "lax incense" Then
result *= 0.9F result *= 0.9F
End If End If
End If End If
@ -543,7 +638,7 @@
If p.Number = 113 Then If p.Number = 113 Then
C += 2 C += 2
End If End If
Case "stick" Case "leek"
If p.Number = 83 Then If p.Number = 83 Then
C += 2 C += 2
End If End If
@ -571,7 +666,10 @@
If Core.Random.Next(0, chance) = 0 Then If Core.Random.Next(0, chance) = 0 Then
Return True Return True
End If End If
If UsedAttack.ID = 524 Then If UsedAttack.ID = 524 Then 'frost breath
Return True
End If
If UsedAttack.ID = 480 Then 'storm throw
Return True Return True
End If End If
@ -590,31 +688,46 @@
op = BattleScreen.OwnPokemon op = BattleScreen.OwnPokemon
End If End If
If p.Type1.Type = Element.Types.Ghost Or p.Type2.Type = Element.Types.Ghost Then
Return True
End If
If p.Ability.Name.ToLower() = "run away" Then If p.Ability.Name.ToLower() = "run away" Then
Return True Return True
End If End If
If op.Ability.Name.ToLower() = "shadow tag" And p.Ability.Name.ToLower() <> "shadow tag" Then If Not p.Item Is Nothing Then
If p.Item.Name.ToLower() = "smoke ball" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
Return True
End If
End If
If op.Ability.Name.ToLower() = "shadow tag" And p.Ability.Name.ToLower() <> "shadow tag" And op.HP > 0 Then
Return False Return False
End If End If
If op.Ability.Name.ToLower() = "arena trap" Then If op.Ability.Name.ToLower() = "arena trap" And op.HP > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then
Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise Return False
If own = False Then
magnetRise = BattleScreen.FieldEffects.OppMagnetRise
End If
If p.Type1.Type <> Element.Types.Flying And p.Type2.Type <> Element.Types.Flying And p.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
Return False
End If
End If End If
If op.Ability.Name.ToLower() = "magnet pull" Then If op.Ability.Name.ToLower() = "magnet pull" And op.HP > 0 Then
If p.Type1.Type = Element.Types.Steel Or p.Type2.Type = Element.Types.Steel Then If p.Type1.Type = Element.Types.Steel Or p.Type2.Type = Element.Types.Steel Then
Return False Return False
End If End If
End If End If
With BattleScreen.FieldEffects
If own = True Then
If .OwnWrap > 0 Or .OwnBind > 0 Or .OwnClamp > 0 Or .OwnFireSpin > 0 Or .OwnMagmaStorm > 0 Or .OwnSandTomb > 0 Or .OwnWhirlpool > 0 Or .OwnInfestation > 0 Then
Return False
End If
Else
If .OppWrap > 0 Or .OppBind > 0 Or .OppClamp > 0 Or .OppFireSpin > 0 Or .OppMagmaStorm > 0 Or .OppSandTomb > 0 Or .OppWhirlpool > 0 Or .OppInfestation > 0 Then
Return False
End If
End If
End With
Dim ingrain As Integer = BattleScreen.FieldEffects.OwnIngrain Dim ingrain As Integer = BattleScreen.FieldEffects.OwnIngrain
If own = False Then If own = False Then
ingrain = BattleScreen.FieldEffects.OppIngrain ingrain = BattleScreen.FieldEffects.OppIngrain
@ -626,13 +739,6 @@
If p.Speed > op.Speed Then If p.Speed > op.Speed Then
Return True Return True
Else Else
If Not p.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(own) = True Then
If p.Item.Name.ToLower() = "smoke ball" Then
BattleScreen.FieldEffects.RunTries += 1
Return True
End If
End If
Dim A As Integer = p.Speed Dim A As Integer = p.Speed
Dim B As Integer = op.Speed Dim B As Integer = op.Speed
If B = 0 Then If B = 0 Then
@ -663,33 +769,109 @@
End If End If
End If End If
Dim _targetHasIronBall As Boolean = False 'Flying Press
If Not op.Item Is Nothing Then If move.ID = 9999 Then
If op.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then If op.Type1.Type = Element.Types.Fighting Or op.Type2.Type = Element.Types.Fighting Then
_targetHasIronBall = True effectiveness *= 2
End If
If op.Type1.Type = Element.Types.Grass Or op.Type2.Type = Element.Types.Grass Then
effectiveness *= 2
End If
If op.Type1.Type = Element.Types.Bug Or op.Type2.Type = Element.Types.Bug Then
effectiveness *= 2
End If
If op.Type1.Type = Element.Types.Rock Or op.Type2.Type = Element.Types.Rock Then
effectiveness /= 2
End If
If op.Type1.Type = Element.Types.Steel Or op.Type2.Type = Element.Types.Steel Then
effectiveness /= 2
End If
If op.Type1.Type = Element.Types.Electric Or op.Type2.Type = Element.Types.Electric Then
effectiveness /= 2
End If End If
End If End If
If op.Ability.Name.ToLower() = "levitate" And move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.Gravity = 0 And _targetHasIronBall = False Then 'Sheer Cold
If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then If move.ID = 329 Then
If op.IsType(Element.Types.Ice) Then
effectiveness = 0.0F effectiveness = 0.0F
End If End If
End If End If
Dim ingrain As Integer = BattleScreen.FieldEffects.OppIngrain Dim digHit As Boolean = False
If own = False Then Dim airHit As Boolean = False
ingrain = BattleScreen.FieldEffects.OwnIngrain Dim regHit As Boolean = False
'Grounded condition
If move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = False Then
Dim targetDig As Boolean = False
Dim targetAir As Boolean = False
With BattleScreen.FieldEffects
If own = True Then
If .OppDigCounter > 0 Then
targetDig = True
End If
If .OppFlyCounter > 0 Or .OppBounceCounter > 0 Or .OppSkyDropCounter > 0 Then
targetAir = True
End If
Else
If .OwnDigCounter > 0 Then
targetDig = True
End If
If .OwnFlyCounter > 0 Or .OwnBounceCounter > 0 Or .OwnSkyDropCounter > 0 Then
targetAir = True
End If
End If
End With
Select Case move.ID
Case 89, 90, 222 'Earthquake, Fissure, Magnitude
effectiveness = 0.0F
If targetDig = True Then
digHit = True
End If
Case 614 'Thousand Arrows
airHit = True
If targetAir = True Then
If own = True Then
BattleScreen.FieldEffects.OppFlyCounter = 0
BattleScreen.FieldEffects.OppBounceCounter = 0
Else
BattleScreen.FieldEffects.OwnFlyCounter = 0
BattleScreen.FieldEffects.OwnBounceCounter = 0
End If
End If
Case Else
effectiveness = 0.0F
End Select
ElseIf move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = True Then
regHit = True
End If End If
If move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground Then 'Grounded hit effectiveness
If BattleScreen.FieldEffects.Gravity = 0 And ingrain = 0 And _targetHasIronBall = False Then If digHit = True Or airHit = True Or regHit = True Then
Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise effectiveness = 1.0F
If own = False Then If op.IsType(Element.Types.Electric) Then
magnetRise = BattleScreen.FieldEffects.OwnMagnetRise effectiveness *= 2
End If End If
If magnetRise > 0 Then If op.IsType(Element.Types.Fire) Then
effectiveness = 0.0F effectiveness *= 2
End If End If
If op.IsType(Element.Types.Poison) Then
effectiveness *= 2
End If
If op.IsType(Element.Types.Rock) Then
effectiveness *= 2
End If
If op.IsType(Element.Types.Steel) Then
effectiveness *= 2
End If
If op.IsType(Element.Types.Bug) Then
effectiveness /= 2
End If
If op.IsType(Element.Types.Grass) Then
effectiveness /= 2
End If End If
End If End If
@ -719,7 +901,6 @@
End If End If
End If End If
If op.IsType(Element.Types.Ghost) = True Then If op.IsType(Element.Types.Ghost) = True Then
Dim CanHitGhost = False Dim CanHitGhost = False
Dim Foresight As Integer = 0 Dim Foresight As Integer = 0
@ -905,28 +1086,37 @@
Return True Return True
End If End If
If BattleScreen.OwnPokemon.Type1.Type = Element.Types.Ghost Or BattleScreen.OwnPokemon.Type2.Type = Element.Types.Ghost Then
Return True
End If
With BattleScreen
If Not .OwnPokemon.Item Is Nothing Then
If .OwnPokemon.Item.Name.ToLower() = "shed shell" And .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
Return True
End If
End If
End With
If BattleScreen.IsRemoteBattle AndAlso BattleScreen.IsPVPBattle AndAlso Not BattleScreen.IsHost Then If BattleScreen.IsRemoteBattle AndAlso BattleScreen.IsPVPBattle AndAlso Not BattleScreen.IsHost Then
If BattleScreen.FieldEffects.ClientCanSwitch = False Then If BattleScreen.FieldEffects.ClientCanSwitch = False Then
Return False Return False
End If End If
End If End If
If BattleScreen.OppPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "shadow tag" Then If BattleScreen.OppPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "shadow tag" And BattleScreen.OppPokemon.HP > 0 Then
Return False Return False
End If End If
If BattleScreen.FieldEffects.OwnTrappedCounter > 0 Then If BattleScreen.FieldEffects.OwnTrappedCounter > 0 Then
Return False Return False
End If End If
If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" Then If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OppPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) = True Then
Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise Return False
If BattleScreen.OwnPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
Return False
End If
End If End If
If BattleScreen.OppPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OwnPokemon.IsType(Element.Types.Ghost) = False And BattleScreen.OwnPokemon.IsType(Element.Types.Steel) = True Then If BattleScreen.OppPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OwnPokemon.IsType(Element.Types.Steel) = True And BattleScreen.OppPokemon.HP > 0 Then
Return False Return False
End If End If
@ -943,22 +1133,32 @@
If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or BattleScreen.OppPokemon.HP <= 0 Then If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or BattleScreen.OppPokemon.HP <= 0 Then
Return True Return True
End If End If
If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "shadow tag" Then
If BattleScreen.OppPokemon.Type1.Type = Element.Types.Ghost Or BattleScreen.OppPokemon.Type2.Type = Element.Types.Ghost Then
Return True
End If
With BattleScreen
If Not .OppPokemon.Item Is Nothing Then
If .OppPokemon.Item.Name.ToLower() = "shed shell" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
Return True
End If
End If
End With
If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "shadow tag" And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "shadow tag" And BattleScreen.OwnPokemon.HP > 0 Then
Return False Return False
End If End If
If BattleScreen.FieldEffects.OppTrappedCounter > 0 Then If BattleScreen.FieldEffects.OppTrappedCounter > 0 Then
Return False Return False
End If End If
If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" Then If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OwnPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) = True Then
Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise Return False
If BattleScreen.OppPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then
Return False
End If
End If End If
If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OppPokemon.IsType(Element.Types.Ghost) = False And BattleScreen.OppPokemon.IsType(Element.Types.Steel) = True Then If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "magnet pull" And BattleScreen.OppPokemon.IsType(Element.Types.Steel) = True And BattleScreen.OwnPokemon.HP > 0 Then
Return False Return False
End If End If
@ -1035,6 +1235,12 @@
IT = 1.2F IT = 1.2F
End If End If
End If End If
Case "soul dew"
If p.Number = 380 OrElse p.Number = 381 Then
If Attack.Type.Type = Element.Types.Dragon Or Attack.Type.Type = Element.Types.Psychic Then
IT = 1.2F
End If
End If
Case Else Case Else
IT = 1.0F IT = 1.0F
End Select End Select
@ -1091,7 +1297,7 @@
If Attack.Type.Type = Element.Types.Flying Then If Attack.Type.Type = Element.Types.Flying Then
IT = 1.2F IT = 1.2F
End If End If
Case 88, 273 'Silver powder, Insect Plate Case 88, 273 'Silver Powder, Insect Plate
If Attack.Type.Type = Element.Types.Bug Then If Attack.Type.Type = Element.Types.Bug Then
IT = 1.2F IT = 1.2F
End If End If
@ -1107,6 +1313,138 @@
If Attack.Type.Type = Element.Types.Psychic Then If Attack.Type.Type = Element.Types.Psychic Then
IT = 1.2F IT = 1.2F
End If End If
Case 90 'Silk Scarf
If Attack.Type.Type = Element.Types.Normal Then
IT = 1.2F
End If
End Select
Select Case p.Item.ID
Case 635 'Fighting Gem
If Attack.Type.Type = Element.Types.Fighting Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:fighting gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Fighting Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 644 'Dark Gem
If Attack.Type.Type = Element.Types.Dark Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:dark gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Dark Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 630 'Fire Gem
If Attack.Type.Type = Element.Types.Fire Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:fire gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Fire Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 643 'Dragon Gem
If Attack.Type.Type = Element.Types.Dragon Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:dragon gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Dragon Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 641 'Rock Gem
If Attack.Type.Type = Element.Types.Rock Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:rock gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Rock Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 632 'Electric Gem
If Attack.Type.Type = Element.Types.Electric Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:electric gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Electric Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 645 'Steel Gem
If Attack.Type.Type = Element.Types.Steel Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:steel gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Steel Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 633 'Grass Gem
If Attack.Type.Type = Element.Types.Grass Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:grass gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Grass Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 631 'Water Gem
If Attack.Type.Type = Element.Types.Water Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:water gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Water Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 634 'Ice Gem
If Attack.Type.Type = Element.Types.Ice Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:ice gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Ice Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 647 'Fairy Gem
If Attack.Type.Type = Element.Types.Fairy Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:fairy gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Fairy Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 636 'Poison Gem
If Attack.Type.Type = Element.Types.Poison Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:poison gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Poison Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 638 'Flying Gem
If Attack.Type.Type = Element.Types.Flying Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:flying gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Flying Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 640 'Bug Gem
If Attack.Type.Type = Element.Types.Bug Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:bug gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Bug Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 637 'Ground Gem
If Attack.Type.Type = Element.Types.Ground Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:ground gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Ground Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 642 'Ghost Gem
If Attack.Type.Type = Element.Types.Ghost Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:ghost gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Ghost Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 639 'Psychic Gem
If Attack.Type.Type = Element.Types.Psychic Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:psychic gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Psychic Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
Case 646 'Normal Gem
If Attack.Type.Type = Element.Types.Normal Then
If BattleScreen.Battle.RemoveHeldItem(Own, Own, BattleScreen, "-1", "item:normal gem") = True Then
BattleScreen.BattleQuery.Add(New TextQueryObject("The Normal Gem boosted " & p.GetDisplayName() & "'s " & Attack.Name & "!"))
IT = 1.3F
End If
End If
End Select End Select
End If End If
'CHG (If used Charge) 'CHG (If used Charge)
@ -1189,21 +1527,25 @@
If Attack.IsJawMove = True Then If Attack.IsJawMove = True Then
UA = 1.5F UA = 1.5F
End If End If
Case "fur coat"
If Attack.Category = Attack.Categories.Physical Then
UA = 0.5F
End If
Case "refrigerate" Case "refrigerate"
If Attack.Type.Type = Element.Types.Normal Then If Attack.Type.Type = Element.Types.Normal Then
UA = 1.3F UA = 1.2F
End If End If
Case "pixilate" Case "pixilate"
If Attack.Type.Type = Element.Types.Normal Then If Attack.Type.Type = Element.Types.Normal Then
UA = 1.3F UA = 1.2F
End If
Case "normalize"
If Attack.Type.Type = Element.Types.Normal Then
UA = 1.2F
End If
Case "galvanize"
If Attack.Type.Type = Element.Types.Normal Then
UA = 1.2F
End If End If
Case "aerilate" Case "aerilate"
If Attack.Type.Type = Element.Types.Normal Then If Attack.Type.Type = Element.Types.Normal Then
UA = 1.3F UA = 1.2F
End If End If
Case "mega launcher" Case "mega launcher"
If Attack.IsPulseMove = True Then If Attack.IsPulseMove = True Then
@ -1309,11 +1651,11 @@
AM = 1.5F AM = 1.5F
Case "slow start" Case "slow start"
If Own = True Then If Own = True Then
If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then
AM = 0.5F AM = 0.5F
End If End If
Else Else
If BattleScreen.FieldEffects.OppTurnCounts < 5 Then If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then
AM = 0.5F AM = 0.5F
End If End If
End If End If
@ -1382,10 +1724,6 @@
If p.Number = 25 Then If p.Number = 25 Then
IM = 2.0F IM = 2.0F
End If End If
Case "soul dew"
If p.Number = 380 Or p.Number = 381 Then
IM = 1.5F
End If
Case "deepseatooth" Case "deepseatooth"
If p.Number = 366 Then If p.Number = 366 Then
IM = 2.0F IM = 2.0F
@ -1449,7 +1787,7 @@
Dim SX As Single = 1.0F Dim SX As Single = 1.0F
Dim DMod As Single = 1.0F Dim DMod As Single = 1.0F
If Attack.Category = Attack.Categories.Physical OrElse Attack.ID = 473 OrElse Attack.ID = 548 Then 'Psyshock and Secret Sword. If Attack.Category = Attack.Categories.Physical OrElse Attack.ID = 473 OrElse Attack.ID = 540 OrElse Attack.ID = 548 Then 'Psyshock, Psystrike and Secret Sword.
DStat = Attack.GetUseDefenseStat(Op) DStat = Attack.GetUseDefenseStat(Op)
DSM = GetMultiplierFromStat(Op.StatDefense) DSM = GetMultiplierFromStat(Op.StatDefense)
@ -1457,7 +1795,7 @@
DSM = 1.0F DSM = 1.0F
End If End If
If Attack.Name.ToLower() = "selfdestruct" Or Attack.Name.ToLower() = "explosion" Then If Attack.Name.ToLower() = "self-destruct" Or Attack.Name.ToLower() = "explosion" Then
SX = 1.0F SX = 1.0F
End If End If
@ -1467,6 +1805,10 @@
If Op.Number = 132 Then If Op.Number = 132 Then
DMod = 1.5F DMod = 1.5F
End If End If
Case "eviolite"
If Op.IsFullyEvolved = False Then
DMod = 1.5F
End If
End Select End Select
End If End If
@ -1477,6 +1819,15 @@
End If End If
End If End If
End If End If
If Op.Ability.Name.ToLower() = "fur coat" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then
DMod = 2.0F
End If
If BattleScreen.FieldEffects.GrassyTerrain > 0 And Op.Ability.Name.ToLower() = "grass pelt" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then
DMod = 1.5F
End If
ElseIf Attack.Category = Attack.Categories.Special Then ElseIf Attack.Category = Attack.Categories.Special Then
DStat = Attack.GetUseDefenseStat(Op) DStat = Attack.GetUseDefenseStat(Op)
DSM = GetMultiplierFromStat(Op.StatSpDefense) DSM = GetMultiplierFromStat(Op.StatSpDefense)
@ -1493,10 +1844,6 @@
If Not Op.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(Not Own) = True And BattleScreen.FieldEffects.CanUseOwnItem(Not Own, BattleScreen) = True Then If Not Op.Item Is Nothing And BattleScreen.FieldEffects.CanUseItem(Not Own) = True And BattleScreen.FieldEffects.CanUseOwnItem(Not Own, BattleScreen) = True Then
Select Case Op.Item.Name.ToLower() Select Case Op.Item.Name.ToLower()
Case "soul dew"
If Op.Number = 380 Or p.Number = 381 Then
DMod = 1.5F
End If
Case "metal powder" Case "metal powder"
If Op.Number = 132 Then If Op.Number = 132 Then
DMod = 1.5F DMod = 1.5F
@ -1600,22 +1947,46 @@
If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Snow Then If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Snow Then
SR = 1.5F SR = 1.5F
End If End If
Case Element.Types.Electric
If BattleScreen.FieldEffects.ElectricTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
SR = 1.5F
End If
Case Element.Types.Grass
If BattleScreen.FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
SR = 1.5F
End If
Case Element.Types.Psychic
If BattleScreen.FieldEffects.PsychicTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
SR = 1.5F
End If
End Select End Select
If p.Ability.Name.ToLower() = "flash fire" Then 'If p.Ability.Name.ToLower() = "flash fire" Then
If BattleScreen.FieldEffects.CanUseAbility(Own, BattleScreen) = True Then ' If BattleScreen.FieldEffects.CanUseAbility(Own, BattleScreen) = True Then
If Own = True Then ' If Own = True Then
If Not BattleScreen.FieldEffects.OppLastMove Is Nothing Then ' If Not BattleScreen.FieldEffects.OppLastMove Is Nothing Then
If BattleScreen.FieldEffects.OppLastMove.Type.Type = Element.Types.Fire And Attack.Type.Type = Element.Types.Fire Then ' If BattleScreen.FieldEffects.OppLastMove.Type.Type = Element.Types.Fire And Attack.Type.Type = Element.Types.Fire Then
FF = 1.5F ' FF = 1.5F
End If ' End If
End If ' End If
Else ' Else
If Not BattleScreen.FieldEffects.OwnLastMove Is Nothing Then ' If Not BattleScreen.FieldEffects.OwnLastMove Is Nothing Then
If BattleScreen.FieldEffects.OwnLastMove.Type.Type = Element.Types.Fire And Attack.Type.Type = Element.Types.Fire Then ' If BattleScreen.FieldEffects.OwnLastMove.Type.Type = Element.Types.Fire And Attack.Type.Type = Element.Types.Fire Then
FF = 1.5F ' FF = 1.5F
End If ' End If
End If ' End If
' End If
' End If
'End If
If Attack.Type.Type = Element.Types.Fire Then
If Own = True Then
If BattleScreen.FieldEffects.OwnFlashFire = 1 Then
FF = 1.5F
End If
Else
If BattleScreen.FieldEffects.OppFlashFire = 1 Then
FF = 1.5F
End If End If
End If End If
End If End If
@ -1785,6 +2156,12 @@
TRB = 0.5F TRB = 0.5F
End If End If
End If End If
Case "roseli"
If Attack.Type.Type = Element.Types.Fairy Then
If BattleScreen.Battle.RemoveHeldItem(Not Own, Not Own, BattleScreen, "The Roseli Berry weakened the effect of " & Attack.Name & " on " & Op.GetDisplayName() & "!", "berry:roseli") = True Then
TRB = 0.5F
End If
End If
End Select End Select
End If End If
End If End If
@ -1816,6 +2193,19 @@
damage = CInt(damage / 2) damage = CInt(damage / 2)
End If End If
If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
If Attack.Type.Type = Element.Types.Dragon Then
damage = CInt(damage / 2)
End If
End If
If BattleScreen.FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Own, BattleScreen) = True Then
'Earthquake, Bulldoze, Magnitude
If Attack.ID = 89 Or Attack.ID = 523 Or Attack.ID = 222 Then
damage = CInt(damage / 2)
End If
End If
If Attack.IsOneHitKOMove = True Then If Attack.IsOneHitKOMove = True Then
damage = Op.HP damage = Op.HP
End If End If

View File

@ -50,7 +50,41 @@
If y > -1 Then If y > -1 Then
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(22, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White) Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(22, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White)
Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(110 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 42), Color.Black) Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(110 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black)
End If
End Sub
Private Sub DrawTerrain(ByVal BattleScreen As BattleScreen)
Dim y As Integer = -1
Dim x As Integer = 0
Dim t As String = ""
With BattleScreen.FieldEffects
If .ElectricTerrain > 0 Then
x = 352
y = 0
t = "Electric Terrain"
End If
If .GrassyTerrain > 0 Then
x = 352
y = 34
t = "Grassy Terrain"
End If
If .MistyTerrain > 0 Then
x = 352
y = 68
t = "Misty Terrain"
End If
If .PsychicTerrain > 0 Then
x = 352
y = 102
t = "Psychic Terrain"
End If
End With
If y > -1 Then
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(222, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White)
Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(310 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black)
End If End If
End Sub End Sub
@ -83,8 +117,8 @@
End If End If
'HP indicator: 'HP indicator:
Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 102, pos.Y + 37), New Color(0, 0, 0, _moveMenuAlpha)) Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 102, pos.Y + 37 + 3), New Color(0, 0, 0, _moveMenuAlpha))
Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 100, pos.Y + 35), shinyHue) Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 100, pos.Y + 35 + 3), shinyHue)
'EXP Bar: 'EXP Bar:
If BattleScreen.CanReceiveEXP = True Then If BattleScreen.CanReceiveEXP = True Then
@ -174,7 +208,7 @@
Dim caughtX As Integer = 0 Dim caughtX As Integer = 0
Dim StatusTexture As Texture2D = BattleStats.GetStatImage(p.Status) Dim StatusTexture As Texture2D = BattleStats.GetStatImage(p.Status)
If Not StatusTexture Is Nothing Then If Not StatusTexture Is Nothing Then
Core.SpriteBatch.Draw(StatusTexture, New Rectangle(CInt(pos.X) + 10, CInt(pos.Y) + 26, 38, 12), New Color(255, 255, 255, _moveMenuAlpha)) Core.SpriteBatch.Draw(StatusTexture, New Rectangle(CInt(pos.X) + 12, CInt(pos.Y) + 26, 38, 12), New Color(255, 255, 255, _moveMenuAlpha))
caughtX = -16 caughtX = -16
End If End If
@ -268,6 +302,7 @@
End Select End Select
DrawWeather(BattleScreen) DrawWeather(BattleScreen)
DrawTerrain(BattleScreen)
End If End If
End Sub End Sub
@ -383,11 +418,13 @@
Public Sub Activate(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean) Public Sub Activate(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean)
If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then
If Controls.Accept(False, True, True) = True And isSelected = True Then If Controls.Accept(False, True, True) = True And isSelected = True Then
SoundManager.PlaySound("select")
Me.ClickAction(BattleScreen) Me.ClickAction(BattleScreen)
End If End If
If Controls.Accept(True, False, False) = True Then If Controls.Accept(True, False, False) = True Then
If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then
If isSelected = True Then If isSelected = True Then
SoundManager.PlaySound("select")
Me.ClickAction(BattleScreen) Me.ClickAction(BattleScreen)
Else Else
BattleScreen.BattleMenu._mainMenuNextIndex = Me.Index BattleScreen.BattleMenu._mainMenuNextIndex = Me.Index
@ -462,11 +499,13 @@
If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then
If Me.Move.CurrentPP > 0 Or isSelected = False Then If Me.Move.CurrentPP > 0 Or isSelected = False Then
If Controls.Accept(False, True, True) = True And isSelected = True Then If Controls.Accept(False, True, True) = True And isSelected = True Then
SoundManager.PlaySound("select")
Me.ClickAction(BattleScreen) Me.ClickAction(BattleScreen)
End If End If
If Controls.Accept(True, False, False) = True Then If Controls.Accept(True, False, False) = True Then
If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then
If isSelected = True Then If isSelected = True Then
SoundManager.PlaySound("select")
Me.ClickAction(BattleScreen) Me.ClickAction(BattleScreen)
Else Else
BattleScreen.BattleMenu._moveMenuNextIndex = Me.Index BattleScreen.BattleMenu._moveMenuNextIndex = Me.Index
@ -497,10 +536,10 @@
l_canSelect = False l_canSelect = False
ElseIf _isExtracting = True Then ElseIf _isExtracting = True Then
If _selectedItemExtended < 175 Then If _selectedItemExtended < 200 Then
_selectedItemExtended += 40 _selectedItemExtended += 40
If _selectedItemExtended >= 175 Then If _selectedItemExtended >= 200 Then
_selectedItemExtended = 175 _selectedItemExtended = 200
_isExtracting = False _isExtracting = False
End If End If
End If End If
@ -851,6 +890,7 @@
UpdateMenuOptions(_moveMenuIndex, _moveMenuNextIndex, _moveMenuItemList.Count) UpdateMenuOptions(_moveMenuIndex, _moveMenuNextIndex, _moveMenuItemList.Count)
If Controls.Dismiss(True, True, True) = True And _retractMenu = False And _isExtracting = False And _isRetracting = False Then If Controls.Dismiss(True, True, True) = True And _retractMenu = False And _isExtracting = False And _isRetracting = False Then
SoundManager.PlaySound("select")
_retractMenu = True _retractMenu = True
_nextMenuState = MenuStates.Main _nextMenuState = MenuStates.Main

View File

@ -8,6 +8,10 @@
Public OwnFaint As Boolean = False Public OwnFaint As Boolean = False
Public OppFaint As Boolean = False Public OppFaint As Boolean = False
'Used for moves like U-turn (self-switch)
Public OwnSelfSwitch As Boolean = False
Public OppSelfSwitch As Boolean = False
'Used for lead picking in PvP Battles 'Used for lead picking in PvP Battles
Public Shared OwnLeadIndex As Integer = 0 Public Shared OwnLeadIndex As Integer = 0
Public Shared OppLeadIndex As Integer = 0 Public Shared OppLeadIndex As Integer = 0
@ -118,6 +122,8 @@
Me.IsTrainerBattle = False Me.IsTrainerBattle = False
Me.MouseVisible = False Me.MouseVisible = False
Me.PVPGameJoltID = "" Me.PVPGameJoltID = ""
'Reset variable when new battle starts
BattleSystem.Battle.Caught = False
End Sub End Sub
Public Sub New(ByVal Trainer As Trainer, ByVal OverworldScreen As Screen, ByVal defaultMapType As Integer) Public Sub New(ByVal Trainer As Trainer, ByVal OverworldScreen As Screen, ByVal defaultMapType As Integer)
@ -284,7 +290,7 @@
q3.PassThis = True q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F) Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!") Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible) Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
@ -428,7 +434,7 @@
q3.PassThis = True q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F) Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!") Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible) Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
@ -680,7 +686,7 @@
q3.PassThis = True q3.PassThis = True
Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F) Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
Dim q4 As TextQueryObject = New TextQueryObject("GO, " & Me.OwnPokemon.GetDisplayName() & "!") Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible) Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
@ -827,7 +833,7 @@ nextIndex:
Next Next
End If End If
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Battle system not final!", New Vector2(0, Core.windowSize.Height - 20), Color.White) 'Core.SpriteBatch.DrawString(FontManager.MiniFont, "Battle system not final!", New Vector2(0, Core.windowSize.Height - 20), Color.White)
TextBox.Draw() TextBox.Draw()

View File

@ -10,13 +10,21 @@
Public OwnTruantRound As Integer = 0 'Truant move counter Public OwnTruantRound As Integer = 0 'Truant move counter
Public OwnImprison As Integer = 0 'Imprison move counter Public OwnImprison As Integer = 0 'Imprison move counter
Public OwnTaunt As Integer = 0 'Taunt move counter Public OwnTaunt As Integer = 0 'Taunt move counter
Public OwnTelekinesis As Integer = 0 'Telekinesis move counter
Public OwnRageCounter As Integer = 0 'Rage move counter Public OwnRageCounter As Integer = 0 'Rage move counter
Public OwnUproar As Integer = 0 'Uproar move counter Public OwnUproar As Integer = 0 'Uproar move counter
Public OwnFocusEnergy As Integer = 0 'Focus energy move counter Public OwnFocusEnergy As Integer = 0 'Focus energy move counter
Public OwnFlashFire As Integer = 0 'Flash Fire move counter
Public OwnEndure As Integer = 0 'Endure move counter Public OwnEndure As Integer = 0 'Endure move counter
Public OwnProtectCounter As Integer = 0 'Protect move counter Public OwnProtectCounter As Integer = 0 'Protect move counter
Public OwnKingsShieldCounter As Integer = 0 'Kings Shield move counter Public OwnKingsShieldCounter As Integer = 0 'Kings Shield move counter
Public OwnSpikyShieldCounter As Integer = 0 'Spiky Shield move counter
Public OwnDetectCounter As Integer = 0 'Detect move counter Public OwnDetectCounter As Integer = 0 'Detect move counter
Public OwnBanefulBunkerCounter As Integer = 0 'Baneful Bunker move counter
Public OwnCraftyShieldCounter As Integer = 0 'Crafty Shield move counter
Public OwnMatBlockCounter As Integer = 0 'Mat Block move counter
Public OwnWideGuardCounter As Integer = 0 'Wide Guard move counter
Public OwnQuickGuardCounter As Integer = 0 'Quick Guard move counter
Public OwnIngrain As Integer = 0 'Ingrain move counter Public OwnIngrain As Integer = 0 'Ingrain move counter
Public OwnSubstitute As Integer = 0 'Substitute HP left Public OwnSubstitute As Integer = 0 'Substitute HP left
Public OwnLuckyChant As Integer = 0 'Lucky chant move counter Public OwnLuckyChant As Integer = 0 'Lucky chant move counter
@ -51,6 +59,7 @@
Public OwnLastDamage As Integer = 0 'Last Damage the own Pokémon has done by moves. Public OwnLastDamage As Integer = 0 'Last Damage the own Pokémon has done by moves.
Public OwnLeechSeed As Integer = 0 'The opponent used leech seed Public OwnLeechSeed As Integer = 0 'The opponent used leech seed
Public OwnSolarBeam As Integer = 0 'Charge counter for solar beam Public OwnSolarBeam As Integer = 0 'Charge counter for solar beam
Public OwnSolarBlade As Integer = 0 'Charge counter for solar blade
Public OwnLockOn As Integer = 0 'Counter for the moves lock-on and mind reader Public OwnLockOn As Integer = 0 'Counter for the moves lock-on and mind reader
Public OwnBideCounter As Integer = 0 'Counter for the Bide move Public OwnBideCounter As Integer = 0 'Counter for the Bide move
Public OwnBideDamage As Integer = 0 'Half of the damage dealt by bide Public OwnBideDamage As Integer = 0 'Half of the damage dealt by bide
@ -62,6 +71,7 @@
Public OwnMiracleEye As Integer = 0 'Own Dark type Pokémon can be hit by Psychic type attacks Public OwnMiracleEye As Integer = 0 'Own Dark type Pokémon can be hit by Psychic type attacks
Public OwnProtectMovesCount As Integer = 0 'Counts uses of protect moves Public OwnProtectMovesCount As Integer = 0 'Counts uses of protect moves
Public OwnFuryCutter As Integer = 0 'Counter for the move fury cutter Public OwnFuryCutter As Integer = 0 'Counter for the move fury cutter
Public OwnEchoedVoice As Integer = 0 'Counter for the move echoed voice
Public OwnPokemonTurns As Integer = 0 'Turns for how long the own pokemon has been in battle Public OwnPokemonTurns As Integer = 0 'Turns for how long the own pokemon has been in battle
Public OwnStockpileCount As Integer = 0 'A counter for the stockpile moves used for Swallow and Spit Up Public OwnStockpileCount As Integer = 0 'A counter for the stockpile moves used for Swallow and Spit Up
Public OwnIceBurnCounter As Integer = 0 'Counter for the Ice Burn move. Public OwnIceBurnCounter As Integer = 0 'Counter for the Ice Burn move.
@ -76,7 +86,9 @@
Public OwnBounceCounter As Integer = 0 Public OwnBounceCounter As Integer = 0
Public OwnDiveCounter As Integer = 0 Public OwnDiveCounter As Integer = 0
Public OwnShadowForceCounter As Integer = 0 Public OwnShadowForceCounter As Integer = 0
Public OwnPhantomForceCounter As Integer = 0
Public OwnSkyDropCounter As Integer = 0 Public OwnSkyDropCounter As Integer = 0
Public OwnGeomancyCounter As Integer = 0
Public OwnWrap As Integer = 0 Public OwnWrap As Integer = 0
Public OwnWhirlpool As Integer = 0 Public OwnWhirlpool As Integer = 0
Public OwnBind As Integer = 0 Public OwnBind As Integer = 0
@ -88,6 +100,7 @@
Public OwnUsedMoves As New List(Of Integer) Public OwnUsedMoves As New List(Of Integer)
Public OwnMagicCoat As Integer = 0 Public OwnMagicCoat As Integer = 0
Public OwnConsumedItem As Item = Nothing Public OwnConsumedItem As Item = Nothing
Public OwnSmacked As Integer = 0 'Smack Down effect condition
Public OwnPursuit As Boolean = False Public OwnPursuit As Boolean = False
Public OwnMegaEvolved As Boolean = False Public OwnMegaEvolved As Boolean = False
Public OwnRoostUsed As Boolean = False 'If roost got used, this is true and will get set false and revert types at the end of a turn. Public OwnRoostUsed As Boolean = False 'If roost got used, this is true and will get set false and revert types at the end of a turn.
@ -130,13 +143,21 @@
Public OppImprison As Integer = 0 Public OppImprison As Integer = 0
Public OppHealBlock As Integer = 0 Public OppHealBlock As Integer = 0
Public OppTaunt As Integer = 0 Public OppTaunt As Integer = 0
Public OppTelekinesis As Integer = 0
Public OppRageCounter As Integer = 0 Public OppRageCounter As Integer = 0
Public OppUproar As Integer = 0 Public OppUproar As Integer = 0
Public OppFocusEnergy As Integer = 0 Public OppFocusEnergy As Integer = 0
Public OppFlashFire As Integer = 0
Public OppEndure As Integer = 0 Public OppEndure As Integer = 0
Public OppProtectCounter As Integer = 0 Public OppProtectCounter As Integer = 0
Public OppKingsShieldCounter As Integer = 0 Public OppKingsShieldCounter As Integer = 0
Public OppSpikyShieldCounter As Integer = 0
Public OppDetectCounter As Integer = 0 Public OppDetectCounter As Integer = 0
Public OppBanefulBunkerCounter As Integer = 0
Public OppCraftyShieldCounter As Integer = 0
Public OppMatBlockCounter As Integer = 0
Public OppWideGuardCounter As Integer = 0
Public OppQuickGuardCounter As Integer = 0
Public OppIngrain As Integer = 0 Public OppIngrain As Integer = 0
Public OppSubstitute As Integer = 0 Public OppSubstitute As Integer = 0
Public OppSafeguard As Integer = 0 Public OppSafeguard As Integer = 0
@ -176,6 +197,7 @@
Public OppLastDamage As Integer = 0 Public OppLastDamage As Integer = 0
Public OppLeechSeed As Integer = 0 Public OppLeechSeed As Integer = 0
Public OppSolarBeam As Integer = 0 Public OppSolarBeam As Integer = 0
Public OppSolarBlade As Integer = 0
Public OppLockOn As Integer = 0 Public OppLockOn As Integer = 0
Public OppBideCounter As Integer = 0 Public OppBideCounter As Integer = 0
Public OppBideDamage As Integer = 0 Public OppBideDamage As Integer = 0
@ -187,6 +209,7 @@
Public OppMiracleEye As Integer = 0 Public OppMiracleEye As Integer = 0
Public OppProtectMovesCount As Integer = 0 Public OppProtectMovesCount As Integer = 0
Public OppFuryCutter As Integer = 0 Public OppFuryCutter As Integer = 0
Public OppEchoedVoice As Integer = 0
Public OppPokemonTurns As Integer = 0 Public OppPokemonTurns As Integer = 0
Public OppStockpileCount As Integer = 0 Public OppStockpileCount As Integer = 0
Public OppIceBurnCounter As Integer = 0 Public OppIceBurnCounter As Integer = 0
@ -198,6 +221,7 @@
Public OppPokemonDamagedLastTurn As Boolean = False Public OppPokemonDamagedLastTurn As Boolean = False
Public OppMagicCoat As Integer = 0 Public OppMagicCoat As Integer = 0
Public OppConsumedItem As Item = Nothing Public OppConsumedItem As Item = Nothing
Public OppSmacked As Integer = 0
Public OppPursuit As Boolean = False Public OppPursuit As Boolean = False
Public OppMegaEvolved As Boolean = False Public OppMegaEvolved As Boolean = False
Public OppRoostUsed As Boolean = False Public OppRoostUsed As Boolean = False
@ -210,7 +234,9 @@
Public OppBounceCounter As Integer = 0 Public OppBounceCounter As Integer = 0
Public OppDiveCounter As Integer = 0 Public OppDiveCounter As Integer = 0
Public OppShadowForceCounter As Integer = 0 Public OppShadowForceCounter As Integer = 0
Public OppPhantomForceCounter As Integer = 0
Public OppSkyDropCounter As Integer = 0 Public OppSkyDropCounter As Integer = 0
Public OppGeomancyCounter As Integer = 0
Public OppWrap As Integer = 0 Public OppWrap As Integer = 0
Public OppWhirlpool As Integer = 0 Public OppWhirlpool As Integer = 0
@ -245,6 +271,11 @@
Public Rounds As Integer = 0 Public Rounds As Integer = 0
Public AmuletCoin As Integer = 0 Public AmuletCoin As Integer = 0
Public ElectricTerrain As Integer = 0
Public GrassyTerrain As Integer = 0
Public MistyTerrain As Integer = 0
Public PsychicTerrain As Integer = 0
'Special stuff 'Special stuff
Public RunTries As Integer = 0 Public RunTries As Integer = 0
Public UsedPokemon As New List(Of Integer) Public UsedPokemon As New List(Of Integer)
@ -317,6 +348,63 @@
Return True Return True
End Function End Function
Public Function IsGrounded(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
Dim p As Pokemon = BattleScreen.OwnPokemon
Dim grounded As Boolean = True
If own = True Then
If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" And BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen) = True Then
grounded = False
End If
If BattleScreen.FieldEffects.Gravity > 0 Or BattleScreen.FieldEffects.OwnSmacked > 0 Or BattleScreen.FieldEffects.OwnIngrain > 0 Then
grounded = True
Else
If BattleScreen.FieldEffects.OwnTelekinesis > 0 Or BattleScreen.FieldEffects.OwnMagnetRise > 0 Then
grounded = False
End If
If Not p.Item Is Nothing Then
If p.Item.Name.ToLower() = "air balloon" And BattleScreen.FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
grounded = False
End If
If p.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
grounded = True
End If
End If
End If
If OwnBounceCounter > 0 Or OwnDigCounter > 0 Or OwnDiveCounter > 0 Or OwnFlyCounter > 0 Or OwnPhantomForceCounter > 0 Or OwnShadowForceCounter > 0 Or OwnSkyDropCounter > 0 Then
grounded = False
End If
Else
p = BattleScreen.OppPokemon
If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" And BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen) = True Then
grounded = False
End If
If BattleScreen.FieldEffects.Gravity > 0 Or BattleScreen.FieldEffects.OppSmacked > 0 Or BattleScreen.FieldEffects.OppIngrain > 0 Then
grounded = True
Else
If BattleScreen.FieldEffects.OppTelekinesis > 0 Or BattleScreen.FieldEffects.OppMagnetRise > 0 Then
grounded = False
End If
If Not p.Item Is Nothing Then
If p.Item.Name.ToLower() = "air balloon" And BattleScreen.FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
grounded = False
End If
If p.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then
grounded = True
End If
End If
End If
If OppBounceCounter > 0 Or OppDigCounter > 0 Or OppDiveCounter > 0 Or OppFlyCounter > 0 Or OppPhantomForceCounter > 0 Or OppShadowForceCounter > 0 Or OppSkyDropCounter > 0 Then
grounded = False
End If
End If
If grounded = True Then
Return True
Else
Return False
End If
End Function
Public Function GetPokemonWeight(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Single Public Function GetPokemonWeight(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Single
Dim p As Pokemon = BattleScreen.OwnPokemon Dim p As Pokemon = BattleScreen.OwnPokemon
Dim op As Pokemon = BattleScreen.OppPokemon Dim op As Pokemon = BattleScreen.OppPokemon

View File

@ -117,6 +117,10 @@
''' </summary> ''' </summary>
Public Taunted As Integer = 0 Public Taunted As Integer = 0
''' <summary> ''' <summary>
''' Telekinesis move counter, if true, Pokémon will always be hit.
''' </summary>
Public Telekinesis As Integer = 0
''' <summary>
''' If the Pokémon is affected by Embargo. ''' If the Pokémon is affected by Embargo.
''' </summary> ''' </summary>
Public Embargo As Integer = 0 Public Embargo As Integer = 0
@ -219,6 +223,10 @@
''' </summary> ''' </summary>
Public SolarBeam As Integer = 0 Public SolarBeam As Integer = 0
''' <summary> ''' <summary>
''' Solar blade move counter.
''' </summary>
Public SolarBlade As Integer = 0
''' <summary>
''' Ice Burn move counter. ''' Ice Burn move counter.
''' </summary> ''' </summary>
Public IceBurn As Integer = 0 Public IceBurn As Integer = 0
@ -247,9 +255,17 @@
''' </summary> ''' </summary>
Public ShadowForce As Integer = 0 Public ShadowForce As Integer = 0
''' <summary> ''' <summary>
''' Phantom Force move counter.
''' </summary>
Public PhantomForce As Integer = 0
''' <summary>
''' Sky Drop move counter. ''' Sky Drop move counter.
''' </summary> ''' </summary>
Public SkyDrop As Integer = 0 Public SkyDrop As Integer = 0
''' <summary>
''' Geomancy move counter.
''' </summary>
Public Geomancy As Integer = 0
''' <summary> ''' <summary>
''' Turns this Pokémon is trapped in Wrap. ''' Turns this Pokémon is trapped in Wrap.
@ -297,6 +313,10 @@
''' </summary> ''' </summary>
Public FuryCutter As Integer = 0 Public FuryCutter As Integer = 0
''' <summary> ''' <summary>
''' Counter for the Echoed Voice move.
''' </summary>
Public EchoedVoice As Integer = 0
''' <summary>
''' Counter for the Stockpile move. ''' Counter for the Stockpile move.
''' </summary> ''' </summary>
Public StockPile As Integer = 0 Public StockPile As Integer = 0
@ -337,6 +357,30 @@
''' King's Shield move counter. ''' King's Shield move counter.
''' </summary> ''' </summary>
Public KingsShield As Integer = 0 Public KingsShield As Integer = 0
''' <summary>
''' Spiky Shield move counter.
''' </summary>
Public SpikyShield As Integer = 0
''' <summary>
''' Baneful Bunker move counter.
''' </summary>
Public BanefulBunker As Integer = 0
''' <summary>
''' Crafty Shield move counter.
''' </summary>
Public CraftyShield As Integer = 0
''' <summary>
''' Mat Block move counter.
''' </summary>
Public MatBlock As Integer = 0
''' <summary>
''' Wide Guard move counter.
''' </summary>
Public WideGuard As Integer = 0
''' <summary>
''' Quick Guard move counter.
''' </summary>
Public QuickGuard As Integer = 0
''' <summary> ''' <summary>
''' Ingrain move counter. ''' Ingrain move counter.
@ -359,6 +403,10 @@
''' </summary> ''' </summary>
Public Cursed As Integer = 0 Public Cursed As Integer = 0
''' <summary> ''' <summary>
''' If the Pokémon is affected by Grounding.
''' </summary>
Public Smacked As Integer = 0
''' <summary>
''' Turns until Perish Song faints Pokémon. ''' Turns until Perish Song faints Pokémon.
''' </summary> ''' </summary>
Public PerishSong As Integer = 0 Public PerishSong As Integer = 0
@ -420,12 +468,19 @@
Me.SleepTurns = 0 Me.SleepTurns = 0
Me.TruantRound = 0 Me.TruantRound = 0
Me.Taunted = 0 Me.Taunted = 0
Me.Telekinesis = 0
Me.Rage = 0 Me.Rage = 0
Me.Uproar = 0 Me.Uproar = 0
Me.Endure = 0 Me.Endure = 0
Me.Protect = 0 Me.Protect = 0
Me.Detect = 0 Me.Detect = 0
Me.KingsShield = 0 Me.KingsShield = 0
Me.SpikyShield = 0
Me.BanefulBunker = 0
Me.CraftyShield = 0
Me.MatBlock = 0
Me.WideGuard = 0
Me.QuickGuard = 0
Me.ProtectMoveCounter = 0 Me.ProtectMoveCounter = 0
Me.ToxicRound = 0 Me.ToxicRound = 0
Me.Nightmare = 0 Me.Nightmare = 0
@ -445,10 +500,12 @@
Me.DefenseCurl = 0 Me.DefenseCurl = 0
Me.Charge = 0 Me.Charge = 0
Me.SolarBeam = 0 Me.SolarBeam = 0
Me.SolarBlade = 0
Me.LansatBerry = 0 Me.LansatBerry = 0
Me.CustapBerry = 0 Me.CustapBerry = 0
Me.Trapped = 0 Me.Trapped = 0
Me.FuryCutter = 0 Me.FuryCutter = 0
Me.EchoedVoice = 0
Me.TurnsInBattle = 0 Me.TurnsInBattle = 0
Me.StockPile = 0 Me.StockPile = 0
Me.DestinyBond = 0 Me.DestinyBond = 0
@ -461,7 +518,9 @@
Me.Bounce = 0 Me.Bounce = 0
Me.Dive = 0 Me.Dive = 0
Me.ShadowForce = 0 Me.ShadowForce = 0
Me.PhantomForce = 0
Me.SkyDrop = 0 Me.SkyDrop = 0
Me.Geomancy = 0
Me.SkyAttack = 0 Me.SkyAttack = 0
Me.RazorWind = 0 Me.RazorWind = 0
Me.SkullBash = 0 Me.SkullBash = 0
@ -475,6 +534,7 @@
Me.Bide = 0 Me.Bide = 0
Me.BideDamage = 0 Me.BideDamage = 0
Me.Roost = 0 Me.Roost = 0
Me.Smacked = 0
'If Baton Pass is not used to switch, also reset these variables: 'If Baton Pass is not used to switch, also reset these variables:
If BatonPassed = False Then If BatonPassed = False Then

View File

@ -111,9 +111,10 @@
If _chooseIndex = 0 Then If _chooseIndex = 0 Then
Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), AddressOf ChoosePokemon, "Choose Pokémon to battle!", False) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), AddressOf ChoosePokemon, "Choose Pokémon to battle!", False) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True}
AddHandler selScreen.SelectedObject, AddressOf ChoosePokemonHandler AddHandler selScreen.SelectedObject, AddressOf ChoosePokemonHandler
SoundManager.PlaySound("select")
Core.SetScreen(selScreen) Core.SetScreen(selScreen)
Else Else
SoundManager.PlaySound("select")
_ready = True _ready = True
End If End If
End If End If

View File

@ -59,6 +59,7 @@
End If End If
Else Else
If Controls.Accept(True, True) = True Then If Controls.Accept(True, True) = True Then
SoundManager.PlaySound("select")
Me._ready = True Me._ready = True
End If End If
End If End If

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,272 @@
version=2
:if:<register.registered(First_time_champion)>=false
@player.move(0)
@player.turnto(1)
@text.show(I'm sorry this club~is for members only.*Please leave.)
@player.turnto(2)
@player.move(1)
@player.warp(goldenrod.dat,15,0.1,21,0)
@level.update
@player.move(1)
:end
:endif
:if:<register.registered(clubintro)>=false
@Register.register(clubregisters,int,0)
@player.move(0)
@player.turnto(1)
:if:<player.gender>=0
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~Miss <player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:else
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~Mister <player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:endif
@register.register(clubintro)
:endif
:if:<Register.registered(EusineHere)>=false <and> <Register.registered(EusineNotHere)>=false <and> <register.registered(EusineRematchTalk)>=true
:if:<system.random(7)>=5
@register.registertime(EusineHere,20,hour)
:else
@register.registertime(EusineNotHere,20,hour)
:endif
:endif
:if:<Register.registered(LiHere)>=false <and> <Register.registered(LiNotHere)>=false <and> <register.registered(LiRematchTalk)>=true
:if:<system.random(10)>=5
@register.registertime(LiHere,4,hour)
@register.registertime(LiNotHere,3,day)
:else
@register.registertime(LiNotHere,1,day)
:endif
:endif
:if:<Register.registered(LiHere)>=true
@npc.warp(19,~,0.2,~)
:endif
:if:<Environment.day>=Sunday
:if:<Environment.hour><4 <and> <Environment.hour>>0
:if:<register.registered(TRTPrematchTalk)>=true
@npc.warp(20,~,3.2,~)
@npc.warp(21,~,3.2,~)
@npc.warp(22,~,3.2,~)
:endif
:endif
:if:<Environment.hour><12 <and> <Environment.hour>>5
:if:<register.registered(BugsyRematchTalk)>=true
@npc.warp(10,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>6
:if:<register.registered(ErikaRematchTalk)>=true
@npc.warp(4,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(BrockRematchTalk)>=true
@npc.warp(1,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>14
:if:<register.registered(MistyRematchTalk)>=true
@npc.warp(2,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Monday
:if:<Environment.hour><9 <and> <Environment.hour>>2
:if:<register.registered(ChuckRematchTalk)>=true
@npc.warp(13,~,0.2,~)
:endif
:endif
:if:<Environment.hour><12 <and> <Environment.hour>>4
:if:<register.registered(BugsyRematchTalk)>=true
@npc.warp(10,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(BrockRematchTalk)>=true
@npc.warp(1,~,0.2,~)
:endif
:endif
:if:<Environment.hour><19 <and> <Environment.hour>>12
:if:<register.registered(JasmineRematchTalk)>=true
@npc.warp(14,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Tuesday
:if:<Environment.hour><11 <and> <Environment.hour>>2
:if:<register.registered(BlaineRematchTalk)>=true
@npc.warp(7,~,0.2,~)
:endif
:endif
:if:<Environment.hour><12 <and> <Environment.hour>>4
:if:<register.registered(BugsyRematchTalk)>=true
@npc.warp(10,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(BrockRematchTalk)>=true
@npc.warp(1,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>14
:if:<register.registered(PryceRematchTalk)>=true
@npc.warp(15,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Wednesday
:if:<Environment.hour><9 <and> <Environment.hour>>2
:if:<register.registered(ChuckRematchTalk)>=true
@npc.warp(13,~,0.2,~)
:endif
:if:<register.registered(KiyoRematchTalk)>=true
@npc.warp(18,~,0.2,~)
:endif
:endif
:if:<Environment.hour><22 <and> <Environment.hour>>6
:if:<register.registered(BlueRematchTalk)>=true
@npc.warp(8,~,0.2,~)
:endif
:endif
:if:<Environment.hour><19 <and> <Environment.hour>>12
:if:<register.registered(JasmineRematchTalk)>=true
@npc.warp(14,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Thursday
:if:<Environment.hour><11 <and> <Environment.hour>>2
:if:<register.registered(BlaineRematchTalk)>=true
@npc.warp(7,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(SurgeRematchTalk)>=true
@npc.warp(3,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>9
:if:<register.registered(OakPrematchTalk)>=true
@npc.warp(30,~,3.2,~)
@npc.warp(31,~,3.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>14
:if:<register.registered(PryceRematchTalk)>=true
@npc.warp(15,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>16
:if:<register.registered(ClairRematchTalk)>=true
@npc.warp(16,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Friday
:if:<Environment.hour><9 <and> <Environment.hour>>2
:if:<register.registered(ChuckRematchTalk)>=true
@npc.warp(13,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(SurgeRematchTalk)>=true
@npc.warp(3,~,0.2,~)
:endif
:endif
:if:<Environment.hour><19 <and> <Environment.hour>>12
:if:<register.registered(JasmineRematchTalk)>=true
@npc.warp(14,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>16
:if:<register.registered(ClairRematchTalk)>=true
@npc.warp(16,~,0.2,~)
:endif
:endif
:endif
:if:<Environment.day>=Saturday
:if:<Environment.hour><15 <and> <Environment.hour>>6
:if:<register.registered(ErikaRematchTalk)>=true
@npc.warp(4,~,0.2,~)
:endif
:endif
:if:<Environment.hour><15 <and> <Environment.hour>>8
:if:<register.registered(SurgeRematchTalk)>=true
@npc.warp(3,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>14
:if:<register.registered(MistyRematchTalk)>=true
@npc.warp(2,~,0.2,~)
:endif
:endif
:if:<Environment.hour><23 <and> <Environment.hour>>16
:if:<register.registered(ClairRematchTalk)>=true
@npc.warp(16,~,0.2,~)
:endif
:endif
:endif
#Everyday
:if:<Environment.hour><4 <and> <Environment.hour>>0
:if:<register.registered(JanineRematchTalk)>=true
@npc.warp(5,~,0.2,~)
:endif
:endif
:if:<Environment.hour><7 <and> <Environment.hour>>3
:if:<register.registered(FalknerRematchTalk)>=true
@npc.warp(9,~,0.2,~)
:endif
:endif
:if:<Environment.hour><17 <and> <Environment.hour>>13
:if:<register.registered(SabrinaRematchTalk)>=true
@npc.warp(6,~,0.2,~)
:endif
:endif
:if:<Environment.hour><22 <and> <Environment.hour>>18
:if:<register.registered(WhitneyRematchTalk)>=true
@npc.warp(11,~,0.2,~)
:endif
:endif
:if:<Environment.hour>=0 <or> <Environment.hour>=22 <or> <Environment.hour>=23
:if:<register.registered(MortyRematchTalk)>=true
@npc.warp(12,~,0.2,~)
:endif
:if:<register.registered(EusineHere)>=true
@npc.warp(17,~,0.2,~)
:endif
:endif
:if:<register.registered(GreenAtClub)>=true
@npc.warp(99,~,3.2,~)
:endif
:if:<register.value(clubregisters)>>15 <and> <register.registered(clubextendinvite)>=false
@player.move(0)
@player.turnto(1)
:if:<player.gender>=0
@text.show(Oh, Miss <player.name>.*It is so good to see you!*I am not sure what you~told them, but all of the~Gym Leaders from both Johto~and Kanto have been~frequenting the club!*The battles we have~witnessed here have been~spectacular!*I suspect our reputation~for hosting the strongest~trainers has begun to spread.*If you meet a worthy trainer~feel free to invite them~to visit us!)
:else
@text.show(Oh, Mister <player.name>.*It is so good to see you!*I am not sure what you~told them, but all of the~Gym Leaders from both Johto~and Kanto have been~frequenting the club!*The battles we have~witnessed here have been~spectacular!*I suspect our reputation~for hosting the strongest~trainers has begun to spread.*If you meet a worthy trainer~feel free to invite them~to visit us!)
:endif
@register.register(clubextendinvite)
:if:<register.registered(shrinecelebi)>=true
@npc.register(tohjofalls\hideout.dat|3|position|3,0,0)
@npc.register(tohjofalls\hideout.dat|4|position|4,0,1)
@npc.register(tohjofalls\hideout.dat|5|position|5,0,0)
:endif
:endif
:end

Binary file not shown.

View File

@ -0,0 +1,80 @@
version=2
@camera.set(0,1.3,2,6.28,-0.8)
@entity.showmessagebulb(1|10|1|25)
@pokemon.cry(172)
@music.play(show_me_around)
@level.wait(30)
@player.turnto(3)
@npc.warp(25,11,0,24)
@npc.move(25,1)
@npc.turn(25,1)
@text.show(It's a Pichu...!*One of its ears is spiky!)
@pokemon.cry(172)
@level.wait(20)
@npc.warp(26,4,0,26)
@npc.move(26,2)
@player.turnto(2)
@player.move(1)
@npc.move(25,1)
@npc.turn(25,2)
@player.turnto(1)
@npc.move(26,3)
@text.show(Hey, hey!*Be careful around~that shrine!*People are said to go~missing after messing~around here.*Some suspect a Pokémon is~behind all of this.)
@entity.showmessagebulb(1|9|1|26)
@npc.turn(26,0)
@npc.move(26,1)
@camera.set(0.8,1.5,3,1.15,-0.5)
@player.turnto(0)
@npc.turn(26,3)
@npc.turn(25,1)
@text.show(Ah, this must be the~Spiky-Eared Pichu that~wanders through the forest.*But it seems so unusually~full of energy...)
@npc.turn(25,2)
@entity.showmessagebulb(5|10|1|25)
@pokemon.cry(172)
@level.wait(30)
@text.show(Oh, it seems like it~was friends with your~Pokémon in days gone by.*It must be very happy to~finally reunite with him.)
@pokemon.cry(172)
@text.show(Now it wants to join your~party, give it a chance!)
@pokemon.cry(172)
@level.wait(15)
@npc.turn(26,2)
@camera.set(0,1.3,2,6.28,-0.8)
@npc.move(26,1)
@player.turnto(1)
@npc.turn(26,3)
@text.show(Here it is, young~trainer, I'll give you~this Pokéball from~my olden days.*Don't worry, it's~still in good condition.)
@player.turnto(0)
@register.register(spiky)
@pokemon.cry(172)
@pokemon.add(172,50,Obtained at,161,Ilex Forest)
@pokemon.setadditionalvalue(<pokemon.count>-1,spiky-eared)
@pokemon.setshiny(<pokemon.count>-1,0)
@pokemon.setgender(<pokemon.count>-1,1)
@pokemon.clearattacks(<pokemon.count>-1)
@pokemon.addattack(<pokemon.count>-1,231)
@pokemon.addattack(<pokemon.count>-1,207)
@pokemon.addattack(<pokemon.count>-1,344)
@pokemon.addattack(<pokemon.count>-1,220)
@pokemon.reloadall
@sound.play(success_small,1)
@text.show(Spiky-Eared Pichu has~joined your party!)
@pokemon.rename(last)
@npc.warp(25,11,-2,24)
@level.update
@level.wait(15)
@player.turnto(1)
@text.show(Being friends with it~should make it happy,~take good care of it!)
@npc.turn(26,1)
@npc.move(26,7)
@npc.turn(26,0)
@npc.move(26,2)
@level.wait(15)
@npc.warp(26,4,-2,26)
@level.update
@music.play(ilex_forest)
@level.wait(15)
@camera.reset
:end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More