Consistency/data/entities/animals/boss_centipede/ending/sampo_start_ending_sequence...

276 lines
9.1 KiB
Lua

dofile_once( "data/scripts/lib/utilities.lua" )
dofile( "data/scripts/newgame_plus.lua")
local entity_id = GetUpdatedEntityID()
local x, y = EntityGetTransform( entity_id )
local doing_newgame_plus = false
-- stats & locations
local endpoint_underground = EntityGetWithTag( "ending_sampo_spot_underground" )
local endpoint_mountain = EntityGetWithTag( "ending_sampo_spot_mountain" )
local enemies_killed = tonumber( StatsGetValue("enemies_killed") )
local orb_count = GameGetOrbCountThisRun()
-- print( "orb_count: " .. orb_count )
-- orb count 33 and on top of the mountain!
-- handle newgame+
-- if orb_count >= 5 and we're on top of the mountain
-- 5 + new_game_plus_number
local newgame_n = tonumber( SessionNumbersGetValue("NEW_GAME_PLUS_COUNT") )
if ( newgame_n >= 3 ) then
AddFlagPersistent( "progress_newgameplusplus3" )
end
local greed = GameHasFlagRun( "greed_curse" )
local greed_gone = GameHasFlagRun( "greed_curse_gone" )
local nightmare = GameHasFlagRun( "run_nightmare" )
if greed and ( greed_gone == false ) then
AddFlagPersistent( "secret_greed" )
end
if nightmare then
AddFlagPersistent( "progress_nightmare" )
end
local essence_1 = GameHasFlagRun( "essence_fire" )
local essence_2 = GameHasFlagRun( "essence_air" )
local essence_3 = GameHasFlagRun( "essence_water" )
local essence_4 = GameHasFlagRun( "essence_laser" )
if essence_1 and essence_2 and essence_3 and essence_4 then
AddFlagPersistent( "secret_allessences" )
end
local newgame_orbs_required = 5 + newgame_n
if( orb_count < 33
and
( ( orb_count > ORB_COUNT_IN_WORLD and newgame_orbs_required >= ORB_COUNT_IN_WORLD and orb_count >= newgame_orbs_required ) or
( orb_count >= newgame_orbs_required and orb_count < ORB_COUNT_IN_WORLD ) ) ) then
local distance_from_mountain = 1000
--local distance_from_bottom = 1000
if( #endpoint_mountain > 0 ) then
local ex, ey = EntityGetTransform( endpoint_mountain[1] )
distance_from_mountain = math.abs(x - ex) + math.abs(y - ey)
end
if ( distance_from_mountain < 32 ) then
-- on top of mountain -> new game+
GamePlaySound( "data/audio/Desktop/event_cues.bank", "event_cues/new_game_plus/create", x, y )
EntityKill( entity_id )
GameClearOrbsFoundThisRun()
-- move player up 25 pixels, so they don't end up inside the ground at start
local player_id = EntityGetClosestWithTag( x, y, "player_unit")
if( player_id ~= nil and player_id ~= 0 ) then
local px, py = EntityGetTransform( player_id )
py = py - 25
EntitySetTransform( player_id, px, py )
end
AddFlagPersistent( "progress_ngplus" )
doing_newgame_plus = true
do_newgame_plus()
end
end
-- "normal ending handlings"
if( doing_newgame_plus == false ) then
print("Sampo: " .. tostring(x) .. ", " .. tostring(y))
GameAddFlagRun( "ending_game_completed" ) -- this affects the look of the game over screen
GameOnCompleted() -- this does the achievement
--SetTimeOut( 15.0, "data/entities/animals/boss_centipede/ending/sampo_show_ending_ui.lua", "main" )
--EntityLoad("data/entities/particles/gold_pickup.xml", x, y)
-- print("Enemies killed: " .. tostring(enemies_killed) )
print(tostring(endpoint_underground))
if( orb_count >= 33 ) then
-- ORBS >= 33 ENDINGs
-- on top -> new game+
AddFlagPersistent( "secret_amulet" )
if ( orb_count > 33 ) then
-- AddFlagPersistent( "secret_amulet_gem" )
GameAddFlagRun( "ending_game_completed_with_34_orbs" )
end
local distance_from_mountain = 1000
if( #endpoint_mountain > 0 ) then
local ex, ey = EntityGetTransform( endpoint_mountain[1] )
distance_from_mountain = math.abs(x - ex) + math.abs(y - ey)
end
if ( distance_from_mountain < 32 ) then
-- ending 2, everyone is happy
EntityLoad( "data/entities/particles/image_emitters/magical_symbol_fast.xml", x, y )
local player_id = EntityGetWithTag( "player_unit" )
-- "progress_ending2"
AddFlagPersistent( "progress_ending2" )
GamePlaySound( "data/audio/Desktop/event_cues.bank", "event_cues/happy_ending/create", x, y )
GameDoEnding2()
EntityKill( entity_id )
-- this is done in GameDoEnding2()
-- GamePrintImportant( "$ending_above_part_a", "$ending_above_part_b" )
end
--[[
elseif ( orb_count >= ORB_COUNT_IN_WORLD) then
-- in practice this the 12 orb ending
-- ORBS >= 11 ENDINGs
-- on top -> new game+
local distance_from_mountain = 1000
if( #endpoint_mountain > 0 ) then
local ex, ey = EntityGetTransform( endpoint_mountain[1] )
distance_from_mountain = math.abs(x - ex) + math.abs(y - ey)
end
if ( distance_from_mountain < 32 ) then
local endpoint_id = endpoint_mountain[1]
local ex, ey = EntityGetTransform( endpoint_id )
local distance = math.abs(x - ex) + math.abs(y - ey)
if (distance < 32) then
EntityLoad( "data/entities/particles/image_emitters/magical_symbol_fast.xml", x, y )
local player_id = EntityGetWithTag( "player_unit" )
if ( #player_id > 0 ) then
print(player_id[1])
local midas_id = EntityLoad( "data/entities/animals/boss_centipede/ending/midas.xml", x, y )
EntityAddChild( player_id[1], midas_id )
end
AddFlagPersistent( "progress_ending1" )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_sand.xml", x, y )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_chunks.xml", x, y )
GamePlaySound( "data/audio/Desktop/event_cues.bank", "event_cues/midas_above/create", x, y )
EntityKill( entity_id )
-- this sets the INFINITE GOLD action
local world_entity_id = GameGetWorldStateEntity()
if( world_entity_id ~= nil ) then
local comp_worldstate = EntityGetFirstComponent( world_entity_id, "WorldStateComponent" )
if( comp_worldstate ~= nil ) then
ComponentSetValue( comp_worldstate, "INFINITE_GOLD_HAPPENING", "1" )
end
end
end
end
]]--
elseif ( #endpoint_underground > 0 ) then
-- NORMAL ENDING
local endpoint_id = endpoint_underground[1]
local ex, ey = EntityGetTransform( endpoint_id )
local distance = math.abs(x - ex) + math.abs(y - ey)
if (distance < 32) then
EntityLoad( "data/entities/particles/image_emitters/magical_symbol_fast.xml", x, y )
AddFlagPersistent( "progress_ending0" )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_sand.xml", x, y )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_chunks.xml", x, y )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_walls.xml", x, y )
EntityLoad( "data/entities/animals/boss_centipede/sampo_working.xml", ex, ey - 30 )
-- Note( Petri ): This is what kills the player
-- if( enemies_killed > 0 ) then
if( orb_count ~= ORB_COUNT_IN_WORLD ) then
EntityLoad( "data/entities/animals/boss_centipede/ending/gold_effect.xml", x, y )
end
-- end
GamePlaySound( "data/audio/Desktop/event_cues.bank", "event_cues/midas/create", x, y )
local ambience = EntityGetWithTag( "victoryroom_ambience" )
for a,b in ipairs( ambience ) do
EntityKill( b )
end
EntityKill( entity_id )
end
local machine = EntityGetWithTag( "ending_mechanism" )
if ( #machine > 0 ) then
print("Machineryfound, trying to animate")
local machine_id = machine[1]
local machine_sprite = EntityGetFirstComponent( machine_id, "SpriteComponent" )
if ( machine_sprite ~= nil ) then
ComponentSetValue( machine_sprite, "rect_animation", "active" )
end
end
elseif ( #endpoint_mountain > 0 ) then
-- SECRET ENDING
local endpoint_id = endpoint_mountain[1]
local ex, ey = EntityGetTransform( endpoint_id )
local distance = math.abs(x - ex) + math.abs(y - ey)
if (distance < 32) then
EntityLoad( "data/entities/particles/image_emitters/magical_symbol_fast.xml", x, y )
local player_id = EntityGetWithTag( "player_unit" )
if ( #player_id > 0 ) then
print(player_id[1])
local midas_id = 0
if( orb_count == ORB_COUNT_IN_WORLD ) then
midas_id = EntityLoad( "data/entities/animals/boss_centipede/ending/midas.xml", x, y )
AddFlagPersistent( "progress_ending1_gold" )
else
midas_id = EntityLoad( "data/entities/animals/boss_centipede/ending/midas_radioactive.xml", x, y )
AddFlagPersistent( "progress_ending1_toxic" )
end
-- turn player extra vurnable to radioactive materials
local comp_damagemodel = EntityGetFirstComponent( player_id[1], "DamageModelComponent" )
if( comp_damagemodel ~= nil ) then
ComponentSetValue( comp_damagemodel, "materials_damage_proportional_to_maxhp", "1" )
end
EntityAddChild( player_id[1], midas_id )
end
AddFlagPersistent( "progress_ending1" )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_sand.xml", x, y )
EntityLoad( "data/entities/animals/boss_centipede/ending/midas_chunks.xml", x, y )
GamePlaySound( "data/audio/Desktop/event_cues.bank", "event_cues/midas_above/create", x, y )
EntityKill( entity_id )
-- this sets the INFINITE GOLD action
local world_entity_id = GameGetWorldStateEntity()
if( world_entity_id ~= nil ) then
local comp_worldstate = EntityGetFirstComponent( world_entity_id, "WorldStateComponent" )
if( comp_worldstate ~= nil ) then
ComponentSetValue( comp_worldstate, "INFINITE_GOLD_HAPPENING", "1" )
end
end
end
end
end