The pirate treasure: each player's own mound at their X, dug with a pickaxe; the drowned crew rise at night or when the chest comes up; the ship's compass, a spyglass, a cutlass and pirate gold; online too
This commit is contained in:
35
scripts/world/treasure_mound.gd
Normal file
35
scripts/world/treasure_mound.gd
Normal file
@@ -0,0 +1,35 @@
|
||||
extends StaticBody3D
|
||||
## Your X, on the ground (treasure.gd): a mound of loose earth by a marker
|
||||
## stone, with two sticks crossed in it. It answers like a boulder does
|
||||
## (Actions.harvest_hit), so a pickaxe digs it; the treasure decides the rest.
|
||||
|
||||
var treasure: Node3D
|
||||
var owner_id := ""
|
||||
var uid := ""
|
||||
var tool_kind := "pickaxe"
|
||||
var min_tier := 1
|
||||
var max_hp := 18.0
|
||||
var hp := 18.0
|
||||
var depleted := false
|
||||
var kind := "rock"
|
||||
var chip_color := Color(0.36, 0.27, 0.18)
|
||||
|
||||
func display_name() -> String:
|
||||
return "Loose earth"
|
||||
|
||||
func refusal() -> String:
|
||||
return ""
|
||||
|
||||
func interact_prompt(_player: Node) -> String:
|
||||
return "Loose earth by a marker stone: X marks the spot. [LMB] Dig with a pickaxe (about %d blows left)" % ceili(hp)
|
||||
|
||||
func interact(player: Node) -> void:
|
||||
Actions.tell(player, interact_prompt(player))
|
||||
|
||||
## One blow (from Actions.harvest_hit).
|
||||
func hit(damage: float, _at: Vector3, _from: Vector3) -> Dictionary:
|
||||
hp = maxf(hp - damage, 0.0)
|
||||
treasure.mound_hit(self)
|
||||
if hp <= 0.0 and not depleted:
|
||||
depleted = true
|
||||
return {}
|
||||
Reference in New Issue
Block a user