diff --git a/P3D/Content/Data/Scripts/quest/sevault/chansey.dat b/P3D/Content/Data/Scripts/quest/sevault/chansey.dat new file mode 100644 index 000000000..d94d64272 Binary files /dev/null and b/P3D/Content/Data/Scripts/quest/sevault/chansey.dat differ diff --git a/P3D/Content/Data/Scripts/quest/sevault/danceguy.dat b/P3D/Content/Data/Scripts/quest/sevault/danceguy.dat new file mode 100644 index 000000000..9e3272cb7 Binary files /dev/null and b/P3D/Content/Data/Scripts/quest/sevault/danceguy.dat differ diff --git a/P3D/Content/Data/maps/fortune/0.dat b/P3D/Content/Data/maps/fortune/0.dat new file mode 100644 index 000000000..a0421f030 Binary files /dev/null and b/P3D/Content/Data/maps/fortune/0.dat differ diff --git a/P3D/Content/Data/maps/quest/1.dat b/P3D/Content/Data/maps/quest/1.dat index 0feb8191f..0033afaf6 100644 --- a/P3D/Content/Data/maps/quest/1.dat +++ b/P3D/Content/Data/maps/quest/1.dat @@ -1,4 +1,4 @@ -{"Level"{LEV[{"Name"{str[Sevault Canyon]}}{"MusicLoop"{str[RouteMusic4]}}{"CurrentRegion"{str[sevii islands]}}]}} +{"Level"{LEV[{"Name"{str[Sevault Canyon]}}{"MusicLoop"{str[violet]}}{"CurrentRegion"{str[sevii islands]}}]}} {"Actions"{LEV[{"CanTeleport"{bool[0]}}{"CanDig"{bool[0]}}{"CanFly"{bool[0]}}{"EnviromentType"{int[1]}}{"Weather"{int[1]}}]}} Floor: @@ -24,23 +24,20 @@ Ceiling: Furniture: Table: -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.4,2]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[3,3,3,3,0,0,2,2,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.4,2]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[3,3,2,2,3,3,0,0,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.4,3]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[0,0,3,3,2,2,3,3,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.4,3]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[2,2,0,0,3,3,3,3,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.4,2]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[3,3,3,3,0,0,2,2,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.4,2]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[3,3,2,2,3,3,0,0,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.4,3]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[0,0,3,3,2,2,3,3,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.4,3]}}{"TexturePath"{str[Lab]}}{"Textures"{recArr[[16,64,16,3][16,67,16,3][16,70,16,3][16,73,16,3]]}}{"TextureIndex"{intArr[2,2,0,0,3,3,3,3,3,3]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.2,2]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][80,64,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.2,2]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][96,64,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.2,3]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][80,80,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.2,3]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][96,80,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.2,2]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][80,64,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.2,2]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][96,64,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[3,-0.2,3]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][80,80,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} +{"Entity"{ENT[{"Scale"{sngArr[1,0.2,1]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[4,-0.2,3]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[64,80,16,3][96,80,16,16]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"CameraDistanceDelta"{sng[0.2]}}{"Rotation"{int[0]}}]}} chairs: {"Entity"{ENT[{"Scale"{sngArr[0.5,1,0.5]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[5,0.21,3]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[0,48,16,16]]}}{"TextureIndex"{intArr[0,0]}}{"Collision"{bool[0]}}{"ModelID"{int[0]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} {"Entity"{ENT[{"Scale"{sngArr[0.3,0.2,0.3]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[5,-0.4,3]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[16,57,16,7]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,0,0]}}{"Collision"{bool[0]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[0.5,1,0.5]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[2,0.21,3]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[0,48,16,16]]}}{"TextureIndex"{intArr[0,0]}}{"Collision"{bool[0]}}{"ModelID"{int[0]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} -{"Entity"{ENT[{"Scale"{sngArr[0.3,0.2,0.3]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[2,-0.4,3]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[16,57,16,7]]}}{"TextureIndex"{intArr[0,0,0,0,0,0,0,0,0,0]}}{"Collision"{bool[0]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} - Plants: {"Entity"{ENT[{"Scale"{sngArr[0.6,0.6,0.6]}}{"EntityID"{str[WallBill]}}{"Position"{sngArr[0,-0.25,6]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[0,32,16,16]]}}{"TextureIndex"{intArr[0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[3]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} {"Entity"{ENT[{"Scale"{sngArr[0.6,0.6,0.6]}}{"EntityID"{str[WallBill]}}{"Position"{sngArr[0,0.35,6]}}{"TexturePath"{str[House2]}}{"Textures"{recArr[[0,16,16,16]]}}{"TextureIndex"{intArr[0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[3]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} @@ -62,5 +59,8 @@ tv: {"Entity"{ENT[{"Scale"{sngArr[0.8,0.5,0.3]}}{"EntityID"{str[WallBlock]}}{"Position"{sngArr[2,0.15,0]}}{"TexturePath"{str[House]}}{"Textures"{recArr[[80,48,16,11][96,48,16,11][80,59,16,4]]}}{"TextureIndex"{intArr[0,0,1,1,1,1,2,2,2,2]}}{"Collision"{bool[1]}}{"ModelID"{int[1]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}} NPCs: -{"NPC"{NPC[{"Position"{sngArr[2,0,2]}}{"TextureID"{str[9]}}{"ID"{int[0]}}{"Name"{str[Father]}}{"Action"{int[0]}}{"AdditionalValue"{str[Urrrrrrrrgggghhhh...~Kwaaaaah!*...It's useless!*I can't make this spoon~bend with my mind.*Maybe I really don't have~any psychic powers.]}}{"Rotation"{int[3]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[]}}]}} -{"NPC"{NPC[{"Position"{sngArr[5,0,2]}}{"TextureID"{str[8]}}{"ID"{int[1]}}{"Name"{str[Father]}}{"Action"{int[0]}}{"AdditionalValue"{str[You know about a girl~Gym Leader in Saffron City?*She uses Psychic-type~Pokémon, right?*I admire her,~I really do.*I've heard she's one cool~customer and beautiful, too.]}}{"Rotation"{int[1]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[]}}]}} +{"NPC"{NPC[{"Position"{sngArr[1,0,2]}}{"TextureID"{str[9]}}{"ID"{int[0]}}{"Name"{str[Man]}}{"Action"{int[1]}}{"AdditionalValue"{str[quest\sevault\danceguy]}}{"Rotation"{int[2]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[]}}]}} +{"NPC"{NPC[{"Position"{sngArr[4,0,0]}}{"TextureID"{str[[POKEMON|N]113]}}{"ID"{int[1]}}{"Name"{str[Chansey]}}{"Action"{int[1]}}{"AdditionalValue"{str[quest\sevault\chansey]}}{"Rotation"{int[2]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[]}}]}} + +Lucky Punch: +{"Entity"{ENT[{"EntityID"{str[ItemObject]}}{"Position"{sngArr[4,0.03,2]}}{"TexturePath"{str[Routes]}}{"Textures"{recArr[[192,16,16,16]]}}{"TextureIndex"{intArr[0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[3]}}{"Action"{int[0]}}{"AdditionalValue"{str[0,30]}}{"Rotation"{int[0]}}{"Scale"{sngArr[0.25,0.25,0.25]}}]}} \ No newline at end of file diff --git a/P3D/Debug/DebugFileWatcher.vb b/P3D/Debug/DebugFileWatcher.vb index 5d951020f..db278159f 100644 --- a/P3D/Debug/DebugFileWatcher.vb +++ b/P3D/Debug/DebugFileWatcher.vb @@ -33,7 +33,8 @@ Public Class DebugFileWatcher End Sub Private Shared Function GetProjectPath() As String - Return New DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.FullName + Return New DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.FullName '' Remove when making builds for others. + 'Return New DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory).FullName ''Use this one instead in such case. End Function Public Shared Sub StartWatching() diff --git a/P3D/Entites/Entity.vb b/P3D/Entites/Entity.vb index 5a7305195..6cbb82b30 100644 --- a/P3D/Entites/Entity.vb +++ b/P3D/Entites/Entity.vb @@ -23,12 +23,15 @@ Public Shader As New Vector3(1.0F) Public Shaders As New List(Of Vector3) + Public CameraDistanceDelta As Single = 0.0F + Public SeasonColorTexture As String = "" Public FaceDirection As Integer = 0 Public Moved As Single = 0.0F Public Speed As Single = 0.04F Public CanMove As Boolean = False + Public isDancing As Boolean = False Public Opacity As Single = 1.0F Private _normalOpactity As Single = 1.0F @@ -122,7 +125,7 @@ Me.UpdateEntity() End Sub - Public Shared Function GetNewEntity(ByVal EntityID As String, ByVal Position As Vector3, ByVal Textures() As Texture2D, ByVal TextureIndex() As Integer, ByVal Collision As Boolean, ByVal Rotation As Vector3, ByVal Scale As Vector3, ByVal Model As BaseModel, ByVal ActionValue As Integer, ByVal AdditionalValue As String, ByVal Visible As Boolean, ByVal Shader As Vector3, ByVal ID As Integer, ByVal MapOrigin As String, ByVal SeasonColorTexture As String, ByVal Offset As Vector3, Optional ByVal Params() As Object = Nothing, Optional ByVal Opacity As Single = 1.0F, Optional ByVal AnimationData As List(Of List(Of Integer)) = Nothing) As Entity + Public Shared Function GetNewEntity(ByVal EntityID As String, ByVal Position As Vector3, ByVal Textures() As Texture2D, ByVal TextureIndex() As Integer, ByVal Collision As Boolean, ByVal Rotation As Vector3, ByVal Scale As Vector3, ByVal Model As BaseModel, ByVal ActionValue As Integer, ByVal AdditionalValue As String, ByVal Visible As Boolean, ByVal Shader As Vector3, ByVal ID As Integer, ByVal MapOrigin As String, ByVal SeasonColorTexture As String, ByVal Offset As Vector3, Optional ByVal Params() As Object = Nothing, Optional ByVal Opacity As Single = 1.0F, Optional ByVal AnimationData As List(Of List(Of Integer)) = Nothing, Optional ByVal CameraDistanceDelta As Single = 0.0F) As Entity Dim newEnt As New Entity() Dim propertiesEnt As New Entity() @@ -144,6 +147,7 @@ propertiesEnt.MapOrigin = MapOrigin propertiesEnt.SeasonColorTexture = SeasonColorTexture propertiesEnt.Offset = Offset + propertiesEnt.CameraDistanceDelta = CameraDistanceDelta Select Case EntityID.ToLower() Case "animatedblock" @@ -285,6 +289,7 @@ newEnt.SeasonColorTexture = PropertiesEnt.SeasonColorTexture newEnt.Offset = PropertiesEnt.Offset newEnt.NormalOpacity = PropertiesEnt.Opacity + newEnt.CameraDistanceDelta = PropertiesEnt.CameraDistanceDelta End Sub Public Shared Function GetRotationFromInteger(ByVal i As Integer) As Vector3 @@ -360,7 +365,7 @@ End Function Protected Overridable Function CalculateCameraDistance(CPosition As Vector3) As Single - Return Vector3.Distance(Me.GetCameraDistanceCenterPoint(), CPosition) + Return Vector3.Distance(Me.GetCameraDistanceCenterPoint(), CPosition) + CameraDistanceDelta End Function Public Overridable Sub UpdateEntity() @@ -399,6 +404,7 @@ End Select movement *= Speed + Me.Position += movement Me.CreatedWorld = False @@ -407,6 +413,7 @@ Me.Position.X = CInt(Me.Position.X) Me.Position.Z = CInt(Me.Position.Z) + End If End If diff --git a/P3D/Entites/Other/NPC.vb b/P3D/Entites/Other/NPC.vb index 4c7c76574..fe84e466f 100644 --- a/P3D/Entites/Other/NPC.vb +++ b/P3D/Entites/Other/NPC.vb @@ -621,7 +621,9 @@ Private Sub Move() If Moved > 0.0F Then - Me.Position += GetMove() + If Not isDancing Then + Me.Position += GetMove() + End If If Me.Speed < 0 Then Moved += Me.Speed diff --git a/P3D/Entites/Other/OwnPlayer.vb b/P3D/Entites/Other/OwnPlayer.vb index dc6232016..61db3da4f 100644 --- a/P3D/Entites/Other/OwnPlayer.vb +++ b/P3D/Entites/Other/OwnPlayer.vb @@ -95,7 +95,7 @@ End Sub Private Sub Move() - If Screen.Camera.IsMoving() = True And Me.DoAnimation = True Then + If (Screen.Camera.IsMoving() = True And Me.DoAnimation = True) OrElse (Screen.Level.OwnPlayer IsNot Nothing AndAlso Screen.Level.OwnPlayer.isDancing) Then Me.AnimationDelay -= 0.13F If AnimationDelay <= 0.0F Then AnimationDelay = GetAnimationDelay() diff --git a/P3D/Overworld/OverworldCamera.vb b/P3D/Overworld/OverworldCamera.vb index b645b4aae..c25592e20 100644 --- a/P3D/Overworld/OverworldCamera.vb +++ b/P3D/Overworld/OverworldCamera.vb @@ -547,12 +547,15 @@ Public Class OverworldCamera If _moved > 0.0F And Turning = False Then Dim v As Vector3 = PlannedMovement * Speed - Position += v + If Not Screen.Level.OwnPlayer().isDancing Then + Position += v + End If + _moved -= Speed If _moved <= 0.0F Then StopMovement() - + Screen.Level.OwnPlayer().isDancing = False Position.X = Position.X.ToInteger() Position.Y = Position.Y.ToInteger() + 0.1F Position.Z = Position.Z.ToInteger() diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj index 2b2dd8838..28bd2345f 100644 --- a/P3D/P3D.vbproj +++ b/P3D/P3D.vbproj @@ -25441,6 +25441,15 @@ PreserveNewest + + Always + + + PreserveNewest + + + PreserveNewest + diff --git a/P3D/Security/FileValidation.vb b/P3D/Security/FileValidation.vb index f210083ee..9ae986535 100644 --- a/P3D/Security/FileValidation.vb +++ b/P3D/Security/FileValidation.vb @@ -6,7 +6,7 @@ Shared _valid As Boolean = False Const RUNVALIDATION As Boolean = False - Const EXPECTEDSIZE As Integer = 42421461 + Const EXPECTEDSIZE As Integer = 977834 Const METAHASH As String = "MEEzNjIzMUE5RkEwNEFCQjgwQUQwODQ1NDVDRjVCNzQ=" Public Shared ReadOnly Property IsValid(ByVal ForceResult As Boolean) As Boolean diff --git a/P3D/World/ActionScript/V2/ScriptCommands/DoNPC.vb b/P3D/World/ActionScript/V2/ScriptCommands/DoNPC.vb index 2485d1a53..d58c2bb5f 100644 --- a/P3D/World/ActionScript/V2/ScriptCommands/DoNPC.vb +++ b/P3D/World/ActionScript/V2/ScriptCommands/DoNPC.vb @@ -125,6 +125,63 @@ targetNPC.Moved += steps targetNPC.MoveAsync = True + IsReady = True + Case "dance" + Dim targetNPC As NPC = Screen.Level.GetNPC(int(argument.GetSplit(0))) + Dim steps As Integer = int(argument.GetSplit(1)) + + Screen.Level.UpdateEntities() + targetNPC.isDancing = True + If ScriptV2.started = False Then + If steps < 0 Then + If targetNPC.Speed > 0 Then + targetNPC.Speed *= -1 + End If + Else + If targetNPC.Speed < 0 Then + targetNPC.Speed *= -1 + End If + End If + + steps = steps.ToPositive() + + targetNPC.Moved += steps + ScriptV2.started = True + Else + If targetNPC.Moved <= 0.0F Then + If targetNPC.Speed < 0 Then + targetNPC.Speed *= -1 + End If + IsReady = True + Else + If targetNPC.InCameraFocus() = True Then + Screen.Camera.Update() + End If + End If + End If + Case "danceasync" + + Dim targetNPC As NPC = Screen.Level.GetNPC(int(argument.GetSplit(0))) + Dim steps As Integer = int(argument.GetSplit(1)) + + Screen.Level.UpdateEntities() + + targetNPC.isDancing = True + If steps < 0 Then + If targetNPC.Speed > 0 Then + targetNPC.Speed *= -1 + End If + Else + If targetNPC.Speed < 0 Then + targetNPC.Speed *= -1 + End If + End If + + steps = steps.ToPositive() + + targetNPC.Moved += steps + targetNPC.MoveAsync = True + IsReady = True Case "turn" Dim targetNPC As NPC = Screen.Level.GetNPC(int(argument.GetSplit(0))) diff --git a/P3D/World/ActionScript/V2/ScriptCommands/DoPlayer.vb b/P3D/World/ActionScript/V2/ScriptCommands/DoPlayer.vb index ae44e062b..e9053ab3f 100644 --- a/P3D/World/ActionScript/V2/ScriptCommands/DoPlayer.vb +++ b/P3D/World/ActionScript/V2/ScriptCommands/DoPlayer.vb @@ -65,6 +65,20 @@ IsReady = True End If End If + Case "dance" + Screen.Level.OwnPlayer().isDancing = True + If Started = False Then + Screen.Camera.Move(sng(argument)) + Started = True + Screen.Level.OverworldPokemon.Visible = False + Else + Screen.Level.UpdateEntities() + Screen.Camera.Update() + If Screen.Camera.IsMoving() = False Then + IsReady = True + Screen.Level.OverworldPokemon.Visible = False + End If + End If Case "turnasync" Screen.Camera.Turn(int(argument)) IsReady = True diff --git a/P3D/World/LevelLoader.vb b/P3D/World/LevelLoader.vb index 6ea8202af..ad78f1bea 100644 --- a/P3D/World/LevelLoader.vb +++ b/P3D/World/LevelLoader.vb @@ -859,6 +859,11 @@ Opacity = CSng(GetTag(Tags, "Opacity")) End If + Dim CameraDistanceDelta As Single = 0.0F + If TagExists(Tags, "CameraDistanceDelta") = True Then + CameraDistanceDelta = CSng(GetTag(Tags, "CameraDistanceDelta")) + End If + For X = 0 To Size.Width - 1 Step Steps.X For Z = 0 To Size.Height - 1 Step Steps.Z For Y = 0 To SizeY - 1 Step Steps.Y @@ -906,7 +911,8 @@ Offset, {}, Opacity, - AnimationData) + AnimationData, + CameraDistanceDelta) newEnt.IsOffsetMapContent = loadOffsetMap If Not newEnt Is Nothing Then diff --git a/lib/P3D.ContentPipeline/Content/Content.mgcb b/lib/P3D.ContentPipeline/Content/Content.mgcb index 5c5f5d93d..995d65cd5 100644 --- a/lib/P3D.ContentPipeline/Content/Content.mgcb +++ b/lib/P3D.ContentPipeline/Content/Content.mgcb @@ -1378,3 +1378,15 @@ /processorParam:Quality=Best /build:Songs/wind.ogg +#begin Songs/trainerschool.ogg +/importer:OggImporter +/processor:SongProcessor +/processorParam:Quality=Best +/build:Songs/trainerschool.ogg + +#begin Songs/intro/trainerschool.ogg +/importer:OggImporter +/processor:SongProcessor +/processorParam:Quality=Best +/build:Songs/intro/trainerschool.ogg + diff --git a/lib/P3D.ContentPipeline/Content/Songs/intro/trainerschool.ogg b/lib/P3D.ContentPipeline/Content/Songs/intro/trainerschool.ogg new file mode 100644 index 000000000..513cf61c7 Binary files /dev/null and b/lib/P3D.ContentPipeline/Content/Songs/intro/trainerschool.ogg differ diff --git a/lib/P3D.ContentPipeline/Content/Songs/trainerschool.ogg b/lib/P3D.ContentPipeline/Content/Songs/trainerschool.ogg new file mode 100644 index 000000000..f431b67ee Binary files /dev/null and b/lib/P3D.ContentPipeline/Content/Songs/trainerschool.ogg differ diff --git a/lib/build/Content/Songs/intro/trainerschool.xnb b/lib/build/Content/Songs/intro/trainerschool.xnb new file mode 100644 index 000000000..6052deda0 Binary files /dev/null and b/lib/build/Content/Songs/intro/trainerschool.xnb differ diff --git a/lib/build/Content/Songs/trainerschool.xnb b/lib/build/Content/Songs/trainerschool.xnb new file mode 100644 index 000000000..c504836c1 Binary files /dev/null and b/lib/build/Content/Songs/trainerschool.xnb differ diff --git a/lib/build/Pokemon3D.exe b/lib/build/Pokemon3D.exe index 8c9350e45..8d1129079 100644 Binary files a/lib/build/Pokemon3D.exe and b/lib/build/Pokemon3D.exe differ