diff --git a/2.5DHero/2.5DHero/Battle/BattleSystemV2/Battle.vb b/2.5DHero/2.5DHero/Battle/BattleSystemV2/Battle.vb index 417a94078..25627bb37 100644 --- a/2.5DHero/2.5DHero/Battle/BattleSystemV2/Battle.vb +++ b/2.5DHero/2.5DHero/Battle/BattleSystemV2/Battle.vb @@ -5525,21 +5525,33 @@ endthisround: End If End If + 'Spikes If spikeAffected = True Then - If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or .FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) = True Then + If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then Dim spikeDamage As Double = 1D Select Case .FieldEffects.OppSpikes Case 1 - spikeDamage = p.MaxHP / 8 + spikeDamage = (p.MaxHP / 100) * 12.5D Case 2 - spikeDamage = p.MaxHP / 6 + spikeDamage = (p.MaxHP / 100) * 16.7D Case 3 - spikeDamage = p.MaxHP / 4 + spikeDamage = (p.MaxHP / 100) * 25D End Select ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes") End If End If + + 'Sticky Web + 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") + + End If + End If + + 'Toxic Spikes If spikeAffected = True Then If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then Select Case .FieldEffects.OppToxicSpikes @@ -5556,7 +5568,8 @@ endthisround: End If End If End If - + + 'Stealth Rock If rockAffected = True Then If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then Dim rocksDamage As Double = 1D @@ -5942,16 +5955,24 @@ endthisround: Dim spikeDamage As Double = 1D Select Case .FieldEffects.OppSpikes Case 1 - spikeDamage = p.MaxHP / 8 + spikeDamage = (p.MaxHP / 100) * 12.5D Case 2 - spikeDamage = p.MaxHP / 6 + spikeDamage = (p.MaxHP / 100) * 16.7D Case 3 - spikeDamage = p.MaxHP / 4 + spikeDamage = (p.MaxHP / 100) * 25D End Select ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes") End If End If + 'Sticky Web + 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") + + End If + End If If spikeAffected = True Then If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then Select Case .FieldEffects.OwnToxicSpikes diff --git a/2.5DHero/2.5DHero/Battle/BattleSystemV2/FieldEffects.vb b/2.5DHero/2.5DHero/Battle/BattleSystemV2/FieldEffects.vb index 979d75ab5..58047ed8d 100644 --- a/2.5DHero/2.5DHero/Battle/BattleSystemV2/FieldEffects.vb +++ b/2.5DHero/2.5DHero/Battle/BattleSystemV2/FieldEffects.vb @@ -94,6 +94,7 @@ Public OwnLastMove As Attack = Nothing 'Last move used Public OwnSpikes As Integer = 0 'Trap move counter Public OwnStealthRock As Integer = 0 'Trap move counter + Public OwnStickyWeb As Integer = 0 'Trap move counter Public OwnToxicSpikes As Integer = 0 'Trap move counter Public OwnMist As Integer = 0 'Mist move counter Public OwnGuardSpec As Integer = 0 'Guard spec item counter @@ -111,6 +112,7 @@ 'Opp stuff Public OppSpikes As Integer = 0 Public OppStealthRock As Integer = 0 + Public OppStickyWeb As Integer = 0 Public OppToxicSpikes As Integer = 0 Public OppMist As Integer = 0 Public OppGuardSpec As Integer = 0 @@ -351,4 +353,4 @@ End Class -End Namespace \ No newline at end of file +End Namespace diff --git a/2.5DHero/2.5DHero/Pokemon/Attacks/Attack.vb b/2.5DHero/2.5DHero/Pokemon/Attacks/Attack.vb index 63ed161aa..12dd609fa 100644 --- a/2.5DHero/2.5DHero/Pokemon/Attacks/Attack.vb +++ b/2.5DHero/2.5DHero/Pokemon/Attacks/Attack.vb @@ -1374,8 +1374,8 @@ 'Belch 'Case 563 'Rototiller - 'Case 564 - 'Sticky Web + Case 564 + returnMove = New Moves.Bug.StickyWeb() 'Case 565 'Fell Stinger 'Case 566 diff --git a/2.5DHero/2.5DHero/Pokemon/Attacks/Bug/StickyWeb.vb b/2.5DHero/2.5DHero/Pokemon/Attacks/Bug/StickyWeb.vb new file mode 100644 index 000000000..f00b8e252 --- /dev/null +++ b/2.5DHero/2.5DHero/Pokemon/Attacks/Bug/StickyWeb.vb @@ -0,0 +1,80 @@ +Namespace BattleSystem.Moves.Bug + + Public Class StickyWeb + + Inherits Attack + + Public Sub New() + '#Definitions + Me.Type = New Element(Element.Types.Bug) + Me.ID = 564 + Me.OriginalPP = 20 + Me.CurrentPP = 20 + Me.MaxPP = 32 + Me.Power = 0 + Me.Accuracy = 0 + Me.Category = Categories.Status + Me.ContestCategory = ContestCategories.Tough + Me.Name = "Spikes" + Me.Description = "The user weaves a sticky net around the opposing team, which lowers their Speed stat upon switching into battle." + Me.CriticalChance = 0 + Me.IsHMMove = False + Me.Target = Targets.AllFoes + Me.Priority = 0 + Me.TimesToAttack = 1 + '#End + + '#SpecialDefinitions + Me.MakesContact = False + Me.ProtectAffected = False + Me.MagicCoatAffected = True + Me.SnatchAffected = False + Me.MirrorMoveAffected = True + Me.KingsrockAffected = False + Me.CounterAffected = False + + Me.DisabledWhileGravity = False + Me.UseEffectiveness = False + Me.ImmunityAffected = False + Me.HasSecondaryEffect = False + Me.RemovesFrozen = False + + Me.IsHealingMove = False + Me.IsRecoilMove = False + Me.IsPunchingMove = False + Me.IsDamagingMove = False + Me.IsProtectMove = False + Me.IsSoundMove = False + + Me.IsAffectedBySubstitute = False + Me.IsOneHitKOMove = False + Me.IsWonderGuardAffected = False + '#End + + Me.AIField1 = AIField.Support + Me.AIField2 = AIField.Nothing + End Sub + + Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen) + Dim stickyweb As Integer = 0 + If own = True Then + stickyweb = BattleScreen.FieldEffects.OwnStickyWeb + Else + stickyweb = BattleScreen.FieldEffects.OppStickyWeb + End If + If stickyweb < 1 Then + If own = True Then + BattleScreen.FieldEffects.OwnStickyWeb += 1 + BattleScreen.BattleQuery.Add(New TextQueryObject("A sticky web has been laid beneath the opposite team's feet!")) + Else + BattleScreen.FieldEffects.OppStickyWeb += 1 + BattleScreen.BattleQuery.Add(New TextQueryObject("A sticky web has been laid beneath your team's feet!")) + End If + Else + BattleScreen.BattleQuery.Add(New TextQueryObject(Me.Name & " failed!")) + End If + End Sub + + End Class + +End Namespace