mirror of
				https://github.com/P3D-Legacy/P3D-Legacy.git
				synced 2025-11-03 21:15:14 +01:00 
			
		
		
		
	Added a GameMode Move property and 2 functions
* Fixed an issue with GameMode Items in battles * Updated the example files for GameMode Items and GameMode Moves * Maybe fixed something audio volume related * Made it possible to disable the reduction of PP using the DeductPP (bool) property for GameModeMoves * Added the new functions "SetTrigger" and "RemoveTrigger" for GameModeMoves: Function "SetTrigger" checks if a Pokémon does or does not have a certain Status and prevents functions after it from executing if the Pokémon does not have the desired Status. The function is formatted like this: Function|SetTrigger,Target,Triggers * "Target" determines which Pokémon's Status is checked and has to be either 0 or 1 (0 = check own Pokémon, 1 = check opponent's Pokémon) * "Triggers" determines the status effect(s) that should or should not be on the target Pokémon. You can add multiple possible status effects to check for by separating them with a semicolon (;), the values can be: "burn", "freeze", "paralyze", "poison", "badpoison", "anypoison", "sleep", "noburn", "nofreeze", "noparalyze", "nopoison", "nobadpoison", "nopoison", "nosleep" Function "RemoveTrigger" removes such a trigger so that functions after it are executed
This commit is contained in:
		
							parent
							
								
									7bffd5df72
								
							
						
					
					
						commit
						a0aa947c5c
					
				@ -1059,10 +1059,10 @@
 | 
			
		||||
#Region "UseItem"
 | 
			
		||||
 | 
			
		||||
        Private Shared Sub SelectedItemHandler(ByVal params As Object())
 | 
			
		||||
            SelectedItem(CInt(params(0)))
 | 
			
		||||
            SelectedItem(CStr(params(0)))
 | 
			
		||||
        End Sub
 | 
			
		||||
 | 
			
		||||
        Private Shared Sub SelectedItem(ByVal itemID As Integer)
 | 
			
		||||
        Private Shared Sub SelectedItem(ByVal itemID As String)
 | 
			
		||||
            Dim Item As Item = Item.GetItemByID(itemID.ToString)
 | 
			
		||||
 | 
			
		||||
            If Item.CanBeUsedInBattle = True Then
 | 
			
		||||
@ -1103,9 +1103,9 @@
 | 
			
		||||
            End If
 | 
			
		||||
        End Sub
 | 
			
		||||
 | 
			
		||||
        Shared TempItemID As Integer = -1
 | 
			
		||||
        Shared TempItemID As String = "-1"
 | 
			
		||||
 | 
			
		||||
        Private Shared Sub UseItemhandler(ByVal params As Object())
 | 
			
		||||
        Private Shared Sub UseItemHandler(ByVal params As Object())
 | 
			
		||||
            UseItem(CInt(params(0)))
 | 
			
		||||
        End Sub
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@ -37,12 +37,12 @@
 | 
			
		||||
 | 
			
		||||
                Select Case name.ToLower()
 | 
			
		||||
                    Case "volume"
 | 
			
		||||
                        MusicManager.MasterVolume = CSng(CDbl(value) / 100)
 | 
			
		||||
                        SoundManager.Volume = CSng(CDbl(value) / 100)
 | 
			
		||||
                        MusicManager.MasterVolume = CSng(CInt(value) / 100)
 | 
			
		||||
                        SoundManager.Volume = CSng(CInt(value) / 100)
 | 
			
		||||
                    Case "music"
 | 
			
		||||
                        MusicManager.MasterVolume = CSng(CDbl(value) / 100)
 | 
			
		||||
                        MusicManager.MasterVolume = CSng(CInt(value) / 100)
 | 
			
		||||
                    Case "sound"
 | 
			
		||||
                        SoundManager.Volume = CSng(CDbl(value) / 100)
 | 
			
		||||
                        SoundManager.Volume = CSng(CInt(value) / 100)
 | 
			
		||||
                    Case "muted"
 | 
			
		||||
                        SoundManager.Muted = CBool(value)
 | 
			
		||||
                        MusicManager.Muted = CBool(value)
 | 
			
		||||
 | 
			
		||||
