Consistency/data/entities/animals/boss_fish/eye.lua

86 lines
2.8 KiB
Lua

dofile_once("data/scripts/lib/utilities.lua")
local entity_id = GetUpdatedEntityID()
local root_id = EntityGetRootEntity( entity_id )
local x, y = EntityGetTransform( entity_id )
local pcomp = 0
local scomp = 0
local timer = 0
local c = EntityGetComponent( entity_id, "VariableStorageComponent" )
if ( c ~= nil ) then
for i,v in ipairs( c ) do
local n = ComponentGetValue2( v, "name" )
if ( n == "phase_timer" ) then
timer = ComponentGetValue2( v, "value_int" )
pcomp = v
end
end
end
local hcomp = EntityGetFirstComponentIncludingDisabled( root_id, "HitboxComponent" )
if ( pcomp ~= 0 ) and ( hcomp ~= nil ) then
timer = timer + 1
local p = EntityGetInRadiusWithTag( x, y, 160, "player_unit" )
local eye = EntityGetFirstComponent( entity_id, "SpriteComponent" )
if ( eye ~= nil ) then
local current = ComponentGetValue2( eye, "rect_animation" )
if ( #current == 0 ) then
ComponentSetValue2( eye, "rect_animation", "closed" )
EntitySetComponentIsEnabled( entity_id, hcomp, false )
end
if ( #p == 0 ) then
if ( current == "opened" ) then
ComponentSetValue2( eye, "rect_animation", "close" )
ComponentSetValue2( eye, "next_rect_animation", "closed" )
timer = 0
EntitySetComponentIsEnabled( entity_id, hcomp, false )
elseif ( current == "close" ) and ( timer > 36 ) then
ComponentSetValue2( eye, "rect_animation", "closed" )
ComponentSetValue2( eye, "next_rect_animation", "closed" )
timer = 0
elseif ( current == "open" ) and ( timer > 36 ) then
ComponentSetValue2( eye, "rect_animation", "opened" )
ComponentSetValue2( eye, "next_rect_animation", "opened" )
timer = 0
EntitySetComponentIsEnabled( entity_id, hcomp, true )
end
else
if ( current == "closed" ) then
ComponentSetValue2( eye, "rect_animation", "open" )
ComponentSetValue2( eye, "next_rect_animation", "opened" )
timer = 0
elseif ( current == "open" ) and ( timer > 36 ) then
ComponentSetValue2( eye, "rect_animation", "opened" )
ComponentSetValue2( eye, "next_rect_animation", "opened" )
timer = 0
EntitySetComponentIsEnabled( entity_id, hcomp, true )
elseif ( current == "close" ) and ( timer > 36 ) then
ComponentSetValue2( eye, "rect_animation", "closed" )
ComponentSetValue2( eye, "next_rect_animation", "closed" )
timer = 0
end
end
if ( current == "opened" ) and ( timer > 360 ) then
timer = 0
SetRandomSeed( x + y, GameGetFrameNum() )
local offset = Random( 1, 100 ) * 0.01 * math.pi
local inc = ( math.pi * 2 ) / 8
for a=0,7 do
local vx = math.cos( offset + inc * a ) * 80
local vy = 0 - math.sin( offset + inc * a ) * 80
shoot_projectile( root_id, "data/entities/animals/boss_fish/orb_big.xml", x, y, vx, vy )
end
end
end
ComponentSetValue2( pcomp, "value_int", timer )
end