Base Scenario Action ====================== .. code-block:: csharp public abstract class BaseScenarioAction : IScenarioElement Base class for one step of a scenario's action sequence. Override the abstract ``Process(float deltaTime)`` method with your own logic, returning ``true`` once it's done (some actions, like **Wait**, need several frames and keep returning ``false`` until they're finished). New subclasses automatically appear in the Scenario Editor's **Actions** dropdown. For actions which need a unit target, derive from ``UnitTargetedAction`` instead (see :doc:`targets`) - it adds a shared ``Target`` field. Built-in action types: ================================ ============== Action Description ================================ ============== **Wait** Waits a set number of seconds before the next action runs. **SpawnUnits** Spawns a list of units for a target player, cycling through a list of spawn point Transforms. **MoveOrder** *(unit-targeted)* Sends the targeted units a move order to a destination waypoint. **CancelOrder** *(unit-targeted)* Cancels all current orders of the targeted units. **ChangeOwner** *(unit-targeted)* Changes the owner player of the targeted units. **ApplyDamage** *(unit-targeted)* Damages the targeted units by a set amount and damage type. **SelectUnit** *(unit-targeted)* Selects the targeted units. **AddResources** Adds an amount of a chosen resource to a target player. **ProduceUnits** Queues units into the production line of one or more Production buildings. **CameraLookAt** Moves the camera to a target point. **PingMinimap** Shows a minimap signal ping at a world point. **GameEnd** Ends the match - victory or defeat for the local player. **RunScript** Runs a custom script of yours (any component implementing ``IScenarioScript``). **SkipRemainingActions** Completes the current scenario immediately, skipping any actions still queued after it. ================================ ==============