162 lines
5.5 KiB
Lua
162 lines
5.5 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/GameObject/SandCrawler.lua#1 $
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
--
|
|
-- (C) Petroglyph Games, Inc.
|
|
--
|
|
--
|
|
-- ***** ** * *
|
|
-- * ** * * *
|
|
-- * * * * *
|
|
-- * * * * * * * *
|
|
-- * * *** ****** * ** **** *** * * * ***** * ***
|
|
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
|
-- *** ***** * * * * * * * * ** * * * *
|
|
-- * * * * * * * * * * * * * * *
|
|
-- * * * * * * * * * * ** * * * *
|
|
-- * ** * * ** * ** * * ** * * * *
|
|
-- ** **** ** * **** ***** * ** *** * *
|
|
-- * * *
|
|
-- * * *
|
|
-- * * *
|
|
-- * * * *
|
|
-- **** * *
|
|
--
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
--
|
|
-- $File: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/GameObject/SandCrawler.lua $
|
|
--
|
|
-- Original Author: Brian Hayes
|
|
--
|
|
-- $Author: Brian_Hayes $
|
|
--
|
|
-- $Change: 637819 $
|
|
--
|
|
-- $DateTime: 2017/03/22 10:16:16 $
|
|
--
|
|
-- $Revision: #1 $
|
|
--
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
require("PGStateMachine")
|
|
|
|
--
|
|
-- This is a pretty simple trigger script.
|
|
-- It just listens for any object entering a box of 100 meters centered on the marker
|
|
--
|
|
-- 4/29/2005 10:50:24 AM -- BMH
|
|
--
|
|
|
|
|
|
--
|
|
-- Definitions -- This function is called once when the script is first created.
|
|
--
|
|
-- @since 4/29/2005 10:51:40 AM -- BMH
|
|
--
|
|
function Definitions()
|
|
|
|
-- Object isn't valid at this point so don't do any operations that
|
|
-- would require it. State_Init is the first chance you have to do
|
|
-- operations on Object
|
|
|
|
-- half-width of the box around our object.
|
|
object_trap_size = 80
|
|
|
|
DebugMessage("%s -- In Definitions", tostring(Script))
|
|
|
|
Define_State("State_Init", State_Init);
|
|
Define_State("State_Object_Is_Damaged", State_Object_Is_Damaged);
|
|
|
|
end
|
|
|
|
|
|
--
|
|
-- State_Object_In_Range -- We've caught an object.
|
|
--
|
|
-- @param message The message describing our progression through this state. OnEnter, OnUpdate, OnExit.
|
|
-- @since 4/29/2005 10:51:40 AM -- BMH
|
|
--
|
|
function State_Object_Is_Damaged(message)
|
|
if message == OnEnter then
|
|
DebugMessage("%s -- State_Object_Is_Damaged(OnEnter), Caught %s", tostring(Script), tostring(caught_object))
|
|
|
|
marker = Find_Hint("E3Demo_Marker_Tanks", "Tank_Marker");
|
|
-- marker = Find_Hint("E3Demo_Marker_Tanks");
|
|
|
|
DebugMessage("%s -- Got marker %s", tostring(Script), tostring(marker))
|
|
Point_Camera_At(marker)
|
|
units = BlockOnCommand(Reinforce_Unit(reinforce_type, marker, caught_object.Get_Owner().Get_Enemy()))
|
|
-- units = Spawn_Unit(reinforce_type, marker, caught_object.Get_Owner().Get_Enemy())
|
|
|
|
for i,unit in ipairs(units) do
|
|
unit.Prevent_AI_Usage(true)
|
|
unit.Attack_Move(caught_object)
|
|
DebugMessage("%s -- Issued move order for unit %s", tostring(Script), tostring(unit))
|
|
end
|
|
|
|
-- Sleep for 60 seconds then reset the trap.
|
|
-- Sleep(60)
|
|
|
|
-- Go back to State_Init to reset the trap.
|
|
-- Set_Next_State("State_Init")
|
|
|
|
elseif message == OnUpdate then
|
|
elseif message == OnExit then
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
-- State_Init -- The Init state. Set our trap to catch an object.
|
|
--
|
|
-- @param message The message describing our progression through this state. OnEnter, OnUpdate, OnExit.
|
|
-- @since 4/29/2005 10:51:40 AM -- BMH
|
|
--
|
|
function State_Init(message)
|
|
|
|
if message == OnEnter then
|
|
-- When an object enters within 50 meters call our event.
|
|
DebugMessage("%s -- State_Init(OnEnter)", tostring(Script))
|
|
Object.Event_Object_In_Range(object_in_range_handler, object_trap_size)
|
|
|
|
reinforce_type = Find_Object_Type("Rebel_Light_Tank_Brigade")
|
|
storm_type = Find_Object_Type("Stormtrooper")
|
|
|
|
elseif message == OnUpdate then
|
|
|
|
-- if Object.Get_Hull() < 1.0 then
|
|
-- Set_Next_State("State_Object_Is_Damaged")
|
|
-- end
|
|
|
|
elseif message == OnExit then
|
|
end
|
|
|
|
end
|
|
|
|
|
|
--
|
|
-- object_in_range_handler -- Our object in range callback handler. Passed into the
|
|
-- Object.Event_Object_In_Range function during State_Init.
|
|
--
|
|
-- @param object GameObject of the object that entered our box
|
|
-- @since 4/29/2005 10:51:40 AM -- BMH
|
|
--
|
|
function object_in_range_handler(prox_obj, object)
|
|
|
|
if object.Get_Type() ~= storm_type then
|
|
return
|
|
end
|
|
-- DebugMessage("%s -- Object %s in range.", tostring(Script), tostring(object))
|
|
|
|
-- Cancel the object in range event from signaling anymore.
|
|
Object.Cancel_Event_Object_In_Range(object_in_range_handler)
|
|
|
|
-- gotcha!
|
|
caught_object = object;
|
|
|
|
-- Advance our state to Object_In_Range
|
|
Set_Next_State("State_Object_Is_Damaged")
|
|
end
|
|
|