diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb index 729d248a9..2427e30b2 100644 --- a/P3D/Battle/BattleSystemV2/Battle.vb +++ b/P3D/Battle/BattleSystemV2/Battle.vb @@ -1121,6 +1121,18 @@ WildHasEscaped = False Exit Sub End If + + 'Prevent turn count from resetting if battle just started + If BattleScreen.FieldEffects.OwnTurnCounts = 0 Then + HasSwitchedInOwn = False + End If + If BattleScreen.FieldEffects.OppTurnCounts = 0 Then + HasSwitchedInOpp = False + End If + + TriggerItemEffect(BattleScreen, True) + TriggerItemEffect(BattleScreen, False) + 'Transform Aegislash with Stance Change ability. If p.Ability.Name.ToLower() = "stance change" AndAlso p.Number = 681 Then If p.AdditionalData = "" Then @@ -1169,7 +1181,7 @@ If p.Status = Pokemon.StatusProblems.Freeze Then If Core.Random.Next(0, 100) < 20 Then - CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thrawed out.", "own defrost") + CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thawed out.", "own defrost") Else BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\effect_ice1", False)) BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is frozen solid!")) @@ -1221,7 +1233,7 @@ truantTurn = BattleScreen.FieldEffects.OppTruantRound End If If truantTurn = 1 Then - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " loafes around.")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is loafing around.")) Exit Sub End If End If @@ -1297,7 +1309,7 @@ p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion) Else BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is confused!")) - 'Previously 'If Core.Random.Next(0, 2) = 0 Then' (Updated to gen 7's 33% instead of 50%) + 'Previously 'If Core.Random.Next(0, 2) = 0 Then' (Updated to gen 7's 33% instead of 50%) If Core.Random.Next(0, 3) = 0 Then Dim a As Attack = New ConfusionAttack() Dim damage As Integer = BattleCalculation.CalculateDamage(a, False, True, True, BattleScreen) @@ -1603,7 +1615,7 @@ If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then moveWorks = False If oppHealblock > 0 Then - ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Volt Absorb!", "healblock") + ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Volt Absorb!", "healblock") Else If op.HP = op.MaxHP Then BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Volt Absorb made " & moveUsed.Name & " useless!")) @@ -1628,7 +1640,7 @@ If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then moveWorks = False If oppHealblock > 0 Then - ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Water Absorb!", "healblock") + ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Water Absorb!", "healblock") Else If op.HP = op.MaxHP Then BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Water Absorb made " & moveUsed.Name & " useless!")) @@ -1642,7 +1654,7 @@ If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then moveWorks = False If oppHealblock > 0 Then - ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Healblock blocked Dry Skin!", "healblock") + ReduceHP(CInt(op.MaxHP / 4), Not own, own, BattleScreen, "Heal Block blocked Dry Skin!", "healblock") Else If op.HP = op.MaxHP Then BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & "'s Dry Skin made " & moveUsed.Name & " useless!")) @@ -1705,6 +1717,13 @@ BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " prevents damage with its Bulletproof ability!")) End If + If BattleScreen.FieldEffects.PsychicTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(Not own, BattleScreen) = True Then + If moveUsed.Priority > 0 Then + moveWorks = False + BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " surrounds itself with Psychic Terrain!")) + End If + End If + If moveWorks = True Then If op.HP > 0 And op.Status <> Pokemon.StatusProblems.Fainted Then Dim protect As Integer = BattleScreen.FieldEffects.OppProtectCounter @@ -1793,7 +1812,7 @@ Dim moveList As String() = {"endeavor", "fling", "explosion", - "selfdestruct", + "self-destruct", "final gambit", "bounce", "dig", @@ -2007,7 +2026,7 @@ Dim PBmoveList As String() = {"secret power", "bug bite", "pluck", - "smelling salt", + "smelling salts", "wake-up slap", "knock off", "relic song", @@ -2151,6 +2170,10 @@ If moveUsed.MakesContact = True Then LowerStat(own, Not own, BattleScreen, "Speed", 1, "Gooey slowed down " & p.GetDisplayName() & "!", "gooey") End If + Case "tangling hair" + If moveUsed.MakesContact = True Then + LowerStat(own, Not own, BattleScreen, "Speed", 1, "Tangling Hair slowed down " & p.GetDisplayName() & "!", "tangling hair") + End If Case "weak armor" If moveUsed.Category = Attack.Categories.Physical Then RaiseStat(Not own, Not own, BattleScreen, "Speed", 2, "Weak Armor causes the Speed to increase!", "weakarmor") @@ -2259,6 +2282,22 @@ End If End If End If + Case "kee" + If moveUsed.Category = Attack.Categories.Physical Then + If AllDamage > 0 Then + If RemoveHeldItem(Not own, Not own, BattleScreen, "", "berry:kee") = True Then + BattleScreen.Battle.RaiseStat(Not own, Not own, BattleScreen, "Defense", 1, "", "berry:kee") + End If + End If + End If + Case "maranga" + If moveUsed.Category = Attack.Categories.Special Then + If AllDamage > 0 Then + If RemoveHeldItem(Not own, Not own, BattleScreen, "", "berry:maranga") = True Then + BattleScreen.Battle.RaiseStat(Not own, Not own, BattleScreen, "Special Defense", 1, "", "berry:maranga") + End If + End If + End If End Select End If End If @@ -2485,6 +2524,16 @@ Return False End If + If own = False Then + If BattleScreen.FieldEffects.OppTurnCounts > BattleScreen.FieldEffects.OwnTurnCounts Then + Return False + End If + Else + If BattleScreen.FieldEffects.OwnTurnCounts > BattleScreen.FieldEffects.OppTurnCounts Then + Return False + End If + End If + If p.HasVolatileStatus(Pokemon.VolatileStatus.Flinch) = True Then Return False End If @@ -2541,6 +2590,11 @@ Return False End If + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the burn.")) + Return False + End If + Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute If own = False Then substitute = BattleScreen.FieldEffects.OppSubstitute @@ -2637,6 +2691,11 @@ Return False End If + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the freeze.")) + Return False + End If + Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute If own = False Then substitute = BattleScreen.FieldEffects.OppSubstitute @@ -2749,6 +2808,11 @@ Return False End If + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the paralysis.")) + Return False + End If + Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute If own = False Then substitute = BattleScreen.FieldEffects.OppSubstitute @@ -2831,6 +2895,16 @@ Return False End If + If BattleScreen.FieldEffects.ElectricTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The electricity prevented the sleep.")) + Return False + End If + + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the sleep.")) + Return False + End If + Dim SleepTurns As Integer = turnsPreset If SleepTurns < 0 Then SleepTurns = Core.Random.Next(1, 4) @@ -2973,6 +3047,11 @@ Return False End If + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the poison.")) + Return False + End If + Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute If own = False Then substitute = BattleScreen.FieldEffects.OppSubstitute @@ -3083,6 +3162,11 @@ Return False End If + If BattleScreen.FieldEffects.MistyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject("The mist prevented the confusion.")) + Return False + End If + Dim confusionTurns As Integer = Core.Random.Next(1, 5) Dim substitute As Integer = BattleScreen.FieldEffects.OwnSubstitute If own = False Then @@ -4050,9 +4134,9 @@ Select Case message Case "" 'Print default message only If cause.StartsWith("berry:") = True Then - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & "berry!")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & " Berry!")) Else - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the item " & lostItem.Name & "!")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the " & lostItem.Name & "!")) End If Case "-1" 'Print no message at all 'Do nothing @@ -4060,9 +4144,9 @@ BattleScreen.BattleQuery.Add(New TextQueryObject(message)) If cause.StartsWith("berry:") = True Then - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & "berry!")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " ate the " & lostItem.Name & " Berry!")) Else - BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the item " & lostItem.Name & "!")) + BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " lost the " & lostItem.Name & "!")) End If End Select End If @@ -4206,6 +4290,38 @@ ChangeWeather(own, own, BattleWeather.WeatherTypes.Sunny, turns, BattleScreen, "The sunlight turned harsh!", "drought") Case "air lock" ChangeWeather(own, own, BattleWeather.WeatherTypes.Clear, 0, BattleScreen, "", "airlock") + Case "electric surge" + If .FieldEffects.ElectricTerrain <= 0 Then + .FieldEffects.ElectricTerrain = turns + .FieldEffects.GrassyTerrain = 0 + .FieldEffects.PsychicTerrain = 0 + .FieldEffects.MistyTerrain = 0 + .BattleQuery.Add(New TextQueryObject("An electric current runs across the battlefield!")) + End If + Case "grassy surge" + If .FieldEffects.GrassyTerrain <= 0 Then + .FieldEffects.ElectricTerrain = 0 + .FieldEffects.GrassyTerrain = turns + .FieldEffects.PsychicTerrain = 0 + .FieldEffects.MistyTerrain = 0 + .BattleQuery.Add(New TextQueryObject("Grass grew to cover the battlefield!")) + End If + Case "misty surge" + If .FieldEffects.MistyTerrain <= 0 Then + .FieldEffects.ElectricTerrain = 0 + .FieldEffects.GrassyTerrain = 0 + .FieldEffects.PsychicTerrain = 0 + .FieldEffects.MistyTerrain = turns + .BattleQuery.Add(New TextQueryObject("Mist swirls around the battlefield!")) + End If + Case "psychic surge" + If .FieldEffects.PsychicTerrain <= 0 Then + .FieldEffects.ElectricTerrain = 0 + .FieldEffects.GrassyTerrain = 0 + .FieldEffects.PsychicTerrain = turns + .FieldEffects.MistyTerrain = 0 + .BattleQuery.Add(New TextQueryObject("The battlefield got weird!")) + End If Case "download" If op.Defense < op.SpDefense Then RaiseStat(own, own, BattleScreen, "Attack", 1, "Download analyzed the foe!", "download") @@ -4365,6 +4481,62 @@ End If End With End Sub + + Public Sub TriggerItemEffect(ByVal BattleScreen As BattleScreen, ByVal own As Boolean) + With BattleScreen + Dim p, op As Pokemon + If own Then + p = .OwnPokemon + op = .OppPokemon + Else + p = .OppPokemon + op = .OwnPokemon + End If + If Not p.Item Is Nothing Then + If .FieldEffects.CanUseItem(own) = True And .FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then + Select Case p.Item.Name.ToLower() + Case "electric seed" + If .FieldEffects.ElectricTerrain > 0 And p.StatDefense < 6 Then + If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then + .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Electric Seed activated!")) + RaiseStat(own, own, BattleScreen, "Defense", 1, "", "item:electricseed") + End If + End If + Case "grassy seed" + If .FieldEffects.GrassyTerrain > 0 And p.StatDefense < 6 Then + If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then + .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Grassy Seed activated!")) + RaiseStat(own, own, BattleScreen, "Defense", 1, "", "item:grassyseed") + End If + End If + Case "misty seed" + If .FieldEffects.MistyTerrain > 0 And p.StatSpDefense < 6 Then + If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then + .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Misty Seed activated!")) + RaiseStat(own, own, BattleScreen, "Special Defense", 1, "", "item:mistyseed") + End If + End If + Case "psychic seed" + If .FieldEffects.PsychicTerrain > 0 And p.StatSpDefense < 6 Then + If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then + .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & "'s Psychic Seed activated!")) + RaiseStat(own, own, BattleScreen, "Special Defense", 1, "", "item:psychicseed") + End If + End If + Case "berserk gene" + If p.StatAttack <> 6 OrElse p.StatSpAttack <> 6 Then + If RemoveHeldItem(own, own, BattleScreen, "-1", "") = True Then + InflictConfusion(own, own, BattleScreen, p.GetDisplayName() & " went berserk due to the Berserk Gene!", "item:berserkgene") + RaiseStat(own, own, BattleScreen, "Attack", 1, "", "item:berserkgene") + RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "item:berserkgene") + End If + End If + End Select + End If + End If + End With + End Sub + Private Sub ApplyForecast(ByVal BattleScreen As BattleScreen) With BattleScreen Dim p As Pokemon = .OwnPokemon @@ -4522,6 +4694,32 @@ End If End If + 'Terrains + If .FieldEffects.ElectricTerrain > 0 Then + .FieldEffects.ElectricTerrain -= 1 + If .FieldEffects.ElectricTerrain = 0 Then + .BattleQuery.Add(New TextQueryObject("The electricity disappeared from the battlefield.")) + End If + End If + If .FieldEffects.GrassyTerrain > 0 Then + .FieldEffects.GrassyTerrain -= 1 + If .FieldEffects.GrassyTerrain = 0 Then + .BattleQuery.Add(New TextQueryObject("The grass disappeared from the battlefield.")) + End If + End If + If .FieldEffects.MistyTerrain > 0 Then + .FieldEffects.MistyTerrain -= 1 + If .FieldEffects.MistyTerrain = 0 Then + .BattleQuery.Add(New TextQueryObject("The mist disappeared from the battlefield.")) + End If + End If + If .FieldEffects.PsychicTerrain > 0 Then + .FieldEffects.PsychicTerrain -= 1 + If .FieldEffects.PsychicTerrain = 0 Then + .BattleQuery.Add(New TextQueryObject("The weirdness disappeared from the battlefield.")) + End If + End If + 'Water Sport If .FieldEffects.WaterSport > 0 Then .FieldEffects.WaterSport -= 1 @@ -4656,8 +4854,10 @@ 'Turn count since battle started .FieldEffects.OwnTurnCounts += 1 - 'Turn count since pokemon switched in(currently used for Fake Out only) + 'Turn count since pokemon switched in (currently used for Fake Out, First Impression, Slow Start) .FieldEffects.OwnPokemonTurns += 1 + + 'Reset turn count for pokemon switching in If HasSwitchedInOwn Then .FieldEffects.OwnPokemonTurns = 0 HasSwitchedInOwn = False @@ -4686,17 +4886,17 @@ End If If .FieldEffects.OwnTaunt > 0 Then .FieldEffects.OwnTaunt = 0 - .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the taunt" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Taunt" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If If .FieldEffects.OwnEncore > 0 Then .FieldEffects.OwnEncore = 0 - .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the encore" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Encore" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If If .FieldEffects.OwnTorment > 0 Then .FieldEffects.OwnTorment = 0 - .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the torment" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OwnPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If 'Remove disable @@ -4754,6 +4954,8 @@ If Me.PlayerWonBattle(BattleScreen) = True Then Exit Sub End If + TriggerItemEffect(BattleScreen, True) + TriggerItemEffect(BattleScreen, False) ChangeCameraAngel(0, True, BattleScreen) If IsAfterFaint = True Then Exit Sub @@ -4840,12 +5042,19 @@ If hailAbilities.Contains(.OwnPokemon.Ability.Name.ToLower()) = False Then If .OwnPokemon.HP > 0 Then Dim hailHP As Integer = CInt(.OwnPokemon.MaxHP / 16) - ReduceHP(hailHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took damage from the hailstorm!", "sandstorm") + ReduceHP(hailHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took damage from the hailstorm!", "hail") End If End If End If End If + 'Grassy Terrain + If .FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) = True Then + If .OwnPokemon.HP > 0 Then + GainHP(CInt(.OwnPokemon.MaxHP / 16), True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " restored some HP due to the Grassy Terrain!", "grassyterrain") + End If + End If + If .OwnPokemon.HP > 0 Then Dim HPChange As Integer = 0 'Use DrySkin/Rain Dish/Hydration/Ice Body Dim HPMessage As String = "" @@ -5219,21 +5428,21 @@ If .FieldEffects.OwnTaunt > 0 And .OwnPokemon.HP > 0 Then 'Taunt .FieldEffects.OwnTaunt -= 1 If .FieldEffects.OwnTaunt = 0 Then - .BattleQuery.Add(New TextQueryObject("The own taunt effect wore off")) + .BattleQuery.Add(New TextQueryObject("The Taunt effect wore off.")) End If End If If .FieldEffects.OwnMagnetRise > 0 And .OwnPokemon.HP > 0 Then 'Magnetrise .FieldEffects.OwnMagnetRise -= 1 If .FieldEffects.OwnMagnetRise = 0 Then - .BattleQuery.Add(New TextQueryObject("Own Magnet Rise effect faded.")) + .BattleQuery.Add(New TextQueryObject("The Magnet Rise effect faded.")) End If End If If .FieldEffects.OwnHealBlock > 0 Then 'Healblock .FieldEffects.OwnHealBlock -= 1 If .FieldEffects.OwnHealBlock = 0 Then - .BattleQuery.Add(New TextQueryObject("The effect of the own heal block faded.")) + .BattleQuery.Add(New TextQueryObject("The effects of Heal Block faded.")) End If End If @@ -5283,7 +5492,7 @@ If .OwnPokemon.HP > 0 And .OwnPokemon.Status = Pokemon.StatusProblems.None Then If Not .OwnPokemon.Item Is Nothing Then If .OwnPokemon.Item.Name.ToLower() = "flame orb" And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then - InflictBurn(True, True, BattleScreen, "Flame orb inflicts a burn!", "flameorb") + InflictBurn(True, True, BattleScreen, "Flame Orb inflicts a burn!", "flameorb") End If End If End If @@ -5291,7 +5500,7 @@ If .OwnPokemon.HP > 0 And .OwnPokemon.Status = Pokemon.StatusProblems.None Then If Not .OwnPokemon.Item Is Nothing Then If .OwnPokemon.Item.Name.ToLower() = "toxic orb" And .FieldEffects.CanUseItem(True) = True And BattleScreen.FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then - InflictPoison(True, True, BattleScreen, True, "Toxic orb inflicts a poisoning!", "toxicorb") + InflictPoison(True, True, BattleScreen, True, "Toxic Orb inflicts a poisoning!", "toxicorb") End If End If End If @@ -5399,8 +5608,10 @@ 'Turn count since battle started .FieldEffects.OppTurnCounts += 1 - 'Turn count (Currently used for Fake Out only) + 'Turn count since pokemon switched in (currently used for Fake Out, First Impression, Slow Start) .FieldEffects.OppPokemonTurns += 1 + + 'Reset turn count for pokemon switching in If HasSwitchedInOpp Then .FieldEffects.OppPokemonTurns = 0 HasSwitchedInOpp = False @@ -5429,17 +5640,17 @@ End If If .FieldEffects.OppTaunt > 0 Then .FieldEffects.OppTaunt = 0 - .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the taunt" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Taunt" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If If .FieldEffects.OppEncore > 0 Then .FieldEffects.OppEncore = 0 - .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the encore" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Encore" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If If .FieldEffects.OppTorment > 0 Then .FieldEffects.OppTorment = 0 - .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the torment" & Environment.NewLine & "due to Mental Herb!")) + .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & " got healed from the Torment" & Environment.NewLine & "due to Mental Herb!")) usedMentalHerb = True End If 'Remove disable @@ -5496,6 +5707,8 @@ If IsAfterFaint = True Then Exit Sub End If + TriggerItemEffect(BattleScreen, True) + TriggerItemEffect(BattleScreen, False) With BattleScreen If .FieldEffects.OppReflect > 0 Then 'Stop reflect .FieldEffects.OppReflect -= 1 @@ -5584,6 +5797,13 @@ End If End If + 'Grassy Terrain + If .FieldEffects.GrassyTerrain > 0 And BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) = True Then + If .OppPokemon.HP > 0 Then + GainHP(CInt(.OppPokemon.MaxHP / 16), False, False, BattleScreen, .OppPokemon.GetDisplayName() & " restored some HP due to the Grassy Terrain!", "grassyterrain") + End If + End If + If .OppPokemon.HP > 0 Then Dim HPChange As Integer = 0 'Use DrySkin/Rain Dish/Hydration/Ice Body Dim HPMessage As String = "" @@ -5958,7 +6178,7 @@ If .FieldEffects.OppTaunt > 0 And .OppPokemon.HP > 0 Then 'Taunt .FieldEffects.OppTaunt -= 1 If .FieldEffects.OppTaunt = 0 Then - .BattleQuery.Add(New TextQueryObject("The opponent's taunt effect wore off")) + .BattleQuery.Add(New TextQueryObject("The opponent's Taunt effect wore off")) End If End If @@ -5972,7 +6192,7 @@ If .FieldEffects.OppHealBlock > 0 Then 'Healblock .FieldEffects.OppHealBlock -= 1 If .FieldEffects.OppHealBlock = 0 Then - .BattleQuery.Add(New TextQueryObject("The effect of the opponent's heal block faded.")) + .BattleQuery.Add(New TextQueryObject("The effect of the opponent's Heal Block faded.")) End If End If @@ -5998,7 +6218,7 @@ .FieldEffects.OppFutureSightTurns -= 1 If .FieldEffects.OppFutureSightTurns = 0 Then If .OwnPokemon.HP > 0 Then - ReduceHP(.FieldEffects.OppFutureSightDamage, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & "took the " & futureSight & " attack!", futureSight.Replace(" ", "").ToLower()) + ReduceHP(.FieldEffects.OppFutureSightDamage, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " took the " & futureSight & " attack!", futureSight.Replace(" ", "").ToLower()) Else .BattleQuery.Add(New TextQueryObject("The " & futureSight & " failed!")) End If @@ -6021,7 +6241,7 @@ If .OppPokemon.HP > 0 And .OppPokemon.Status <> Pokemon.StatusProblems.Burn Then If Not .OppPokemon.Item Is Nothing Then If .OppPokemon.Item.Name.ToLower() = "flame orb" And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - InflictBurn(False, False, BattleScreen, "Flame orb inflicts a burn!", "flameorb") + InflictBurn(False, False, BattleScreen, "Flame Orb inflicts a burn!", "flameorb") End If End If End If @@ -6029,7 +6249,7 @@ If .OppPokemon.HP > 0 And .OppPokemon.Status <> Pokemon.StatusProblems.Poison And .OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then If Not .OppPokemon.Item Is Nothing Then If .OppPokemon.Item.Name.ToLower() = "toxic orb" And .FieldEffects.CanUseItem(False) = True And BattleScreen.FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - InflictPoison(False, False, BattleScreen, True, "Toxic orb inflicts a poisoning!", "toxicorb") + InflictPoison(False, False, BattleScreen, True, "Toxic Orb inflicts a poisoning!", "toxicorb") End If End If End If @@ -6176,6 +6396,7 @@ .OwnSleepTurns = 0 .OwnTruantRound = 0 .OwnTaunt = 0 + .OwnSmacked = 0 .OwnRageCounter = 0 .OwnUproar = 0 If .OwnUsedBatonPass = False Then .OwnFocusEnergy = 0 @@ -6376,22 +6597,7 @@ Dim spikeAffected As Boolean = True Dim rockAffected As Boolean = True - 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 - spikeAffected = False - End If - - If .FieldEffects.Gravity > 0 Then - spikeAffected = True - Else - If Not p.Item Is Nothing Then - If p.Item.Name.ToLower() = "air ballon" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - spikeAffected = False - End If - If p.Item.Name.ToLower() = "iron ball" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - spikeAffected = True - End If - End If - End If + spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) 'Spikes If spikeAffected = True Then @@ -6413,7 +6619,7 @@ If spikeAffected = True Then If .FieldEffects.OppStickyWeb > 0 Then - LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a sticky web!", "sticky web") + LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb") End If @@ -6461,6 +6667,7 @@ End If TriggerAbilityEffect(BattleScreen, True) + TriggerItemEffect(BattleScreen, True) If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then .FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4) @@ -6470,7 +6677,7 @@ BattleScreen.FieldEffects.OwnHealingWish = False If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then - GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The healing wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish") + GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish") CureStatusProblem(True, True, BattleScreen, "", "move:healingwish") End If End If @@ -6515,6 +6722,7 @@ .OppSleepTurns = 0 .OppTruantRound = 0 .OppTaunt = 0 + .OppSmacked = 0 .OppRageCounter = 0 .OppUproar = 0 If .OppUsedBatonPass = False Then .OppFocusEnergy = 0 @@ -6705,22 +6913,7 @@ Dim spikeAffected As Boolean = True Dim rockAffected As Boolean = True - If p.Type1.Type = Element.Types.Flying Or p.Type2.Type = Element.Types.Flying Or p.Ability.Name.ToLower() = "levitate" Then - spikeAffected = False - End If - - If .FieldEffects.Gravity > 0 Then - spikeAffected = True - Else - If Not p.Item Is Nothing Then - If p.Item.Name.ToLower() = "air ballon" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - spikeAffected = False - End If - If p.Item.Name.ToLower() = "iron ball" And .FieldEffects.CanUseItem(False) = True And .FieldEffects.CanUseOwnItem(False, BattleScreen) = True Then - spikeAffected = True - End If - End If - End If + spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) If spikeAffected = True Then If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then @@ -6740,7 +6933,7 @@ If spikeAffected = True Then If .FieldEffects.OwnStickyWeb > 0 Then - LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a sticky web!", "sticky web") + LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb") End If @@ -6785,6 +6978,7 @@ End If TriggerAbilityEffect(BattleScreen, False) + TriggerItemEffect(BattleScreen, False) If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then .FieldEffects.OppSleepTurns = Core.Random.Next(1, 4) @@ -6794,7 +6988,7 @@ BattleScreen.FieldEffects.OppHealingWish = False If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then - GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The healing wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish") + GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish") CureStatusProblem(False, False, BattleScreen, "", "move:healingwish") End If End If diff --git a/P3D/Battle/BattleSystemV2/BattleCalculation.vb b/P3D/Battle/BattleSystemV2/BattleCalculation.vb index 3b64e9f46..c72f3a861 100644 --- a/P3D/Battle/BattleSystemV2/BattleCalculation.vb +++ b/P3D/Battle/BattleSystemV2/BattleCalculation.vb @@ -33,6 +33,12 @@ If moveName = "light screen" Or moveName = "reflect" Then turns = 8 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 If Return turns @@ -272,6 +278,14 @@ If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Sandstorm Then speed *= 2 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 Dim grassPledge As Integer = BattleScreen.FieldEffects.OppGrassPledge @@ -291,11 +305,11 @@ If p.Ability.Name.ToLower() = "slow start" Then If own = True Then - If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then + If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then speed = CInt(speed / 2) End If Else - If BattleScreen.FieldEffects.OppTurnCounts < 5 Then + If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then speed = CInt(speed / 2) End If End If @@ -371,11 +385,11 @@ If p.Ability.Name.ToLower() = "slow start" Then If own = True Then - If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then + If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then attack = CInt(attack / 2) End If Else - If BattleScreen.FieldEffects.OppTurnCounts < 5 Then + If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then attack = CInt(attack / 2) End If End If @@ -491,7 +505,7 @@ result = INIT * ACCM 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 End If End If @@ -674,31 +688,46 @@ op = BattleScreen.OwnPokemon 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 Return True 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 End If - If op.Ability.Name.ToLower() = "arena trap" Then - Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise - 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 + If op.Ability.Name.ToLower() = "arena trap" And op.HP > 0 And BattleScreen.FieldEffects.IsGrounded(own, BattleScreen) = True Then + Return False 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 Return False 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 If own = False Then ingrain = BattleScreen.FieldEffects.OppIngrain @@ -710,13 +739,6 @@ If p.Speed > op.Speed Then Return True 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 B As Integer = op.Speed If B = 0 Then @@ -772,37 +794,84 @@ 'Sheer Cold If move.ID = 329 Then If op.IsType(Element.Types.Ice) Then - effectiveness = 0 - End If - End If - - Dim _targetHasIronBall As Boolean = False - If Not op.Item Is Nothing Then - If op.Item.Name.ToLower() = "iron ball" And BattleScreen.FieldEffects.CanUseItem(own) = True And BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then - _targetHasIronBall = True - 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 - If BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then effectiveness = 0.0F End If End If - Dim ingrain As Integer = BattleScreen.FieldEffects.OppIngrain - If own = False Then - ingrain = BattleScreen.FieldEffects.OwnIngrain + Dim digHit As Boolean = False + Dim airHit As Boolean = False + 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 - If move.GetAttackType(own, BattleScreen).Type = Element.Types.Ground Then - If BattleScreen.FieldEffects.Gravity = 0 And ingrain = 0 And _targetHasIronBall = False Then - Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise - If own = False Then - magnetRise = BattleScreen.FieldEffects.OwnMagnetRise - End If - If magnetRise > 0 Then - effectiveness = 0.0F - End If + 'Grounded hit effectiveness + If digHit = True Or airHit = True Or regHit = True Then + effectiveness = 1.0F + If op.IsType(Element.Types.Electric) Then + effectiveness *= 2 + End If + If op.IsType(Element.Types.Fire) Then + effectiveness *= 2 + 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 @@ -832,7 +901,6 @@ End If End If - If op.IsType(Element.Types.Ghost) = True Then Dim CanHitGhost = False Dim Foresight As Integer = 0 @@ -1018,28 +1086,37 @@ Return True 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.FieldEffects.ClientCanSwitch = False Then Return False 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 End If + If BattleScreen.FieldEffects.OwnTrappedCounter > 0 Then Return False End If - If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" Then - Dim magnetRise As Integer = BattleScreen.FieldEffects.OwnMagnetRise - - If BattleScreen.OwnPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OwnPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then - Return False - End If + If BattleScreen.OppPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OppPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(True, BattleScreen) = True Then + Return False 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 End If @@ -1056,22 +1133,32 @@ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or BattleScreen.OppPokemon.HP <= 0 Then Return True 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 End If + If BattleScreen.FieldEffects.OppTrappedCounter > 0 Then Return False End If - If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" Then - Dim magnetRise As Integer = BattleScreen.FieldEffects.OppMagnetRise - - If BattleScreen.OppPokemon.IsType(Element.Types.Flying) = False And BattleScreen.OppPokemon.Ability.Name.ToLower() <> "levitate" And magnetRise = 0 Then - Return False - End If + If BattleScreen.OwnPokemon.Ability.Name.ToLower() = "arena trap" And BattleScreen.OwnPokemon.HP > 0 And BattleScreen.FieldEffects.IsGrounded(False, BattleScreen) = True Then + Return False 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 End If @@ -1308,10 +1395,6 @@ If Attack.IsJawMove = True Then UA = 1.5F End If - Case "fur coat" - If Attack.Category = Attack.Categories.Physical Then - UA = 0.5F - End If Case "refrigerate" If Attack.Type.Type = Element.Types.Normal Then UA = 1.2F @@ -1436,11 +1519,11 @@ AM = 1.5F Case "slow start" If Own = True Then - If BattleScreen.FieldEffects.OwnTurnCounts < 5 Then + If BattleScreen.FieldEffects.OwnPokemonTurns < 5 Then AM = 0.5F End If Else - If BattleScreen.FieldEffects.OppTurnCounts < 5 Then + If BattleScreen.FieldEffects.OppPokemonTurns < 5 Then AM = 0.5F End If End If @@ -1580,7 +1663,7 @@ DSM = 1.0F 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 End If @@ -1590,6 +1673,10 @@ If Op.Number = 132 Then DMod = 1.5F End If + Case "eviolite" + If Op.IsFullyEvolved = False Then + DMod = 1.5F + End If End Select End If @@ -1600,6 +1687,15 @@ 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 DStat = Attack.GetUseDefenseStat(Op) DSM = GetMultiplierFromStat(Op.StatSpDefense) @@ -1719,6 +1815,18 @@ If BattleScreen.FieldEffects.Weather = BattleWeather.WeatherTypes.Snow Then SR = 1.5F 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 If p.Ability.Name.ToLower() = "flash fire" Then @@ -1904,6 +2012,12 @@ TRB = 0.5F 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 If End If @@ -1935,6 +2049,19 @@ damage = CInt(damage / 2) 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 damage = Op.HP End If diff --git a/P3D/Battle/BattleSystemV2/BattleMenu.vb b/P3D/Battle/BattleSystemV2/BattleMenu.vb index bee180309..ced62ba8a 100644 --- a/P3D/Battle/BattleSystemV2/BattleMenu.vb +++ b/P3D/Battle/BattleSystemV2/BattleMenu.vb @@ -50,7 +50,41 @@ 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.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 Sub @@ -268,6 +302,7 @@ End Select DrawWeather(BattleScreen) + DrawTerrain(BattleScreen) End If End Sub diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb index e8237dd9c..d51444de8 100644 --- a/P3D/Battle/BattleSystemV2/BattleScreen.vb +++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb @@ -8,6 +8,10 @@ Public OwnFaint 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 Public Shared OwnLeadIndex As Integer = 0 Public Shared OppLeadIndex As Integer = 0 @@ -284,7 +288,7 @@ q3.PassThis = True 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) @@ -428,7 +432,7 @@ q3.PassThis = True 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) @@ -680,7 +684,7 @@ q3.PassThis = True 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) diff --git a/P3D/Battle/BattleSystemV2/FieldEffects.vb b/P3D/Battle/BattleSystemV2/FieldEffects.vb index daaabc88d..99e85c7e5 100644 --- a/P3D/Battle/BattleSystemV2/FieldEffects.vb +++ b/P3D/Battle/BattleSystemV2/FieldEffects.vb @@ -10,13 +10,20 @@ Public OwnTruantRound As Integer = 0 'Truant move counter Public OwnImprison As Integer = 0 'Imprison 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 OwnUproar As Integer = 0 'Uproar move counter Public OwnFocusEnergy As Integer = 0 'Focus energy move counter Public OwnEndure As Integer = 0 'Endure move counter Public OwnProtectCounter As Integer = 0 'Protect 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 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 OwnSubstitute As Integer = 0 'Substitute HP left Public OwnLuckyChant As Integer = 0 'Lucky chant move counter @@ -92,6 +99,7 @@ Public OwnUsedMoves As New List(Of Integer) Public OwnMagicCoat As Integer = 0 Public OwnConsumedItem As Item = Nothing + Public OwnSmacked As Integer = 0 'Smack Down effect condition Public OwnPursuit 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. @@ -134,13 +142,20 @@ Public OppImprison As Integer = 0 Public OppHealBlock As Integer = 0 Public OppTaunt As Integer = 0 + Public OppTelekinesis As Integer = 0 Public OppRageCounter As Integer = 0 Public OppUproar As Integer = 0 Public OppFocusEnergy As Integer = 0 Public OppEndure As Integer = 0 Public OppProtectCounter As Integer = 0 Public OppKingsShieldCounter As Integer = 0 + Public OppSpikyShieldCounter 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 OppSubstitute As Integer = 0 Public OppSafeguard As Integer = 0 @@ -204,6 +219,7 @@ Public OppPokemonDamagedLastTurn As Boolean = False Public OppMagicCoat As Integer = 0 Public OppConsumedItem As Item = Nothing + Public OppSmacked As Integer = 0 Public OppPursuit As Boolean = False Public OppMegaEvolved As Boolean = False Public OppRoostUsed As Boolean = False @@ -253,6 +269,11 @@ Public Rounds 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 Public RunTries As Integer = 0 Public UsedPokemon As New List(Of Integer) @@ -325,6 +346,63 @@ Return True 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 Dim p As Pokemon = BattleScreen.OwnPokemon Dim op As Pokemon = BattleScreen.OppPokemon diff --git a/P3D/Battle/BattleSystemV2/PokemonProfile.vb b/P3D/Battle/BattleSystemV2/PokemonProfile.vb index 985c65511..d1b20a3fd 100644 --- a/P3D/Battle/BattleSystemV2/PokemonProfile.vb +++ b/P3D/Battle/BattleSystemV2/PokemonProfile.vb @@ -117,6 +117,10 @@ ''' Public Taunted As Integer = 0 ''' + ''' Telekinesis move counter, if true, Pokémon will always be hit. + ''' + Public Telekinesis As Integer = 0 + ''' ''' If the Pokémon is affected by Embargo. ''' Public Embargo As Integer = 0 @@ -353,6 +357,30 @@ ''' King's Shield move counter. ''' Public KingsShield As Integer = 0 + ''' + ''' Spiky Shield move counter. + ''' + Public SpikyShield As Integer = 0 + ''' + ''' Baneful Bunker move counter. + ''' + Public BanefulBunker As Integer = 0 + ''' + ''' Crafty Shield move counter. + ''' + Public CraftyShield As Integer = 0 + ''' + ''' Mat Block move counter. + ''' + Public MatBlock As Integer = 0 + ''' + ''' Wide Guard move counter. + ''' + Public WideGuard As Integer = 0 + ''' + ''' Quick Guard move counter. + ''' + Public QuickGuard As Integer = 0 ''' ''' Ingrain move counter. @@ -375,6 +403,10 @@ ''' Public Cursed As Integer = 0 ''' + ''' If the Pokémon is affected by Grounding. + ''' + Public Smacked As Integer = 0 + ''' ''' Turns until Perish Song faints Pokémon. ''' Public PerishSong As Integer = 0 @@ -436,12 +468,19 @@ Me.SleepTurns = 0 Me.TruantRound = 0 Me.Taunted = 0 + Me.Telekinesis = 0 Me.Rage = 0 Me.Uproar = 0 Me.Endure = 0 Me.Protect = 0 Me.Detect = 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.ToxicRound = 0 Me.Nightmare = 0 @@ -495,6 +534,7 @@ Me.Bide = 0 Me.BideDamage = 0 Me.Roost = 0 + Me.Smacked = 0 'If Baton Pass is not used to switch, also reset these variables: If BatonPassed = False Then diff --git a/P3D/Content/Data/Scripts/center_script.dat b/P3D/Content/Data/Scripts/center_script.dat index 0c5ec3916..aca43284f 100644 Binary files a/P3D/Content/Data/Scripts/center_script.dat and b/P3D/Content/Data/Scripts/center_script.dat differ diff --git a/P3D/Content/Pokemon/Overworld/Normal/330.png b/P3D/Content/Pokemon/Overworld/Normal/330.png index 2d61ce1f3..83b3ce827 100644 Binary files a/P3D/Content/Pokemon/Overworld/Normal/330.png and b/P3D/Content/Pokemon/Overworld/Normal/330.png differ diff --git a/P3D/Content/Pokemon/Overworld/Shiny/330.png b/P3D/Content/Pokemon/Overworld/Shiny/330.png index 50689104f..b45d45e10 100644 Binary files a/P3D/Content/Pokemon/Overworld/Shiny/330.png and b/P3D/Content/Pokemon/Overworld/Shiny/330.png differ diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj index 0a16403ec..01a6497f7 100644 --- a/P3D/P3D.vbproj +++ b/P3D/P3D.vbproj @@ -10999,6 +10999,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -26097,6 +26106,10 @@ PreserveNewest + + + + @@ -26116,6 +26129,8 @@ + + @@ -26132,6 +26147,7 @@ + @@ -26161,6 +26177,7 @@ + @@ -26172,6 +26189,9 @@ + + + @@ -26184,6 +26204,12 @@ + + + + + + @@ -27099,15 +27125,15 @@ - - + + - + @@ -27117,7 +27143,7 @@ - + @@ -27186,7 +27212,7 @@ - + @@ -27299,7 +27325,7 @@ - + @@ -27322,7 +27348,7 @@ - + @@ -27356,7 +27382,7 @@ - + @@ -27417,7 +27443,7 @@ - + @@ -27445,7 +27471,7 @@ - + @@ -27455,11 +27481,11 @@ - - + + - + @@ -27473,7 +27499,7 @@ - + @@ -27582,7 +27608,7 @@ - + @@ -27595,18 +27621,18 @@ - + - + - + - + @@ -28135,7 +28161,7 @@ - + diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb index e7a6ba831..be18ab2f7 100644 --- a/P3D/Pokemon/Attacks/Attack.vb +++ b/P3D/Pokemon/Attacks/Attack.vb @@ -459,7 +459,7 @@ Case 107 returnMove = New Moves.Normal.Minimize() Case 108 - returnMove = New Moves.Normal.SmokeScreen() + returnMove = New Moves.Normal.Smokescreen() Case 109 returnMove = New Moves.Ghost.ConfuseRay() Case 110 @@ -483,7 +483,7 @@ Case 119 returnMove = New Moves.Flying.MirrorMove() Case 120 - returnMove = New Moves.Normal.Selfdestruct() + returnMove = New Moves.Normal.SelfDestruct() Case 121 returnMove = New Moves.Normal.EggBomb() Case 122 @@ -513,9 +513,9 @@ Case 134 returnMove = New Moves.Psychic.Kinesis() Case 135 - returnMove = New Moves.Normal.Softboiled() + returnMove = New Moves.Normal.SoftBoiled() Case 136 - returnMove = New Moves.Fighting.HiJumpKick() + returnMove = New Moves.Fighting.HighJumpKick() Case 137 returnMove = New Moves.Normal.Glare() Case 138 @@ -613,9 +613,9 @@ Case 184 returnMove = New Moves.Normal.ScaryFace() Case 185 - returnMove = New Moves.Dark.FaintAttack() + returnMove = New Moves.Dark.FeintAttack() Case 186 - returnMove = New Moves.Normal.SweetKiss() + returnMove = New Moves.Fairy.SweetKiss() Case 187 returnMove = New Moves.Normal.BellyDrum() Case 188 @@ -651,7 +651,7 @@ Case 203 returnMove = New Moves.Normal.Endure() Case 204 - returnMove = New Moves.Normal.Charm() + returnMove = New Moves.Fairy.Charm() Case 205 returnMove = New Moves.Rock.Rollout() Case 206 @@ -715,7 +715,7 @@ Case 235 returnMove = New Moves.Grass.Synthesis() Case 236 - returnMove = New Moves.Normal.Moonlight() + returnMove = New Moves.Fairy.Moonlight() Case 237 returnMove = New Moves.Normal.HiddenPower() Case 238 @@ -773,7 +773,7 @@ Case 264 returnMove = New Moves.Fighting.FocusPunch() Case 265 - returnMove = New Moves.Normal.SmellingSalt() + returnMove = New Moves.Normal.SmellingSalts() 'Case 266 'Follow me - Double Battles Case 267 diff --git a/P3D/Pokemon/Attacks/Bug/BugBite.vb b/P3D/Pokemon/Attacks/Bug/BugBite.vb index 009317269..96281df8d 100644 --- a/P3D/Pokemon/Attacks/Bug/BugBite.vb +++ b/P3D/Pokemon/Attacks/Bug/BugBite.vb @@ -14,7 +14,7 @@ Me.Power = 60 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Bug Bite" Me.Description = "The user bites the target. If the target is holding a Berry, the user eats it and gains its effect." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Bug/BugBuzz.vb b/P3D/Pokemon/Attacks/Bug/BugBuzz.vb index 16fb84a0a..a21195ebc 100644 --- a/P3D/Pokemon/Attacks/Bug/BugBuzz.vb +++ b/P3D/Pokemon/Attacks/Bug/BugBuzz.vb @@ -14,7 +14,7 @@ Me.Power = 90 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Bug Buzz" Me.Description = "The user vibrates its wings to generate a damaging sound wave. This may also lower the target's Sp. Def stat." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb b/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb index f58c84655..8f4c7277c 100644 --- a/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb +++ b/P3D/Pokemon/Attacks/Bug/SpiderWeb.vb @@ -26,7 +26,7 @@ '#SpecialDefinitions Me.MakesContact = False - Me.ProtectAffected = True + Me.ProtectAffected = False Me.MagicCoatAffected = True Me.SnatchAffected = False Me.MirrorMoveAffected = True diff --git a/P3D/Pokemon/Attacks/Bug/UTurn.vb b/P3D/Pokemon/Attacks/Bug/U-Turn.vb similarity index 100% rename from P3D/Pokemon/Attacks/Bug/UTurn.vb rename to P3D/Pokemon/Attacks/Bug/U-Turn.vb diff --git a/P3D/Pokemon/Attacks/Bug/Xscissor.vb b/P3D/Pokemon/Attacks/Bug/Xscissor.vb index e975345bb..e6d78ff57 100644 --- a/P3D/Pokemon/Attacks/Bug/Xscissor.vb +++ b/P3D/Pokemon/Attacks/Bug/Xscissor.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Bug - Public Class Xscissor + Public Class XScissor Inherits Attack @@ -14,7 +14,7 @@ Me.Power = 80 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "X-Scissor" Me.Description = "The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dark/Assurance.vb b/P3D/Pokemon/Attacks/Dark/Assurance.vb index 7839049d7..190460604 100644 --- a/P3D/Pokemon/Attacks/Dark/Assurance.vb +++ b/P3D/Pokemon/Attacks/Dark/Assurance.vb @@ -14,7 +14,7 @@ Me.Power = 60 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Smart Me.Name = "Assurance" Me.Description = "If the target has already taken some damage in the same turn, this attack's power is doubled." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dark/Embargo.vb b/P3D/Pokemon/Attacks/Dark/Embargo.vb index 8f67879f9..a200e6893 100644 --- a/P3D/Pokemon/Attacks/Dark/Embargo.vb +++ b/P3D/Pokemon/Attacks/Dark/Embargo.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Embargo" Me.Description = "This move prevents the target from using its held item. Its Trainer is also prevented from using items on it." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Dark/FakeTears.vb b/P3D/Pokemon/Attacks/Dark/FakeTears.vb index ee524b5ad..bb50f5a9f 100644 --- a/P3D/Pokemon/Attacks/Dark/FakeTears.vb +++ b/P3D/Pokemon/Attacks/Dark/FakeTears.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cute Me.Name = "Fake Tears" Me.Description = "The user feigns crying to fluster the target, harshly lowering its Sp. Def stat." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Dark/FaintAttack.vb b/P3D/Pokemon/Attacks/Dark/FeintAttack.vb similarity index 96% rename from P3D/Pokemon/Attacks/Dark/FaintAttack.vb rename to P3D/Pokemon/Attacks/Dark/FeintAttack.vb index 5d694e3ae..3227532ce 100644 --- a/P3D/Pokemon/Attacks/Dark/FaintAttack.vb +++ b/P3D/Pokemon/Attacks/Dark/FeintAttack.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Dark - Public Class FaintAttack + Public Class FeintAttack Inherits Attack @@ -15,7 +15,7 @@ Me.Accuracy = 0 Me.Category = Categories.Physical Me.ContestCategory = ContestCategories.Smart - Me.Name = "Faint Attack" + Me.Name = "Feint Attack" Me.Description = "The user approaches the target disarmingly, then throws a sucker punch. It hits without fail." Me.CriticalChance = 1 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Dark/Fling.vb b/P3D/Pokemon/Attacks/Dark/Fling.vb index 96e57ffdc..d42588999 100644 --- a/P3D/Pokemon/Attacks/Dark/Fling.vb +++ b/P3D/Pokemon/Attacks/Dark/Fling.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Fling" Me.Description = "The user flings its held item at the target to attack. This move's power and effects depend on the item." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dark/NastyPlot.vb b/P3D/Pokemon/Attacks/Dark/NastyPlot.vb index 60b649488..e6f1f1125 100644 --- a/P3D/Pokemon/Attacks/Dark/NastyPlot.vb +++ b/P3D/Pokemon/Attacks/Dark/NastyPlot.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Nasty Plot" Me.Description = "The user stimulates its brain by thinking bad thoughts. It sharply raises the user's Sp. Atk." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Dark/Nightslash.vb b/P3D/Pokemon/Attacks/Dark/Nightslash.vb index 9d1df5432..5e53dd49e 100644 --- a/P3D/Pokemon/Attacks/Dark/Nightslash.vb +++ b/P3D/Pokemon/Attacks/Dark/Nightslash.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Dark - Public Class Nightslash + Public Class NightSlash Inherits Attack @@ -14,7 +14,7 @@ Me.Power = 70 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Night Slash" Me.Description = "The user slashes the target the instant an opportunity arises. Critical hits land more easily." Me.CriticalChance = 2 diff --git a/P3D/Pokemon/Attacks/Dark/PartingShot.vb b/P3D/Pokemon/Attacks/Dark/PartingShot.vb index fb476ee5c..50ca1aec3 100644 --- a/P3D/Pokemon/Attacks/Dark/PartingShot.vb +++ b/P3D/Pokemon/Attacks/Dark/PartingShot.vb @@ -48,14 +48,14 @@ Me.IsAffectedBySubstitute = True Me.IsOneHitKOMove = False - Me.IsWonderGuardAffected = True + Me.IsWonderGuardAffected = False '#End End Sub Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:partingshot") Dim d As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Special Attack", 1, "", "move:partingshot") - If b = False Or d = False Then + If b = False And d = False Then BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) End If End Sub diff --git a/P3D/Pokemon/Attacks/Dark/Payback.vb b/P3D/Pokemon/Attacks/Dark/Payback.vb index 964795160..4cd3250be 100644 --- a/P3D/Pokemon/Attacks/Dark/Payback.vb +++ b/P3D/Pokemon/Attacks/Dark/Payback.vb @@ -14,7 +14,7 @@ Me.Power = 50 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Payback" Me.Description = "If the user moves after the target, this attack's power will be doubled" Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dark/Punishment.vb b/P3D/Pokemon/Attacks/Dark/Punishment.vb index a86d73f8c..3d847790e 100644 --- a/P3D/Pokemon/Attacks/Dark/Punishment.vb +++ b/P3D/Pokemon/Attacks/Dark/Punishment.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cool Me.Name = "Punishment" Me.Description = "This attack's power increases the more the target has powered up with stat changes." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dark/Switcheroo.vb b/P3D/Pokemon/Attacks/Dark/Switcheroo.vb index f00a3b528..897acc640 100644 --- a/P3D/Pokemon/Attacks/Dark/Switcheroo.vb +++ b/P3D/Pokemon/Attacks/Dark/Switcheroo.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Dark Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Smart Me.Name = "Switcheroo" Me.Description = "The user trades held items with the target faster than the eye can follow." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb b/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb index a0b306a69..28ec008a8 100644 --- a/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb +++ b/P3D/Pokemon/Attacks/Dragon/DracoMeteor.vb @@ -14,7 +14,7 @@ Me.Power = 130 Me.Accuracy = 90 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Draco Meteor" Me.Description = "Comets are summoned down from the sky onto the target. The attack's recoil harshly reduces the user's Sp. Atk stat." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb b/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb index fb5fcd9b6..4a41d4ac8 100644 --- a/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb +++ b/P3D/Pokemon/Attacks/Dragon/DragonPulse.vb @@ -14,7 +14,7 @@ Me.Power = 85 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Dragon Pulse" Me.Description = "The target is attacked with a shock wave generated by the user's gaping mouth." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dragon/DragonRush.vb b/P3D/Pokemon/Attacks/Dragon/DragonRush.vb index 4f95beec6..e89ed7b19 100644 --- a/P3D/Pokemon/Attacks/Dragon/DragonRush.vb +++ b/P3D/Pokemon/Attacks/Dragon/DragonRush.vb @@ -14,7 +14,7 @@ Me.Power = 100 Me.Accuracy = 75 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Dragon Rush" Me.Description = "The user tackles the target while exhibiting overwhelming menace. It may also make the target flinch." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb b/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb index e97353d68..6ca73e7b1 100644 --- a/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb +++ b/P3D/Pokemon/Attacks/Dragon/RoarOfTime.vb @@ -14,7 +14,7 @@ Me.Power = 150 Me.Accuracy = 90 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Roar of Time" Me.Description = "The user blasts the target with power that distorts even time. The user can't move on the next turn." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb index c6735f8e0..a86a38f01 100644 --- a/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb +++ b/P3D/Pokemon/Attacks/Dragon/SpacialRend.vb @@ -14,7 +14,7 @@ Me.Power = 100 Me.Accuracy = 95 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Spacial Rend" Me.Description = "The user tears the target along with the space around it. Critical hits land more easily." Me.CriticalChance = 2 diff --git a/P3D/Pokemon/Attacks/Electric/Discharge.vb b/P3D/Pokemon/Attacks/Electric/Discharge.vb index db1576e0a..9bdd34948 100644 --- a/P3D/Pokemon/Attacks/Electric/Discharge.vb +++ b/P3D/Pokemon/Attacks/Electric/Discharge.vb @@ -14,7 +14,7 @@ Me.Power = 80 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Discharge" Me.Description = "The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Electric/MagnetRise.vb b/P3D/Pokemon/Attacks/Electric/MagnetRise.vb index 3cbfeb95a..ad399d3cf 100644 --- a/P3D/Pokemon/Attacks/Electric/MagnetRise.vb +++ b/P3D/Pokemon/Attacks/Electric/MagnetRise.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Magnet Rise" Me.Description = "The user levitates using electrically generated magnetism for five turns." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/Charm.vb b/P3D/Pokemon/Attacks/Fairy/Charm.vb similarity index 98% rename from P3D/Pokemon/Attacks/Normal/Charm.vb rename to P3D/Pokemon/Attacks/Fairy/Charm.vb index e7b9ddeee..9b79cfc00 100644 --- a/P3D/Pokemon/Attacks/Normal/Charm.vb +++ b/P3D/Pokemon/Attacks/Fairy/Charm.vb @@ -1,4 +1,4 @@ -Namespace BattleSystem.Moves.Normal +Namespace BattleSystem.Moves.Fairy Public Class Charm diff --git a/P3D/Pokemon/Attacks/Normal/Moonlight.vb b/P3D/Pokemon/Attacks/Fairy/Moonlight.vb similarity index 98% rename from P3D/Pokemon/Attacks/Normal/Moonlight.vb rename to P3D/Pokemon/Attacks/Fairy/Moonlight.vb index df544156f..e5f1816e3 100644 --- a/P3D/Pokemon/Attacks/Normal/Moonlight.vb +++ b/P3D/Pokemon/Attacks/Fairy/Moonlight.vb @@ -1,4 +1,4 @@ -Namespace BattleSystem.Moves.Normal +Namespace BattleSystem.Moves.Fairy Public Class Moonlight diff --git a/P3D/Pokemon/Attacks/Normal/SweetKiss.vb b/P3D/Pokemon/Attacks/Fairy/SweetKiss.vb similarity index 98% rename from P3D/Pokemon/Attacks/Normal/SweetKiss.vb rename to P3D/Pokemon/Attacks/Fairy/SweetKiss.vb index 296acb765..da0b4c97c 100644 --- a/P3D/Pokemon/Attacks/Normal/SweetKiss.vb +++ b/P3D/Pokemon/Attacks/Fairy/SweetKiss.vb @@ -1,4 +1,4 @@ -Namespace BattleSystem.Moves.Normal +Namespace BattleSystem.Moves.Fairy Public Class SweetKiss diff --git a/P3D/Pokemon/Attacks/Fighting/BulkUp.vb b/P3D/Pokemon/Attacks/Fighting/BulkUp.vb index 2591b803d..526c17672 100644 --- a/P3D/Pokemon/Attacks/Fighting/BulkUp.vb +++ b/P3D/Pokemon/Attacks/Fighting/BulkUp.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Fighting Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Bulk Up" Me.Description = "The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb b/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb index 8da1c7d5c..13e93318e 100644 --- a/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb +++ b/P3D/Pokemon/Attacks/Fighting/CloseCombat.vb @@ -14,7 +14,7 @@ Me.Power = 120 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Close Combat" Me.Description = "The user fights the target up close without guarding itself. It also cuts the user's Defense and Sp. Def." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb b/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb index 6c3d63c00..08d44716a 100644 --- a/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb +++ b/P3D/Pokemon/Attacks/Fighting/DrainPunch.vb @@ -14,7 +14,7 @@ Me.Power = 75 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Tough Me.Name = "Drain Punch" Me.Description = "An energy-draining punch. The user's HP is restored by half the damage taken by the target." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb index 5b6c70f91..8c8888d5b 100644 --- a/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb +++ b/P3D/Pokemon/Attacks/Fighting/FinalGambit.vb @@ -42,7 +42,7 @@ Me.IsHealingMove = False Me.IsRecoilMove = False Me.IsPunchingMove = False - Me.IsDamagingMove = True + Me.IsDamagingMove = False Me.IsProtectMove = False Me.IsSoundMove = False @@ -55,14 +55,23 @@ Me.AIField2 = AIField.Selfdestruct End Sub + Dim dmg As Integer + + Public Overrides Sub PreAttack(Own As Boolean, BattleScreen As BattleScreen) + Dim p As Pokemon = BattleScreen.OwnPokemon + If Own = False Then + p = BattleScreen.OppPokemon + End If + dmg = p.HP + BattleScreen.Battle.ReduceHP(dmg, Own, Own, BattleScreen, p.GetDisplayName() & " risked everything!", "move:finalgambit") + End Sub + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) Dim p As Pokemon = BattleScreen.OwnPokemon If own = False Then p = BattleScreen.OppPokemon End If - Dim dmg As Integer = p.HP - BattleScreen.Battle.ReduceHP(p.HP, own, own, BattleScreen, "", "move:finalgambit") - BattleScreen.Battle.ReduceHP(p.HP, Not own, own, BattleScreen, "", "move:finalgambit") + BattleScreen.Battle.ReduceHP(dmg, Not own, own, BattleScreen, "", "move:finalgambit") End Sub End Class diff --git a/P3D/Pokemon/Attacks/Fighting/HammerArm.vb b/P3D/Pokemon/Attacks/Fighting/HammerArm.vb index d590044dc..47d2ac2a2 100644 --- a/P3D/Pokemon/Attacks/Fighting/HammerArm.vb +++ b/P3D/Pokemon/Attacks/Fighting/HammerArm.vb @@ -14,7 +14,7 @@ Me.Power = 100 Me.Accuracy = 90 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Hammer Arm" Me.Description = "The user swings and hits with its strong and heavy fist. It lowers the user’s Speed, however." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb b/P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb similarity index 97% rename from P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb rename to P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb index 6775e6a38..0cc6e55b0 100644 --- a/P3D/Pokemon/Attacks/Fighting/HiJumpKick.vb +++ b/P3D/Pokemon/Attacks/Fighting/HighJumpKick.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Fighting - Public Class HiJumpKick + Public Class HighJumpKick Inherits Attack @@ -15,7 +15,7 @@ Me.Accuracy = 90 Me.Category = Categories.Physical Me.ContestCategory = ContestCategories.Cool - Me.Name = "Hi Jump Kick" + Me.Name = "High Jump Kick" Me.Description = "The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead." Me.CriticalChance = 1 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb b/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb index 33686c473..7d5e82130 100644 Binary files a/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb and b/P3D/Pokemon/Attacks/Fighting/VacuumWave.vb differ diff --git a/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb b/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb index f6f7ab82d..12205fbeb 100644 --- a/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb +++ b/P3D/Pokemon/Attacks/Fighting/WakeUpSlap.vb @@ -14,7 +14,7 @@ Me.Power = 70 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Wake-Up Slap" Me.Description = "This attack inflicts big damage on a sleeping target. It also wakes the target up, however." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fire/BlazeKick.vb b/P3D/Pokemon/Attacks/Fire/BlazeKick.vb index 58607ec76..79e237f9f 100644 --- a/P3D/Pokemon/Attacks/Fire/BlazeKick.vb +++ b/P3D/Pokemon/Attacks/Fire/BlazeKick.vb @@ -14,7 +14,7 @@ Me.Power = 85 Me.Accuracy = 90 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Blaze Kick" Me.Description = "The user launches a kick that lands a critical hit more easily. It may also leave the target with a burn." Me.CriticalChance = 2 diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb index a995442e7..48a698f0d 100644 --- a/P3D/Pokemon/Attacks/Fire/Ember.vb +++ b/P3D/Pokemon/Attacks/Fire/Ember.vb @@ -14,7 +14,7 @@ Me.Power = 40 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cute Me.Name = "Ember" Me.Description = "The target is attacked with small flames. It may also leave the target with a burn." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fire/FireFang.vb b/P3D/Pokemon/Attacks/Fire/FireFang.vb index 5c6685494..253167605 100644 --- a/P3D/Pokemon/Attacks/Fire/FireFang.vb +++ b/P3D/Pokemon/Attacks/Fire/FireFang.vb @@ -14,7 +14,7 @@ Me.Power = 65 Me.Accuracy = 95 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Fire Fang" Me.Description = "The user bites with flame cloaked fangs. It may also make the target flinch or leave it burned." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fire/FirePunch.vb b/P3D/Pokemon/Attacks/Fire/FirePunch.vb index 723a6a574..e89cc785d 100644 --- a/P3D/Pokemon/Attacks/Fire/FirePunch.vb +++ b/P3D/Pokemon/Attacks/Fire/FirePunch.vb @@ -14,7 +14,7 @@ Me.Power = 75 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Tough Me.Name = "Fire Punch" Me.Description = "The target is punched with a fiery fist. It may also leave the target with a burn." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb b/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb index 2c0deed32..c0d9081b9 100644 --- a/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb +++ b/P3D/Pokemon/Attacks/Fire/FlareBlitz.vb @@ -14,7 +14,7 @@ Me.Power = 120 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cool Me.Name = "Flare Blitz" Me.Description = "The user cloaks itself in fire and charges at the target. The user sustains serious damage and may leave the target burned." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Flying/BraveBird.vb b/P3D/Pokemon/Attacks/Flying/BraveBird.vb index 0fb659f0b..e30611c8e 100644 --- a/P3D/Pokemon/Attacks/Flying/BraveBird.vb +++ b/P3D/Pokemon/Attacks/Flying/BraveBird.vb @@ -14,7 +14,7 @@ Me.Power = 120 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Cool Me.Name = "Brave Bird" Me.Description = "The user tucks in its wings and charges from a low altitude. The user also takes serious damage." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Flying/Chatter.vb b/P3D/Pokemon/Attacks/Flying/Chatter.vb index 771c21314..2abc85a14 100644 Binary files a/P3D/Pokemon/Attacks/Flying/Chatter.vb and b/P3D/Pokemon/Attacks/Flying/Chatter.vb differ diff --git a/P3D/Pokemon/Attacks/Flying/Defog.vb b/P3D/Pokemon/Attacks/Flying/Defog.vb index fb7656f33..7e1abc87c 100644 --- a/P3D/Pokemon/Attacks/Flying/Defog.vb +++ b/P3D/Pokemon/Attacks/Flying/Defog.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Defog" Me.Description = "A strong wind blows away the target's barriers such as Reflect or Light Screen. This also lowers the target's evasiveness." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Flying/Hurricane.vb b/P3D/Pokemon/Attacks/Flying/Hurricane.vb index 8648e8215..b3c225de0 100644 --- a/P3D/Pokemon/Attacks/Flying/Hurricane.vb +++ b/P3D/Pokemon/Attacks/Flying/Hurricane.vb @@ -60,7 +60,7 @@ Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) If Core.Random.Next(0, 100) < Me.GetEffectChance(0, own, BattleScreen) Then - BattleScreen.Battle.InflictConfusion(Not own, own, BattleScreen, "", "move:hurrican") + BattleScreen.Battle.InflictConfusion(Not own, own, BattleScreen, "", "move:hurricane") End If End Sub diff --git a/P3D/Pokemon/Attacks/Flying/Roost.vb b/P3D/Pokemon/Attacks/Flying/Roost.vb index 78e9908a8..5632ec0a0 100644 --- a/P3D/Pokemon/Attacks/Flying/Roost.vb +++ b/P3D/Pokemon/Attacks/Flying/Roost.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Smart Me.Name = "Roost" Me.Description = "The user lands and rests its body. It restores the user's HP by up to half of its max HP." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Flying/Tailwind.vb b/P3D/Pokemon/Attacks/Flying/Tailwind.vb index 486acc68e..f3c209440 100644 --- a/P3D/Pokemon/Attacks/Flying/Tailwind.vb +++ b/P3D/Pokemon/Attacks/Flying/Tailwind.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Flying Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cool Me.Name = "Tailwind" Me.Description = "The user whips up a turbulent whirlwind that ups the Speed stat of the user and its allies for four turns." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ghost/Astonish.vb b/P3D/Pokemon/Attacks/Ghost/Astonish.vb index f8b4f8112..dba859b04 100644 --- a/P3D/Pokemon/Attacks/Ghost/Astonish.vb +++ b/P3D/Pokemon/Attacks/Ghost/Astonish.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Ghost Me.Power = 30 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cute Me.Name = "Astonish" Me.Description = "The user attacks the target while shouting in a startling fashion. This may also make the target flinch." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ghost/Lick.vb b/P3D/Pokemon/Attacks/Ghost/Lick.vb index 7cd1c433e..609f2e296 100644 --- a/P3D/Pokemon/Attacks/Ghost/Lick.vb +++ b/P3D/Pokemon/Attacks/Ghost/Lick.vb @@ -14,7 +14,7 @@ Me.Power = 30 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Lick" Me.Description = "The target is licked with a long tongue, causing damage. It may also leave the target with paralysis." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ghost/OminousWind.vb b/P3D/Pokemon/Attacks/Ghost/OminousWind.vb index 63a554725..776fa2e79 100644 --- a/P3D/Pokemon/Attacks/Ghost/OminousWind.vb +++ b/P3D/Pokemon/Attacks/Ghost/OminousWind.vb @@ -14,7 +14,7 @@ Me.Power = 60 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Ominous Wind" Me.Description = "The user blasts the target with a gust of repulsive wind. It may also raise all the user's stats at once." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb b/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb index 64f796edc..d9e321205 100644 --- a/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb +++ b/P3D/Pokemon/Attacks/Ghost/ShadowClaw.vb @@ -14,7 +14,7 @@ Me.Power = 70 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Cool Me.Name = "Shadow Claw" Me.Description = "The user slashes with a sharp claw made from shadows. Critical hits land more easily." Me.CriticalChance = 2 diff --git a/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb index b0b029489..5f36b72b0 100644 --- a/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb +++ b/P3D/Pokemon/Attacks/Ghost/ShadowForce.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Ghost Me.Power = 120 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cool Me.Name = "Shadow Force" Me.Description = "The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Grass/CottonSpore.vb b/P3D/Pokemon/Attacks/Grass/CottonSpore.vb index ef83744f8..b86ef09fd 100644 --- a/P3D/Pokemon/Attacks/Grass/CottonSpore.vb +++ b/P3D/Pokemon/Attacks/Grass/CottonSpore.vb @@ -19,7 +19,7 @@ Me.Description = "The user releases cotton-like spores that cling to the target, harshly reducing its Speed stat." Me.CriticalChance = 0 Me.IsHMMove = False - Me.Target = Targets.OneAdjacentTarget + Me.Target = Targets.AllAdjacentFoes Me.Priority = 0 Me.TimesToAttack = 1 '#End diff --git a/P3D/Pokemon/Attacks/Grass/GrassKnot.vb b/P3D/Pokemon/Attacks/Grass/GrassKnot.vb index 21635b698..8d2d6b0ef 100644 Binary files a/P3D/Pokemon/Attacks/Grass/GrassKnot.vb and b/P3D/Pokemon/Attacks/Grass/GrassKnot.vb differ diff --git a/P3D/Pokemon/Attacks/Grass/LeafStorm.vb b/P3D/Pokemon/Attacks/Grass/LeafStorm.vb index c7e830d0e..2483c6e2f 100644 --- a/P3D/Pokemon/Attacks/Grass/LeafStorm.vb +++ b/P3D/Pokemon/Attacks/Grass/LeafStorm.vb @@ -14,7 +14,7 @@ Me.Power = 130 Me.Accuracy = 90 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Leaf Storm" Me.Description = "The user whips up a storm of leaves around the target. The attack's recoil harshly lowers the user's Sp. Atk stat." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Grass/PowerWhip.vb b/P3D/Pokemon/Attacks/Grass/PowerWhip.vb index fb88d573b..9f304b969 100644 Binary files a/P3D/Pokemon/Attacks/Grass/PowerWhip.vb and b/P3D/Pokemon/Attacks/Grass/PowerWhip.vb differ diff --git a/P3D/Pokemon/Attacks/Grass/SeedBomb.vb b/P3D/Pokemon/Attacks/Grass/SeedBomb.vb index 04892cbca..f8f7fa748 100644 --- a/P3D/Pokemon/Attacks/Grass/SeedBomb.vb +++ b/P3D/Pokemon/Attacks/Grass/SeedBomb.vb @@ -14,7 +14,7 @@ Me.Power = 80 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Seed Bomb" Me.Description = "The user slams a barrage of hard-shelled seeds on the target from above." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Grass/Seedflare.vb b/P3D/Pokemon/Attacks/Grass/Seedflare.vb index a73d34240..a21043e36 100644 --- a/P3D/Pokemon/Attacks/Grass/Seedflare.vb +++ b/P3D/Pokemon/Attacks/Grass/Seedflare.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Grass - Public Class Seedflare + Public Class SeedFlare Inherits Attack @@ -14,7 +14,7 @@ Me.Power = 120 Me.Accuracy = 85 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Seed Flare" Me.Description = "The user emits a shock wave from its body to attack its target. It may harshly lower the target's Sp. Def." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb index d8fc283b0..62627ac3d 100644 --- a/P3D/Pokemon/Attacks/Grass/Strength Sap.vb +++ b/P3D/Pokemon/Attacks/Grass/Strength Sap.vb @@ -60,11 +60,11 @@ op = BattleScreen.OwnPokemon End If - Dim op_Attack As Integer = BattleCalculation.DetermineBattleAttack(Not own, BattleScreen) + Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:strengthsap") + Dim op_Attack As Integer = BattleCalculation.DetermineBattleAttack(Not own, BattleScreen) Dim heal As Integer = op_Attack - Dim b As Boolean = BattleScreen.Battle.LowerStat(Not own, own, BattleScreen, "Attack", 1, "", "move:strengthsap") If b = True Then If op.Ability.Name.ToLower() = "liquid ooze" And BattleScreen.FieldEffects.CanUseAbility(Not own, BattleScreen) = True Then BattleScreen.Battle.ReduceHP(heal, own, own, BattleScreen, "Liquid Ooze damaged " & p.GetDisplayName() & "!", "liquidooze") diff --git a/P3D/Pokemon/Attacks/Grass/WorrySeed.vb b/P3D/Pokemon/Attacks/Grass/WorrySeed.vb index f80bcf1f1..1e3e2ee63 100644 --- a/P3D/Pokemon/Attacks/Grass/WorrySeed.vb +++ b/P3D/Pokemon/Attacks/Grass/WorrySeed.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Smart Me.Name = "Worry Seed" Me.Description = "A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Ground/Dig.vb b/P3D/Pokemon/Attacks/Ground/Dig.vb index d0322a85f..997c83cd6 100644 --- a/P3D/Pokemon/Attacks/Ground/Dig.vb +++ b/P3D/Pokemon/Attacks/Ground/Dig.vb @@ -14,7 +14,7 @@ Me.Power = 80 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Dig" Me.Description = "The user burrows, then attacks on the second turn. It can also be used to exit dungeons. " Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ground/EarthPower.vb b/P3D/Pokemon/Attacks/Ground/EarthPower.vb index 340b00f06..cfe20f5e4 100644 --- a/P3D/Pokemon/Attacks/Ground/EarthPower.vb +++ b/P3D/Pokemon/Attacks/Ground/EarthPower.vb @@ -14,7 +14,7 @@ Me.Power = 90 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Earth Power" Me.Description = "The user makes the ground under the target erupt with power. This may also lower the target's Sp. Def." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ground/MudBomb.vb b/P3D/Pokemon/Attacks/Ground/MudBomb.vb index aecb44562..007bb2241 100644 --- a/P3D/Pokemon/Attacks/Ground/MudBomb.vb +++ b/P3D/Pokemon/Attacks/Ground/MudBomb.vb @@ -14,7 +14,7 @@ Me.Power = 65 Me.Accuracy = 85 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cute Me.Name = "Mud Bomb" Me.Description = "The user launches a hard-packed mud ball to attack. This may also lower the target's accuracy." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Ground/Sand-Attack.vb b/P3D/Pokemon/Attacks/Ground/SandAttack.vb similarity index 98% rename from P3D/Pokemon/Attacks/Ground/Sand-Attack.vb rename to P3D/Pokemon/Attacks/Ground/SandAttack.vb index 1e4b14d6a..7113a6d0c 100644 --- a/P3D/Pokemon/Attacks/Ground/Sand-Attack.vb +++ b/P3D/Pokemon/Attacks/Ground/SandAttack.vb @@ -15,7 +15,7 @@ Me.Accuracy = 100 Me.Category = Categories.Status Me.ContestCategory = ContestCategories.Cute - Me.Name = "Sand-Attack" + Me.Name = "Sand Attack" Me.Description = "Sand is hurled in the target's face, reducing its accuracy." Me.CriticalChance = 0 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb b/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb index 468786a7a..e5620471b 100644 --- a/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb +++ b/P3D/Pokemon/Attacks/Ground/ThousandArrows.vb @@ -35,7 +35,7 @@ Me.DisabledWhileGravity = False Me.UseEffectiveness = True - Me.ImmunityAffected = False + Me.ImmunityAffected = True Me.HasSecondaryEffect = False Me.RemovesFrozen = False @@ -53,6 +53,25 @@ '#End End Sub + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) + Dim op As Pokemon = BattleScreen.OppPokemon + If own = False Then + op = BattleScreen.OwnPokemon + End If + + If own = True Then + If BattleScreen.FieldEffects.OppSmacked = 0 Then + BattleScreen.FieldEffects.OppSmacked = 1 + BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down.")) + End If + Else + If BattleScreen.FieldEffects.OwnSmacked = 0 Then + BattleScreen.FieldEffects.OwnSmacked = 1 + BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down.")) + End If + End If + End Sub + End Class End Namespace \ No newline at end of file diff --git a/P3D/Pokemon/Attacks/Normal/Acupressure.vb b/P3D/Pokemon/Attacks/Normal/Acupressure.vb index 555b519dc..b2de0d637 100644 --- a/P3D/Pokemon/Attacks/Normal/Acupressure.vb +++ b/P3D/Pokemon/Attacks/Normal/Acupressure.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Acupressure" Me.Description = "The user applies pressure to stress points, sharply boosting one of its or its allies' stats." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Normal/Barrage.vb b/P3D/Pokemon/Attacks/Normal/Barrage.vb index 279df1d0c..c16264221 100644 --- a/P3D/Pokemon/Attacks/Normal/Barrage.vb +++ b/P3D/Pokemon/Attacks/Normal/Barrage.vb @@ -14,7 +14,7 @@ Me.Power = 15 Me.Accuracy = 85 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Barrage" Me.Description = "Round objects are hurled at the target to strike two to five times in a row." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/Bestow.vb b/P3D/Pokemon/Attacks/Normal/Bestow.vb index 373233f42..b3617b7fc 100644 --- a/P3D/Pokemon/Attacks/Normal/Bestow.vb +++ b/P3D/Pokemon/Attacks/Normal/Bestow.vb @@ -64,40 +64,50 @@ op = BattleScreen.OwnPokemon End If - If p.Item Is Nothing Then - Exit Sub - End If - If p.Item.IsMegaStone = True Then - Exit Sub - End If - If p.Ability.Name.ToLower() = "multitype" AndAlso p.Item.Name.ToLower().EndsWith(" plate") Then - Exit Sub - End If - If p.Ability.Name.ToLower() = "rks system" AndAlso p.Item.Name.ToLower().EndsWith(" memory") Then - Exit Sub - End If - If p.Item.Name.ToLower() = "griseous orb" And p.Number = 487 Then - Exit Sub - End If - If p.Item.Name.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then - Exit Sub - End If - If p.Item.Name.ToLower().EndsWith(" mail") = True Then + Dim a As Boolean = False + Dim b As Boolean = False + + If Not p.Item Is Nothing Then + a = True + If p.Item.IsMegaStone = True Then + b = True + End If + If p.Ability.Name.ToLower() = "multitype" AndAlso p.Item.Name.ToLower().EndsWith(" plate") Then + b = True + End If + If p.Ability.Name.ToLower() = "rks system" AndAlso p.Item.Name.ToLower().EndsWith(" memory") Then + b = True + End If + 'Giratina + If p.Item.Name.ToLower() = "griseous orb" And p.Number = 487 Then + b = True + End If + 'Genesect + If p.Item.Name.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then + b = True + End If + If p.Item.Name.ToLower().EndsWith(" mail") = True Then + b = True + End If + Else + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) Exit Sub End If - If op.Item Is Nothing Then + If op.Item Is Nothing And a = True And b = False Then Dim ItemID As Integer = p.Item.ID p.OriginalItem = Item.GetItemByID(p.Item.ID) p.OriginalItem.AdditionalData = p.Item.AdditionalData If BattleScreen.Battle.RemoveHeldItem(own, own, BattleScreen, op.GetDisplayName() & " received the item " & p.Item.Name & " from " & p.GetDisplayName() & "!", "move:bestow") Then - If own = False Then + If own = True Then BattleScreen.FieldEffects.StolenItemIDs.Add(ItemID) End If op.Item = Item.GetItemByID(ItemID) End If + Else + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) End If End Sub diff --git a/P3D/Pokemon/Attacks/Normal/Block.vb b/P3D/Pokemon/Attacks/Normal/Block.vb index d47baa53a..2c49c0d51 100644 --- a/P3D/Pokemon/Attacks/Normal/Block.vb +++ b/P3D/Pokemon/Attacks/Normal/Block.vb @@ -26,7 +26,7 @@ Namespace BattleSystem.Moves.Normal '#SpecialDefinitions Me.MakesContact = False - Me.ProtectAffected = True + Me.ProtectAffected = False Me.MagicCoatAffected = True Me.SnatchAffected = False Me.MirrorMoveAffected = True diff --git a/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb b/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb index eda24e772..dc22752b8 100644 --- a/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb +++ b/P3D/Pokemon/Attacks/Normal/DizzyPunch.vb @@ -14,7 +14,7 @@ Me.Power = 70 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Pound" Me.Description = "The target is physically pounded with a long tail or a foreleg, etc." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/DoubleHit.vb b/P3D/Pokemon/Attacks/Normal/DoubleHit.vb index 18f0980c2..3243e4056 100644 Binary files a/P3D/Pokemon/Attacks/Normal/DoubleHit.vb and b/P3D/Pokemon/Attacks/Normal/DoubleHit.vb differ diff --git a/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb b/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb index 8b613cda0..c423461db 100644 --- a/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb +++ b/P3D/Pokemon/Attacks/Normal/DoubleSlap.vb @@ -14,7 +14,7 @@ Me.Power = 15 Me.Accuracy = 85 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Double Slap" Me.Description = "The target is slapped repeatedly, back and forth, two to five times in a row." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/EggBomb.vb b/P3D/Pokemon/Attacks/Normal/EggBomb.vb index ac939cfe7..3c53cb353 100644 --- a/P3D/Pokemon/Attacks/Normal/EggBomb.vb +++ b/P3D/Pokemon/Attacks/Normal/EggBomb.vb @@ -14,7 +14,7 @@ Me.Power = 100 Me.Accuracy = 75 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Egg Bomb" Me.Description = "A large egg is hurled at the target with maximum force to inflict damage." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/Feint.vb b/P3D/Pokemon/Attacks/Normal/Feint.vb index 2a7ae36a5..62a239f47 100644 --- a/P3D/Pokemon/Attacks/Normal/Feint.vb +++ b/P3D/Pokemon/Attacks/Normal/Feint.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal Me.Power = 30 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Smart Me.Name = "Feint" Me.Description = "An attack that hits a target using Protect or Detect. This also lifts the effects of those moves." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Normal/GigaImpact.vb b/P3D/Pokemon/Attacks/Normal/GigaImpact.vb index b20fe3b5c..3819dc45e 100644 --- a/P3D/Pokemon/Attacks/Normal/GigaImpact.vb +++ b/P3D/Pokemon/Attacks/Normal/GigaImpact.vb @@ -14,7 +14,7 @@ Me.Power = 150 Me.Accuracy = 90 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Tough Me.Name = "Giga Impact" Me.Description = "The user charges at the target using every bit of its power. The user can't move on the next turn." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/Judgement.vb b/P3D/Pokemon/Attacks/Normal/Judgement.vb index 335f998ea..8c4dbdc81 100644 --- a/P3D/Pokemon/Attacks/Normal/Judgement.vb +++ b/P3D/Pokemon/Attacks/Normal/Judgement.vb @@ -14,7 +14,7 @@ Me.Power = 100 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Judgement" Me.Description = "The user releases countless shots of light at the target. This move's type varies depending on the kind of Plate the user is holding." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/MeanLook.vb b/P3D/Pokemon/Attacks/Normal/MeanLook.vb index d90ee00be..6150ec438 100644 --- a/P3D/Pokemon/Attacks/Normal/MeanLook.vb +++ b/P3D/Pokemon/Attacks/Normal/MeanLook.vb @@ -26,7 +26,7 @@ Namespace BattleSystem.Moves.Normal '#SpecialDefinitions Me.MakesContact = False - Me.ProtectAffected = True + Me.ProtectAffected = False Me.MagicCoatAffected = True Me.SnatchAffected = False Me.MirrorMoveAffected = True diff --git a/P3D/Pokemon/Attacks/Normal/NaturalGift.vb b/P3D/Pokemon/Attacks/Normal/NaturalGift.vb index 0063a79bc..3570b8dd3 100644 --- a/P3D/Pokemon/Attacks/Normal/NaturalGift.vb +++ b/P3D/Pokemon/Attacks/Normal/NaturalGift.vb @@ -64,15 +64,19 @@ Namespace BattleSystem.Moves.Normal End If If 1999 < itemID And itemID < 2016 Then - Return 60 + Return 80 ElseIf 2034 < itemID And itemID < 2052 Then - Return 60 - ElseIf 2015 < itemID And itemID < 2031 Then - Return 70 - ElseIf 2031 < itemID And itemID < 2036 Then Return 80 + ElseIf 2063 < itemID And itemID < 2065 Then + Return 80 + ElseIf 2015 < itemID And itemID < 2032 Then + Return 90 + ElseIf 2031 < itemID And itemID < 2035 Then + Return 100 ElseIf 2051 < itemID And itemID < 2064 Then - Return 80 + Return 100 + ElseIf 2064 < itemID And itemID < 2067 Then + Return 100 Else Return 0 End If @@ -89,6 +93,7 @@ Namespace BattleSystem.Moves.Normal Return New Element(CType(p.Item, Items.Berry).Type) End If End If + Return New Element(Element.Types.Normal) End Function @@ -101,18 +106,22 @@ Namespace BattleSystem.Moves.Normal End If If p.Item Is Nothing Then + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) Return True Else If p.Item.isBerry = False Then + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) Return True End If End If If op.Ability.Name.ToLower() = "unnerve" And BattleScreen.FieldEffects.CanUseAbility(Not Own, BattleScreen) = True Then + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) Return True End If If BattleScreen.FieldEffects.CanUseItem(Own) = False Or BattleScreen.FieldEffects.CanUseOwnItem(Own, BattleScreen) = False Then + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) Return True End If diff --git a/P3D/Pokemon/Attacks/Normal/NaturePower.vb b/P3D/Pokemon/Attacks/Normal/NaturePower.vb index 82e6fb7ac..fa57407cc 100644 --- a/P3D/Pokemon/Attacks/Normal/NaturePower.vb +++ b/P3D/Pokemon/Attacks/Normal/NaturePower.vb @@ -19,7 +19,7 @@ Me.Description = "An attack that makes use of nature’s power. Its effects vary depending on the user’s environment." Me.CriticalChance = 0 Me.IsHMMove = False - Me.Target = Targets.Self + Me.Target = Targets.OneAdjacentTarget Me.Priority = 0 Me.TimesToAttack = 1 '#End diff --git a/P3D/Pokemon/Attacks/Normal/RockClimb.vb b/P3D/Pokemon/Attacks/Normal/RockClimb.vb index d5b435888..acbd85326 100644 Binary files a/P3D/Pokemon/Attacks/Normal/RockClimb.vb and b/P3D/Pokemon/Attacks/Normal/RockClimb.vb differ diff --git a/P3D/Pokemon/Attacks/Normal/Selfdestruct.vb b/P3D/Pokemon/Attacks/Normal/Self-Destruct.vb similarity index 96% rename from P3D/Pokemon/Attacks/Normal/Selfdestruct.vb rename to P3D/Pokemon/Attacks/Normal/Self-Destruct.vb index 201ef42e9..2e68d9984 100644 --- a/P3D/Pokemon/Attacks/Normal/Selfdestruct.vb +++ b/P3D/Pokemon/Attacks/Normal/Self-Destruct.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Normal - Public Class Selfdestruct + Public Class SelfDestruct Inherits Attack @@ -15,7 +15,7 @@ Me.Accuracy = 100 Me.Category = Categories.Physical Me.ContestCategory = ContestCategories.Beauty - Me.Name = "Selfdestruct" + Me.Name = "Self-Destruct" Me.Description = "The user attacks everything around it by causing an explosion. The user faints upon using this move." Me.CriticalChance = 1 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Normal/SmellingSalt.vb b/P3D/Pokemon/Attacks/Normal/SmellingSalts.vb similarity index 95% rename from P3D/Pokemon/Attacks/Normal/SmellingSalt.vb rename to P3D/Pokemon/Attacks/Normal/SmellingSalts.vb index da0102e1f..efe7b9040 100644 --- a/P3D/Pokemon/Attacks/Normal/SmellingSalt.vb +++ b/P3D/Pokemon/Attacks/Normal/SmellingSalts.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Normal - Public Class SmellingSalt + Public Class SmellingSalts Inherits Attack @@ -14,8 +14,8 @@ Me.Power = 70 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart - Me.Name = "Smelling Salt" + Me.ContestCategory = ContestCategories.Tough + Me.Name = "Smelling Salts" Me.Description = "This attack inflicts double damage on a target with paralysis. It also cures the target's paralysis, however." Me.CriticalChance = 1 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb b/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb index b277db900..48011cb36 100644 --- a/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb +++ b/P3D/Pokemon/Attacks/Normal/SmokeScreen.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Normal - Public Class SmokeScreen + Public Class Smokescreen Inherits Attack @@ -15,7 +15,7 @@ Me.Accuracy = 100 Me.Category = Categories.Status Me.ContestCategory = ContestCategories.Smart - Me.Name = "Smoke Screen" + Me.Name = "Smokescreen" Me.Description = "The user releases an obscuring cloud of smoke or ink. It reduces the target's accuracy." Me.CriticalChance = 0 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Normal/Softboiled.vb b/P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb similarity index 95% rename from P3D/Pokemon/Attacks/Normal/Softboiled.vb rename to P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb index 17d0c9e1a..3a961b395 100644 --- a/P3D/Pokemon/Attacks/Normal/Softboiled.vb +++ b/P3D/Pokemon/Attacks/Normal/Soft-Boiled.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Normal - Public Class Softboiled + Public Class SoftBoiled Inherits Attack @@ -14,8 +14,8 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Beauty - Me.Name = "Softboiled" + Me.ContestCategory = ContestCategories.Cute + Me.Name = "Soft-Boiled" Me.Description = "The user restores its own HP by up to half of its maximum HP. May also be used in the field to heal HP." Me.CriticalChance = 0 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Normal/Struggle.vb b/P3D/Pokemon/Attacks/Normal/Struggle.vb index 19b152b9a..25e0d7228 100644 --- a/P3D/Pokemon/Attacks/Normal/Struggle.vb +++ b/P3D/Pokemon/Attacks/Normal/Struggle.vb @@ -14,7 +14,7 @@ Me.Power = 50 Me.Accuracy = 0 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Struggle" Me.Description = "An attack that is used in desperation only if the user has no PP. It also hurts the user slightly." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Normal/Substitute.vb b/P3D/Pokemon/Attacks/Normal/Substitute.vb index 243b95f93..d4e29827e 100644 --- a/P3D/Pokemon/Attacks/Normal/Substitute.vb +++ b/P3D/Pokemon/Attacks/Normal/Substitute.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Cute Me.Name = "Substitute" Me.Description = "The user makes a copy of itself using some of its HP. The copy serves as the user’s decoy." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Normal/ViceGrip.vb b/P3D/Pokemon/Attacks/Normal/ViceGrip.vb index fa13ff7da..985275b72 100644 --- a/P3D/Pokemon/Attacks/Normal/ViceGrip.vb +++ b/P3D/Pokemon/Attacks/Normal/ViceGrip.vb @@ -15,7 +15,7 @@ Me.Accuracy = 100 Me.Category = Categories.Physical Me.ContestCategory = ContestCategories.Tough - Me.Name = "ViceGrip" + Me.Name = "Vice Grip" Me.Description = "The target is gripped and squeezed from both sides to inflict damage." Me.CriticalChance = 1 Me.IsHMMove = False diff --git a/P3D/Pokemon/Attacks/Normal/WeatherBall.vb b/P3D/Pokemon/Attacks/Normal/WeatherBall.vb index 9357c0c41..d9668f6ff 100644 --- a/P3D/Pokemon/Attacks/Normal/WeatherBall.vb +++ b/P3D/Pokemon/Attacks/Normal/WeatherBall.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal Me.Power = 50 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Weather Ball" Me.Description = "An attack move that varies in power and type depending on the weather." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Normal/WringOut.vb b/P3D/Pokemon/Attacks/Normal/WringOut.vb index 25fa868b9..cad6ab44d 100644 --- a/P3D/Pokemon/Attacks/Normal/WringOut.vb +++ b/P3D/Pokemon/Attacks/Normal/WringOut.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Normal Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Wring Out" Me.Description = "The user powerfully wrings the target. The more HP the target has, the greater the move's power." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Poison/GunkShot.vb b/P3D/Pokemon/Attacks/Poison/GunkShot.vb index 42a9c8613..f4f5ed94a 100644 --- a/P3D/Pokemon/Attacks/Poison/GunkShot.vb +++ b/P3D/Pokemon/Attacks/Poison/GunkShot.vb @@ -14,7 +14,7 @@ Me.Power = 120 Me.Accuracy = 80 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Tough Me.Name = "Gunk Shot" Me.Description = "The user shoots filthy garbage at the target to attack. It may also poison the target." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Poison/PoisonFang.vb b/P3D/Pokemon/Attacks/Poison/PoisonFang.vb index ea474861a..47983700e 100644 --- a/P3D/Pokemon/Attacks/Poison/PoisonFang.vb +++ b/P3D/Pokemon/Attacks/Poison/PoisonFang.vb @@ -55,7 +55,7 @@ Me.AIField1 = AIField.Damage Me.AIField2 = AIField.CanPoison - Me.EffectChances.Add(30) + Me.EffectChances.Add(50) End Sub Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) diff --git a/P3D/Pokemon/Attacks/Poison/PoisonJab.vb b/P3D/Pokemon/Attacks/Poison/PoisonJab.vb index f6eb82741..6891fdcde 100644 --- a/P3D/Pokemon/Attacks/Poison/PoisonJab.vb +++ b/P3D/Pokemon/Attacks/Poison/PoisonJab.vb @@ -14,7 +14,7 @@ Me.Power = 80 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Poison Jab" Me.Description = "The target is stabbed with a tentacle or arm steeped in poison. It may also poison the target." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb b/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb index a58c28588..56b59a6c9 100644 --- a/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb +++ b/P3D/Pokemon/Attacks/Psychic/CosmicPower.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Cosmic Power" Me.Description = "The user absorbs a mystical power from space to raise its Defense and Sp. Def stats." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/Gravity.vb b/P3D/Pokemon/Attacks/Psychic/Gravity.vb index 5783bbfb7..001f37e01 100644 --- a/P3D/Pokemon/Attacks/Psychic/Gravity.vb +++ b/P3D/Pokemon/Attacks/Psychic/Gravity.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Smart Me.Name = "Gravity" Me.Description = "Gravity is intensified for five turns, making moves involving flying unusable and negating Levitate." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb b/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb index eba06e78e..aaa9cd345 100644 Binary files a/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb and b/P3D/Pokemon/Attacks/Psychic/GuardSwap.vb differ diff --git a/P3D/Pokemon/Attacks/Psychic/HealBlock.vb b/P3D/Pokemon/Attacks/Psychic/HealBlock.vb index 6ac2aca1d..d9255c2f9 100644 --- a/P3D/Pokemon/Attacks/Psychic/HealBlock.vb +++ b/P3D/Pokemon/Attacks/Psychic/HealBlock.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Heal Block" Me.Description = "For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/HealingWish.vb b/P3D/Pokemon/Attacks/Psychic/HealingWish.vb index bf06e844e..53ff7448a 100644 --- a/P3D/Pokemon/Attacks/Psychic/HealingWish.vb +++ b/P3D/Pokemon/Attacks/Psychic/HealingWish.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Healing Wish" Me.Description = "The user faints. In return, the Pokemon taking its place will have its HP restored and status conditions cured." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb b/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb index 62443a8c0..81ae359d2 100644 Binary files a/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb and b/P3D/Pokemon/Attacks/Psychic/HeartSwap.vb differ diff --git a/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb b/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb index 06780301a..ba7a089ad 100644 --- a/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb +++ b/P3D/Pokemon/Attacks/Psychic/MiracleEye.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Miracle Eye" Me.Description = "Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb b/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb index 07020f5ce..b2148ea9f 100644 Binary files a/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb and b/P3D/Pokemon/Attacks/Psychic/PowerSwap.vb differ diff --git a/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb b/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb index 3bb278f85..e44088087 100644 --- a/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb +++ b/P3D/Pokemon/Attacks/Psychic/PowerTrick.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Smart Me.Name = "Power Trick" Me.Description = "The user employs its psychic power to switch its Attack with its Defense stat." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb b/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb index aaf9c2be3..8b8c2bfdd 100644 --- a/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb +++ b/P3D/Pokemon/Attacks/Psychic/PsychoShift.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Psychic Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Smart Me.Name = "Psycho Shift" Me.Description = "Using its psychic power of suggestion, the user transfers its status conditions to the target." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb b/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb index a2d26ec05..6ca3bbd7b 100644 --- a/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb +++ b/P3D/Pokemon/Attacks/Psychic/Synchronoise.vb @@ -68,16 +68,16 @@ If op.Type1.Type = p.Type1.Type OrElse op.Type1.Type = p.Type2.Type Then Return False Else - Return True BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) + Return True End If Else 'Dual type If op.Type1.Type = p.Type1.Type OrElse op.Type1.Type = p.Type2.Type OrElse op.Type2.Type = p.Type1.Type OrElse op.Type2.Type = p.Type2.Type Then Return False Else - Return True BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) + Return True End If End If diff --git a/P3D/Pokemon/Attacks/Psychic/Teleport.vb b/P3D/Pokemon/Attacks/Psychic/Teleport.vb index e4d6f680d..83f886c49 100644 Binary files a/P3D/Pokemon/Attacks/Psychic/Teleport.vb and b/P3D/Pokemon/Attacks/Psychic/Teleport.vb differ diff --git a/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb b/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb index 37d356435..89efafee7 100644 --- a/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb +++ b/P3D/Pokemon/Attacks/Psychic/TrickRoom.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Smart Me.Name = "Trick Room" Me.Description = "The user creates a bizarre area in which slower Pokémon get to move first for five turns." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb b/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb index 5e7c9b2d2..5937c8482 100644 Binary files a/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb and b/P3D/Pokemon/Attacks/Psychic/ZenHeadbutt.vb differ diff --git a/P3D/Pokemon/Attacks/Rock/Rollout.vb b/P3D/Pokemon/Attacks/Rock/Rollout.vb index 8691fae87..7e6e0d824 100644 --- a/P3D/Pokemon/Attacks/Rock/Rollout.vb +++ b/P3D/Pokemon/Attacks/Rock/Rollout.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Rock Me.Power = 30 Me.Accuracy = 90 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Cute Me.Name = "Rollout" Me.Description = "The user continually rolls into the target over five turns. It becomes stronger each time it hits." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Rock/SmackDown.vb b/P3D/Pokemon/Attacks/Rock/SmackDown.vb index 1a82676f5..2d053dda9 100644 --- a/P3D/Pokemon/Attacks/Rock/SmackDown.vb +++ b/P3D/Pokemon/Attacks/Rock/SmackDown.vb @@ -53,6 +53,25 @@ '#End End Sub + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) + Dim op As Pokemon = BattleScreen.OppPokemon + If own = False Then + op = BattleScreen.OwnPokemon + End If + + If own = True Then + If BattleScreen.FieldEffects.OppSmacked = 0 Then + BattleScreen.FieldEffects.OppSmacked = 1 + BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down.")) + End If + Else + If BattleScreen.FieldEffects.OwnSmacked = 0 Then + BattleScreen.FieldEffects.OwnSmacked = 1 + BattleScreen.BattleQuery.Add(New TextQueryObject(op.GetDisplayName() & " fell straight down.")) + End If + End If + End Sub + End Class End Namespace \ No newline at end of file diff --git a/P3D/Pokemon/Attacks/Steel/BulletPunch.vb b/P3D/Pokemon/Attacks/Steel/BulletPunch.vb index 78454b1fe..cb5bf334b 100644 --- a/P3D/Pokemon/Attacks/Steel/BulletPunch.vb +++ b/P3D/Pokemon/Attacks/Steel/BulletPunch.vb @@ -14,7 +14,7 @@ Me.Power = 40 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Bullet Punch" Me.Description = "The user strikes the target with tough punches as fast as bullets. This move always goes first." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Steel/DoomDesire.vb b/P3D/Pokemon/Attacks/Steel/DoomDesire.vb index b88475c8c..1eaadfe41 100644 --- a/P3D/Pokemon/Attacks/Steel/DoomDesire.vb +++ b/P3D/Pokemon/Attacks/Steel/DoomDesire.vb @@ -14,7 +14,7 @@ Namespace BattleSystem.Moves.Steel Me.Power = 140 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cool + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Doom Desire" Me.Description = "Two turns after this move is used, the user blasts the target with a concentrated bundle of light." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Steel/FlashCannon.vb b/P3D/Pokemon/Attacks/Steel/FlashCannon.vb index be78ad69b..30d7c43f4 100644 Binary files a/P3D/Pokemon/Attacks/Steel/FlashCannon.vb and b/P3D/Pokemon/Attacks/Steel/FlashCannon.vb differ diff --git a/P3D/Pokemon/Attacks/Steel/GearUp.vb b/P3D/Pokemon/Attacks/Steel/GearUp.vb index bacba2b6f..0c9045831 100644 --- a/P3D/Pokemon/Attacks/Steel/GearUp.vb +++ b/P3D/Pokemon/Attacks/Steel/GearUp.vb @@ -61,9 +61,16 @@ If own = False Then p = BattleScreen.OppPokemon End If + 'Plus and Minus If p.Ability.ID = 57 OrElse p.Ability.ID = 58 Then - BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Attack", 1, "", "move:gearup") - BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "move:gearup") + Dim a As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Attack", 1, "", "move:gearup") + Dim b As Boolean = BattleScreen.Battle.RaiseStat(own, own, BattleScreen, "Special Attack", 1, "", "move:gearup") + + If a = False And b = False Then + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) + End If + Else + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) End If End Sub diff --git a/P3D/Pokemon/Attacks/Steel/GyroBall.vb b/P3D/Pokemon/Attacks/Steel/GyroBall.vb index 686223ba3..2a50baac1 100644 --- a/P3D/Pokemon/Attacks/Steel/GyroBall.vb +++ b/P3D/Pokemon/Attacks/Steel/GyroBall.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Gyro Ball" Me.Description = "The user tackles the target with a high-speed spin. The slower the user, the greater the damage." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Steel/MetalBurst.vb b/P3D/Pokemon/Attacks/Steel/MetalBurst.vb index abcd61352..a2ab18547 100644 --- a/P3D/Pokemon/Attacks/Steel/MetalBurst.vb +++ b/P3D/Pokemon/Attacks/Steel/MetalBurst.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Metal Burst" Me.Description = "The user retaliates with much greater power against the target that last inflicted damage on it." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Steel/MirrorShot.vb b/P3D/Pokemon/Attacks/Steel/MirrorShot.vb index 9783adb21..a474bf902 100644 --- a/P3D/Pokemon/Attacks/Steel/MirrorShot.vb +++ b/P3D/Pokemon/Attacks/Steel/MirrorShot.vb @@ -14,7 +14,7 @@ Me.Power = 65 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Mirror Shot" Me.Description = "The user lets loose a flash of energy at the target from its polished body. This may also lower the target's accuracy." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Water/Aquajet.vb b/P3D/Pokemon/Attacks/Water/Aquajet.vb index bfe413686..7a462e2d9 100644 --- a/P3D/Pokemon/Attacks/Water/Aquajet.vb +++ b/P3D/Pokemon/Attacks/Water/Aquajet.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Water - Public Class Aquajet + Public Class AquaJet Inherits Attack @@ -14,7 +14,7 @@ Me.Power = 40 Me.Accuracy = 100 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Beauty + Me.ContestCategory = ContestCategories.Cool Me.Name = "Aqua Jet" Me.Description = "The user lunges at the target speed that makes it almost invisible. This move always goes first." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Water/Aquatail.vb b/P3D/Pokemon/Attacks/Water/Aquatail.vb index 3b42f85ff..ae3759e44 100644 --- a/P3D/Pokemon/Attacks/Water/Aquatail.vb +++ b/P3D/Pokemon/Attacks/Water/Aquatail.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Water - Public Class Aquatail + Public Class AquaTail Inherits Attack @@ -14,7 +14,7 @@ Me.Power = 90 Me.Accuracy = 90 Me.Category = Categories.Physical - Me.ContestCategory = ContestCategories.Cute + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Aqua Tail" Me.Description = "The user attacks by swinging its tail as if it were a vicious wave in a raging storm." Me.CriticalChance = 1 diff --git a/P3D/Pokemon/Attacks/Water/Brine.vb b/P3D/Pokemon/Attacks/Water/Brine.vb index ca9f2e6e7..c7bbf816c 100644 --- a/P3D/Pokemon/Attacks/Water/Brine.vb +++ b/P3D/Pokemon/Attacks/Water/Brine.vb @@ -14,7 +14,7 @@ Me.Power = 65 Me.Accuracy = 100 Me.Category = Categories.Special - Me.ContestCategory = ContestCategories.Smart + Me.ContestCategory = ContestCategories.Tough Me.Name = "Brine" Me.Description = "If the target's HP is down to about half, this attack will hit with double the power." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Water/Hydrocannon.vb b/P3D/Pokemon/Attacks/Water/Hydrocannon.vb index 45c70fc28..27f78a3ff 100644 --- a/P3D/Pokemon/Attacks/Water/Hydrocannon.vb +++ b/P3D/Pokemon/Attacks/Water/Hydrocannon.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Water - Public Class Hydrocannon + Public Class HydroCannon Inherits Attack diff --git a/P3D/Pokemon/Attacks/Water/Muddywater.vb b/P3D/Pokemon/Attacks/Water/Muddywater.vb index 5ccad1323..d2966964c 100644 --- a/P3D/Pokemon/Attacks/Water/Muddywater.vb +++ b/P3D/Pokemon/Attacks/Water/Muddywater.vb @@ -1,6 +1,6 @@ Namespace BattleSystem.Moves.Water - Public Class Muddywater + Public Class MuddyWater Inherits Attack diff --git a/P3D/Pokemon/Attacks/Water/RainDance.vb b/P3D/Pokemon/Attacks/Water/RainDance.vb index 4bd376985..664cde91e 100644 --- a/P3D/Pokemon/Attacks/Water/RainDance.vb +++ b/P3D/Pokemon/Attacks/Water/RainDance.vb @@ -14,7 +14,7 @@ Me.Power = 0 Me.Accuracy = 0 Me.Category = Categories.Status - Me.ContestCategory = ContestCategories.Tough + Me.ContestCategory = ContestCategories.Beauty Me.Name = "Rain Dance" Me.Description = "The user summons a heavy rain that falls for five turns, powering up Water-type moves." Me.CriticalChance = 0 diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb index b6de948e2..d40914b55 100644 --- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb +++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb @@ -55,6 +55,19 @@ Namespace BattleSystem.Moves.Water Me.AIField2 = AIField.Trap End Sub + Public Overrides Function GetBasePower(own As Boolean, BattleScreen As BattleScreen) As Integer + Dim dive As Integer = BattleScreen.FieldEffects.OppDiveCounter + If own = False Then + dive = BattleScreen.FieldEffects.OwnDiveCounter + End If + + If dive > 0 Then + Return Me.Power * 2 + Else + Return Me.Power + End If + End Function + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) Dim p As Pokemon = BattleScreen.OwnPokemon Dim op As Pokemon = BattleScreen.OppPokemon diff --git a/P3D/Pokemon/Items/Berries/ChilanBerry.vb b/P3D/Pokemon/Items/Berries/ChilanBerry.vb index c31290c13..4a2233ed4 100644 --- a/P3D/Pokemon/Items/Berries/ChilanBerry.vb +++ b/P3D/Pokemon/Items/Berries/ChilanBerry.vb @@ -1,6 +1,6 @@ Namespace Items.Berries - + Public Class ChilanBerry Inherits Berry diff --git a/P3D/Pokemon/Items/Berry.vb b/P3D/Pokemon/Items/Berry.vb index 44b133278..111a8392f 100644 --- a/P3D/Pokemon/Items/Berry.vb +++ b/P3D/Pokemon/Items/Berry.vb @@ -32,7 +32,7 @@ Public FallGrow As Integer = 1 Public Type As Element.Types - Public Power As Integer = 60 + Public Power As Integer = 80 Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100 Public Overrides ReadOnly Property FlingDamage As Integer = 10 diff --git a/P3D/Pokemon/Items/Machines/HM01.vb b/P3D/Pokemon/Items/Machines/HM01.vb index b72fbb990..73edb4d45 100644 --- a/P3D/Pokemon/Items/Machines/HM01.vb +++ b/P3D/Pokemon/Items/Machines/HM01.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 15) + _textureRectangle = New Rectangle(48, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM02.vb b/P3D/Pokemon/Items/Machines/HM02.vb index cfa6ea338..538007d77 100644 --- a/P3D/Pokemon/Items/Machines/HM02.vb +++ b/P3D/Pokemon/Items/Machines/HM02.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 19) + _textureRectangle = New Rectangle(73, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM03.vb b/P3D/Pokemon/Items/Machines/HM03.vb index 24e75b102..9bc3d39a9 100644 --- a/P3D/Pokemon/Items/Machines/HM03.vb +++ b/P3D/Pokemon/Items/Machines/HM03.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 57) + _textureRectangle = New Rectangle(96, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM04.vb b/P3D/Pokemon/Items/Machines/HM04.vb index 55dca338c..8fd20bd16 100644 --- a/P3D/Pokemon/Items/Machines/HM04.vb +++ b/P3D/Pokemon/Items/Machines/HM04.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 70) + _textureRectangle = New Rectangle(48, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM05.vb b/P3D/Pokemon/Items/Machines/HM05.vb index 3da905ee0..42a0dbbbd 100644 --- a/P3D/Pokemon/Items/Machines/HM05.vb +++ b/P3D/Pokemon/Items/Machines/HM05.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 148) + _textureRectangle = New Rectangle(432, 312, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM06.vb b/P3D/Pokemon/Items/Machines/HM06.vb index 11e5a1a51..3f11a5179 100644 --- a/P3D/Pokemon/Items/Machines/HM06.vb +++ b/P3D/Pokemon/Items/Machines/HM06.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 250) + _textureRectangle = New Rectangle(96, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM07.vb b/P3D/Pokemon/Items/Machines/HM07.vb index 88fec12ed..823b343aa 100644 --- a/P3D/Pokemon/Items/Machines/HM07.vb +++ b/P3D/Pokemon/Items/Machines/HM07.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 127) + _textureRectangle = New Rectangle(96, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM08.vb b/P3D/Pokemon/Items/Machines/HM08.vb index e065f1a60..e22a4c83a 100644 --- a/P3D/Pokemon/Items/Machines/HM08.vb +++ b/P3D/Pokemon/Items/Machines/HM08.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 431) + _textureRectangle = New Rectangle(48, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM09.vb b/P3D/Pokemon/Items/Machines/HM09.vb index cdba2d401..7f1e16ba5 100644 --- a/P3D/Pokemon/Items/Machines/HM09.vb +++ b/P3D/Pokemon/Items/Machines/HM09.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 560) + _textureRectangle = New Rectangle(120, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Machines/HM10.vb b/P3D/Pokemon/Items/Machines/HM10.vb index 58cebede7..03a0195cb 100644 --- a/P3D/Pokemon/Items/Machines/HM10.vb +++ b/P3D/Pokemon/Items/Machines/HM10.vb @@ -7,6 +7,7 @@ Namespace Items.Machines Public Sub New() MyBase.New(False, 100, 291) + _textureRectangle = New Rectangle(96, 192, 24, 24) End Sub End Class diff --git a/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb b/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb new file mode 100644 index 000000000..a0caf5f30 --- /dev/null +++ b/P3D/Pokemon/Items/Medicine/PewterCrunchies.vb @@ -0,0 +1,64 @@ +Namespace Items.Medicine + + + Public Class PewterCrunchies + + Inherits MedicineItem + + Public Overrides ReadOnly Property IsHealingItem As Boolean = True + Public Overrides ReadOnly Property Description As String = "Pewter City's famous crunchy snack. They can be used to heal all status conditions of a single Pokémon." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 250 + + Public Sub New() + _textureRectangle = New Rectangle(96, 312, 24, 24) + End Sub + + Public Overrides Sub Use() + If CBool(GameModeManager.GetGameRuleValue("CanUseHealItem", "1")) = False Then + Screen.TextBox.Show("Cannot use heal items.", {}, False, False) + Exit Sub + End If + Dim selScreen = New PartyScreen(Core.CurrentScreen, Me, AddressOf Me.UseOnPokemon, "Use " & Me.Name, True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} + AddHandler selScreen.SelectedObject, AddressOf UseItemhandler + + Core.SetScreen(selScreen) + End Sub + + Public Overrides Function UseOnPokemon(ByVal PokeIndex As Integer) As Boolean + Dim Pokemon As Pokemon = Core.Player.Pokemons(PokeIndex) + + If Pokemon.Status = P3D.Pokemon.StatusProblems.Fainted Then + Screen.TextBox.reDelay = 0.0F + Screen.TextBox.Show(Pokemon.GetDisplayName() & "~is fainted!", {}) + + Return False + Else + If Pokemon.Status <> P3D.Pokemon.StatusProblems.None Or Pokemon.HasVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion) = True Then + Pokemon.Status = P3D.Pokemon.StatusProblems.None + + If Pokemon.HasVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion) = True Then + Pokemon.RemoveVolatileStatus(P3D.Pokemon.VolatileStatus.Confusion) + End If + + Screen.TextBox.reDelay = 0.0F + + Dim t As String = Pokemon.GetDisplayName() & "~gets healed up!" + t &= RemoveItem() + + SoundManager.PlaySound("single_heal", False) + Screen.TextBox.Show(t, {}) + PlayerStatistics.Track("[17]Medicine Items used", 1) + + Return True + Else + Screen.TextBox.reDelay = 0.0F + Screen.TextBox.Show(Pokemon.GetDisplayName() & "~is fully healed!", {}, True, True) + + Return False + End If + End If + End Function + + End Class + +End Namespace diff --git a/P3D/Pokemon/Items/Medicine/RageCandyBar.vb b/P3D/Pokemon/Items/Medicine/RageCandyBar.vb index fe5098d00..d2462bd74 100644 --- a/P3D/Pokemon/Items/Medicine/RageCandyBar.vb +++ b/P3D/Pokemon/Items/Medicine/RageCandyBar.vb @@ -1,6 +1,6 @@ Namespace Items.Medicine - + Public Class RageCandyBar Inherits MedicineItem diff --git a/P3D/Pokemon/Items/Standard/PolkadotBow.vb b/P3D/Pokemon/Items/Standard/BerserkGene.vb similarity index 72% rename from P3D/Pokemon/Items/Standard/PolkadotBow.vb rename to P3D/Pokemon/Items/Standard/BerserkGene.vb index c7ae15ac9..9c84dcbff 100644 --- a/P3D/Pokemon/Items/Standard/PolkadotBow.vb +++ b/P3D/Pokemon/Items/Standard/BerserkGene.vb @@ -1,12 +1,12 @@ Namespace Items.Standard - - Public Class PolkadotBow + + Public Class BerserkGene Inherits Item - Public Overrides ReadOnly Property Description As String = "A pink bow. A certain Pokémon likes this item." - Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100 + Public Overrides ReadOnly Property Description As String = "A strand of DNA that overflows with energy. It raises offensive capabilities, but causes confusion." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 3000 Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False Public Overrides ReadOnly Property CanBeUsed As Boolean = False diff --git a/P3D/Pokemon/Items/Standard/BrickPiece.vb b/P3D/Pokemon/Items/Standard/BrickPiece.vb index 961837a52..e5b71a8c2 100644 --- a/P3D/Pokemon/Items/Standard/BrickPiece.vb +++ b/P3D/Pokemon/Items/Standard/BrickPiece.vb @@ -6,7 +6,7 @@ Namespace Items.Standard Inherits Item Public Overrides ReadOnly Property Description As String = "A rare chunk of brick." - Public Overrides ReadOnly Property PokeDollarPrice As Integer = 100 + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2500 Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False Public Overrides ReadOnly Property CanBeUsed As Boolean = False diff --git a/P3D/Pokemon/Items/Standard/CellBattery.vb b/P3D/Pokemon/Items/Standard/CellBattery.vb index 029b1d299..55bcd7fdf 100644 --- a/P3D/Pokemon/Items/Standard/CellBattery.vb +++ b/P3D/Pokemon/Items/Standard/CellBattery.vb @@ -1,6 +1,6 @@ Namespace Items.Standard - + Public Class CellBattery Inherits Item diff --git a/P3D/Pokemon/Items/Standard/ElectricSeed.vb b/P3D/Pokemon/Items/Standard/ElectricSeed.vb new file mode 100644 index 000000000..2bbe90d2f --- /dev/null +++ b/P3D/Pokemon/Items/Standard/ElectricSeed.vb @@ -0,0 +1,20 @@ +Namespace Items.Standard + + + Public Class ElectricSeed + + Inherits Item + + Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Defense on Electric Terrain. It can only be used once." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000 + Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False + Public Overrides ReadOnly Property CanBeUsed As Boolean = False + + Public Sub New() + _textureRectangle = New Rectangle(312, 312, 24, 24) + End Sub + + End Class + +End Namespace + diff --git a/P3D/Pokemon/Items/Standard/GrassySeed.vb b/P3D/Pokemon/Items/Standard/GrassySeed.vb new file mode 100644 index 000000000..9c087f687 --- /dev/null +++ b/P3D/Pokemon/Items/Standard/GrassySeed.vb @@ -0,0 +1,20 @@ +Namespace Items.Standard + + + Public Class GrassySeed + + Inherits Item + + Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Defense on Grassy Terrain. It can only be used once." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000 + Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False + Public Overrides ReadOnly Property CanBeUsed As Boolean = False + + Public Sub New() + _textureRectangle = New Rectangle(336, 312, 24, 24) + End Sub + + End Class + +End Namespace + diff --git a/P3D/Pokemon/Items/Standard/MistySeed.vb b/P3D/Pokemon/Items/Standard/MistySeed.vb new file mode 100644 index 000000000..bb7b2db66 --- /dev/null +++ b/P3D/Pokemon/Items/Standard/MistySeed.vb @@ -0,0 +1,20 @@ +Namespace Items.Standard + + + Public Class MistySeed + + Inherits Item + + Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Sp. Defense on Misty Terrain. It can only be used once." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000 + Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False + Public Overrides ReadOnly Property CanBeUsed As Boolean = False + + Public Sub New() + _textureRectangle = New Rectangle(360, 312, 24, 24) + End Sub + + End Class + +End Namespace + diff --git a/P3D/Pokemon/Items/Standard/PsychicSeed.vb b/P3D/Pokemon/Items/Standard/PsychicSeed.vb new file mode 100644 index 000000000..f433648d6 --- /dev/null +++ b/P3D/Pokemon/Items/Standard/PsychicSeed.vb @@ -0,0 +1,20 @@ +Namespace Items.Standard + + + Public Class PsychicSeed + + Inherits Item + + Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It boosts Sp. Defense on Psychic Terrain. It can only be used once." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000 + Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False + Public Overrides ReadOnly Property CanBeUsed As Boolean = False + + Public Sub New() + _textureRectangle = New Rectangle(384, 312, 24, 24) + End Sub + + End Class + +End Namespace + diff --git a/P3D/Pokemon/Items/Standard/TerrainExtender.vb b/P3D/Pokemon/Items/Standard/TerrainExtender.vb new file mode 100644 index 000000000..76b69d35f --- /dev/null +++ b/P3D/Pokemon/Items/Standard/TerrainExtender.vb @@ -0,0 +1,20 @@ +Namespace Items.Standard + + + Public Class TerrainExtender + + Inherits Item + + Public Overrides ReadOnly Property Description As String = "An item to be held by a Pokémon. It extends the duration of the terrain caused by the holder's move or Ability." + Public Overrides ReadOnly Property PokeDollarPrice As Integer = 2000 + Public Overrides ReadOnly Property CanBeUsedInBattle As Boolean = False + Public Overrides ReadOnly Property CanBeUsed As Boolean = False + + Public Sub New() + _textureRectangle = New Rectangle(288, 312, 24, 24) + End Sub + + End Class + +End Namespace + diff --git a/P3D/Pokemon/Items/_itemList.txt b/P3D/Pokemon/Items/_itemList.txt index 31904c523..f5abdc7ad 100644 Binary files a/P3D/Pokemon/Items/_itemList.txt and b/P3D/Pokemon/Items/_itemList.txt differ diff --git a/P3D/Screens/Inventory/NewInventoryScreen.vb b/P3D/Screens/Inventory/NewInventoryScreen.vb index ae9770aae..a6915a435 100644 --- a/P3D/Screens/Inventory/NewInventoryScreen.vb +++ b/P3D/Screens/Inventory/NewInventoryScreen.vb @@ -393,7 +393,7 @@ Public Class NewInventoryScreen If _tabIndex = 4 Then nameTextHeight = 40 End If - Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16, CInt(itemLoc.Y) + 48, 128, nameTextHeight), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade))) + Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16 - 9, CInt(itemLoc.Y) + 48, 128 + 18, nameTextHeight), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade))) Dim fontWidth As Integer = CInt(FontManager.MiniFont.MeasureString(cItem.Name).X) itemBatch.DrawString(FontManager.MiniFont, cItem.Name, itemLoc + New Vector2(48 - fontWidth / 2.0F, 51), New Color(255, 255, 255, itemPanelAlpha)) @@ -974,13 +974,13 @@ Public Class NewInventoryScreen ''' Private Sub UpdateShakeAnimation() If _itemAnimation._shakeLeft = True Then - _itemAnimation._shakeV -= 0.035F + _itemAnimation._shakeV -= 0.0275F If _itemAnimation._shakeV <= -0.4F Then _itemAnimation._shakeCount -= 1 _itemAnimation._shakeLeft = False End If Else - _itemAnimation._shakeV += 0.035F + _itemAnimation._shakeV += 0.0275F If _itemAnimation._shakeV >= 0.4F Then _itemAnimation._shakeCount -= 1 _itemAnimation._shakeLeft = True diff --git a/P3D/Screens/Pokemon/LearnAttackScreen.vb b/P3D/Screens/Pokemon/LearnAttackScreen.vb index 570377c2b..dbba1e997 100644 --- a/P3D/Screens/Pokemon/LearnAttackScreen.vb +++ b/P3D/Screens/Pokemon/LearnAttackScreen.vb @@ -171,7 +171,7 @@ Dim drawText As String = "" If AttackIndex = 4 Then - drawText = "Don't learn """ & newAttack.Name & """?" + drawText = "Give up on learning """ & newAttack.Name & """?" Else drawText = "Forget """ & Pokemon.Attacks(AttackIndex).Name & """ to learn """ & newAttack.Name & """?" If canForget = False Then @@ -271,7 +271,7 @@ If AttackIndex <> 4 Then TeachMovesScreen.LearnedMove = True - Text = "1...2...3...and*Ta-da!*" & Pokemon.GetDisplayName() & " forgot~" & Pokemon.Attacks(AttackIndex).Name & "! And..." + Text = "1... 2... 3... and...*Ta-da!*" & Pokemon.GetDisplayName() & " forgot~" & Pokemon.Attacks(AttackIndex).Name & " and..." Pokemon.Attacks.RemoveAt(AttackIndex) Pokemon.Attacks.Insert(AttackIndex, newAttack)