@ -170,6 +170,7 @@
 | 
			
		||||
 | 
			
		||||
        Public GameModeFunction As String = "" 'A GameMode can specify a pre defined function for a move.
 | 
			
		||||
        Public IsGameModeMove As Boolean = False
 | 
			
		||||
        Public gmDeductPP As Boolean = True
 | 
			
		||||
 | 
			
		||||
        Private _power As Integer = 40
 | 
			
		||||
        Private _accuracy As Integer = 100
 | 
			
		||||
@ -187,6 +188,8 @@
 | 
			
		||||
        Public EffectChances As New List(Of Integer)
 | 
			
		||||
        '#End
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        '#SpecialDefinitions
 | 
			
		||||
        'Damage and effect types
 | 
			
		||||
        Public MakesContact As Boolean = True
 | 
			
		||||
@ -2057,7 +2060,11 @@
 | 
			
		||||
        ''' <param name="Own">If the own Pokémon used the move.</param>
 | 
			
		||||
        ''' <param name="BattleScreen">Reference to the BattleScreen.</param>
 | 
			
		||||
        Public Overridable Function DeductPP(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
 | 
			
		||||
            If Me.IsGameModeMove = True Then
 | 
			
		||||
                Return gmDeductPP
 | 
			
		||||
            Else
 | 
			
		||||
                Return True
 | 
			
		||||
            End If
 | 
			
		||||
        End Function
 | 
			
		||||
 | 
			
		||||
        ''' <summary>
 | 
			
		||||
 | 
			
		||||
@ -13,10 +13,171 @@
 | 
			
		||||
        ''' <param name="BattleScreen">Reference to the BattleScreen.</param>
 | 
			
		||||
        Public Shared Sub ExecuteMoveHitsFunction(ByVal Move As Attack, ByVal own As Boolean, ByVal BattleScreen As BattleScreen)
 | 
			
		||||
            Dim functions() As String = Move.GameModeFunction.Split("|")
 | 
			
		||||
            Dim Trigger As String = ""
 | 
			
		||||
            For i = 0 To functions.Count - 1
 | 
			
		||||
                Dim f As String = functions(i)
 | 
			
		||||
                Dim fMain As String = f
 | 
			
		||||
                Dim fSub As String = ""
 | 
			
		||||
 | 
			
		||||
                Select Case f.GetSplit(0, ",").ToLower
 | 
			
		||||
                    Case "settrigger"
 | 
			
		||||
                        Trigger = f.GetSplit(1, ",") & "," & f.GetSplit(2, ",")
 | 
			
		||||
                    Case "removetrigger"
 | 
			
		||||
                        Trigger = ""
 | 
			
		||||
                End Select
 | 
			
		||||
 | 
			
		||||
                If Trigger <> "" Then
 | 
			
		||||
                    Dim Target As Boolean = CBool(Trigger.GetSplit(0, ","))
 | 
			
		||||
                    Dim Triggers() As String = Trigger.GetSplit(1, ",").Split(";")
 | 
			
		||||
                    Dim Success As Boolean = False
 | 
			
		||||
                    For t = 0 To Triggers.Count - 1
 | 
			
		||||
                        Select Case Triggers(t).ToLower()
 | 
			
		||||
                            Case "burn"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Burn Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Burn Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "freeze"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Freeze Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Freeze Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "paralyze"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Paralyzed Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Paralyzed Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "poison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Poison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Poison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "toxic", "badpoison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "anypoison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Poison OrElse BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Poison OrElse BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "sleep"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "noburn"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Burn Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Burn Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "nofreeze"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Freeze Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Freeze Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "noparalyze"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Paralyzed Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Paralyzed Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "nopoison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Poison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Poison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "notoxic", "nobadpoison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "nopoison"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Poison AndAlso BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Poison AndAlso BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                            Case "nosleep"
 | 
			
		||||
                                If Target = True Then
 | 
			
		||||
                                    If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Sleep Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                Else
 | 
			
		||||
                                    If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Sleep Then
 | 
			
		||||
                                        Success = True
 | 
			
		||||
                                    End If
 | 
			
		||||
                                End If
 | 
			
		||||
                        End Select
 | 
			
		||||
                    Next
 | 
			
		||||
                    If Success = True Then
 | 
			
		||||
                        Trigger = ""
 | 
			
		||||
                    End If
 | 
			
		||||
                Else
 | 
			
		||||
                    If f.Contains(",") = True Then
 | 
			
		||||
                        fMain = f.GetSplit(0, ",")
 | 
			
		||||
                        fSub = f.GetSplit(1, ",")
 | 
			
		||||
@ -196,6 +357,7 @@
 | 
			
		||||
                        Case "sleep"
 | 
			
		||||
                            Sleep(Move, own, BattleScreen, CInt(fSub))
 | 
			
		||||
                    End Select
 | 
			
		||||
                End If
 | 
			
		||||
            Next
 | 
			
		||||
        End Sub
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -178,6 +178,8 @@
 | 
			
		||||
                                move.UseOppDefense = CBool(value)
 | 
			
		||||
                            Case "useoppevasion"
 | 
			
		||||
                                move.UseOppEvasion = CBool(value)
 | 
			
		||||
                            Case "deductpp"
 | 
			
		||||
                                move.gmDeductPP = CBool(value)
 | 
			
		||||
                        End Select
 | 
			
		||||
                    End If
 | 
			
		||||
                Next
 | 
			
		||||
 | 
			
		||||
@ -120,7 +120,7 @@ Public Class GameModeItemLoader
 | 
			
		||||
                            item.gmIsHealingItem = CBool(value)
 | 
			
		||||
                        Case "healhpamount"
 | 
			
		||||
                            item.gmHealHPAmount = CInt(value)
 | 
			
		||||
                        Case "curestatuseffects"
 | 
			
		||||
                        Case "curestatus"
 | 
			
		||||
                            Dim StatusEffectList As New List(Of String)
 | 
			
		||||
                            Dim valueSplit As String() = value.Split(",")
 | 
			
		||||
                            For i = 0 To valueSplit.Count - 1
 | 
			
		||||
 | 
			
		||||
@ -984,7 +984,11 @@ Public Class NewInventoryScreen
 | 
			
		||||
                Case INFO_ITEM_OPTION_TOSS
 | 
			
		||||
                    TossItem(cItem)
 | 
			
		||||
                Case INFO_ITEM_OPTION_SELECT
 | 
			
		||||
                    FireSelectionEvent(cItem.ID)
 | 
			
		||||
                    If cItem.IsGameModeItem = True Then
 | 
			
		||||
                        FireSelectionEvent(cItem.gmID)
 | 
			
		||||
                    Else
 | 
			
		||||
                        FireSelectionEvent(cItem.ID.ToString)
 | 
			
		||||
                    End If
 | 
			
		||||
                    CloseInfoScreen()
 | 
			
		||||
                    _closing = True
 | 
			
		||||
            End Select
 | 
			
		||||
@ -1268,7 +1272,7 @@ Public Class NewInventoryScreen
 | 
			
		||||
 | 
			
		||||
    Public Event SelectedObject(params() As Object) Implements ISelectionScreen.SelectedObject
 | 
			
		||||
 | 
			
		||||
    Private Sub FireSelectionEvent(ByVal itemId As Integer)
 | 
			
		||||
    Private Sub FireSelectionEvent(ByVal itemId As String)
 | 
			
		||||
        RaiseEvent SelectedObject(New Object() {itemId})
 | 
			
		||||
    End Sub
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user