refactor
This commit is contained in:
27
systems/loot_system.gd
Normal file
27
systems/loot_system.gd
Normal file
@@ -0,0 +1,27 @@
|
||||
extends Node
|
||||
|
||||
const LOOT_SCENE: PackedScene = preload("res://scenes/entities/loot/loot_drop.tscn")
|
||||
|
||||
func _loot_root() -> Node3D:
|
||||
var n: Node = get_node_or_null("/root/World/EntityRoot/Loot")
|
||||
if n == null:
|
||||
n = get_node_or_null("/root/Dungeon/EntityRoot/Loot")
|
||||
return n
|
||||
|
||||
func drop_loot_for(entity: Node, pos: Vector3) -> void:
|
||||
if not (multiplayer.is_server() or multiplayer.multiplayer_peer == null):
|
||||
return
|
||||
var root := _loot_root()
|
||||
if root == null:
|
||||
return
|
||||
var amount: int = 1
|
||||
var item_id: StringName = &"essence"
|
||||
if entity.is_in_group("boss"):
|
||||
amount = 5 + randi() % 5
|
||||
var loot: Area3D = LOOT_SCENE.instantiate()
|
||||
loot.item_id = item_id
|
||||
loot.amount = amount
|
||||
loot.name = "Loot_%d" % (Time.get_ticks_msec() + randi() % 1000)
|
||||
root.add_child(loot, true)
|
||||
loot.global_position = pos + Vector3(randf_range(-0.5, 0.5), 0.4, randf_range(-0.5, 0.5))
|
||||
EventBus.loot_dropped.emit([item_id], loot.global_position)
|
||||
Reference in New Issue
Block a user