mirror of
https://github.com/P3D-Legacy/P3D-Legacy.git
synced 2025-07-28 08:14:29 +02:00
Trainers don't walk through NPCs or objects...
....unless you want them to which you can accomplish by adding "|0" to the end of the AdditionalValue
This commit is contained in:
parent
c19a7b06cd
commit
4edb20faae
@ -334,10 +334,10 @@ Corners:
|
||||
{"Entity"{ENT[{"Position"{sngArr[6,1,12]}}{"EntityID"{str[WallBlock]}}{"TexturePath"{str[Cherrygrove]}}{"Textures"{recArr[[96,16,16,16]]}}{"TextureIndex"{intArr[-1,-1,0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[5]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}}
|
||||
|
||||
NPC:
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,62]}}{"TextureID"{str[35]}}{"ID"{int[0]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\002]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[10,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[1]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003l]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[11,-0.24,44]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003r]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,34]}}{"TextureID"{str[34]}}{"ID"{int[3]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\004]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,62]}}{"TextureID"{str[35]}}{"ID"{int[0]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\002|0]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[10,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[1]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003l|0]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[11,-0.24,44]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003r|0]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,34]}}{"TextureID"{str[34]}}{"ID"{int[3]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\004|0]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[12,0,15]}}{"TextureID"{str[19]}}{"ID"{int[4]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\005]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[8,0,24]}}{"TextureID"{str[gruntm]}}{"ID"{int[5]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\006]}}{"Rotation"{int[1]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
|
||||
|
Binary file not shown.
@ -334,10 +334,10 @@ Corners:
|
||||
{"Entity"{ENT[{"Position"{sngArr[6,1,12]}}{"EntityID"{str[WallBlock]}}{"TexturePath"{str[Cherrygrove]}}{"Textures"{recArr[[96,16,16,16]]}}{"TextureIndex"{intArr[-1,-1,0,0]}}{"Collision"{bool[1]}}{"ModelID"{int[5]}}{"Action"{int[0]}}{"AdditionalValue"{str[]}}{"Rotation"{int[0]}}]}}
|
||||
|
||||
NPC:
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,62]}}{"TextureID"{str[35]}}{"ID"{int[0]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\002]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[10,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[1]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003l]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[11,-0.24,44]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003r]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,34]}}{"TextureID"{str[34]}}{"ID"{int[3]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\004]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,62]}}{"TextureID"{str[35]}}{"ID"{int[0]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\002|0]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[10,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[1]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003l|0]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[11,-0.24,44]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\003r|0]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,34]}}{"TextureID"{str[34]}}{"ID"{int[3]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[2|trainer\fortune\north\004|0]}}{"Rotation"{int[1]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[12,0,15]}}{"TextureID"{str[19]}}{"ID"{int[4]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\005]}}{"Rotation"{int[0]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[7,0,22]}}{"TextureID"{str[gruntm]}}{"ID"{int[5]}}{"Name"{str[Grunt Liberty]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\north\006]}}{"Rotation"{int[2]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[[17,2,2,1]]}}]}}
|
||||
|
||||
|
@ -490,8 +490,8 @@ NPC:
|
||||
{"NPC"{NPC[{"Position"{sngArr[7,1,21]}}{"TextureID"{str[littlegirl]}}{"ID"{int[5]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[1|trainer\fortune\water\005r]}}{"Rotation"{int[2]}}{"Movement"{str[Still]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[12,1,13]}}{"TextureID"{str[pinkshirtgirl]}}{"ID"{int[6]}}{"Name"{str[IDlotto]}}{"Action"{int[2]}}{"AdditionalValue"{str[3|trainer\fortune\water\006]}}{"Rotation"{int[0]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,35]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[Swimmer1]}}{"Action"{int[2]}}{"AdditionalValue"{str[3|trainer\fortune\water\004]}}{"Rotation"{int[3]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[14,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[3]}}{"Name"{str[Swimmer2]}}{"Action"{int[2]}}{"AdditionalValue"{str[3|trainer\fortune\water\003]}}{"Rotation"{int[3]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[13,-0.24,35]}}{"TextureID"{str[34]}}{"ID"{int[2]}}{"Name"{str[Swimmer1]}}{"Action"{int[2]}}{"AdditionalValue"{str[3|trainer\fortune\water\004|0]}}{"Rotation"{int[3]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
{"NPC"{NPC[{"Position"{sngArr[14,-0.24,44]}}{"TextureID"{str[35]}}{"ID"{int[3]}}{"Name"{str[Swimmer2]}}{"Action"{int[2]}}{"AdditionalValue"{str[3|trainer\fortune\water\003|0]}}{"Rotation"{int[3]}}{"Movement"{str[Looking]}}{"MoveRectangles"{recArr[]}}]}}
|
||||
|
||||
Signs:
|
||||
{"Entity"{ENT[{"EntityID"{str[SignBlock]}}{"Position"{sngArr[8,1,14]}}{"TexturePath"{str[Cherrygrove]}}{"Textures"{recArr[[16,32,16,16][32,32,16,16]]}}{"TextureIndex"{intArr[0,0,1,1,1,1,0,0,1,1]}}{"Collision"{bool[1]}}{"ModelID"{int[4]}}{"Action"{int[0]}}{"AdditionalValue"{str[Wanted!~The Ultimate Horn!]}}{"Rotation"{int[0]}}]}}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -27,6 +27,7 @@
|
||||
Public TrainerSight As Integer = 1
|
||||
Public TrainerBeaten As Boolean = False
|
||||
Public TrainerChecked As Boolean = False
|
||||
Public TrainerCheckCollision As Boolean = True
|
||||
|
||||
Dim AnimateIdle As Boolean = True
|
||||
Dim AnimationX As Integer = 1
|
||||
@ -82,6 +83,9 @@
|
||||
|
||||
Me.TrainerSight = CInt(Me.AdditionalValue.GetSplit(0, "|"))
|
||||
Me.AdditionalValue = Me.AdditionalValue.GetSplit(1, "|")
|
||||
If Me.AdditionalValue.Split.Count > 2 Then
|
||||
Me.TrainerCheckCollision = CBool(Me.AdditionalValue.GetSplit(2, "|"))
|
||||
End If
|
||||
End If
|
||||
|
||||
Me.DropUpdateUnlessDrawn = False
|
||||
@ -380,6 +384,43 @@
|
||||
distance = distance.ToPositive()
|
||||
|
||||
If distance <= Me.TrainerSight Then
|
||||
|
||||
Dim canReach As Boolean = True
|
||||
If TrainerCheckCollision = True Then
|
||||
Select Case faceRotation
|
||||
Case 0
|
||||
For i = CInt(Me.Position.Z - distance) To CInt(Me.Position.Z - 1)
|
||||
If CheckCollision(New Vector3(Me.Position.X, Me.Position.Y, i), False) = False Then
|
||||
canReach = False
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Case 2
|
||||
For i = CInt(Me.Position.Z + 1) To CInt(Me.Position.Z + distance)
|
||||
If CheckCollision(New Vector3(Me.Position.X, Me.Position.Y, i), False) = False Then
|
||||
canReach = False
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Case 1
|
||||
For i = CInt(Me.Position.X - distance) To CInt(Me.Position.X - 1)
|
||||
If CheckCollision(New Vector3(i, Me.Position.Y, Me.Position.Z), False) = False Then
|
||||
canReach = False
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Case 3
|
||||
For i = CInt(Me.Position.X + 1) To CInt(Me.Position.X + distance)
|
||||
If CheckCollision(New Vector3(i, Me.Position.Y, Me.Position.Z), False) = False Then
|
||||
canReach = False
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End Select
|
||||
|
||||
End If
|
||||
If canReach = True Then
|
||||
|
||||
Dim InSightMusic As String = "nomusic"
|
||||
|
||||
If Me.IsTrainer = True Then
|
||||
@ -471,6 +512,7 @@
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub ClickFunction()
|
||||
@ -793,12 +835,13 @@
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Function CheckCollision(ByVal newPosition As Vector3) As Boolean
|
||||
Private Function CheckCollision(ByVal newPosition As Vector3, Optional CheckPlayer As Boolean = True) As Boolean
|
||||
newPosition = New Vector3(CInt(newPosition.X), CInt(newPosition.Y), CInt(newPosition.Z))
|
||||
Dim oldPosition As Vector3 = Me.Position
|
||||
|
||||
Dim blocked As Boolean = False
|
||||
|
||||
If CheckPlayer = True Then
|
||||
'' check if player or a following Pokémon is not in the way
|
||||
If Screen.Camera.IsMoving() = False Then
|
||||
If CInt(Screen.Camera.Position.X) = newPosition.X And CInt(Screen.Camera.Position.Y) = newPosition.Y And CInt(Screen.Camera.Position.Z) = newPosition.Z Then
|
||||
@ -837,6 +880,8 @@
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
'' check if an NPC is not in the way
|
||||
For Each NPC As NPC In Screen.Level.GetNPCs()
|
||||
If CInt(NPC.Position.X) = newPosition.X And CInt(NPC.Position.Y) = newPosition.Y And CInt(NPC.Position.Z) = newPosition.Z And NPC.NPCID <> Me.NPCID Then
|
||||
|
Loading…
x
Reference in New Issue
Block a user