最终整理版
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
extends NpcScript
|
||||
|
||||
#
|
||||
const FILL_TIME : float = 10.0
|
||||
const FILL_TICKS : int = 20
|
||||
const FILL_TICK_TIME : float = FILL_TIME / FILL_TICKS
|
||||
const MOVE_TOLERANCE_SQUARED : float = 8.0 * 8.0
|
||||
|
||||
var BOTTLE_ID : int = "Bottle".hash()
|
||||
var WATER_BOTTLE_ID : int = "Water Bottle".hash()
|
||||
|
||||
#
|
||||
func OnStart():
|
||||
if not HasItem(BOTTLE_ID):
|
||||
Mes("You would need a bottle to draw water from this well.")
|
||||
elif not HasItemsSpace([[BOTTLE_ID, -1], [WATER_BOTTLE_ID, 1]]):
|
||||
Mes("You don't have any available space on your inventory.")
|
||||
else:
|
||||
Mes("Hold still while your bottle is filling...")
|
||||
Action(StartFill)
|
||||
|
||||
func StartFill():
|
||||
OnFillTick(own.position, 0)
|
||||
|
||||
func OnFillTick(startPos : Vector2, tick : int):
|
||||
if own.position.distance_squared_to(startPos) > MOVE_TOLERANCE_SQUARED:
|
||||
ClearTracker()
|
||||
Notification("You moved too far from the well!")
|
||||
elif not HasItem(BOTTLE_ID):
|
||||
ClearTracker()
|
||||
elif tick >= FILL_TICKS:
|
||||
CompleteFill()
|
||||
else:
|
||||
DisplayTracker("Filling...", tick, FILL_TICKS, "%")
|
||||
AddTimer(own, FILL_TICK_TIME, OnFillTick.bind(startPos, tick + 1), own.nick)
|
||||
|
||||
func CompleteFill():
|
||||
NpcCommons.ClearTracker(own)
|
||||
if NpcCommons.RemoveItem(own, BOTTLE_ID):
|
||||
NpcCommons.AddItem(own, WATER_BOTTLE_ID)
|
||||
PromptNext()
|
||||
|
||||
func PromptNext():
|
||||
if HasItem(BOTTLE_ID):
|
||||
Mes("Your bottle is now filled with fresh water. You have another empty bottle.")
|
||||
Choice("Fill another bottle", StartFill)
|
||||
Choice("Leave")
|
||||
else:
|
||||
Mes("Your bottle is now filled with fresh water.")
|
||||
Reference in New Issue
Block a user