-- *** GG MAX part, does nothing in GG classic *** -- -- DESCRIPTION: Trigger shake on activation -- DESCRIPTION: [Delay#=0(0,100)] (seconds) -- DESCRIPTION: [@ShakeType=1(1=Add,2=Set)] -- DESCRIPTION: [Trauma#=25(0,100)] -- DESCRIPTION: [Fade#=2(2,10)] -- DESCRIPTION: [Period#=50(1,2000)] -- DESCRIPTION: [SetTime#=2(1,2000)] (seconds) local shakes = {} local shakeTypes = {'add','set'} function trigger_shake_properties( e, delay, shaketype, trauma, fade, period, settime ) local shake = shakes[ e ] if shake == nil then return end shake.delay = delay * 1000 shake.type = shakeTypes[ shaketype ] shake.trauma = trauma shake.fade = fade shake.period = period shake.settime = settime * 1000 end function trigger_shake_init( e ) shakes[ e ] = { state = 'init' } trigger_shake_properties( e, 0, 1, 25, 2, 50, 2 ) end local function setTimer( shake, val ) if val then shake.timer = val else shake.timer = g_Time + shake.delay end end function trigger_shake_main( e ) -- early return if not compatible gameplayercontrol available if GamePlayerControlSetShakeTrauma == nil then return end local shake = shakes[ e ] if shake == nil then return end local Ent = g_Entity[ e ] if shake.state == 'init' then shake.act = Ent.activated shake.state = 'ready' elseif shake.state == 'ready' and Ent.activated ~= shake.act then setTimer( shake ) shake.state = 'trigger' elseif shake.state == 'on' and g_Time > shake.timer then GamePlayerControlSetShakeTrauma( 0 ) shake.act = Ent.activated shake.state = 'ready' end if shake.state == 'trigger' then if g_Time >= shake.timer then if shake.type == 'add' then GamePlayerControlAddShakeTrauma( shake.trauma ) GamePlayerControlAddShakePeriod( shake.period ) GamePlayerControlAddShakeFade( shake.fade, true ) shake.act = Ent.activated shake.state = 'ready' elseif shake.type == 'set' then if shake.settime > 0 then GamePlayerControlSetShakeTrauma( shake.trauma ) GamePlayerControlSetShakePeriod( shake.period ) setTimer( shake, g_Time + shake.settime ) shake.state = 'on' else shake.act = Ent.activated shake.state = 'ready' end end end end end