From 4a0a9c42b306d826850a3876d8d6f0f66209c03b Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Sat, 23 Mar 2024 09:10:54 +0100 Subject: [PATCH] More fixes --- maps/mountain_fortress_v3/breached_wall.lua | 12 ++++- maps/mountain_fortress_v3/buried_enemies.lua | 28 +++++++++-- maps/mountain_fortress_v3/commands.lua | 51 +++++++++++++++++++- maps/mountain_fortress_v3/entities.lua | 5 +- maps/mountain_fortress_v3/functions.lua | 16 ++++++ maps/mountain_fortress_v3/stateful/table.lua | 4 +- modules/ai.lua | 2 +- modules/rpg/spells.lua | 32 ++++++------ modules/wave_defense/commands.lua | 8 +-- 9 files changed, 124 insertions(+), 34 deletions(-) diff --git a/maps/mountain_fortress_v3/breached_wall.lua b/maps/mountain_fortress_v3/breached_wall.lua index a86f3da2..2eacb6a5 100644 --- a/maps/mountain_fortress_v3/breached_wall.lua +++ b/maps/mountain_fortress_v3/breached_wall.lua @@ -156,6 +156,12 @@ local check_distance_between_player_and_locomotive = function(player) return end + local breached_wall = Public.get('breached_wall') + + if breached_wall < 3 then + return + end + local collapse_position = Collapse.get_position() local adjusted_zones = Public.get('adjusted_zones') @@ -456,7 +462,11 @@ local function on_player_changed_position(event) return end - if player.position.y < -100 or player.position.y < 100 then + if player.position.y > -100 and player.position.y < -100 then + return + end + + if player.position.y > 100 and player.position.y < 100 then return end diff --git a/maps/mountain_fortress_v3/buried_enemies.lua b/maps/mountain_fortress_v3/buried_enemies.lua index 492fdeb2..19fed33d 100644 --- a/maps/mountain_fortress_v3/buried_enemies.lua +++ b/maps/mountain_fortress_v3/buried_enemies.lua @@ -122,6 +122,9 @@ local function spawn_worms(data) end local unit_to_create = WD.wave_defense_roll_worm_name() + if not unit_to_create then + return + end local surface = data.surface if not (surface and surface.valid) then @@ -148,7 +151,7 @@ local function spawn_worms(data) end end -function Public.buried_biter(surface, position) +function Public.buried_biter(surface, position, count) if not (surface and surface.valid) then return end @@ -162,6 +165,10 @@ function Public.buried_biter(surface, position) return end + if not count then + count = 1 + end + for t = 1, 60, 1 do if not this[game.tick + t] then this[game.tick + t] = {} @@ -173,10 +180,21 @@ function Public.buried_biter(surface, position) } if t == 60 then - this[game.tick + t][#this[game.tick + t] + 1] = { - callback = 'spawn_biters', - data = {surface = surface, position = {x = position.x, y = position.y}} - } + if count == 1 then + this[game.tick + t][#this[game.tick + t] + 1] = { + callback = 'spawn_biters', + data = {surface = surface, position = {x = position.x, y = position.y}, count = count or 1} + } + else + local tick = 2 + for _ = 1, count do + this[game.tick + t][#this[game.tick + t] + 1 + tick] = { + callback = 'spawn_biters', + data = {surface = surface, position = {x = position.x, y = position.y}, count = count or 1} + } + tick = tick + 2 + end + end end end end diff --git a/maps/mountain_fortress_v3/commands.lua b/maps/mountain_fortress_v3/commands.lua index 36717400..176613db 100644 --- a/maps/mountain_fortress_v3/commands.lua +++ b/maps/mountain_fortress_v3/commands.lua @@ -147,7 +147,7 @@ commands.add_command( this.reset_are_you_sure = nil Discord.send_notification_raw(scenario_name, player.name .. ' completed all the quest via command.') - Public.stateful.set_stateful('objectives_completed_count', 5) + Public.stateful.set_stateful('objectives_completed_count', 6) game.print(mapkeeper .. player.name .. ', has forced completed all quests!', {r = 0.98, g = 0.66, b = 0.22}) else local this = Public.get() @@ -160,7 +160,54 @@ commands.add_command( this.reset_are_you_sure = nil log('Quests completed.') Discord.send_notification_raw(scenario_name, 'Server completed all the quest via command') - Public.stateful.set_stateful('objectives_completed_count', 5) + Public.stateful.set_stateful('objectives_completed_count', 6) + end + end +) + +commands.add_command( + 'reverse_map', + 'Usable only for admins - reverses the map!', + function() + local player = game.player + + if player and player.valid then + if not player.admin then + player.print("[ERROR] You're not admin!", Color.fail) + return + end + + local this = Public.get() + if not this.reset_are_you_sure then + this.reset_are_you_sure = true + player.print('[WARNING] This command will reverse the map and soft-reset!', Color.warning) + return + end + + this.reset_are_you_sure = nil + + local reversed = Public.get_stateful_settings('reversed') + Public.set_stateful_settings('reversed', not reversed) + + Discord.send_notification_raw(scenario_name, player.name .. ' reversed the map.') + Public.reset_map() + game.print(mapkeeper .. player.name .. ', has reverse the map and reset the game!', {r = 0.98, g = 0.66, b = 0.22}) + else + local this = Public.get() + if not this.reset_are_you_sure then + this.reset_are_you_sure = true + log('[WARNING] This command will reverse the map and soft-reset!') + return + end + + this.reset_are_you_sure = nil + + local reversed = Public.get_stateful_settings('reversed') + Public.set_stateful_settings('reversed', not reversed) + + Discord.send_notification_raw(scenario_name, 'script has reversed the map.') + Public.reset_map() + game.print(mapkeeper .. 'script, has reverse the map and reset the game!', {r = 0.98, g = 0.66, b = 0.22}) end end ) diff --git a/maps/mountain_fortress_v3/entities.lua b/maps/mountain_fortress_v3/entities.lua index 9c7cd2b9..a9867603 100644 --- a/maps/mountain_fortress_v3/entities.lua +++ b/maps/mountain_fortress_v3/entities.lua @@ -404,9 +404,6 @@ local function angry_tree(entity, cause, player) return end - if abs(entity.position.y) < zone_settings.zone_depth then - return - end if random(1, 6) == 1 then Public.buried_biter(entity.surface, entity.position) end @@ -1101,7 +1098,7 @@ local function on_entity_died(event) return end if random(1, 32) == 1 then - Public.buried_biter(entity.surface, entity.position) + Public.buried_biter(entity.surface, entity.position, 6) entity.destroy() return end diff --git a/maps/mountain_fortress_v3/functions.lua b/maps/mountain_fortress_v3/functions.lua index 609057cc..bc384dc4 100644 --- a/maps/mountain_fortress_v3/functions.lua +++ b/maps/mountain_fortress_v3/functions.lua @@ -29,6 +29,7 @@ local this = { magic_crafters = {index = 1}, magic_fluid_crafters = {index = 1}, art_table = {index = 1}, + editor_mode = {}, starting_items = { ['pistol'] = { count = 1 @@ -48,6 +49,14 @@ local this = { } } +local exit_editor_mode_token = + Task.register( + function(event) + local player_index = event.player_index + this.editor_mode[player_index] = nil + end +) + local random_respawn_messages = { 'The doctors stitched you up as best they could.', 'Ow! Your right leg hurts.', @@ -1472,7 +1481,14 @@ function Public.on_pre_player_toggled_map_editor(event) return end + if this.editor_mode[player.index] then + return + end + + this.editor_mode[player.index] = true + player.toggle_map_editor() + Task.set_timeout_in_ticks(5, exit_editor_mode_token, {player_index = player.index}) end function Public.on_player_changed_position(event) diff --git a/maps/mountain_fortress_v3/stateful/table.lua b/maps/mountain_fortress_v3/stateful/table.lua index b5b3da26..5125259c 100644 --- a/maps/mountain_fortress_v3/stateful/table.lua +++ b/maps/mountain_fortress_v3/stateful/table.lua @@ -1233,7 +1233,7 @@ function Public.reset_stateful(refresh_gui, clear_buffs) this.buffs_collected = {} end this.enemies_boosted = false - this.tasks_required_to_win = 5 + this.tasks_required_to_win = 6 this.selected_objectives = get_random_objectives() if this.test_mode then @@ -1312,6 +1312,8 @@ function Public.reset_stateful(refresh_gui, clear_buffs) Task.set_timeout_in_ticks_alert(delay, {text = message}) end + Public.set('coin_amount', Diff.index) + local t = { ['randomized_zone'] = this.objectives.randomized_zone, ['randomized_wave'] = this.objectives.randomized_wave diff --git a/modules/ai.lua b/modules/ai.lua index 0b12755f..3940d3a9 100644 --- a/modules/ai.lua +++ b/modules/ai.lua @@ -525,7 +525,7 @@ function Public.create_char(data) end local count = count_active_characters(data.player_index) - if count >= 5 then + if count and count >= 5 then return false end diff --git a/modules/rpg/spells.lua b/modules/rpg/spells.lua index d8fa2a67..896fad31 100644 --- a/modules/rpg/spells.lua +++ b/modules/rpg/spells.lua @@ -275,7 +275,7 @@ spells[#spells + 1] = { level = 1, type = 'item', mana_cost = 30, - cooldown = 100, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/stone-wall', @@ -290,7 +290,7 @@ spells[#spells + 1] = { level = 1, type = 'item', mana_cost = 40, - cooldown = 100, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/wooden-chest', @@ -305,7 +305,7 @@ spells[#spells + 1] = { level = 10, type = 'item', mana_cost = 50, - cooldown = 200, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/iron-chest', @@ -320,7 +320,7 @@ spells[#spells + 1] = { level = 30, type = 'item', mana_cost = 100, - cooldown = 300, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/steel-chest', @@ -335,7 +335,7 @@ spells[#spells + 1] = { level = 1, type = 'item', mana_cost = 30, - cooldown = 100, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/transport-belt', @@ -350,7 +350,7 @@ spells[#spells + 1] = { level = 10, type = 'item', mana_cost = 50, - cooldown = 200, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/fast-transport-belt', @@ -362,10 +362,10 @@ spells[#spells + 1] = { spells[#spells + 1] = { name = {'entity-name.express-transport-belt'}, entityName = 'express-transport-belt', - level = 30, + level = 20, type = 'item', mana_cost = 80, - cooldown = 300, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/express-transport-belt', @@ -380,7 +380,7 @@ spells[#spells + 1] = { level = 1, type = 'item', mana_cost = 30, - cooldown = 100, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/underground-belt', @@ -395,7 +395,7 @@ spells[#spells + 1] = { level = 10, type = 'item', mana_cost = 50, - cooldown = 200, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/fast-underground-belt', @@ -407,10 +407,10 @@ spells[#spells + 1] = { spells[#spells + 1] = { name = {'entity-name.express-underground-belt'}, entityName = 'express-underground-belt', - level = 30, + level = 20, type = 'item', mana_cost = 80, - cooldown = 300, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/express-underground-belt', @@ -440,7 +440,7 @@ spells[#spells + 1] = { level = 1, type = 'item', mana_cost = 60, - cooldown = 100, + cooldown = 70, aoe = true, enabled = true, sprite = 'recipe/pipe-to-ground', @@ -452,10 +452,10 @@ spells[#spells + 1] = { spells[#spells + 1] = { name = {'entity-name.tree'}, entityName = 'tree-05', - level = 30, + level = 20, type = 'entity', mana_cost = 30, - cooldown = 350, + cooldown = 300, aoe = true, enabled = true, sprite = 'entity/tree-05', @@ -470,7 +470,7 @@ spells[#spells + 1] = { level = 60, type = 'entity', mana_cost = 60, - cooldown = 350, + cooldown = 300, aoe = true, enabled = true, sprite = 'entity/sand-rock-big', diff --git a/modules/wave_defense/commands.lua b/modules/wave_defense/commands.lua index ab2ec471..544e73e5 100644 --- a/modules/wave_defense/commands.lua +++ b/modules/wave_defense/commands.lua @@ -41,14 +41,14 @@ commands.add_command( end if param == 'spawn' then - Public.spawn_unit_group(true, true) + Public.spawn_unit_group({true}, true) p(module_name .. ' wave spawned!') return end if param == 'next' then Public.set_next_wave() - Public.spawn_unit_group(true, true) + Public.spawn_unit_group({true}, true) p(module_name .. ' wave spawned!') return end @@ -57,7 +57,7 @@ commands.add_command( for _ = 1, 50 do Public.set_next_wave() end - Public.spawn_unit_group(true, true) + Public.spawn_unit_group({true}, true) p(module_name .. ' wave spawned!') return end @@ -66,7 +66,7 @@ commands.add_command( for _ = 1, 1500 do Public.set_next_wave() end - Public.spawn_unit_group(true, true) + Public.spawn_unit_group({true}, true) p(module_name .. ' wave spawned!') return end