Added new item assets and updated item holder placements. Also updated rover game loot table to only give Geodes but varying quantities. Big commit. my bad.

This commit is contained in:
akshay committed 2022-08-20 19:19:03 -04:00
1 parent a2998810c1
commit e433f3851b
89 files changed
+9691 -46

No files matched your search

+7 -6
View File
@@ -1,16 +1,17 @@
extends Reference
class_name SimpleLootTable
var item_map = {}
var total_weight = 0
func _init(items, weights):
func _init(in_item_map : Dictionary):
item_map.clear()
total_weight = 0
# Calculate total weight and accumulate the weight for each item
for i in items.size():
total_weight += weights[i]
var item : Resource = items[i]
assert(item != null)
item_map[item] = total_weight
for key in in_item_map.keys():
total_weight += in_item_map[key]
item_map[key] = total_weight
func roll_for_loot() -> Resource:
randomize()
+1 -1
View File
@@ -1,6 +1,6 @@
extends RigidBody
export var treasure: Resource
export var treasure_count : int = 1;
func _ready():
$hit_box.set_meta("owner", self)
+8 -7
View File
@@ -6,19 +6,20 @@ signal got_treasure(item_type)
const LootTable = preload("res://scripts/loot_table.gd")
const RockScene = preload("res://scenes/rock.tscn")
const GeodeResource = preload("res://item_types/geode.tres")
onready var timer : Timer = $Timer
onready var rover = $"%rover"
onready var level_arrow = $"%LevelArrow"
export var play_time: float = 20.0
export var arrow_viz_distance = 10.0
export (Array,Resource) var loot_items = []
export (Array,int) var loot_weights = []
export var geode_loot_count_per_chance = {}
var loot_table = null
var loot_table : SimpleLootTable = null
func _ready():
loot_table = LootTable.new(loot_items, loot_weights)
loot_table = LootTable.new(geode_loot_count_per_chance)
timer.start(play_time)
spawn_rocks(10)
@@ -28,14 +29,14 @@ func spawn_rocks(count: int):
for i in range(min(count, locations.size())):
var location = locations[i]
var rock = RockScene.instance()
rock.treasure = loot_table.roll_for_loot()
assert(rock.treasure != null)
rock.treasure_count = loot_table.roll_for_loot()
location.add_child(rock)
func _on_collection_area_area_entered(area):
if area.has_meta("owner"):
area = area.get_meta("owner")
emit_signal("got_treasure", area.treasure)
for i in area.treasure_count:
emit_signal("got_treasure", GeodeResource)
area.queue_free()
func _process(delta):