86 lines
2.8 KiB
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
|