1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-06-04 23:07:41 +02:00

Fish Defender Update; Antigrief corpse looting messages

This commit is contained in:
MewMew 2018-11-26 16:50:30 +01:00
parent 5fe6622edd
commit 5a7b0d62fe
4 changed files with 81 additions and 42 deletions

View File

@ -130,12 +130,33 @@ local function on_player_used_capsule(event)
end end
end end
event.add(defines.events.on_player_used_capsule, on_player_used_capsule) local function on_gui_opened(event)
event.add(defines.events.on_player_joined_game, on_player_joined_game) if not event.entity then return end
event.add(defines.events.on_player_promoted, on_player_promoted) if event.entity.name ~= "character-corpse" then return end
event.add(defines.events.on_player_demoted, on_player_demoted) local player = game.players[event.player_index].name
local corpse_owner = game.players[event.entity.character_corpse_player_index].name
if player ~= corpse_owner then
game.print(player .. " is looting " .. corpse_owner .. "´s body.", { r=0.85, g=0.85, b=0.85})
end
end
local function on_pre_player_mined_item(event)
if event.entity.name ~= "character-corpse" then return end
local player = game.players[event.player_index].name
local corpse_owner = game.players[event.entity.character_corpse_player_index].name
if player ~= corpse_owner then
game.print(player .. " has looted " .. corpse_owner .. "´s body.", { r=0.85, g=0.85, b=0.85})
end
end
event.add(defines.events.on_built_entity, on_built_entity) event.add(defines.events.on_built_entity, on_built_entity)
event.add(defines.events.on_player_built_tile, on_player_built_tile)
event.add(defines.events.on_console_command, on_console_command) event.add(defines.events.on_console_command, on_console_command)
event.add(defines.events.on_gui_opened, on_gui_opened)
event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction)
event.add(defines.events.on_player_ammo_inventory_changed, on_player_ammo_inventory_changed) event.add(defines.events.on_player_ammo_inventory_changed, on_player_ammo_inventory_changed)
event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction) event.add(defines.events.on_player_built_tile, on_player_built_tile)
event.add(defines.events.on_player_demoted, on_player_demoted)
event.add(defines.events.on_player_joined_game, on_player_joined_game)
event.add(defines.events.on_pre_player_mined_item, on_pre_player_mined_item)
event.add(defines.events.on_player_promoted, on_player_promoted)
event.add(defines.events.on_player_used_capsule, on_player_used_capsule)

View File

@ -173,10 +173,8 @@ local function create_admin_panel(player)
if player.gui.left["admin_panel"] then player.gui.left["admin_panel"].destroy() end if player.gui.left["admin_panel"] then player.gui.left["admin_panel"].destroy() end
local player_names = {} local player_names = {}
for _, p in pairs(game.connected_players) do for _, p in pairs(game.connected_players) do
--if player.name ~= p.name then table.insert(player_names, tostring(p.name))
table.insert(player_names, p.name)
--end
end end
local frame = player.gui.left.add({type = "frame", name = "admin_panel", direction = "vertical"}) local frame = player.gui.left.add({type = "frame", name = "admin_panel", direction = "vertical"})

View File

