📄 npc.bas
字号:
NPCz(TempNPCX, TempNPCY).Frame = 13
NPCz(TempNPCX, TempNPCY).Step = 2
Case 2:
NPCz(TempNPCX, TempNPCY).Frame = 14
NPCz(TempNPCX, TempNPCY).Step = 3
Case 3:
NPCz(TempNPCX, TempNPCY).Frame = 13
NPCz(TempNPCX, TempNPCY).Step = 4
Case 4:
NPCz(TempNPCX, TempNPCY).Frame = 12
NPCz(TempNPCX, TempNPCY).Step = 0
End Select
End If
If NPCz(TempNPCX, TempNPCY).Facing = North Then
Select Case NPCz(TempNPCX, TempNPCY).Step
Case 0:
NPCz(TempNPCX, TempNPCY).Frame = 15
NPCz(TempNPCX, TempNPCY).Step = 1
Case 1:
NPCz(TempNPCX, TempNPCY).Frame = 16
NPCz(TempNPCX, TempNPCY).Step = 2
Case 2:
NPCz(TempNPCX, TempNPCY).Frame = 17
NPCz(TempNPCX, TempNPCY).Step = 3
Case 3:
NPCz(TempNPCX, TempNPCY).Frame = 16
NPCz(TempNPCX, TempNPCY).Step = 4
Case 4:
NPCz(TempNPCX, TempNPCY).Frame = 15
NPCz(TempNPCX, TempNPCY).Step = 0
End Select
End If
If NPCz(TempNPCX, TempNPCY).Facing = West Then
Select Case NPCz(TempNPCX, TempNPCY).Step
Case 0:
NPCz(TempNPCX, TempNPCY).Frame = 18
NPCz(TempNPCX, TempNPCY).Step = 1
Case 1:
NPCz(TempNPCX, TempNPCY).Frame = 19
NPCz(TempNPCX, TempNPCY).Step = 2
Case 2:
NPCz(TempNPCX, TempNPCY).Frame = 20
NPCz(TempNPCX, TempNPCY).Step = 3
Case 3:
NPCz(TempNPCX, TempNPCY).Frame = 19
NPCz(TempNPCX, TempNPCY).Step = 4
Case 4:
NPCz(TempNPCX, TempNPCY).Frame = 18
NPCz(TempNPCX, TempNPCY).Step = 0
End Select
End If
If NPCz(TempNPCX, TempNPCY).Facing = East Then
Select Case NPCz(TempNPCX, TempNPCY).Step
Case 0:
NPCz(TempNPCX, TempNPCY).Frame = 21
NPCz(TempNPCX, TempNPCY).Step = 1
Case 1:
NPCz(TempNPCX, TempNPCY).Frame = 22
NPCz(TempNPCX, TempNPCY).Step = 2
Case 2:
NPCz(TempNPCX, TempNPCY).Frame = 23
NPCz(TempNPCX, TempNPCY).Step = 3
Case 3:
NPCz(TempNPCX, TempNPCY).Frame = 22
NPCz(TempNPCX, TempNPCY).Step = 4
Case 4:
NPCz(TempNPCX, TempNPCY).Frame = 21
NPCz(TempNPCX, TempNPCY).Step = 0
End Select
End If
NPCz(TempNPCX, TempNPCY).StepCounter = 16 / SCROLL_SPEED
End If
NPCz(TempNPCX, TempNPCY).StepCounter = NPCz(TempNPCX, TempNPCY).StepCounter - 1
End If
End Sub
Public Sub MoveNPCProp(X As Integer, Y As Integer, Direction As Byte)
Dim IntCount As Byte
Select Case Direction
Case East:
If mbytMap(X + 1, Y).Walkable = False Then GoTo Skipper:
If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
If NPCz(X, Y).CanMove = False Then GoTo Skipper:
mbytMap(X + 1, Y).NPCText = mbytMap(X, Y).NPCText
mbytMap(X + 1, Y).Sprite = mbytMap(X, Y).Sprite
NPCz(X + 1, Y).Duty = NPCz(X, Y).Duty
NPCz(X + 1, Y).Mobile = NPCz(X, Y).Mobile
NPCz(X + 1, Y).State = NPCz(X, Y).State
NPCz(X + 1, Y).Bubbz = NPCz(X, Y).Bubbz
NPCz(X, Y).Bubbz.Damage = 0
NPCz(X + 1, Y).Walking = East
NPCz(X + 1, Y).Step = 0
NPCz(X + 1, Y).Facing = East
NPCz(X + 1, Y).MoveX = -32
NPCz(X + 1, Y).StepCounter = 0
NPCz(X + 1, Y).Atts = NPCz(X, Y).Atts
mbytMap(X, Y).NPC = False
mbytMap(X + 1, Y).Walkable = False
mbytMap(X + 1, Y).NPC = True
mbytMap(X, Y).Walkable = True
NPCz(X + 1, Y).LastStep = 9
If NPCz(X, Y).Duty = 1 Then
For IntCount = 0 To 9
NPCz(X + 1, Y).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
Next
End If
Case West:
If mbytMap(X - 1, Y).Walkable = False Then GoTo Skipper:
If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
If NPCz(X, Y).CanMove = False Then GoTo Skipper:
mbytMap(X - 1, Y).NPCText = mbytMap(X, Y).NPCText
mbytMap(X - 1, Y).Sprite = mbytMap(X, Y).Sprite
NPCz(X - 1, Y).Duty = NPCz(X, Y).Duty
NPCz(X - 1, Y).Mobile = NPCz(X, Y).Mobile
NPCz(X - 1, Y).State = NPCz(X, Y).State
NPCz(X - 1, Y).Bubbz = NPCz(X, Y).Bubbz
NPCz(X, Y).Bubbz.Damage = 0
NPCz(X - 1, Y).Walking = West
NPCz(X - 1, Y).Step = 0
NPCz(X - 1, Y).Facing = West
NPCz(X - 1, Y).MoveX = 32
NPCz(X - 1, Y).StepCounter = 0
NPCz(X - 1, Y).Atts = NPCz(X, Y).Atts
mbytMap(X, Y).NPC = False
mbytMap(X - 1, Y).NPC = True
mbytMap(X - 1, Y).Walkable = False
mbytMap(X, Y).Walkable = True
NPCz(X - 1, Y).LastStep = 6
If NPCz(X, Y).Duty = 1 Then
For IntCount = 0 To 9
NPCz(X - 1, Y).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
Next
End If
Case South:
If mbytMap(X, Y + 1).Walkable = False Then GoTo Skipper:
If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
If NPCz(X, Y).CanMove = False Then GoTo Skipper:
mbytMap(X, Y + 1).NPCText = mbytMap(X, Y).NPCText
mbytMap(X, Y + 1).Sprite = mbytMap(X, Y).Sprite
NPCz(X, Y + 1).Duty = NPCz(X, Y).Duty
NPCz(X, Y + 1).Mobile = NPCz(X, Y).Mobile
NPCz(X, Y + 1).State = NPCz(X, Y).State
NPCz(X, Y + 1).Bubbz = NPCz(X, Y).Bubbz
NPCz(X, Y).Bubbz.Damage = 0
NPCz(X, Y + 1).Walking = South
NPCz(X, Y + 1).Step = 0
NPCz(X, Y + 1).Facing = South
NPCz(X, Y + 1).MoveY = -32
NPCz(X, Y + 1).StepCounter = 0
NPCz(X, Y + 1).Atts = NPCz(X, Y).Atts
mbytMap(X, Y).NPC = False
mbytMap(X, Y + 1).Walkable = False
mbytMap(X, Y + 1).NPC = True
mbytMap(X, Y).Walkable = True
NPCz(X, Y + 1).LastStep = 0
If NPCz(X, Y).Duty = 1 Then
For IntCount = 0 To 9
NPCz(X, Y + 1).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
Next
End If
Case North:
If mbytMap(X, Y - 1).Walkable = False Then GoTo Skipper:
If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
If NPCz(X, Y).CanMove = False Then GoTo Skipper:
mbytMap(X, Y - 1).NPCText = mbytMap(X, Y).NPCText
mbytMap(X, Y - 1).Sprite = mbytMap(X, Y).Sprite
NPCz(X, Y - 1).Duty = NPCz(X, Y).Duty
NPCz(X, Y - 1).Mobile = NPCz(X, Y).Mobile
NPCz(X, Y - 1).State = NPCz(X, Y).State
NPCz(X, Y - 1).Bubbz = NPCz(X, Y).Bubbz
NPCz(X, Y).Bubbz.Damage = 0
NPCz(X, Y - 1).Walking = North
NPCz(X, Y - 1).Step = 0
NPCz(X, Y - 1).Facing = North
NPCz(X, Y - 1).MoveY = 32
NPCz(X, Y - 1).StepCounter = 0
NPCz(X, Y - 1).Atts = NPCz(X, Y).Atts
mbytMap(X, Y).NPC = False
mbytMap(X, Y - 1).Walkable = False
mbytMap(X, Y - 1).NPC = True
mbytMap(X, Y).Walkable = True
NPCz(X, Y - 1).LastStep = 3
If NPCz(X, Y).Duty = 1 Then
For IntCount = 0 To 9
NPCz(X, Y - 1).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
Next
End If
End Select
Skipper:
End Sub
Public Sub BubbleManager()
Dim intCounterX As Byte
Dim intCounterY As Byte
For intCounterX = 0 To 50
For intCounterY = 0 To 50
If NPCz(intCounterX, intCounterY).Bubbz.Damage > 0 Then
NPCz(intCounterX, intCounterY).Bubbz.Yaxis = NPCz(intCounterX, intCounterY).Bubbz.Yaxis - 1
Select Case NPCz(intCounterX, intCounterY).Bubbz.Sway
Case 0 To 8:
NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis - 1
NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
Case 9 To 24:
NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis + 1
NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
Case 25 To 33:
NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis - 1
NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
End Select
If NPCz(intCounterX, intCounterY).Bubbz.Yaxis = -33 Then
NPCz(intCounterX, intCounterY).Bubbz.Damage = 0
NPCz(intCounterX, intCounterY).Bubbz.Yaxis = 0
NPCz(intCounterX, intCounterY).Bubbz.Xaxis = 0
NPCz(intCounterX, intCounterY).Bubbz.Sway = 0
End If
End If
Next
Next
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -