All
This commit is contained in:
parent
7a8ee29dcb
commit
0fe23420ab
800 changed files with 16547 additions and 0 deletions
73
scripts/tick_process.gd
Normal file
73
scripts/tick_process.gd
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
class_name TickProcess
|
||||
extends Node
|
||||
|
||||
func tick():
|
||||
Log.pr("Tick Process Ticking...")
|
||||
do_autowood()
|
||||
do_whittling()
|
||||
do_selling()
|
||||
|
||||
func do_autowood():
|
||||
# If the autowood unlock is unlocked then automatically gain wood based on the modifier
|
||||
var autowood_unlock = Unlocks.get_unlock_by_id(Global.autowood_unlock_id)
|
||||
if autowood_unlock and autowood_unlock.is_unlocked:
|
||||
Log.pr("Autowood modifier", str(Unlocks.get_modifier_value("autowood_modifier")))
|
||||
var wood_to_gather = max(Unlocks.get_wood_per_click() * Unlocks.get_modifier_value("autowood_modifier"), 1)
|
||||
Inventory.add_wood(wood_to_gather)
|
||||
Log.pr("Auto-gathered", str(wood_to_gather), "wood via autowood unlock.")
|
||||
|
||||
func do_whittling():
|
||||
# If there's more than 1 whole wood available, then whittle based on the efficiency modifier
|
||||
if Inventory.get_wood() >= 1:
|
||||
whittle_max_wood_possible()
|
||||
|
||||
## If multicraft is unlocked, whittle additional wood based on multicraft unlock
|
||||
var multicraft_unlock = Unlocks.get_unlock_by_id(Global.multicraft_unlock_id)
|
||||
if multicraft_unlock and multicraft_unlock.is_unlocked:
|
||||
var additional_whittles = multicraft_unlock.current_rank # Each rank allows one additional whittling action
|
||||
for i in range(additional_whittles):
|
||||
if Inventory.get_wood() >= 1:
|
||||
whittle_max_wood_possible()
|
||||
else:
|
||||
break
|
||||
|
||||
func do_selling():
|
||||
# If the wholesale unlock is purchased, sell blocks of 100 whittled wood if possible
|
||||
var wholesale_unlock = Unlocks.get_unlock_by_id(Global.wholesale_unlock_id)
|
||||
if wholesale_unlock and wholesale_unlock.is_unlocked:
|
||||
while Inventory.get_stock() >= Global.wholesale_bundle_size:
|
||||
Inventory.spend_stock(Global.wholesale_bundle_size)
|
||||
var currency_earned = Global.wholesale_bundle_size * Unlocks.get_sale_price_per_item() * Global.wholesale_discount_multiplier
|
||||
Inventory.add_currency(currency_earned)
|
||||
Log.pr("Sold 100 whittled wood for", str(currency_earned), "currency via wholesale unlock.")
|
||||
|
||||
|
||||
# If there's whittled wood available to sell, sell it for currency
|
||||
if Inventory.get_stock() > 0:
|
||||
var whittle_wood_to_sell = Inventory.get_stock()
|
||||
# Sell whatever people are willing to buy
|
||||
var purchase_rate = Global.base_purchase_rate * Unlocks.get_modifier_value("purchase_rate_modifier")
|
||||
var max_stock_to_sell = floor(purchase_rate)
|
||||
|
||||
# Sell up to the max stock to sell this tick, but no more than available stock
|
||||
# We should always sell at least one, up to the max
|
||||
var actual_stock_to_sell = min(whittle_wood_to_sell, max(1, max_stock_to_sell))
|
||||
|
||||
Inventory.spend_stock(actual_stock_to_sell)
|
||||
var currency_earned = actual_stock_to_sell * Unlocks.get_sale_price_per_item()
|
||||
Inventory.add_currency(currency_earned)
|
||||
|
||||
|
||||
func whittle_max_wood_possible():
|
||||
# Get the items that can be produced per tick
|
||||
var items_produced_per_tick = Unlocks.get_items_produced_per_tick()
|
||||
Log.pr("Items produced per tick:", str(items_produced_per_tick))
|
||||
var wood_needed = ceil(items_produced_per_tick)
|
||||
|
||||
# Whittle as much wood as possible this tick, up to the max allowed by efficiency
|
||||
var wood_to_whittle = min(Inventory.get_wood(), wood_needed)
|
||||
var actual_items_produced = wood_to_whittle
|
||||
|
||||
Inventory.spend_wood(wood_to_whittle)
|
||||
Inventory.add_stock(actual_items_produced)
|
||||
Log.pr("Whittled", str(wood_to_whittle), "wood into", str(actual_items_produced), "whittle wood.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue