extends Resource class_name gamemode @export var gamemode_name : String = "My Custom Game Mode" @export_range(1,5) var estimated_difficulty : int @export_enum("Kill 'em All","Extraction","Survival_Time") var win_conditions @export_group("Win Conditions") @export var survival_time : float = 160 #in seconds @export_group("Rewards and Penalties") @export var max_number_of_chests : int = 3 @export var money_lost_multiplier : float = .5 @export var die_on_leaving_bounds : bool = true @export_enum("Drop All Weapons","Drop Random","Drop None") var weapon_penalty = 1 @export var weapon_drop_percentage : float = .5 @export var ammo_drop_percentage : float = .5 @export_group("Player Movement") @export var walk_speed = 12.0 @export var jump_velocity = 5 @export var dash_speed = 40 @export var gravity : float = -9.8 @export var time_slowed_speed : float = .1 @export var stamina_regen = true @export var max_stamina : float = 100 @export var stamina_drain : float = 20 @export var stamina_gain : float = 5 @export var air_dash_max : int = 1 @export var load_save : = true @export var money_multiplier : float = 1.0 @export var start_health = 10 @export_group("Drops") @export var drop_chance_minimum = .1 @export var random_drops : bool = false @export var ammo_drop_enabled = true @export var expected_ammo = {"light" : 200, "medium" : 50, "heavy" : 25,"shotgun" : 20, "rocket" : 3} #light, medium,heavy,shotgun,rocket @export var stamina_drop_enabled = true @export var health_drop_enabled = true @export var money_drop_enabled = true func apply_weapon_penalty(): for i in GameGlobals.ammo_reserve: GameGlobals.ammo_reserve[i] = int(GameGlobals.ammo_reserve[i] * ammo_drop_percentage) match weapon_penalty: 0: #Drop All GameGlobals.held_guns = [] 1: #Drop Percentage var weapons_lost = GameGlobals.held_guns.size() * weapon_drop_percentage for weapon in weapons_lost: GameGlobals.held_guns.erase(GameGlobals.held_guns.pick_random()) 2: #Do Nothing pass func apply_money_penalty(): #Do money penalty GameGlobals.money *= money_lost_multiplier GameGlobals.deposited_money = GameGlobals.money