@ -252,17 +252,17 @@ local function biter_attack_wave()
local spawn_x = 242 local spawn_x = 242
local group_coords = { local group_coords = {
{spawn = {x = spawn_x, y = -160}, target = {x = -32, y = -70}}, {spawn = {x = spawn_x, y = -160}, target = {x = -16, y = -70}},
{spawn = {x = spawn_x, y = -128}, target = {x = -32, y = -56}}, {spawn = {x = spawn_x, y = -128}, target = {x = -16, y = -56}},
{spawn = {x = spawn_x, y = -96}, target = {x = -32, y = -42}}, {spawn = {x = spawn_x, y = -96}, target = {x = -16, y = -42}},
{spawn = {x = spawn_x, y = -64}, target = {x = -8, y = -28}}, {spawn = {x = spawn_x, y = -64}, target = {x = -8, y = -28}},
{spawn = {x = spawn_x, y = -32}, target = {x = -8, y = -14}}, {spawn = {x = spawn_x, y = -32}, target = {x = -8, y = -14}},
{spawn = {x = spawn_x, y = 0}, target = {x = -8, y = 0}}, {spawn = {x = spawn_x, y = 0}, target = {x = -8, y = 0}},
{spawn = {x = spawn_x, y = 32}, target = {x = -8, y = 14}}, {spawn = {x = spawn_x, y = 32}, target = {x = -8, y = 14}},
{spawn = {x = spawn_x, y = 64}, target = {x = -8, y = 28}}, {spawn = {x = spawn_x, y = 64}, target = {x = -8, y = 28}},
{spawn = {x = spawn_x, y = 96}, target = {x = -32, y = 42}}, {spawn = {x = spawn_x, y = 96}, target = {x = -16, y = 42}},
{spawn = {x = spawn_x, y = 128}, target = {x = -32, y = 56}}, {spawn = {x = spawn_x, y = 128}, target = {x = -16, y = 56}},
{spawn = {x = spawn_x, y = 160}, target = {x = -32, y = 70}} {spawn = {x = spawn_x, y = 160}, target = {x = -16, y = 70}}
} }
group_coords = shuffle(group_coords) group_coords = shuffle(group_coords)
@ -277,10 +277,10 @@ local function biter_attack_wave()
if global.wave_count <= 50 then if global.wave_count <= 50 then
biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy}) biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy})
else else
if math_random(1,6) == 1 then if math_random(1,8) == 1 then
biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy}) biter_squad.set_command({type=defines.command.attack , target=global.market, distraction=defines.distraction.by_enemy})
else else
biter_squad.set_command({type=defines.command.attack_area, destination=group_coords[i].target, radius=12, distraction=defines.distraction.by_anything}) biter_squad.set_command({type=defines.command.attack_area, destination=group_coords[i].target, radius=200, distraction=defines.distraction.by_anything})
end end
end end
end end
@ -506,36 +506,49 @@ local coin_earnings = {
["small-spitter"] = 1, ["small-spitter"] = 1,
["medium-spitter"] = 2, ["medium-spitter"] = 2,
["big-spitter"] = 3, ["big-spitter"] = 3,
["behemoth-spitter"] = 5 ["behemoth-spitter"] = 5,
["spitter-spawner"] = 32,
["biter-spawner"] = 32
} }
local function on_entity_died(event) local function on_entity_died(event)
if event.entity.force.name == "enemy" then if event.entity.force.name == "enemy" then
local players_to_reward = {} local players_to_reward = {}
if event.cause and event.entity.type == "unit" then local reward_has_been_given = false
if event.cause.name == "player" then if event.cause then
insert(players_to_reward, event.cause) if event.entity.type == "unit" or event.entity.type == "unit-spawner" then
end if event.cause.name == "player" then
if event.cause.type == "car" then insert(players_to_reward, event.cause)
player = event.cause.get_driver() reward_has_been_given = true
passenger = event.cause.get_passenger() end
if player then insert(players_to_reward, player.player) end if event.cause.type == "car" then
if passenger then insert(players_to_reward, passenger.player) end player = event.cause.get_driver()
end passenger = event.cause.get_passenger()
if event.cause.type == "locomotive" then if player then insert(players_to_reward, player.player) end
train_passengers = event.cause.train.passengers if passenger then insert(players_to_reward, passenger.player) end
if train_passengers then reward_has_been_given = true
for _, passenger in pairs(train_passengers) do end
insert(players_to_reward, passenger) if event.cause.type == "locomotive" then
train_passengers = event.cause.train.passengers
if train_passengers then
for _, passenger in pairs(train_passengers) do
insert(players_to_reward, passenger)
end
reward_has_been_given = true
end end
end end
for _, player in pairs(players_to_reward) do
player.insert({name = "coin", count = coin_earnings[event.entity.name]})
end
if event.cause.name == "artillery-turret" then
event.entity.surface.spill_item_stack(event.cause.position,{name = "coin", count = coin_earnings[event.entity.name]}, true)
reward_has_been_given = true
end
end end
for _, player in pairs(players_to_reward) do
player.insert({name = "coin", count = coin_earnings[event.entity.name]})
end
end end
if math_random(1, 5) == 1 and #players_to_reward == 0 then if math_random(1, 5) == 1 and reward_has_been_given == false then
event.entity.surface.spill_item_stack(event.entity.position,{name = "coin", count = 1}, true) event.entity.surface.spill_item_stack(event.entity.position,{name = "coin", count = 1}, true)
end end
@ -626,7 +639,9 @@ local function on_entity_damaged(event)
end end
if event.entity.valid then if event.entity.valid then
if event.entity.name == "market" then if event.entity.name == "market" then
if event.cause.force.name == "enemy" then return end if event.cause then
if event.cause.force.name == "enemy" then return end
end
event.entity.health = event.entity.health + event.final_damage_amount event.entity.health = event.entity.health + event.final_damage_amount
end end
end end
@ -778,8 +793,8 @@ local function on_chunk_generated(event)
end end
end end
if left_top.x <= -256 then if left_top.x <= -352 then
if math_random(1, 24) == 1 then if math_random(1, 32) == 1 then
local positions = {} local positions = {}
for x = 0, 31, 1 do for x = 0, 31, 1 do
for y = 0, 31, 1 do for y = 0, 31, 1 do

View File

@ -1,3 +1,8 @@
0.14
the artillery now yields full coin rewards
spawners now grant coins
less biters in the west
0.13 0.13
more lategame modifier adjustments more lategame modifier adjustments
explosions get stronger in very lategame explosions get stronger in very lategame