fix cameras on death/end_fight and probably crashes on death/end_fight

This commit is contained in:
bgkillas 2024-10-26 23:08:37 -04:00
parent c180a5d328
commit 40076e33d0
2 changed files with 54 additions and 75 deletions

View file

@ -13,6 +13,44 @@ ModTextFileSetContent("data/entities/animals/boss_centipede/ending/gold_effect.x
ModTextFileSetContent("data/entities/animals/boss_centipede/ending/midas_sand.xml", "<Entity/>")
ModTextFileSetContent("data/entities/animals/boss_centipede/ending/midas_chunks.xml", "<Entity/>")
local function remove_stuff(entity)
for _, com in ipairs(EntityGetComponent(entity, "SpriteComponent") or {}) do
EntitySetComponentIsEnabled(entity, com, false)
end
EntityRemoveTag(entity, "ew_peer")
EntityRemoveTag(entity, "ew_client")
EntityRemoveTag(entity, "mortal")
EntityRemoveTag(entity, "homing_target")
EntityRemoveTag(entity, "hittable")
local collision = EntityGetFirstComponentIncludingDisabled(entity, "PlayerCollisionComponent")
local suck = EntityGetFirstComponentIncludingDisabled(entity, "MaterialSuckerComponent")
local gui = EntityGetFirstComponentIncludingDisabled(entity, "InventoryGuiComponent")
local damage = EntityGetFirstComponentIncludingDisabled(entity, "DamageModelComponent")
local genome = EntityGetFirstComponentIncludingDisabled(entity, "GenomeDataComponent")
local status = EntityGetFirstComponentIncludingDisabled(entity, "StatusEffectDataComponent")
if gui ~= nil then
EntitySetComponentIsEnabled(entity, gui, false)
end
if suck ~= nil then
EntitySetComponentIsEnabled(entity, suck, false)
end
if collision ~= nil then
EntitySetComponentIsEnabled(entity, collision, false)
end
if damage ~= nil then
EntitySetComponentIsEnabled(entity, damage, false)
end
if genome ~= nil then
EntitySetComponentIsEnabled(entity, genome, false)
end
if status ~= nil then
EntitySetComponentIsEnabled(entity, status, false)
end
for _, child in ipairs(EntityGetAllChildren(entity) or {}) do
EntityKill(child)
end
end
local function teleport_random()
SetRandomSeed(5, 5)
local my_num = Random(1,100)
@ -53,10 +91,14 @@ function rpc.try_kill(x, y)
EntityLoad("mods/quant.ew/files/system/end_fight/gold_effect.xml", x, y )
done = true
async(function()
wait(180)
wait(300)
if not ctx.run_ended then
GameSetCameraFree(true)
ctx.run_ended = true
GameTriggerGameOver()
for _, data in pairs(ctx.players) do
EntityKill(data.entity)
end
end
end)
end
@ -156,38 +198,7 @@ function end_fight.on_world_update()
EntitySetComponentsWithTagEnabled(entity, "health_bar", false)
EntitySetComponentsWithTagEnabled(entity, "health_bar_back", false)
if EntityHasTag(entity, "ew_notplayer") then
for _, com in ipairs(EntityGetComponent(entity, "SpriteComponent") or {}) do
EntitySetComponentIsEnabled(entity, com, false)
end
EntityRemoveTag(entity, "ew_peer")
EntityRemoveTag(entity, "ew_client")
EntityRemoveTag(entity, "mortal")
EntityRemoveTag(entity, "homing_target")
EntityRemoveTag(entity, "hittable")
local collision = EntityGetFirstComponentIncludingDisabled(entity, "PlayerCollisionComponent")
local suck = EntityGetFirstComponentIncludingDisabled(entity, "MaterialSuckerComponent")
local gui = EntityGetFirstComponentIncludingDisabled(entity, "InventoryGuiComponent")
local damage = EntityGetFirstComponentIncludingDisabled(entity, "DamageModelComponent")
local genome = EntityGetFirstComponentIncludingDisabled(entity, "GenomeDataComponent")
if gui ~= nil then
EntitySetComponentIsEnabled(entity, gui, false)
end
if suck ~= nil then
EntitySetComponentIsEnabled(entity, suck, false)
end
if collision ~= nil then
EntitySetComponentIsEnabled(entity, collision, false)
end
if damage ~= nil then
EntitySetComponentIsEnabled(entity, damage, false)
end
if genome ~= nil then
EntitySetComponentIsEnabled(entity, genome, false)
end
for _, child in ipairs(EntityGetAllChildren(entity) or {}) do
EntityKill(child)
end
remove_status(entity)
remove_stuff(entity)
end
::continue::
end

View file

@ -189,17 +189,17 @@ local function do_game_over(message)
set_camera_free(true, ctx.my_player.entity)
if damage_model ~= nil and #(EntityGetAllChildren(ctx.my_player.entity) or {}) ~= 0 then
local ent = end_poly_effect(ctx.my_player.entity)
polymorph.switch_entity(ent)
if ctx.my_player.entity ~= nil then
ComponentSetValue2(damage_model, "wait_for_kill_flag_on_death", false)
EntityInflictDamage(ctx.my_player.entity, 1000000, "DAMAGE_CURSE", message, "NONE", 0, 0, GameGetWorldStateEntity())
GameTriggerGameOver()
EntityKill(ctx.my_player.entity)
else
GameTriggerGameOver()
if ent ~= nil then
polymorph.switch_entity(ent)
if ctx.my_player.entity ~= nil then
ComponentSetValue2(damage_model, "wait_for_kill_flag_on_death", false)
EntityInflictDamage(ctx.my_player.entity, 1000000, "DAMAGE_CURSE", message, "NONE", 0, 0, GameGetWorldStateEntity())
end
end
else
GameTriggerGameOver()
end
GameTriggerGameOver()
for _, data in pairs(ctx.players) do
EntityKill(data.entity)
end
end
@ -369,38 +369,6 @@ rpc.opts_reliable()
rpc.opts_everywhere()
function rpc.trigger_game_over(message)
do_game_over(message)
for _, player_data in pairs(ctx.players) do
local entity = player_data.entity
if entity ~= nil and EntityGetIsAlive(entity) then
EntitySetComponentsWithTagEnabled(entity, "health_bar", false)
EntitySetComponentsWithTagEnabled(entity, "health_bar_back", false)
if EntityHasTag(entity, "ew_notplayer") then
for _, com in ipairs(EntityGetComponent(entity, "SpriteComponent") or {}) do
EntitySetComponentIsEnabled(entity, com, false)
end
local suck = EntityGetFirstComponentIncludingDisabled(entity, "MaterialSuckerComponent")
local collision = EntityGetFirstComponentIncludingDisabled(entity, "PlayerCollisionComponent")
EntitySetComponentIsEnabled(entity, suck, false)
EntitySetComponentIsEnabled(entity, collision, false)
for _, child in ipairs(EntityGetAllChildren(entity) or {}) do
EntityKill(child)
end
if EntityGetFirstComponent(entity, "StatusEffectDataComponent") ~= nil then
for _, effect in pairs(status_effects) do
if EntityGetIsAlive(entity) then
EntityRemoveStainStatusEffect(entity, effect.id)
EntityRemoveIngestionStatusEffect(entity, effect.id)
end
end
end
local damage_model = EntityGetFirstComponentIncludingDisabled(entity, "DamageModelComponent")
if damage_model ~= nil then
ComponentSetValue2(damage_model, "mFireProbability", 0)
ComponentSetValue2(damage_model, "mFireFramesLeft", 0)
end
end
end
end
end