Results 1 to 12 of 12

Thread: Events, Conditions, & Commands

  1. #1

    Default Events, Conditions, & Commands

    ;;;;;;;;;;;;;;;;;;;;; Modding Resource Header ;;;;;;;;;;;;;;;;;;;;;;;;
    ; Title: Events, Conditions, & Commands
    ; Posted by: blitz576
    ; Original author: CA
    ; Modding area: Scripting/Traits/Ancillaries
    ; Summary: This is our most comprehensive list of the syntax that can be used in files such as scripts and the triggers in export_descr_character_traits, export_descr_ancillaries and export_descr_advice. Not all of this syntax works correctly, see the replies in this thread for details (see this thread for details of commands).
    ;;;;;;;;;;;;;;;;;;;;;



    There were three files that came with the demo:
    docudemon_events
    docudemon_conditions
    docudemon_commands
    Each containing a list of the respective events, conditions, and commands.

    It was found a while back, so I thought I'd refresh some memories.

    Triggers, conditions and events
    ===============================

    Triggers are data objects consisting of an event on which to test, a number of
    conditions, and a list of effects. These effects can be upon character traits
    or upon advice, although this could easily be extended to other domains of
    activity such as the world, the empire, diplomacy &c.

    The triggers themselves are not encoded in the project - they are read in from
    an external file and instantiations of triggers are stored in an array indexed
    by their event.

    If you wish to add new triggers, consult the list of extant triggers and see if
    you are merely redefining a trigger that already exists. You can do this by
    examining the advice and VnV spreadsheets. If you are satisfied that this is
    indeed a new trigger, ask yourself when the trigger should be tested, and under
    what conditions the trigger should fire. If either the condition or the event
    is unavailable, request from Guy that they be added to the set.

    The conditions are in conditions.txt. This document contains the current set of
    events. They are:

    ---------------------------------------------------
    Identifier: PreBattle
    Event: When a battle is about to start
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_PRE_BATTLE
    Author: Lee
    ---------------------------------------------------
    Identifier: PreBattleWithdrawal
    Event: When a battle is about to start but one of the armies withdraws
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_PRE_BATTLE_WITHDRAWAL
    Author: Lee
    ---------------------------------------------------
    Identifier: BattleAiCommenced
    Event: The battle AI has begun processing
    Exports: faction
    Class: ET_BATTLE_AI_COMMENCED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleDelayPhaseCommenced
    Event: The delay phase has begun
    Exports: faction
    Class: ET_BATTLE_DELAY_PHASE_COMMENCED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleDeploymentPhaseCommenced
    Event: The deployment phase has begun
    Exports: faction
    Class: ET_BATTLE_DEPLOYMENT_PHASE_COMMENCED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleConflictPhaseCommenced
    Event: The conflict phase has begun
    Exports: faction
    Class: ET_BATTLE_CONFLICT_PHASE_COMMENCED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitAttacksEnemyUnit
    Event: A player unit has attacked one of the enemies units
    Exports: infer_attacking_unit, infer_defending_unit, player_unit, enemy_unit
    Class: ET_BATTLE_PLAYER_UNIT_ATTACKS_ENEMY_UNIT
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitAttacksPlayerUnit
    Event: An enemy unit has attacked one of the players units
    Exports: infer_attacking_unit, infer_defending_unit, player_unit, enemy_unit
    Class: ET_BATTLE_ENEMY_UNIT_ATTACKS_PLAYER_UNIT
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerAttacksSettlementBuilding
    Event: A player unit has attacked a building in the settlement
    Exports: infer_attacking_unit, player_unit, building_battle
    Class: ET_BATTLE_PLAYER_ATTACKS_SETTLEMENT_BUILDING
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyAttacksSettlementBuilding
    Event: An enemy unit has attacked a building in the settlement
    Exports: infer_attacking_unit, enemy_unit, building_battle
    Class: ET_BATTLE_ENEMY_ATTACKS_SETTLEMENT_BUILDING
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleUnitRouts
    Event: A unit has routed
    Exports: unit
    Class: ET_BATTLE_UNIT_ROUTS
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitRouts
    Event: One of the player's units has routed
    Exports: player_unit
    Class: ET_BATTLE_PLAYER_UNIT_ROUTS
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitRouts
    Event: One of the enemies' units has routed
    Exports: enemy_unit
    Class: ET_BATTLE_ENEMY_UNIT_ROUTS
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerSiegeEngineDestroyed
    Event: A siege engine belonging to the player has been destroyed
    Exports: player_unit
    Class: ET_BATTLE_PLAYER_SIEGE_ENGINE_DESTROYED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemySiegeEngineDestroyed
    Event: A siege engine belonging to the enemy has been destroyed
    Exports: enemy_unit
    Class: ET_BATTLE_ENEMY_SIEGE_ENGINE_DESTROYED
    Author: Scott
    ---------------------------------------------------
    Identifier: PostBattle
    Event: When a battle has finished
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_POST_BATTLE
    Author: Lee
    ---------------------------------------------------
    Identifier: BattleArmyRouted
    Event: An army has been entrirely routed
    Exports: army
    Class: ET_BATTLE_ARMY_ROUTED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleGeneralKilled
    Event: A general has been killed
    Exports: character
    Class: ET_BATTLE_GENERAL_KILLED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleGeneralRouted
    Event: A general has been routed
    Exports: character
    Class: ET_BATTLE_GENERAL_ROUTED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleReinforcementsArrive
    Event: A reinforcing army has arrived on the battlefield
    Exports: army
    Class: ET_BATTLE_REINFORCEMENTS_ARRIVE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleSiegeEngineDestroyed
    Event: A siege engine has been destroyed
    Exports: unit
    Class: ET_BATTLE_SIEGE_ENGINE_DESTROYED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleSiegeEngineDocksWall
    Event: A siege engine has docked with a wall
    Exports: unit
    Class: ET_BATTLE_SIEGE_ENGINE_DOCKS_WALL
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleGatesAttackedByEngine
    Event: An engine has started attacking a gate
    Exports: unit
    Class: ET_BATTLE_GATES_ATTACKED_BY_ENGINE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleGatesAttackedByPlayerEngine
    Event: A player's engine has started attacking a gate
    Exports: player_unit
    Class: ET_BATTLE_GATES_ATTACKED_BY_PLAYER_ENGINE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleGatesAttackedByEnemyEngine
    Event: An enemy's engine has started attacking a gate
    Exports: enemy_unit
    Class: ET_BATTLE_GATES_ATTACKED_BY_ENEMY_ENGINE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleBattleGatesDestroyedByEngine
    Event: An engine has destroyed a gate
    Exports: unit
    Class: ET_BATTLE_GATES_DESTROYED_BY_ENGINE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleWallsBreachedByEngine
    Event: A siege engine has knocked down a wall
    Exports: unit
    Class: ET_BATTLE_WALLS_BREACHED_BY_ENGINE
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleWallsCaptured
    Event: A siege engine has knocked down a wall
    Exports: unit
    Class: ET_BATTLE_WALLS_CAPTURED
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleFinished
    Event: The battle has finished
    Exports: unit
    Class: ET_BATTLE_FINISHED
    Author: Scott
    ---------------------------------------------------
    Identifier: FactionTurnStart
    Event: A Faction has started its turn
    Exports: faction
    Class: ET_FACTION_TURN_START
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionWarDeclared
    Event: War has been declared by faction on target_faction
    Exports: faction, target_faction
    Class: ET_FACTION_WAR_DECLARED
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionTurnEnd
    Event: A Faction has ended its turn
    Exports: faction
    Class: ET_FACTION_TURN_END
    Author: Guy
    ---------------------------------------------------
    Identifier: HireMercenaries
    Event: A General has hired some mercenaries
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_HIRE_MERCENARIES
    Author: Guy
    ---------------------------------------------------
    Identifier: GeneralCaptureResidence
    Event: A General has captured a residence (fort, watchtower)
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_GENERAL_CAPTURE_RESIDENCE
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralCaptureWonder
    Event: A General has captured a wonder
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_GENERAL_CAPTURE_WONDER
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralCaptureSettlement
    Event: A General has captured a settlement
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_settlement, settlement, rsam
    Class: ET_GENERAL_CAPTURE_SETTLEMENT
    Author: Guy
    ---------------------------------------------------
    Identifier: LeaderDestroyedFaction
    Event: A faction has been destroyed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LEADER_DESTROYED_FACTION
    Author: Lee
    ---------------------------------------------------
    Identifier: Disaster
    Event: A disaster has happened
    Exports: event_type
    Class: ET_DISASTER
    Author: Guy
    ---------------------------------------------------
    Identifier: CharacterDamagedByDisaster
    Event: A character has been injured by a disaster
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CHARACTER_DAMAGED_BY_DISASTER
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralAssaultsResidence
    Event: An assault has taken place
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_ASSAULT
    Author: Lee
    ---------------------------------------------------
    Identifier: OfferedForAdoption
    Event: An adoption has been proposed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_OFFERED_FOR_ADOPTION
    Author: Lee
    ---------------------------------------------------
    Identifier: LesserGeneralOfferedForAdoption
    Event: An lesser general adoption has been proposed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LESSER_GENERAL_OFFERED_FOR_ADOPTION
    Author: Lee
    ---------------------------------------------------
    Identifier: OfferedForMarriage
    Event: An marriage offer has been proposed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_OFFERED_FOR_MARRIAGE
    Author: Lee
    ---------------------------------------------------
    Identifier: BrotherAdopted
    Event: An brother has been adopted
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BROTHER_ADOPTED
    Author: Lee
    ---------------------------------------------------
    Identifier: BecomesFactionLeader
    Event: The character has been made the faction leader
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOMES_FACTION_LEADER
    Author: Lee
    ---------------------------------------------------
    Identifier: BecomesFactionLeader
    Event: The character has been made the faction heir
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOMES_FACTION_HEIR
    Author: Lee
    ---------------------------------------------------
    Identifier: BecomeQuaestor
    Event: The character has been made Quaestor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_QUAESTOR
    Author: Guy
    ---------------------------------------------------
    Identifier: BecomeAedile
    Event: The character has been made Aedile
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_AEDILE
    Author: Guy
    ---------------------------------------------------
    Identifier: BecomePraetor
    Event: The character has been made Praetor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_PRAETOR
    Author: Guy
    ---------------------------------------------------
    Identifier: BecomeConsul
    Event: The character has been made Consul
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_CONSUL
    Author: Guy
    ---------------------------------------------------
    Identifier: BecomeCensor
    Event: The character has been made Censor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_CENSOR
    Author: Guy
    ---------------------------------------------------
    Identifier: BecomePontifexMaximus
    Event: The character has been made Pontifex Maximus
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOME_PONTIFEX_MAXIMUS
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedFactionLeader
    Event: The character is no longer faction leader
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_FACTION_LEADER
    Author: Lee
    ---------------------------------------------------
    Identifier: CeasedFactionHeir
    Event: The character is no longer faction heir
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_FACTION_HEIR
    Author: Lee
    ---------------------------------------------------
    Identifier: CeasedQuaestor
    Event: The character is no longer Quaestor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_QUAESTOR
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedAedile
    Event: The character is no longer Aedile
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_AEDILE
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedPraetor
    Event: The character is no longer Praetor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_PRAETOR
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedConsul
    Event: The character is no longer Consul
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_CONSUL
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedCensor
    Event: The character is no longer Censor
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_CENSOR
    Author: Guy
    ---------------------------------------------------
    Identifier: CeasedPontifexMaximus
    Event: The character is no longer Pontifex Maximus
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CEASED_PONTIFEX_MAXIMUS
    Author: Guy
    ---------------------------------------------------
    Identifier: UngarrisonedFort
    Event: A fort is no longer garrisoned
    Exports: faction, fort, region_id
    Class: ET_UNGARRISONED_FORT
    Author: Lee
    ---------------------------------------------------
    Identifier: LostLegionaryEagle
    Event: When a roman general has lost a battle and one of your units was carrying a legionary eagle(first cohort)
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LOST_LEGIONARY_EAGLE
    Author: Lee
    ---------------------------------------------------
    Identifier: CapturedLegionaryEagle
    Event: When you have defeated a roman general and one of his units was carrying a legionary eagle(first cohort), you capture it
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CAPTURED_LEGIONARY_EAGLE
    Author: Lee
    ---------------------------------------------------
    Identifier: RecapturedLegionaryEagle
    Event: We recaptured the eagle by completing the senate mission by conquering the settlement which holds it
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_RECAPTURED_LEGIONARY_EAGLE
    Author: Lee
    ---------------------------------------------------
    Identifier: SenateExposure
    Event: The senate has leaked information about you as punishment for failing a mission
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_SENATE_EXPOSURE
    Author: Guy
    ---------------------------------------------------
    Identifier: QuaestorInvestigationMinor
    Event: The senate has punished you by launching an investigation by the quaestor, probably leading to a minor fine
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_QUAESTOR_INVESTIGATION_MINOR
    Author: Guy
    ---------------------------------------------------
    Identifier: QuaestorInvestigation
    Event: The senate has punished you by launching an investigation by the quaestor, probably leading to a fine
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_QUAESTOR_INVESTIGATION
    Author: Guy
    ---------------------------------------------------
    Identifier: QuaestorInvestigationMajor
    Event: The senate has punished you by launching an investigation by the quaestor, probably leading to a major fine
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_QUAESTOR_INVESTIGATION_MAJOR
    Author: Guy
    ---------------------------------------------------
    Identifier: PopularSupportForOverthrow
    Event: The people of Rome are prepared to support any action against the senate
    Exports: faction
    Class: ET_POPULAR_SUPPORT_FOR_OVERTHROW
    Author: Guy
    ---------------------------------------------------
    Identifier: SenateReadyToOutlawFaction
    Event: The senate has had enough of this faction's empire building and grandstanding
    Exports: faction
    Class: ET_SENATE_READY_TO_OUTLAW_FACTION
    Author: Guy
    ---------------------------------------------------
    Identifier: SenateOutlawsFaction
    Event: The senate has declared this faction outlaw
    Exports: faction
    Class: ET_SENATE_OUTLAWS_FACTION
    Author: Guy
    ---------------------------------------------------
    Identifier: Birth
    Event: A child is born to the faction leader
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BIRTH
    Author: Lee
    ---------------------------------------------------
    Identifier: CharacterComesOfAge
    Event: A Character has come of age
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_COMING_OF_AGE
    Author: Lee
    ---------------------------------------------------
    Identifier: CharacterMarries
    Event: A Character has married
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_MARRIAGE
    Author: Lee
    ---------------------------------------------------
    Identifier: CharacterBecomesAFather
    Event: A Character has become a father
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_BECOMES_FATHER
    Author: Lee
    ---------------------------------------------------
    Identifier: CharacterTurnStart
    Event: A Character has started its turn
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_CHARACTER_TURN_START
    Author: Guy
    ---------------------------------------------------
    Identifier: CharacterTurnEnd
    Event: A Character has finished its turn
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_CHARACTER_TURN_END
    Author: Guy
    ---------------------------------------------------
    Identifier: CharacterTurnEnd
    Event: A Character has finished its turn
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_CHARACTER_TURN_END_IN_SETTLEMENT
    Author: Guy
    ---------------------------------------------------
    Identifier: GeneralDevastatesTile
    Event: A General and his army has devastated an enemy's fertile land
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_GENERAL_DEVASTATES_TILE
    Author: Lee
    ---------------------------------------------------
    Identifier: SpyMission
    Event: A spy mission has completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_SPY_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderOrderedSpyingMission
    Event: A Faction leader has ordered a spying mission
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_LEADER_ORDERED_SPYING_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: AssassinationMission
    Event: An assassination mission has completed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_ASSASSINATION_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderOrderedAssassination
    Event: A Faction leader has ordered an assassination mission
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_LEADER_ORDERED_ASSASSINATION_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: SufferAssassinationAttempt
    Event: Someone has had an attempt on their life
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_SUFFER_ASSASSINATION_ATTEMPT
    Author: Lee
    ---------------------------------------------------
    Identifier: SabotageMission
    Event: A sabotage mission has completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_SABOTAGE_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderOrderedSabotage
    Event: A Faction leader has ordered a sabotage mission
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_LEADER_ORDERED_SABOTAGE_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: BriberyMission
    Event: A bribery mission has completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_BRIBERY_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderOrderedBribery
    Event: A Faction leader has ordered a bribery mission
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_LEADER_ORDERED_BRIBERY_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: AcceptBribe
    Event: Someone has been bribed
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_ACCEPT_BRIBE
    Author: Guy
    ---------------------------------------------------
    Identifier: RefuseBribe
    Event: Someone has refused a bribe
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_REFUSE_BRIBE
    Author: Guy
    ---------------------------------------------------
    Identifier: Insurrection
    Event: Insurgence has been provoked
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_INSURRECTION
    Author: Guy
    ---------------------------------------------------
    Identifier: DiplomacyMission
    Event: A diplomacy mission has completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, target_faction, mission_success_level
    Class: ET_DIPLOMACY_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderOrderedDiplomacy
    Event: A Faction leader has ordered a diplomacy mission
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LEADER_ORDERED_DIPLOMACY_MISSION
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderSenateMissionSuccess
    Event: A Senate mission has been completed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LEADER_SENATE_MISSION_SUCCESS
    Author: Lee
    ---------------------------------------------------
    Identifier: LeaderSenateMissionFailed
    Event: A Senate mission has failed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_LEADER_SENATE_MISSION_FAILED
    Author: Lee
    ---------------------------------------------------
    Identifier: SettlementTurnStart
    Event: A Settlement is being processed for the start of its faction's turn
    Exports: faction, settlement, region_id
    Class: ET_SETTLEMENT_TURN_START
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementTurnEnd
    Event: A Settlement is being processed for the end of its faction's turn
    Exports: faction, settlement, region_id
    Class: ET_SETTLEMENT_TURN_END
    Author: Guy
    ---------------------------------------------------
    Identifier: UnitTrained
    Event: A unit has been trained
    Exports: faction, settlement, resource_description, unit_category
    Class: ET_UNIT_TRAINED
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorUnitTrained
    Event: A unit has been trained
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement, resource_description, unit_category
    Class: ET_GOVERNOR_UNIT_TRAINED
    Author: Lee
    ---------------------------------------------------
    Identifier: BuildingCompleted
    Event: A building has been completed
    Exports: faction, settlement, prior_build, advised_build
    Class: ET_BUILDING_COMPLETED
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorBuildingCompleted
    Event: A building has been completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement, prior_build, advised_build
    Class: ET_GOVERNOR_BUILDING_COMPLETED
    Author: Lee
    ---------------------------------------------------
    Identifier: PlugInCompleted
    Event: A plugin has been completed
    Exports: faction, settlement, region_id, prior_build, advised_build
    Class: ET_PLUG_IN_COMPLETED
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorPlugInCompleted
    Event: A plugin has been completed
    Exports: nc_character_record, character_record, faction, region_id, character_type, prior_build
    Class: ET_GOVERNOR_PLUG_IN_COMPLETED
    Author: Lee
    ---------------------------------------------------
    Identifier: AgentCreated
    Event: An agent has been trained
    Exports: character_record, character_type
    Class: ET_AGENT_CREATED
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorAgentCreated
    Event: An agent has been trained
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_GOVERNOR_AGENT_CREATED
    Author: Lee
    ---------------------------------------------------
    Identifier: BuildingDestroyed
    Event: A building has been destroyed
    Exports:
    Class: ET_BUILDING_DESTROYED
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorBuildingDestroyed
    Event: A building has been destroyed
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_GOVERNOR_BUILDING_DESTROYED
    Author: Lee
    ---------------------------------------------------
    Identifier: CityRiots
    Event: A settlement has rioted
    Exports: faction, settlement, region_id
    Class: ET_SETTLEMENT_RIOTS
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorCityRiots
    Event: A settlement has rioted
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_GOVERNOR_SETTLEMENT_RIOTS
    Author: Lee
    ---------------------------------------------------
    Identifier: CityRebels
    Event: A settlement has rebelled
    Exports: faction, settlement, region_id
    Class: ET_SETTLEMENT_REBELS
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorCityRebels
    Event: A settlement has rebelled
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_GOVERNOR_SETTLEMENT_REBELS
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorThrowGames
    Event: Games have been thrown
    Exports: nc_character_record, character_record, faction, region_id, character_type, settlement
    Class: ET_GOVERNOR_THROW_GAMES
    Author: Lee
    ---------------------------------------------------
    Identifier: UngarrisonedSettlement
    Event: A settlement is no longer garrisoned
    Exports: faction, settlement, region_id
    Class: ET_UNGARRISONED_SETTLEMENT
    Author: Lee
    ---------------------------------------------------
    Identifier: EnslavePopulation
    Event: A settlement has been captured and some of its population has been enslaved
    Exports: nc_character_record, character_record, faction, target_faction, region_id, character_type
    Class: ET_ENSLAVE_POPULATION
    Author: Lee
    ---------------------------------------------------
    Identifier: ExterminatePopulation
    Event: A settlement has been captured and some of its population has been decimated
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_EXTERMINATE_POPULATION
    Author: Lee
    ---------------------------------------------------
    Identifier: CharacterSelected
    Event: The player has selected a character
    Exports: nc_character_record, character_record, faction, region_id, character_type, character_action_advice, target_settlement
    Class: ET_CHARACTER_SELECTED
    Author: Guy
    ---------------------------------------------------
    Identifier: MultiTurnMove
    Event: The player has selected a position beyond the character's extents
    Exports: nc_character_record, character_record, faction, region_id, character_type
    Class: ET_MULTI_TURN_MOVE
    Author: Guy
    ---------------------------------------------------
    Identifier: CharacterPanelOpen
    Event: The player has opened the panel for the selected character
    Exports: character_record, faction, region_id, character_type
    Class: ET_CHARACTER_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementPanelOpen
    Event: The player has opened the panel for the selected settlement
    Exports: faction, settlement, region_id
    Class: ET_SETTLEMENT_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: FinancesPanelOpen
    Event: The player has opened his finances panel
    Exports: faction
    Class: ET_FINANCES_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionSummaryPanelOpen
    Event: The player has opened the faction summary panel
    Exports: faction
    Class: ET_FACTION_SUMMARY_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: FamilyTreePanelOpen
    Event: The player has opened the family tree panel
    Exports: faction
    Class: ET_FAMILY_TREE_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: DiplomaticStandingPanelOpen
    Event: The player has opened the diplomatic standing panel
    Exports:
    Class: ET_DIPLOMATIC_STANDING_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: SenateMissionsPanelOpen
    Event: The player has opened the senate missions panel
    Exports: faction
    Class: ET_SENATE_MISSIONS_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: SenateOfficesPanelOpen
    Event: The player has opened the senate offices panel
    Exports:
    Class: ET_SENATE_OFFICES_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: DiplomacyPanelOpen
    Event: The player has opened a diplomacy panel
    Exports: faction
    Class: ET_DIPLOMACY_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: PreBattlePanelOpen
    Event: The player has attacked an army or settlement. The decision panel is now open.
    Exports: faction
    Class: ET_PRE_BATTLE_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: RecruitmentPanelOpen
    Event: The player has opened a recruitment panel
    Exports: faction, settlement, region_id
    Class: ET_RECRUITMENT_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: ConstructionPanelOpen
    Event: The player has opened a construction panel
    Exports: faction, settlement, region_id
    Class: ET_CONSTRUCTION_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: TradePanelOpen
    Event: The player has opened a trade panel
    Exports: faction, settlement, region_id
    Class: ET_TRADE_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: HireMercenariesPanelOpen
    Event: The player has opened a hire mercenaries panel
    Exports:
    Class: ET_HIRE_MERCENARIES_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: NavalAutoResolvePanelOpen
    Event: The naval auto resolve panel has opened
    Exports:
    Class: ET_NAVAL_AUTO_RESOLVE_PANEL_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: IncomingMessage
    Event: A message has arrived for the player
    Exports: event
    Class: ET_INCOMING_MESSAGE
    Author: Guy
    ---------------------------------------------------
    Identifier: MessageOpen
    Event: The player has opened a message
    Exports: event
    Class: ET_MESSAGE_OPEN
    Author: Guy
    ---------------------------------------------------
    Identifier: RequestBuildingAdvice
    Event: The player has requested building advice
    Exports: faction, settlement, region_id, advised_build
    Class: ET_BUILDING_ADVICE
    Author: Guy
    ---------------------------------------------------
    Identifier: RequestTrainingAdvice
    Event: The player has requested training advice
    Exports: faction, settlement, region_id, resource_description
    Class: ET_TRAINING_ADVICE
    Author: Guy
    ---------------------------------------------------
    Identifier: RequestMercenariesAdvice
    Event: The player has requested mercenaries advice
    Exports: army
    Class: ET_MERCENARIES_ADVICE
    Author: Guy
    ---------------------------------------------------
    Identifier: ButtonPressed
    Event: The player has clicked on a button
    Exports: resource_description
    Class: ET_BUTTON_PRESSED
    Author: Tom
    ---------------------------------------------------
    Identifier: ShortcutTriggered
    Event: The player triggered a keyboard shortcut
    Exports: resource_description
    Class: ET_SHORTCUT_TRIGGERED
    Author: Tom
    ---------------------------------------------------
    Identifier: ScrollOpened
    Event: The player opened a scroll
    Exports: resource_description
    Class: ET_SCROLL_OPENED
    Author: Tom
    ---------------------------------------------------
    Identifier: ScrollClosed
    Event: The player closed a scroll
    Exports: resource_description
    Class: ET_SCROLL_CLOSED
    Author: Tom
    ---------------------------------------------------
    Identifier: AdviceSupressed
    Event: The player has suppressed a piece of advice
    Exports: resource_description
    Class: ET_ADVICE_SUPPRESSED
    Author: Guy
    ---------------------------------------------------
    Identifier: ScrollAdviceRequested
    Event: The player has requested advice on a scroll
    Exports: resource_description
    Class: ET_SCROLL_ADVICE_REQUESTED
    Author: Guy
    ---------------------------------------------------
    Identifier: PreBattleScrollAdviceRequested
    Event: The player has requested advice on the prebattle scroll
    Exports: none
    Class: ET_PREBATTLE_SCROLL_ADVICE_REQUESTED
    Author: Tom
    ---------------------------------------------------
    Identifier: NavalPreBattleScrollAdviceRequested
    Event: The player has requested advice on the naval prebattle scroll
    Exports: none
    Class: ET_NAVAL_PREBATTLE_SCROLL_ADVICE_REQUESTED
    Author: Tom
    ---------------------------------------------------
    Identifier: Idle
    Event: The player has remained idle for some time (Not implemented)
    Exports:
    Class: ET_IDLE
    Author: Guy
    ---------------------------------------------------
    Identifier: AbandonShowMe
    Event: The player has abandoned a show me scipt
    Exports:
    Class: ET_ABANDON_SHOW_ME
    Author: Guy
    ---------------------------------------------------
    Identifier: DeclineAutomatedSettlementManagement
    Event: The player has declined automated settlement management
    Exports: faction, settlement, best_finance_option
    Class: ET_DECLINE_AUTOMATED_SETTLEMENT_MANAGEMENT
    Author: Guy
    ---------------------------------------------------
    Identifier: EscPressed
    Event: The escape key has been pressed. This trigger will only fire if the command StealEscKey has been used
    Exports: none
    Class: ET_ESC_PRESSED
    Author: Tom
    Last edited by Epistolary Richard; 07-25-2005 at 09:52.

  2. #2

    Default Re: Events, Conditions, & Commands

    Triggers, conditions and events
    ===============================

    Triggers are data objects consisting of an event on which to test, a number of
    conditions, and a list of effects. These effects can be upon character traits
    or upon advice, although this could easily be extended to other domains of
    activity such as the world, the empire, diplomacy &c.

    The triggers themselves are not encoded in the project - they are read in from
    an external file and instantiations of triggers are stored in an array indexed
    by their event.

    If you wish to add new triggers, consult the list of extant triggers and see if
    you are merely redefining a trigger that already exists. You can do this by
    examining the advice and VnV spreadsheets. If you are satisfied that this is
    indeed a new trigger, ask yourself when the trigger should be tested, and under
    what conditions the trigger should fire. If either the condition or the event
    is unavailable, request from Guy that they be added to the set.

    Conditions which take no logic_token in their parameter list can be negated by
    prepending them with not, e.g. not WonBattle

    The events are in events.txt. This document contains the current set of
    conditions. They are:

    ---------------------------------------------------
    Identifier: I_InBattle
    Trigger requirements:
    Parameters: None
    Sample use: InBattle
    Description: Are we in battle?
    Battle or Strat: Either
    Class: IN_BATTLE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: WonBattle
    Trigger requirements: character_record
    Parameters: None
    Sample use: WonBattle
    Description: Did the general win the battle just fought?
    Battle or Strat: Either
    Class: WON_BATTLE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_WonBattle
    Trigger requirements:
    Parameters: None
    Sample use: I_WonBattle romans_julii
    Description: Did the faction win the battle just fought?
    Battle or Strat: Either
    Class: I_WON_BATTLE
    Implemented: No
    Author: Guy
    ---------------------------------------------------
    Identifier: Routs
    Trigger requirements: character_record
    Parameters: None
    Sample use: Routs
    Description: Did the general's unit rout in the battle just fought?
    Battle or Strat: Either
    Class: ROUTS
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: Ally_Routs
    Trigger requirements: character_record
    Parameters: None
    Sample use: Ally_Routs
    Description: Did any ally's general's units rout in the battle just fought?
    Battle or Strat: Either
    Class: ALLY_ROUTS
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralHPLostRatioinBattle
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: GeneralHPLostRatioinBattle > 35.8
    Description: Test to see what the HP lost ratio of the prior battle was
    Battle or Strat: Either
    Class: GENERALS_LOST_HP_RATIO_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralNumKillsInBattle
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: GeneralNumKillsInBattle > 4
    Description: Test to see how many kills the character scored in the prior battle was
    Battle or Strat: Either
    Class: GENERAL_ENEMIES_KILLED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralFoughtInCombat
    Trigger requirements: character_record
    Parameters: None
    Sample use: GeneralFoughtInCombat
    Description: Test to see if the character entered combat in the prior battle
    Battle or Strat: Either
    Class: GENERAL_FOUGHT_IN_COMBAT
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: PercentageOfArmyKilled
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: PercentageOfArmyKilled > 35.8
    Description: Test to see what percentage of their men they lost in the prior battle
    Battle or Strat: Either
    Class: PERCENTAGE_OF_ARMY_KILLED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_PercentageOfArmyKilled
    Trigger requirements:
    Parameters: alliance_index army_index logic_token percentage
    Sample use: I_PercentageOfArmyKilled 1 0 < 50
    Description: Tests the percentage of casualties taken by the specified army during this battle
    Battle or Strat: Battle
    Class: BATTLE_PERCENTAGE_OF_ARMY_KILLED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: PercentageEnemyKilled
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: PercentageEnemyKilled > 35.8
    Description: Test to see what percentage of the enemy was killed in the prior battle
    Battle or Strat: Either
    Class: PERCENTAGE_OF_ENEMY_KILLED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: PercentageBodyguardKilled
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: PercentageBodyguardKilled > 35.8
    Description: Test to see what percentage of their bodyguard was killed in the prior battle
    Battle or Strat: Either
    Class: PERCENTAGE_OF_GENERALS_UNIT_KILLED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: PercentageRoutedOffField
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: PercentageRoutedOffField > 35.8
    Description: Test to see the percentage of the character's soldiers who routed
    Battle or Strat: Either
    Class: PERCENTAGE_ROUTED_OFF_FIELD_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: NumKilledGenerals
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: NumKilledGenerals > 3
    Description: Test to see how many generals were killed
    Battle or Strat: Either
    Class: GENERALS_ARMY_KILLED_GENERALS_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: PercentageUnitCategory
    Trigger requirements: character_record
    Parameters: unit category (infantry, cavalry, siege, non_combatant, ship, handler), logic token, test value
    Sample use: PercentageUnitCategory handler > 35.8
    Description: Test to see what percentage of the army were of a particular category
    Battle or Strat: Either
    Class: GENERALS_ARMY_PERCENTAGE_OF_UNIT_CATEGORY_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: NumFriendsInBattle
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: NumFriendsInBattle < 50
    Description: Test the number of soldiers and officers in allied armies
    Battle or Strat: Either
    Class: NUM_FRIENDS_IN_BATTLE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: NumEnemiesInBattle
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: NumEnemiesInBattle > 300
    Description: Test the number of soldiers and officers in enemy armies
    Battle or Strat: Either
    Class: NUM_ENEMIES_IN_BATTLE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralFoughtFaction
    Trigger requirements: character_record
    Parameters: faction type
    Sample use: GeneralFoughtFaction romans_julii
    Description: Test to see whether the opponent was of a particular faction in the prior battle
    Battle or Strat: Either
    Class: FOUGHT_FACTION
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GeneralFoughtCulture
    Trigger requirements: character_record
    Parameters: culture type (roman, barbarian, carthaginian, greek, egyptian, eastern)
    Sample use: GeneralFoughtCulture greek
    Description: Test to see whether the opponent was of a particular culture in the prior battle
    Battle or Strat: Either
    Class: FOUGHT_CULTURE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_ConflictType
    Trigger requirements:
    Parameters: conflict type (SuccessfulAmbush, FailedAmbush, SuccessfulNightRaid, FailedNightRaid, Normal, Siege, SallyBesieger, Naval, Withdraw)
    Sample use: I_ConflictType SuccessfulNightRaid
    Description: Test the type of conflict (ambush, siege &c.)
    Battle or Strat: Either
    Class: BATTLE_CONFLICT_TYPE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: BattleSuccess
    Trigger requirements: character_record
    Parameters: success type (close, average, clear, crushing)
    Sample use: BattleSuccess = clear, BattleSuccess > close
    Description: Test the type of success
    Battle or Strat: Either
    Class: BATTLE_SUCCESS_TYPE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: BattleOdds
    Trigger requirements: character_record
    Parameters: logic token, test value
    Sample use: BattleOdds > 5
    Description: Test the odds to win i.e. 5 (5:1)
    Battle or Strat: Either
    Class: BATTLE_ODDS_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: WasAttacker
    Trigger requirements: character_record
    Parameters: None
    Sample use: WasAttacker
    Description: Was the character the aggressor?
    Battle or Strat: Either
    Class: CHARACTER_WAS_ATTACKER
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_BattleAiAttacking
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiAttacking
    Description: Is the enemy ai planning to attack the player?
    Battle or Strat: Battle
    Class: BATTLE_AI_ATTACKING
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAiAttackingSettlement
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiAttackingSettlement
    Description: Is the enemy ai planning to attack the player's settlement?
    Battle or Strat: Battle
    Class: BATTLE_AI_ATTACKING_SETTLEMENT
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAiDefendingSettlement
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiDefendingSettlement
    Description: Is the enemy ai planning to defend it's settlement?
    Battle or Strat: Battle
    Class: BATTLE_AI_DEFENDING_SETTLEMENT
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAiDefendingHill
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiDefendingHill
    Description: Is the enemy ai planning to defend a hill?
    Battle or Strat: Battle
    Class: BATTLE_AI_DEFENDING_HILL
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAiDefendingCrossing
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiDefendingCrossing
    Description: Is the enemy ai planning to defend a crossing?
    Battle or Strat: Battle
    Class: BATTLE_AI_DEFENDING_CROSSING
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAiScouting
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattleAiScouting
    Description: Is the enemy ai planning to scout?
    Battle or Strat: Battle
    Class: BATTLE_AI_SCOUTING
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleIsRiverBattle
    Trigger requirements:
    Parameters: integer
    Sample use: I_BattleIsRiverBattle
    Description: Is this a river battle?
    Battle or Strat: Battle
    Class: BATTLE_IS_RIVER_BATTLE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleIsSiegeBattle
    Trigger requirements:
    Parameters: integer
    Sample use: I_BattleIsSiegeBattle
    Description: Is this a siege battle?
    Battle or Strat: Battle
    Class: BATTLE_IS_SIEGE_BATTLE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleIsSallyOutBattle
    Trigger requirements:
    Parameters: integer
    Sample use: I_BattleIsSallyOutBattle
    Description: Is this a sally out battle?
    Battle or Strat: Battle
    Class: BATTLE_IS_SALLY_OUT_BATTLE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleIsFortBattle
    Trigger requirements:
    Parameters: integer
    Sample use: I_BattleIsFortBattle
    Description: Is this a fort battle?
    Battle or Strat: Battle
    Class: BATTLE_IS_FORT_BATTLE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAttackerNumSiegeEngines
    Trigger requirements:
    Parameters: siege_engine_class (tower, ram, ladder, sap_point)
    Sample use: I_BattleAttackerNumSiegeEngines ladder
    Description: How many of this engine type are present?
    Battle or Strat: Battle
    Class: BATTLE_ATTACKER_NUM_SIEGE_ENGINES
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleAttackerNumArtilleryCanPenetrateWalls
    Trigger requirements:
    Parameters: logic token, number
    Sample use: I_BattleAttackerNumArtilleryCanPenetrateWalls > 5
    Description: How many of the attackers artillery can penetrate the siege walls
    Battle or Strat: Battle
    Class: BATTLE_ATTACKER_NUM_ARTILLERY_CAN_PENETRATE_WALLS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleDefenderNumNonMissileUnitsOnWalls
    Trigger requirements:
    Parameters: logic token, number
    Sample use: I_BattleDefenderNumNonMissileUnitsOnWalls > 5
    Description: How many of the defenders non-missile units are on the walls
    Battle or Strat: Battle
    Class: BATTLE_DEFENDER_NUM_NON_MISSILE_UNITS_ON_WALLS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleDefenderNumMissileUnitsOnWalls
    Trigger requirements:
    Parameters: logic token, number
    Sample use: I_BattleDefenderNumMissileUnitsOnWalls > 5
    Description: How many of the defenders missile units are on the walls
    Battle or Strat: Battle
    Class: BATTLE_DEFENDER_NUM_MISSILE_UNITS_ON_WALLS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementWallsBreached
    Trigger requirements:
    Parameters: none
    Sample use: I_BattleSettlementWallsBreached
    Description: Have the walls of the settlement been breached?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_WALLS_BREACHED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementGateDestroyed
    Trigger requirements:
    Parameters: none
    Sample use: I_BattleSettlementGateDestroyed
    Description: Has a gate in the settlement been destroyed?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_GATE_DESTROYED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementTowerDefence
    Trigger requirements:
    Parameters: tower defence type (arrow_tower, ballista_tower, none)
    Sample use: not I_BattleSettlementTowerDefence arrow_tower
    Description: What type of tower defence is this settlement equipped with?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_TOWER_DEFENCE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementGateDefence
    Trigger requirements:
    Parameters: gate defence type (hot_sand, burning_oil, none)
    Sample use: not I_BattleSettlementGateDefence hot_sand
    Description: What type of gate defence is this settlement equipped with?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_GATE_DEFENCE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementFortificationLevel
    Trigger requirements:
    Parameters: wall level (none, 0, 1, 2, 3, 4)
    Sample use: I_BattleSettlementFortificationLevel > 0
    Description: What is the fortification level of this settlement?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_FORTIFICATION_LEVEL
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleBuildingType
    Trigger requirements:
    Parameters: building type (ambient, major, wall, tower, gate)
    Sample use: BattleBuildingType = wall
    Description: What type of building is this?
    Battle or Strat: Battle
    Class: BATTLE_BUILDING_TYPE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleSettlementGateStrength
    Trigger requirements:
    Parameters: gate strength (0..2)
    Sample use: I_BattleSettlementGateStrength > 2
    Description: What is the strength of the settlement gates?
    Battle or Strat: Battle
    Class: BATTLE_SETTLEMENT_GATE_STRENGTH
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleNumberOfRiverCrossings
    Trigger requirements:
    Parameters: integer
    Sample use: I_BattleNumberOfRiverCrossings > 1
    Description: How many river crossings are there on this map?
    Battle or Strat: Battle
    Class: BATTLE_NUMBER_OF_RIVER_CROSSINGS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitClass
    Trigger requirements: player_unit
    Parameters: unit_class (heavy, light, skirmish, spearmen, missile)
    Sample use: BattlePlayerUnitClass = unit_class
    Description: What is the class of the player unit?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitClass
    Trigger requirements: enemy_unit
    Parameters: unit_class (heavy, light, skirmish, spearmen, missile)
    Sample use: BattleEnemyUnitClass = unit_class
    Description: What is the class of the enemy unit?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitCategory
    Trigger requirements: player_unit
    Parameters: unit category (infantry, cavalry, siege, non_combatant, ship, handler)
    Sample use: BattlePlayerUnitCategory = unit_category
    Description: What is the category of the player unit?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitCategory
    Trigger requirements: enemy_unit
    Parameters: unit category (infantry, cavalry, siege, non_combatant, ship, handler)
    Sample use: BattleEnemyUnitCategory = unit_category
    Description: What is the category of the enemy unit?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitSiegeEngineClass
    Trigger requirements: player_unit
    Parameters: siege engine category (catapult, trebuchet, ballista, scorpion, tower, ram, ladder, sap_point)
    Sample use: BattlePlayerUnitSiegeEngineClass = scorpion
    Description: What type of siege engine is the player unit?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_SIEGE_ENGINE_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitSiegeEngineClass
    Trigger requirements: enemy_unit
    Parameters: siege engine category (catapult, trebuchet, ballista, scorpion, tower, ram, ladder, sap_point)
    Sample use: BattleEnemyUnitSiegeEngineClass = scorpion
    Description: What type of siege engine is the enemy unit?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_SIEGE_ENGINE_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitOnWalls
    Trigger requirements: player_unit
    Parameters: none
    Sample use: BattlePlayerUnitOnWalls
    Description: Is the player unit on the walls?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_ON_WALLS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitOnWalls
    Trigger requirements: enemy_unit
    Parameters: none
    Sample use: BattleEnemyUnitOnWalls
    Description: Is the enemy unit on the walls?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_ON_WALLS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerCurrentFormation
    Trigger requirements: player_unit
    Parameters: formation (horde, column, square, wedge, square_hollow, testudo, phalanx)
    Sample use: BattlePlayerCurrentFormation = phalanx
    Description: What is the current formation of the player unit?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_CURRENT_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyCurrentFormation
    Trigger requirements: enemy_unit
    Parameters: formation (horde, column, square, wedge, square_hollow, testudo, phalanx)
    Sample use: BattleEnemyCurrentFormation = unit_formation
    Description: What is the current formation of the enemy unit?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_CURRENT_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitCloseFormation
    Trigger requirements: player_unit
    Parameters: none
    Sample use: BattlePlayerUnitCloseFormation
    Description: Is the player unit in close formation, otherwise loose?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_CLOSE_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitCloseFormation
    Trigger requirements: enemy_unit
    Parameters: none
    Sample use: BattleEnemyUnitCloseFormation
    Description: Is the enemy unit in close formation, otherwise loose?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_CLOSE_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitSpecialAbilitySupported
    Trigger requirements: player_unit
    Parameters: special_ability ( testudo, phalanx, wedge, drop_engines, flaming_ammo, warcry, chant, curse, beserk, rally, kill_elephants, move_and_shoot, cantabrian_circle, shield_wall, stealth, feigned_rout )
    Sample use: BattlePlayerUnitSpecialAbilitySupported = flaming_ammo
    Description: What special ability can the player unit support?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_SPECIAL_ABILITY_SUPPORTED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitSpecialAbilitySupported
    Trigger requirements: enemy_unit
    Parameters: special_ability ( testudo, phalanx, wedge, drop_engines, flaming_ammo, warcry, chant, curse, beserk, rally, kill_elephants, move_and_shoot, cantabrian_circle, shield_wall, stealth, feigned_rout )
    Sample use: BattleEnemyUnitSpecialAbilitySupported = flaming_ammo
    Description: What special ability can the enemy unit support?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_SPECIAL_ABILITY_SUPPORTED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitSpecialAbilityActive
    Trigger requirements: player_unit
    Parameters: none
    Sample use: BattlePlayerUnitSpecialAbilityActive
    Description: Is the player unit currently doing its special ability
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_SPECIAL_ABILITY_ACTIVE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitSpecialAbilityActive
    Trigger requirements: enemy_unit
    Parameters: none
    Sample use: BattleEnemyUnitSpecialAbilityActive
    Description: Is the enemy unit currently doing its special ability
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_SPECIAL_ABILITY_ACTIVE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerMountClass
    Trigger requirements: player_unit
    Parameters: mount_class (horse, camel, elephant, chariot)
    Sample use: BattlePlayerMountClass = mount_class
    Description: What is the mount class of the player unit?
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_MOUNT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyMountClass
    Trigger requirements: enemy_unit
    Parameters: mount_class (horse, camel, elephant, chariot)
    Sample use: BattleEnemyMountClass = mount_class
    Description: What is the mount class of the enemy unit?
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_MOUNT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitMeleeStrength
    Trigger requirements: player_unit
    Parameters: logic token, test value
    Sample use: BattlePlayerUnitMeleeStrength > 56.45
    Description: Compare the melee strength of a unit with a known value
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_MELEE_STRENGTH
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitMeleeStrength
    Trigger requirements: enemy_unit
    Parameters: logic token, test value
    Sample use: BattleEnemyUnitMeleeStrength > 56.45
    Description: Compare the melee strength of a unit with a known value
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_MELEE_STRENGTH
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitMissileStrength
    Trigger requirements: player_unit
    Parameters: logic token, test value
    Sample use: BattlePlayerUnitMissileStrength > 56.45
    Description: Compare the missile strength of a unit with a known value
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_MISSILE_STRENGTH
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitMissileStrength
    Trigger requirements: enemy_unit
    Parameters: logic token, test value
    Sample use: BattleEnemyUnitMissileStrength > 56.45
    Description: Compare the missile strength of a unit with a known value
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_MISSILE_STRENGTH
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitSpecialFormation
    Trigger requirements: player_unit
    Parameters: formation (horde, column, square, wedge, square_hollow, testudo, phalanx), test value
    Sample use: BattlePlayerUnitSpecialFormation = testudo
    Description: What is the special formation of the player unit
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_SPECIAL_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitSpecialFormation
    Trigger requirements: enemy_unit
    Parameters: formation (horde, column, square, wedge, square_hollow, testudo, phalanx), test value
    Sample use: BattleEnemyUnitSpecialFormation = testudo
    Description: What is the special formation of the enemy unit
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_SPECIAL_FORMATION
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitEngaged
    Trigger requirements: player_unit
    Parameters: None
    Sample use: BattlePlayerUnitEngaged
    Description: Is the player unit engaged in battle
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_ENGAGED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitEngaged
    Trigger requirements: enemy_unit
    Parameters: None
    Sample use: BattleEnemyUnitEngaged
    Description: Is the enemy unit engaged in battle
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_ENGAGED
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerActionStatus
    Trigger requirements: player_unit
    Parameters: Action status ( idling, hiding, ready, reforming, moving, withdrawing, missiles_firing, missiles_reloading, charging, fighting, pursuing, routing, fighting_backs_to_the_walls, running_amok, rallying, dead, leaving_battle, entering_battle, left_battle )
    Sample use: BattlePlayerActionStatus = moving
    Description: What is the current action status of the player unit
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ACTION_STATUS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyActionStatus
    Trigger requirements: enemy_unit
    Parameters: Action status ( idling, hiding, ready, reforming, moving, withdrawing, missiles_firing, missiles_reloading, charging, fighting, pursuing, routing, fighting_backs_to_the_walls, running_amok, rallying, dead, leaving_battle, entering_battle, left_battle )
    Sample use: BattleEnemyActionStatus = moving
    Description: What is the current action status of the player unit
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ACTION_STATUS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattlePlayerUnitMovingFast
    Trigger requirements: player_unit
    Parameters: None
    Sample use: BattlePlayerUnitMovingFast
    Description: Is the player unit moving fast
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_UNIT_MOVING_FAST
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleEnemyUnitMovingFast
    Trigger requirements: enemy_unit
    Parameters: None
    Sample use: BattleEnemyUnitMovingFast
    Description: Is the enemy unit moving fast
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_UNIT_MOVING_FAST
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleRangeOfAttack
    Trigger requirements: player_unit, enemy_unit
    Parameters: logic token, test value
    Sample use: BattleRangeOfAttack > 56.45
    Description: Test the range of the attack (in m)
    Battle or Strat: Battle
    Class: BATTLE_RANGE_OF_ATTACK
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleDirectionOfAttack
    Trigger requirements: infer_attacking_unit, infer_defending_unit
    Parameters: logic token, attack_dir (front, flank, rear)
    Sample use: BattleDirectionOfAttack = front
    Description: Test direction of the attack
    Battle or Strat: Battle
    Class: BATTLE_DIRECTION_OF_ATTACK
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: BattleIsMeleeAttack
    Trigger requirements: infer_attacking_unit
    Parameters: None
    Sample use: BattleIsMeleeAttack
    Description: Is the attacker initiating a melee attack (otherwise missile attack)
    Battle or Strat: Battle
    Class: BATTLE_IS_MELEE_ATTACK
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageOfUnitClass
    Trigger requirements:
    Parameters: logic token, unit_class (heavy, light, skirmish, spearmen, missile), percentage
    Sample use: I_BattlePlayerArmyPercentageOfUnitClass missile > 50.0
    Description: Test makeup of army by unit class
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_OF_UNIT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageOfUnitClass
    Trigger requirements:
    Parameters: logic token, unit_class (heavy, light, skirmish, spearmen, missile), percentage
    Sample use: I_BattleEnemyArmyPercentageOfUnitClass missile > 50.0
    Description: Test makeup of army by unit class
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_OF_UNIT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageOfUnitCategory
    Trigger requirements:
    Parameters: logic token, unit category (infantry, cavalry, siege, non_combatant, ship, handler), percentage
    Sample use: I_BattlePlayerArmyPercentageOfUnitCategory missile > 50.0
    Description: Test makeup of army by unit category
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_OF_UNIT_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageOfUnitCategory
    Trigger requirements:
    Parameters: logic token, unit category (infantry, cavalry, siege, non_combatant, ship, handler), percentage
    Sample use: I_BattleEnemyArmyPercentageOfUnitCategory missile > 50.0
    Description: Test makeup of army by unit category
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_OF_UNIT_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageOfMountClass
    Trigger requirements:
    Parameters: logic token, mount_class (horse, camel, elephant, chariot), percentage
    Sample use: I_BattlePlayerArmyPercentageOfMountClass camel > 50.0
    Description: Test makeup of army by mount class
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_OF_MOUNT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageOfMountClass
    Trigger requirements:
    Parameters: logic token, mount_class (horse, camel, elephant, chariot), percentage
    Sample use: I_BattleEnemyArmyPercentageOfMountClass camel > 50.0
    Description: Test makeup of army by mount class
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_OF_MOUNT_CLASS
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageOfClassAndCategory
    Trigger requirements:
    Parameters: logic token, unit_class (heavy, light, skirmish, spearmen, missile), unit_category (infantry, cavalry, siege, non_combatant, ship, handler), percentage
    Sample use: I_BattlePlayerArmyPercentageOfClassAndCategory missile cavalry > 50.0
    Description: Test makeup of army by mount class
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_OF_CLASS_AND_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageOfClassAndCategory
    Trigger requirements:
    Parameters: logic token, unit_class (heavy, light, skirmish, spearmen, missile), unit_category (infantry, cavalry, siege, non_combatant, ship, handler), percentage
    Sample use: I_BattleEnemyArmyPercentageOfClassAndCategory missile cavalry > 50.0
    Description: Test makeup of army by mount class
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_OF_CLASS_AND_CATEGORY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageOfSpecialAbility
    Trigger requirements:
    Parameters: special_ability ( testudo, phalanx, wedge, drop_engines, flaming_ammo, warcry, chant, curse, beserk, rally, kill_elephants, move_and_shoot, cantabrian_circle, shield_wall, stealth, feigned_rout ), percentage
    Sample use: I_BattlePlayerArmyPercentageOfSpecialAbility testudo > 50.0
    Description: Test makeup of army by special ability
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_OF_SPECIAL_ABILITY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageOfSpecialAbility
    Trigger requirements:
    Parameters: special_ability ( testudo, phalanx, wedge, drop_engines, flaming_ammo, warcry, chant, curse, beserk, rally, kill_elephants, move_and_shoot, cantabrian_circle, shield_wall, stealth, feigned_rout ), percentage
    Sample use: I_BattleEnemyArmyPercentageOfSpecialAbility testudo > 50.0
    Description: Test makeup of army by special ability
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_OF_SPECIAL_ABILITY
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyPercentageCanHide
    Trigger requirements:
    Parameters: logic token, hide_type (hide_forest, hide_improved_forest, hide_long_grass, hide_anywhere), percentage
    Sample use: I_BattlePlayerArmyPercentageCanHide hide_forest > 50.0
    Description: Test makeup of army by hide capability
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_PERCENTAGE_CAN_HIDE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattleEnemyArmyPercentageCanHide
    Trigger requirements:
    Parameters: logic token, hide_type (hide_forest, hide_improved_forest, hide_long_grass, hide_anywhere), percentage
    Sample use: I_BattleEnemyArmyPercentageCanHide hide_forest > 50.0
    Description: Test makeup of army by hide capability
    Battle or Strat: Battle
    Class: BATTLE_ENEMY_ARMY_PERCENTAGE_CAN_HIDE
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerArmyIsAttacker
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattlePlayerArmyIsAttacker
    Description: Is the player attacking
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ARMY_IS_ATTACKER
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerAllianceOddsInFavour
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattlePlayerAllianceOddsInFavour > 5
    Description: Odds in favour of the player i.e. 5 (5:1)
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ALLIANCE_ODDS_IN_FAVOUR
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: I_BattlePlayerAllianceOddsAgainst
    Trigger requirements:
    Parameters: logic token
    Sample use: I_BattlePlayerAllianceOddsAgainst > 5
    Description: Odds against the player i.e. 5 (5:1)
    Battle or Strat: Battle
    Class: BATTLE_PLAYER_ALLIANCE_ODDS_AGAINST
    Implemented: Yes
    Author: Scott
    ---------------------------------------------------
    Identifier: TotalSiegeWeapons
    Trigger requirements: character_record
    Parameters: logic token, number
    Sample use: TotalSiegeWeapons = 0
    Description: Test to see how many siege weapons this characters army has got for an assault.
    Battle or Strat: Strat
    Class: TOTAL_NUMBER_OF_SIEGE_WEAPONS
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_BattleStarted
    Trigger requirements:
    Parameters: None
    Sample use: I_BattleStarted
    Description: Has the battle deployment phase ended
    Battle or Strat: Battle
    Class: HAS_BATTLE_STARTED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitMoveFastSet
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitMoveFastSet roman_archers
    Description: Is the specified unit flagged to move fast
    Battle or Strat: Battle
    Class: IS_UNIT_MOVE_FAST_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitMoving
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitMoving roman_archers
    Description: Is the specified unit moving
    Battle or Strat: Battle
    Class: IS_UNIT_MOVING
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitIdle
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitIdle roman_archers
    Description: Is the specified unit idle?
    Battle or Strat: Battle
    Class: IS_UNIT_IDLE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitRouting
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitRouting roman_archers
    Description: Is the specified unit routing?
    Battle or Strat: Battle
    Class: IS_UNIT_ROUTING
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitUnderFire
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitUnderFire roman_general_unit
    Description: Is the specified unit recieving missile fire?
    Battle or Strat: Battle
    Class: IS_UNIT_UNDER_FIRE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitEngaged
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsUnitEngaged roman_archers
    Description: Is the specified unit engaged in combat?
    Battle or Strat: Battle
    Class: IS_UNIT_ENGAGED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitEngagedWithUnit
    Trigger requirements:
    Parameters: unit_label other_unit_label
    Sample use: I_IsUnitEngagedWithUnit roman_archers barb_cavalry
    Description: Tests if one specified unit is engaged in combat with the other specified unit?
    Battle or Strat: Battle
    Class: IS_UNIT_ENGAGED_WITH_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitFormation
    Trigger requirements:
    Parameters: unit_label logic_token formation_type
    Sample use: I_UnitFormation hoplites4 = phalanx
    Description: Is the specified unit in the specified formation
    Battle or Strat: Battle
    Class: UNIT_FORMATION
    Implemented: No
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_PercentageUnitKilled
    Trigger requirements:
    Parameters: unit_label logic_token percentage
    Sample use: I_PercentageUnitKilled roman_archers > 50
    Description: Tests the percentage of men lost from the specified unit
    Battle or Strat: Battle
    Class: PERCENTAGE_UNIT_KILLED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitPercentageAmmoLeft
    Trigger requirements:
    Parameters: unit_label logic_token percentage
    Sample use: I_UnitPercentageAmmoLeft roman_archers > 75
    Description: Tests the percentage of ammo the unit has remaining
    Battle or Strat: Battle
    Class: UNIT_PERCENTAGE_AMMO_LEFT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitDistanceFromPosition
    Trigger requirements:
    Parameters: unit_label pos_x pos_y logic_token distance
    Sample use: I_UnitDistanceFromPosition roman_archers 100 -60 < 20
    Description: Tests the specified unit's range from the given position
    Battle or Strat: Battle
    Class: UNIT_DISTANCE_FROM_POSITION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitDistanceFromLine
    Trigger requirements:
    Parameters: unit_label location_1 location_2 logic_token distance
    Sample use: I_UnitDistanceFromLine roman_archers river_line_A river_line_B < 20
    Description: Tests the specified unit's distance from the line (looking from A to B, a unit to the left of the line will give a negative distance, one on the right will be positive)
    Battle or Strat: Battle
    Class: UNIT_DISTANCE_FROM_LINE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitDistanceFromUnit
    Trigger requirements:
    Parameters: unit_label1 unit_label2 logic_token distance
    Sample use: I_UnitDistanceFromUnit roman_archers gaul_warband < 100
    Description: Tests the 2 specified units' distance from each other
    Battle or Strat: Battle
    Class: UNIT_DISTANCE_FROM_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitInRangeOfUnit
    Trigger requirements:
    Parameters: attacker_unit_label target_unit_label
    Sample use: I_UnitInRangeOfUnit roman_archers gaul_warband
    Description: Tests if the attacker can hit the target with missile weapons
    Battle or Strat: Battle
    Class: UNIT_IN_RANGE_OF_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitDestroyed
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_UnitDestroyed roman_archers
    Description: Has the specified unit been wiped out?
    Battle or Strat: Battle
    Class: UNIT_DESTROYED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitEnemyUnitInRadius
    Trigger requirements:
    Parameters: unit_label radius
    Sample use: I_UnitEnemyUnitInRadius roman_archers 100
    Description: Tests if there is any enemy within the specified radius of the unit
    Battle or Strat: Battle
    Class: UNIT_ENEMY_UNIT_IN_RADIUS
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitGroupMoving
    Trigger requirements:
    Parameters: group_label
    Sample use: I_IsUnitGroupMoving group1
    Description: Is any unit in the group moving?
    Battle or Strat: Battle
    Class: IS_UNIT_GROUP_MOVING
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitGroupEngaged
    Trigger requirements:
    Parameters: group_label
    Sample use: I_IsUnitGroupEngaged group1
    Description: Is any unit in the group engaged in combat?
    Battle or Strat: Battle
    Class: IS_UNIT_GROUP_ENGAGED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitGroupIdle
    Trigger requirements:
    Parameters: group_label
    Sample use: I_IsUnitGroupIdle group1
    Description: Are all units in the group idle?
    Battle or Strat: Battle
    Class: IS_UNIT_GROUP_IDLE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsUnitGroupDestroyed
    Trigger requirements:
    Parameters: group_label
    Sample use: I_IsUnitGroupDestroyed group1
    Description: Is the unit group destroyed (killed or routed)
    Battle or Strat: Battle
    Class: IS_UNIT_GROUP_DESTROYED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_PercentageUnitGroupKilled
    Trigger requirements:
    Parameters: group_label logic_token percentage
    Sample use: I_PercentageUnitGroupKilled roman_archers < 50
    Description: Tests the percentage of men lost from the unit group
    Battle or Strat: Battle
    Class: PERCENTAGE_UNIT_GROUP_KILLED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitGroupFormation
    Trigger requirements:
    Parameters: group_label logic_token formation_name
    Sample use: I_UnitGroupFormation roman_archers = ordered_triple_line_1
    Description: Tests the unit group's group formation
    Battle or Strat: Battle
    Class: UNIT_GROUP_FORMATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitGroupDistanceFromPosition
    Trigger requirements:
    Parameters: group_label position logic_token distance
    Sample use: I_UnitGroupDistanceFromPosition roman_archers -20 -415 < 100
    Description: Tests the unit_group's centre_front against the given position
    Battle or Strat: Battle
    Class: UNIT_GROUP_DISTANCE_FROM_POSITION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitGroupDistanceFromGroup
    Trigger requirements:
    Parameters: group_label target_group_label logic_token distance
    Sample use: I_UnitGroupDistanceFromGroup roman_archers gaul_swordsmen < 50
    Description: Tests the distance between two unit groups
    Battle or Strat: Battle
    Class: UNIT_GROUP_DISTANCE_FROM_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitGroupInRangeOfUnit
    Trigger requirements:
    Parameters: group_label target_unit_label
    Sample use: I_UnitGroupInRangeOfUnit archer_group enemy_unit1
    Description: Tests if any unit in the group is within range of the target unit
    Battle or Strat: Battle
    Class: UNIT_GROUP_IN_RANGE_OF_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitInRangeOfUnitGroup
    Trigger requirements:
    Parameters: unit_label target_group_label
    Sample use: I_UnitInRangeOfUnitGroup roman_archers enemy_group3
    Description: Tests if the unit is within range of any of the units in the target group
    Battle or Strat: Battle
    Class: UNIT_IN_RANGE_OF_UNIT_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitGroupInRangeOfUnitGroup
    Trigger requirements:
    Parameters: group_label target_group_label
    Sample use: I_UnitGroupInRangeOfUnitGroup archer_group2 enemy_group6
    Description: Tests if any unit in the group can hit any unit in the target group
    Battle or Strat: Battle
    Class: UNIT_GROUP_IN_RANGE_OF_UNIT_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_PlayerInRangeOfUnitGroup
    Trigger requirements:
    Parameters: group_label
    Sample use: I_PlayerInRangeOfUnitGroup enemy_group2
    Description: tests if any player unit is in range of any unit in the group
    Battle or Strat: Battle
    Class: PLAYER_IN_RANGE_OF_UNIT_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_PlayerInRangeOfUnit
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_PlayerInRangeOfUnit roman_archers
    Description: Is any unit in the player's army in range of the specified unit
    Battle or Strat: Battle
    Class: PLAYER_IN_RANGE_OF_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_UnitTypeSelected
    Trigger requirements:
    Parameters: unit type ('type' from export_descr_units.txt)
    Sample use: I_UnitTypeSelected roman archer auxillia
    Description: Tests if the player has a particular unit type selected
    Battle or Strat: Battle
    Class: UNIT_TYPE_SELECTED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: UnitType
    Trigger requirements: resource_description
    Parameters: unit type ('type' from export_descr_units.txt)
    Sample use: UnitType roman archer auxillia
    Description: Tests if a unit is of a particular type
    Battle or Strat: Either
    Class: UNIT_TYPE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_UnitSelected
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_UnitSelected roman_archers
    Description: Is the specified unit selected?
    Battle or Strat: Battle
    Class: UNIT_SELECTED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_MultipleUnitsSelected
    Trigger requirements:
    Parameters: None
    Sample use: I_MultipleUnitsSelected
    Description: Are multiple units selected?
    Battle or Strat: Battle
    Class: MULTIPLE_UNITS_SELECTED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_SpecificUnitsSelected
    Trigger requirements:
    Parameters: unit_label1, unit_label2, unit_label3, ...
    Sample use: I_SpecificUnitsSelected roman_archers roman_hastati roman_gladiators1
    Description: Tests if all the specified units are selected
    Battle or Strat: Battle
    Class: SPECIFIC_UNITS_SELECTED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: I_IsCameraZoomingToUnit
    Trigger requirements:
    Parameters: unit_label
    Sample use: I_IsCameraZoomingToUnit roman_archers
    Description: Tests if the camera is zooming to the specified unit
    Battle or Strat: Battle
    Class: IS_CAMERA_ZOOMING_TO_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: Trait
    Trigger requirements: character_record
    Parameters: trait description, logic token, level
    Sample use: Trait Girls = 2
    Description: Test a character's father's traits for hereditary traits
    Battle or Strat: Either
    Class: FATHER_TRAIT_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: Attribute
    Trigger requirements: character_record
    Parameters: attribute description, logic token, level
    Sample use: Attribute Management >= 2
    Description: Test a character's attributes or hidden attributes
    Battle or Strat: Either
    Class: CHARACTER_ATTRIBUTE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: RemainingMPPercentage
    Trigger requirements: character_record
    Parameters: logic token, level
    Sample use: RemainingMPPercentage >= 35.8
    Description: If this character has not moved this turn, he should have maximum movement points left. Test for percentage remaining. Will almost never be exactly zero, so check for < 10
    Battle or Strat: Strat
    Class: CHARACTER_MP_REMAINING_PERCENTAGE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_RemainingMPPercentage
    Trigger requirements:
    Parameters: logic token, level
    Sample use: I_RemainingMPPercentage Gaius Julius >= 35.8
    Description: If this character has not moved this turn, he should have maximum movement points left. Test for percentage remaining. Will almost never be exactly zero, so check for < 10
    Battle or Strat: Strat
    Class: I_CHARACTER_MP_REMAINING_PERCENTAGE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_CharacterCanMove
    Trigger requirements:
    Parameters: logic token, level
    Sample use: I_CharacterCanMove Gaius Julius
    Description: Can the named character move to any square? He may only be able to move in one direction, particularly the one he came from, so don't assume ability to move means he can move usefully.
    Battle or Strat: Strat
    Class: I_CHARACTER_CAN_MOVE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: NoActionThisTurn
    Trigger requirements: character_record
    Parameters: None
    Sample use: NoActionThisTurn
    Description: Test to see if the character was idle throughout this turn
    Battle or Strat: Strat
    Class: CHARACTER_NOT_PERFORMED_ACTION
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: AgentType
    Trigger requirements: character_record
    Parameters: character type (spy, assassin, diplomat, admiral, general, named character, family)
    Sample use: AgentType = diplomat
    Description: Test to see if a character is of a particular type (spy, admiral, named character &c.)
    Battle or Strat: Strat
    Class: CHARACTER_TYPE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: TrainedAgentType
    Trigger requirements: character_record
    Parameters: character type (spy, assassin, diplomat, admiral, general, named character, family)
    Sample use: TrainedAgentType = diplomat
    Description: Test to see if a character is of a particular type (spy, admiral, named character &c.)
    Battle or Strat: Strat
    Class: GOVERNOR_TRAINED_AGENT_TYPE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: DisasterType
    Trigger requirements: event_type
    Parameters: event type (earthquake, flood, horde, fire, riot, storm, volcano)
    Sample use: DisasterType earthquake
    Description: Test to see if a particular disaster just happened
    Battle or Strat: Strat
    Class: CHARACTER_AFFECTED_BY_DISASTER_EVENT_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: CultureType
    Trigger requirements: character_record
    Parameters: culture type (roman, barbarian, carthaginian, greek, egyptian, eastern)
    Sample use: CultureType greek
    Description: Test the character's culture type
    Battle or Strat: Either
    Class: CHARACTER_CULTURE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsGeneral
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsGeneral
    Description: Test to see if the character has an army
    Battle or Strat: Either
    Class: CHARACTER_IS_GENERAL
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: EndedInSettlement
    Trigger requirements: character_record
    Parameters: None
    Sample use: EndedInSettlement
    Description: Test to see if the character is in a settlement
    Battle or Strat: Either
    Class: CHARACTER_IN_SETTLEMENT
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsFactionLeader
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsFactionLeader
    Description: Test to see if the character is a faction leader
    Battle or Strat: Either
    Class: CHARACTER_IS_LEADER
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsFactionHeir
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsFactionHeir
    Description: Test to see if the character is a faction heir
    Battle or Strat: Either
    Class: CHARACTER_IS_HEIR
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsMarried
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsMarried
    Description: Test to see if the character is married
    Battle or Strat: Either
    Class: CHARACTER_IS_MARRIED
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: AtSea
    Trigger requirements: character_record
    Parameters: None
    Sample use: AtSea
    Description: Is the character at sea?
    Battle or Strat: Either
    Class: CHARACTER_AT_SEA
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: InEnemyLands
    Trigger requirements: character_record
    Parameters: None
    Sample use: InEnemyLands
    Description: Is the character in enemy lands?
    Battle or Strat: Either
    Class: CHARACTER_IN_ENEMY_LANDS
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: InBarbarianLands
    Trigger requirements: character_record
    Parameters: None
    Sample use: InBarbarianLands
    Description: Is the character in lands of a barbarian culture?
    Battle or Strat: Either
    Class: CHARACTER_IN_BARBARIAN_LANDS
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsBesieging
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsBesieging
    Description: Is the character besieging a settlement?
    Battle or Strat: Either
    Class: CHARACTER_IS_BESIEGING
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: IsUnderSiege
    Trigger requirements: character_record
    Parameters: None
    Sample use: IsUnderSiege
    Description: Is the character in a garrison residence under siege?
    Battle or Strat: Either
    Class: CHARACTER_IS_UNDER_SIEGE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: I_WithdrawsBeforeBattle
    Trigger requirements:
    Parameters: None
    Sample use: I_WithdrawsBeforeBattle
    Description: Was the last battle aborted?
    Battle or Strat: Either
    Class: CHARACTER_WITHDRAWS_BEFORE_BATTLE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: EndedInEnemyZOC
    Trigger requirements: character_record
    Parameters: None
    Sample use: EndedInEnemyZOC
    Description: Is the character in an enemy zone of control?
    Battle or Strat: Either
    Class: ENDED_IN_ENEMY_ZOC
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: AdviseAction
    Trigger requirements: character_action_advice
    Parameters: logic token, action (attack_enemy, attack_settlement, merge_armies, patrol_region, move_to_region, do_nothing)
    Sample use: AdviseAction = attack_settlement
    Description: Is this the best thing this character can do now?
    Battle or Strat: Strat
    Class: ADVISE_ACTION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_CharacterTypeNearCharacterType
    Trigger requirements:
    Parameters: faction, character type, distance in squares, faction, character type
    Sample use: I_CharacterTypeNearCharacterType romans_julii spy 10 gaul named character
    Description: Is a particular character type of a faction near another particular character type of another faction?
    Battle or Strat: Strat
    Class: I_CHARACTER_NEAR_CHARACTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_CharacterTypeNearTile
    Trigger requirements:
    Parameters: faction, character type, distance in squares, x, z
    Sample use: I_CharacterTypeNearTile romans_julii named_character, 10 48,30
    Description: Is a particular character type of a faction near a particular tile?
    Battle or Strat: Strat
    Class: I_CHARACTER_NEAR_TILE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionType
    Trigger requirements: faction
    Parameters: faction type
    Sample use: FactionType romans_julii
    Description: Test the faction type
    Battle or Strat: Either
    Class: FACTION_TYPE_CHECK
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: TargetFactionType
    Trigger requirements: target_faction
    Parameters: faction type
    Sample use: TargetFactionType romans_julii
    Description: Test the target faction type
    Battle or Strat: Either
    Class: TARGET_FACTION_TYPE_CHECK
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionCultureType
    Trigger requirements: faction
    Parameters: culture type (roman, barbarian, carthaginian, greek, egyptian, eastern)
    Sample use: FactionCultureType greek
    Description: Test the faction's culture type
    Battle or Strat: Either
    Class: FACTION_CULTURE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetFactionCultureType
    Trigger requirements: target_faction
    Parameters: culture type (roman, barbarian, carthaginian, greek, egyptian, eastern)
    Sample use: TargetFactionCultureType greek
    Description: Test the target faction's culture type
    Battle or Strat: Either
    Class: TARGET_FACTION_CULTURE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TrainedUnitCategory
    Trigger requirements: unit_category
    Parameters: category description (infantry, cavalry, siege, non_combatant, ship, handler)
    Sample use: TrainedUnitCategory cavalry
    Description: Test to see if the unit is of a particular category
    Battle or Strat: Strat
    Class: GOVERNOR_TRAINED_UNIT_TYPE_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: UnitCategory
    Trigger requirements: unit_category
    Parameters: logic token, category description
    Sample use:
    Description: Test to see if the unit is of a particular category
    Battle or Strat: Strat
    Class: UNIT_CATEGORY_TYPE_TEST
    Implemented: No
    Author: Lee
    ---------------------------------------------------
    Identifier: SenateMissionTimeRemaining
    Trigger requirements: faction
    Parameters: logic token, number of turns
    Sample use: SenateMissionTimeRemaining < 3
    Description: Test the number of turns before the next senate mission expires
    Battle or Strat: Either
    Class: SENATE_MISSION_TIME_REMAINING
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: MedianTaxLevel
    Trigger requirements: faction
    Parameters: logic token, tax level (tax_low, tax_normal, tax_high, tax_extortionate)
    Sample use: MedianTaxLevel > tax_high
    Description: Compare the median tax level
    Battle or Strat: Either
    Class: MEDIAN_TAX_LEVEL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ModeTaxLevel
    Trigger requirements: faction
    Parameters: logic token, tax level (tax_low, tax_normal, tax_high, tax_extortionate)
    Sample use: ModeTaxLevel > tax_high
    Description: Compare the mode tax level
    Battle or Strat: Either
    Class: MODE_TAX_LEVEL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_ModeTaxLevel
    Trigger requirements:
    Parameters: faction, logic token, tax level (tax_low, tax_normal, tax_high, tax_extortionate)
    Sample use: I_ModeTaxLevel romans_julii > tax_high
    Description: Compare the mode tax level
    Battle or Strat: Either
    Class: I_MODE_TAX_LEVEL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: MissionSuccessLevel
    Trigger requirements: mission_success_level
    Parameters: logic token, success level (not_successful, slightly_successful, partly_successful, highly_successful)
    Sample use: MissionSuccessLevel > slightly_successful
    Description: Was the mission sufficiently successful?
    Battle or Strat: Strat
    Class: MISSION_SUCCESS_TYPE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: MissionSucceeded
    Trigger requirements:
    Parameters: None (no not modifier either)
    Sample use: MissionSucceeded
    Description: Was the mission sufficiently successful?
    Battle or Strat: Strat
    Class: MISSION_SUCCEEDED
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: MissionFactionTargetType
    Trigger requirements: faction
    Parameters: faction type
    Sample use: MissionFactionTargetType romans_julii
    Description: Is the faction of a particular type?
    Battle or Strat: Either
    Class: MISSION_FACTION_TARGET_TYPE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: MissionCultureTargetType
    Trigger requirements: faction, character_record
    Parameters: culture type (roman, barbarian, carthaginian, greek, egyptian, eastern)
    Sample use: MissionCultureTargetType own, MissionCultureTargetType greek
    Description: Is the faction of a particular type?
    Battle or Strat: Either
    Class: MISSION_CULTURE_TARGET_TYPE
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: DiplomaticStanceFromCharacter
    Trigger requirements: character_record
    Parameters: faction type, logic token, stance (Allied, Suspicious, Neutral, Hostile, AtWar)
    Sample use: DiplomaticStanceFromCharacter romans_julii > Suspicious
    Description: Test the character's faction's diplomatic stance with another specified faction
    Battle or Strat: Either
    Class: DIPLOMATIC_STANCE_FROM_CHARACTER
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: DiplomaticStanceFromFaction
    Trigger requirements: faction
    Parameters: faction type, logic token, stance (Allied, Suspicious, Neutral, Hostile, AtWar)
    Sample use: DiplomaticStanceFromFaction romans_julii > Suspicious
    Description: Test the character's faction's diplomatic stance with another specified faction
    Battle or Strat: Either
    Class: DIPLOMATIC_STANCE_FROM_FACTION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionHasAllies
    Trigger requirements: faction
    Parameters:
    Sample use: FactionHasAllies
    Description: Test whether the faction is allied with any other faction
    Battle or Strat: Either
    Class: FACTION_HAS_ALLIES
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: LosingMoney
    Trigger requirements:
    Parameters: None
    Sample use: LosingMoney
    Description: Is the faction losing money on the end of year balance sheet?
    Battle or Strat: Strat
    Class: LOSING_MONEY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_LosingMoney
    Trigger requirements:
    Parameters: None
    Sample use: I_LosingMoney romans_julii
    Description: Is the faction losing money on the end of year balance sheet?
    Battle or Strat: Strat
    Class: I_LOSING_MONEY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SupportCostsPercentage
    Trigger requirements: faction
    Parameters: logic token, percentage
    Sample use: SupportCostsPercentage > 35.8
    Description: Does the percentage of expenditure devoted to support costs exceed the threshold?
    Battle or Strat: Strat
    Class: SUPPORT_COSTS_PERCENTAGE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: Treasury
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: Treasury > 2000
    Description: Does the cash-in-hand exceed the threshold?
    Battle or Strat: Strat
    Class: TREASURY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: OnAWarFooting
    Trigger requirements: faction
    Parameters: None
    Sample use: OnAWarFooting
    Description: Is the faction on a war footing?
    Battle or Strat: Strat
    Class: ON_A_WAR_FOOTING
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_FactionBesieging
    Trigger requirements:
    Parameters: faction type
    Sample use: not I_FactionBesieging romans_julii
    Description: Is the faction besieging a settlement somewhere?
    Battle or Strat: Strat
    Class: FACTION_BESIEGING
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_FactionBesieged
    Trigger requirements:
    Parameters: faction type
    Sample use: not I_FactionBesieged romans_julii
    Description: Is the faction besieged at any settlement?
    Battle or Strat: Strat
    Class: FACTION_BESIEGED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_NumberOfSettlements
    Trigger requirements:
    Parameters: number of settlements
    Sample use: I_NumberOfSettlements thrace > 3
    Description: How many settlements does the faction hold?
    Battle or Strat: Strat
    Class: I_NUMBER_OF_SETTLEMENTS
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_NumberOfHeirs
    Trigger requirements:
    Parameters: number of heirs
    Sample use: I_NumberOfHeirs thrace > 3
    Description: How many heirs does the faction leader have?
    Battle or Strat: Strat
    Class: I_NUMBER_OF_HEIRS
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_FactionNearTile
    Trigger requirements:
    Parameters: faction, distance in squares, x, z
    Sample use: I_FactionNearTile romans_julii 10 48,30
    Description: Is a member of a faction near a particular tile?
    Battle or Strat: Strat
    Class: I_FACTION_NEAR_TILE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementsTaken
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: SettlementsTaken = 6
    Description: How many settlements has the player captured so far during this campaign?
    Battle or Strat: Either
    Class: SETTLEMENTS_TAKEN
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: BattlesFought
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: BattlesFought = 6
    Description: How many battles has the player fought so far during this campaign?
    Battle or Strat: Either
    Class: BATTLES_FOUGHT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: BattlesWon
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: BattlesWon = 6
    Description: How many battles has the player won so far during this campaign?
    Battle or Strat: Either
    Class: BATTLES_WON
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: BattlesLost
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: BattlesLost = 6
    Description: How many battles has the player won so far during this campaign?
    Battle or Strat: Either
    Class: BATTLES_LOST
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: DefensiveSiegesFought
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: DefensiveSiegesFought = 6
    Description: How many defensive sieges has the player fought so far during this campaign?
    Battle or Strat: Either
    Class: DEFENSIVE_SIEGES_FOUGHT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: DefensiveSiegesWon
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: DefensiveSiegesWon = 6
    Description: How many defensive sieges has the player won so far during this campaign?
    Battle or Strat: Either
    Class: DEFENSIVE_SIEGES_WON
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: OffensiveSiegesFought
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: OffensiveSiegesFought = 6
    Description: How many offensive sieges has the player fought so far during this campaign?
    Battle or Strat: Either
    Class: OFFENSIVE_SIEGES_FOUGHT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: OffensiveSiegesWon
    Trigger requirements: faction
    Parameters: logic token, quantity
    Sample use: OffensiveSiegesWon = 6
    Description: How many offensive sieges has the player won so far during this campaign?
    Battle or Strat: Either
    Class: OFFENSIVE_SIEGES_WON
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: RandomPercent
    Trigger requirements:
    Parameters: logic token, percentage (integer)
    Sample use: RandomPercent > 50
    Description: Pick a number from 0 to 100 at random
    Battle or Strat: Either
    Class: RANDOM_PERCENT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TrueCondition
    Trigger requirements:
    Parameters:
    Sample use: not TrueCondition
    Description: When you need to supply a true/false, for debugging and monitor_event
    Battle or Strat: Either
    Class: TRUE_CONDITION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementName
    Trigger requirements: settlement
    Parameters: settlement name
    Sample use: SettlementName Tarquinii
    Description: For scripting - does the settlement have this name
    Battle or Strat: Either
    Class: SETTLEMENT_NAME
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: GovernorBuildingExists
    Trigger requirements: character_record
    Parameters: building description, logic token, test level
    Sample use: GovernorBuildingExists = governors_house
    Description: Test to see if the character is a governor and his settlement has a building at a particular level
    Battle or Strat: Strat
    Class: GOVERNORS_BUILDING_LEVEL_EXISTS_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: SettlementBuildingExists
    Trigger requirements: settlement
    Parameters: building description, logic token, test level
    Sample use: SettlementBuildingExists = governors_house
    Description: Test to see if the settlement has a building at a particular level
    Battle or Strat: Strat
    Class: SETTLEMENT_BUILDING_LEVEL_EXISTS_TEST
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: BuildingFinishedByGovernor
    Trigger requirements: character_record, prior_build
    Parameters: building description, logic token, test level
    Sample use: BuildingFinishedByGovernor = governors_house
    Description: Test to see if the character is a governor and what the last finished building was
    Battle or Strat: Strat
    Class: GOVERNORS_BUILDING_LEVEL_FINISHED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: SettlementBuildingFinished
    Trigger requirements: prior_build
    Parameters: building description, logic token, test level
    Sample use: SettlementBuildingFinished = governors_house
    Description: Test to see what the last finished building was
    Battle or Strat: Strat
    Class: SETTLEMENT_BUILDING_LEVEL_FINISHED_TEST
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: GovernorPlugInExists
    Trigger requirements: character_record
    Parameters: logic token, plug-in
    Sample use: GovernorPlugInExists > storage_pits
    Description: Test to see if the character is a governor and his settlement has a plug-in at a particular level
    Battle or Strat: Strat
    Class: GOVERNORS_PLUG_IN_LEVEL_EXISTS_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorPlugInFinished
    Trigger requirements: character_record, prior_build
    Parameters: logic token, plug-in
    Sample use: GovernorPlugInFinished > storage_pits
    Description: Test to see if the character is a governor and what the last finished plug-in was
    Battle or Strat: Strat
    Class: GOVERNORS_PLUG_IN_LEVEL_FINISHED_TEST
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorTaxLevel
    Trigger requirements: character_record
    Parameters: logic token, tax level (tax_low, tax_normal, tax_high, tax_extortionate)
    Sample use: GovernorTaxLevel > tax_high
    Description: Is the character a governor who is taxing the populace at a particular level?
    Battle or Strat: Either
    Class: GOVERNOR_TAX_LEVEL
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: SettlementTaxLevel
    Trigger requirements: settlement
    Parameters: logic token, tax level (tax_low, tax_normal, tax_high, tax_extortionate)
    Sample use: SettlementTaxLevel > tax_high
    Description: Is the settlement taxing the populace at a particular level?
    Battle or Strat: Either
    Class: SETTLEMENT_TAX_LEVEL
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: GovernorInResidence
    Trigger requirements: settlement
    Parameters: None
    Sample use: GovernorInResidence
    Description: Does the settlement lack a governor?
    Battle or Strat: Strat
    Class: GOVERNOR_IN_RESIDENCE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: GovernorLoyaltyLevel
    Trigger requirements: character_record
    Parameters: logic token, value (loyalty_revolting, loyalty_rioting, loyalty_disillusioned, loyalty_content, loyalty_happy)
    Sample use: GovernorLoyaltyLevel > loyalty_rioting
    Description: Is the character a governor and, if so how loyal is the settlement to him?
    Battle or Strat: Either
    Class: GOVERNOR_LOYALTY_LEVEL
    Implemented: Yes
    Author: Lee
    ---------------------------------------------------
    Identifier: SettlementLoyaltyLevel
    Trigger requirements: settlement
    Parameters: logic token, value (loyalty_revolting, loyalty_rioting, loyalty_disillusioned, loyalty_content, loyalty_happy)
    Sample use: SettlementLoyaltyLevel > loyalty_rioting
    Description: How loyal is the settlement?
    Battle or Strat: Either
    Class: SETTLEMENT_LOYALTY_LEVEL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: RiotRisk
    Trigger requirements: settlement
    Parameters: logic token, percentage (integral, < 40 since there is never more than a 40% chance of rioting)
    Sample use: RiotRisk > 30
    Description: What is the chance of this settlement rioting?
    Battle or Strat: Either
    Class: RIOT_RISK
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: BuildingQueueIdleDespiteCash
    Trigger requirements: settlement
    Parameters: None
    Sample use: BuildingQueueIdleDespiteCash
    Description: Is the faction exploiting its build capability to the full?
    Battle or Strat: Either
    Class: BUILDING_QUEUE_IDLE_DESPITE_CASH
    Implemented: Yes
    Author: Alan
    ---------------------------------------------------
    Identifier: TrainingQueueIdleDespiteCash
    Trigger requirements: settlement
    Parameters: None
    Sample use: TrainingQueueIdleDespiteCash
    Description: Is the faction exploiting its recruitment capability to the full?
    Battle or Strat: Either
    Class: TRAINING_QUEUE_IDLE_DESPITE_CASH
    Implemented: Yes
    Author: Alan
    ---------------------------------------------------
    Identifier: I_SettlementExists
    Trigger requirements:
    Parameters: settlement name
    Sample use: I_SettlementExists Segesta
    Description: Does a settlement by this name exist?
    Battle or Strat: Strat
    Class: SETTLEMENT_EXISTS
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_SettlementOwner
    Trigger requirements:
    Parameters: settlement name, logic token, faction type
    Sample use: I_SettlementOwner Segesta = romans_julii
    Description: Is this settlement owned by this faction?
    Battle or Strat: Strat
    Class: SETTLEMENT_OWNER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: AdviseFinancialBuild
    Trigger requirements: best_finance_option
    Parameters: build type (farms, mines, tax, trade)
    Sample use: AdviseFinancialBuild = mines
    Description: Is this the best thing to build to increase financial production?
    Battle or Strat: Strat
    Class: ADVISE_FINANCIAL_BUILD
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: AdviseBuild
    Trigger requirements: advised_build
    Parameters: build type (from tech tree) - use No_building for none available
    Sample use: AdviseBuild = mines, AdviseBuild = No_building
    Description: Is this the best thing to build?
    Battle or Strat: Strat
    Class: ADVISE_BUILD
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: AdviseRecruit
    Trigger requirements:
    Parameters: unit type (from unit database) - use No_unit for none available
    Sample use: AdviseRecruit = triarii, AdviseRecruit = No_unit
    Description: Is this the best thing to recruit?
    Battle or Strat: Strat
    Class: ADVISE_RECRUIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementPopulationMaxedOut
    Trigger requirements: settlement
    Parameters:
    Sample use: SettlementPopulationMaxedOut
    Description: Is the settlement full for its level? (Actually, >95%)
    Battle or Strat: Strat
    Class: SETTLEMENT_POPULATION_MAXED_OUT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementPopulationTooLow
    Trigger requirements: settlement
    Parameters:
    Sample use: SettlementPopulationTooLow
    Description: Is the settlement too empty to recruit from?
    Battle or Strat: Strat
    Class: SETTLEMENT_POPULATION_TOO_LOW
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementAutoManaged
    Trigger requirements: settlement
    Parameters: Automanagement type (Troops, Buildings, Mechanics)
    Sample use: not SettlementAutoManaged Troops
    Description: Is the settlement auto managed in a particular way?
    Battle or Strat: Strat
    Class: SETTLEMENT_AUTO_MANAGED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: PercentageOfPopulationInGarrison
    Trigger requirements: settlement
    Parameters:
    Sample use: PercentageOfPopulationInGarrison > 35
    Description: Check the percentage of population that is currently in the garrison
    Battle or Strat: Strat
    Class: PERCENTAGE_OF_POPULATION_IN_GARRISON
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: GarrisonToPopulationRatio
    Trigger requirements: settlement
    Parameters:
    Sample use: GarrisonSettlementRatio > 0.35
    Description: Calculate the ratio of soldiers to civilians
    Battle or Strat: Strat
    Class: GARRISON_TO_POPULATION_RATIO
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: HealthPercentage
    Trigger requirements: settlement
    Parameters:
    Sample use: HealthPercentage > 35
    Description: Check the health of the settlement
    Battle or Strat: Strat
    Class: HEALTH_PERCENTAGE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementHasPlague
    Trigger requirements: settlement
    Parameters:
    Sample use: SettlementHasPlague
    Description: Is the settlement plague-ridden?
    Battle or Strat: Strat
    Class: SETTLEMENT_HAS_PLAGUE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: IsFortGarrisoned
    Trigger requirements: fort
    Parameters:
    Sample use: IsFortGarrisoned
    Description: Are there any troops in the fort?
    Battle or Strat: Strat
    Class: IS_FORT_GARRISONED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: IsSettlementGarrisoned
    Trigger requirements: settlement
    Parameters:
    Sample use: IsSettlementGarrisoned
    Description: Are there any troops in the settlement?
    Battle or Strat: Strat
    Class: IS_SETTLEMENT_GARRISONED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_NumberUnitsInSettlement
    Trigger requirements:
    Parameters: settlement, unit type (UNIT_DESCRIPTION.id), logic token, quantity
    Sample use: I_NumberUnitsInSettlement Tarquinii roman_city_militia < 5
    Description: How many units are in the settlement?
    Battle or Strat: Strat
    Class: NUMBER_UNITS_IN_SETTLEMENT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: CharacterIsLocal
    Trigger requirements: character_record
    Parameters: None
    Sample use: CharacterIsLocal
    Description: Is the character a member of the local faction?
    Battle or Strat: Either
    Class: CHARACTER_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetCharacterIsLocal
    Trigger requirements: target_character_record
    Parameters: None
    Sample use: TargetCharacterIsLocal
    Description: Is the target character a member of the local faction?
    Battle or Strat: Either
    Class: TARGET_CHARACTER_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: SettlementIsLocal
    Trigger requirements: settlement
    Parameters: None
    Sample use: SettlementIsLocal
    Description: Does the settlement belong to the local faction?
    Battle or Strat: Either
    Class: SETTLEMENT_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetSettlementIsLocal
    Trigger requirements: settlement
    Parameters: None
    Sample use: TargetSettlementIsLocal
    Description: Does the target settlement belong to the local faction?
    Battle or Strat: Either
    Class: TARGET_SETTLEMENT_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: RegionIsLocal
    Trigger requirements: region_id
    Parameters: None
    Sample use: RegionIsLocal
    Description: Does the region belong to the local faction?
    Battle or Strat: Either
    Class: REGION_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetRegionIsLocal
    Trigger requirements: region_id
    Parameters: None
    Sample use: TargetRegionIsLocal
    Description: Does the target region belong to the local faction?
    Battle or Strat: Either
    Class: TARGET_REGION_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ArmyIsLocal
    Trigger requirements: army
    Parameters: None
    Sample use: ArmyIsLocal
    Description: Does the army belong to the local faction?
    Battle or Strat: Either
    Class: ARMY_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetArmyIsLocal
    Trigger requirements: army
    Parameters: None
    Sample use: TargetArmyIsLocal
    Description: Does the target army belong to the local faction?
    Battle or Strat: Either
    Class: TARGET_ARMY_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: FactionIsLocal
    Trigger requirements: faction
    Parameters: None
    Sample use: FactionIsLocal
    Description: Is the faction the local faction?
    Battle or Strat: Either
    Class: FACTION_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_LocalFaction
    Trigger requirements:
    Parameters: faction
    Sample use: I_LocalFaction romans_julii
    Description: Is the faction the local faction?
    Battle or Strat: Either
    Class: I_LOCAL_FACTION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: TargetFactionIsLocal
    Trigger requirements: target_faction
    Parameters: None
    Sample use: TargetFactionIsLocal
    Description: Is the target faction the local faction?
    Battle or Strat: Either
    Class: TARGET_FACTION_IS_LOCAL
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_TurnNumber
    Trigger requirements:
    Parameters: logic token, turn number
    Sample use: I_TurnNumber > 50
    Description: The current turn number (starts at 0)
    Battle or Strat: Either
    Class: TURN_NUMBER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_MapName
    Trigger requirements:
    Parameters: map file name
    Sample use: not I_MapName world\maps\campaign\sons_of_mars\descr_strat.txt
    Description: The qualified file name of the current map relative to the data directory
    Battle or Strat: Either
    Class: MAP_NAME
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_ThreadCount
    Trigger requirements:
    Parameters: advice thread, logic token, value
    Sample use: I_ThreadCount City_Riots_Reduce_Taxes_Thread > 5
    Description: Has this advice thread been incremented many times?
    Battle or Strat: Strat
    Class: THREAD_COUNT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_IsTriggerTrue
    Trigger requirements:
    Parameters: trigger name
    Sample use: I_IsTriggerTrue sample_trigger_name
    Description: Has this advice thread been incremented many times?
    Battle or Strat: Strat
    Class: TRIGGER_TRUE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: IncomingMessageType
    Trigger requirements: event
    Parameters: message identifier (see Tom)
    Sample use: IncomingMessageType senate_mission_issued
    Description: Has this message just been received
    Battle or Strat: Strat
    Class: INCOMING_MESSAGE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_AdvisorVerbosity
    Trigger requirements:
    Parameters: logic token, advisor verbosity
    Sample use: I_AdvisorVerbosity > 2
    Description: The advisor verbosity
    Battle or Strat: Either
    Class: ADVISOR_VERBOSITY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_AdvisorVisible
    Trigger requirements:
    Parameters:
    Sample use: not I_AdvisorVisible
    Description: Is the advisor currently visible?
    Battle or Strat: Either
    Class: ADVISOR_VISIBLE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_CharacterSelected
    Trigger requirements:
    Parameters: character name
    Sample use: I_CharacterSelected Gaius Julius
    Description: Detect whether the character is currently selected
    Battle or Strat: Strat
    Class: CHARACTER_SELECTED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_AgentSelected
    Trigger requirements:
    Parameters: character type (spy, assassin, diplomat, admiral, general, named character, family)
    Sample use: I_AgentSelected spy
    Description: Detect whether a character of the specified type is currently selected
    Battle or Strat: Strat
    Class: AGENT_SELECTED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_SettlementSelected
    Trigger requirements:
    Parameters: settlement name
    Sample use: I_SettlementSelected Roma
    Description: Detect whether the settlement is currently selected
    Battle or Strat: Strat
    Class: SETTLEMENT_SELECTED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ShortcutTriggered
    Trigger requirements: resource_description
    Parameters: element id, function id (see data/descr_shortcuts.txt)
    Sample use: ShortcutTriggered camera step_l
    Description: Detect whether a keyboard shortcut has been pressed
    Battle or Strat: Both
    Class: SHORTCUT_TRIGGERED
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: ButtonPressed
    Trigger requirements: resource_description
    Parameters: button id (see available_ui_elements.txt)
    Sample use: ButtonPressed character_info_zoom_to_button
    Description: Detect whether a button has been pressed
    Battle or Strat: Both
    Class: BUTTON_PRESSED
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: ScrollOpened
    Trigger requirements: resource_description
    Parameters: scroll id (see available_ui_elements.txt)
    Sample use: ScrollOpened own_character_info_scroll
    Description: Test for when a named scroll is opened
    Battle or Strat: Both - Depends on scroll requested
    Class: SCROLL_OPENED
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: ScrollClosed
    Trigger requirements: resource_description
    Parameters: scroll id (see available_ui_elements.txt)
    Sample use: ScrollClosed own_character_info_scroll
    Description: Test for when a named scroll is closed
    Battle or Strat: Both - Depends on scroll requested
    Class: SCROLL_CLOSED
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: ScrollAdviceRequested
    Trigger requirements: resource_description
    Parameters: scroll id (see available_ui_elements.txt)
    Sample use: ScrollAdviceRequested own_character_info_scroll
    Description: Test for which scroll advice was requested on
    Battle or Strat: Both - Depends on scroll requested
    Class: SCROLL_ADVICE_REQUESTED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_CompareCounter
    Trigger requirements:
    Parameters: script counter, value
    Sample use: I_CompareCounter blib < 17
    Description: Compare a script counter to a value
    Battle or Strat: Either
    Class: COMPARE_COUNTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_TimerElapsed
    Trigger requirements:
    Parameters: logic token, timer_id, duration (milliseconds)
    Sample use: I_TimerElapsed rout_timer > 1000
    Description: How long has it been since the script timer restarted
    Battle or Strat: Either
    Class: SCRIPT_TIMER_ELAPSED
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: I_SoundPlaying
    Trigger requirements:
    Parameters:
    Sample use: I_SoundPlaying snd_IntroSpeech
    Description: Detect whether the tagged sound is playing or not
    Battle or Strat: Both
    Class: SOUND_EVENT_PLAYING
    Implemented: Yes
    Author: Artem
    ---------------------------------------------------
    Identifier: I_AdvisorSpeechPlaying
    Trigger requirements:
    Parameters:
    Sample use: I_AdvisorSpeechPlaying
    Description: Detect whether advisor speech is playing or not
    Battle or Strat: Both
    Class: ADVISOR_SPEECH_PLAYING
    Implemented: Yes
    Author: Guy

  3. #3

    Default Re: Events, Conditions, & Commands

    Commands
    ===============================


    ---------------------------------------------------
    Identifier: ai_active_set
    Parameters: on/off
    Description: Turns AI on or off
    Sample use: ai_active_set off
    Class: AI_ACTIVE_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: release_unit
    Parameters: unit_label
    Description: Unlabels the specified unit and releases it back to player or AI control
    Sample use: release_unit
    Class: RELEASE_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: hiding_enabled_set
    Parameters: true/false
    Description: Enables or disables unit hiding for all units
    Sample use: hiding_enabled_set false
    Class: HIDING_ENABLED_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: pause_battle
    Parameters:
    Description: pauses the battle
    Sample use: pause_battle
    Class: PAUSE_BATTLE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_immediate_place
    Parameters: unit_label location angle_in_degrees
    Description: Immediately positions the unit at the given location
    Sample use: unit_immediate_place archers1 big_hill 0
    Class: UNIT_IMMEDIATE_PLACE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_halt
    Parameters: unit_label
    Description: orders the specified unit stop it's orders
    Sample use: unit_order_halt cohort1
    Class: UNIT_ORDER_HALT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_move
    Parameters: unit_label x y run(optional)
    Description: orders the specified unit to move to the specified position
    Sample use: unit_order_move cohort1 100 60 run
    Class: UNIT_ORDER_MOVE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_move_relative
    Parameters: unit_label x y run(optional)
    Description: orders the specified unit to move to the specified position
    Sample use: unit_order_move_relative cohort1 0 60 run
    Class: UNIT_ORDER_MOVE_RELATIVE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_attack_unit
    Parameters: unit_label target_unit_label run(optional)
    Description: Orders one unit to attack another
    Sample use: unit_order_attack_unit cavalry1 enemy4 run
    Class: UNIT_ORDER_ATTACK_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_attack_closest_unit
    Parameters: unit_label search_arc(in degrees) run(optional)
    Description: Searches an arc in front of the unit, and attacks the closest enemy found
    Sample use: unit_order_attack_closest_unit 15 run
    Class: UNIT_ORDER_ATTACK_CLOSEST_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_change_formation
    Parameters: unit_label formation_type (square, horde, testudo, phalanx)
    Description: changes the specified unit's formation
    Sample use: unit_order_change_formation legionary_cohort testudo
    Class: UNIT_ORDER_CHANGE_FORMATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_move_to_missile_range
    Parameters: attacker_unit_label target_unit_label run(optional)
    Description: orders the attacker to move into missile range of the target
    Sample use: unit_order_move_to_missile_range roman_archers barb_swordsmen run
    Class: UNIT_ORDER_MOVE_TO_MISSILE_RANGE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_order_turn
    Parameters: unit_label rotation relative/absolute
    Description: order the unit to turn to an absolute angle or by an angle relative to it's current rotation
    Sample use: unit_order_turn roman_archers -20 relative (turns left 20 degrees)
    Class: UNIT_ORDER_TURN
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_morale
    Parameters: unit_label morale_level (beserk/impetuous/high/firm/shaken/wavering/routing)
    Description: sets and locks the unit's morale level
    Sample use: unit_set_morale carthaginian_peasants wavering
    Class: UNIT_SET_MORALE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_unset_morale
    Parameters: unit_label
    Description: unlocks the unit's morale, the game will retake control and update the morale normally
    Sample use: unit_unset_morale peasants4
    Class: UNIT_UNSET_MORALE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_weapon_upgrade
    Parameters: unit_label new_level
    Description: sets the unit's weapon upgrade (0-3)
    Sample use: unit_set_weapon_upgrade spearmen1 3
    Class: UNIT_SET_WEAPON_UPGRADE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_armour_upgrade
    Parameters: unit_label new_level
    Description: sets the unit's armour upgrade (0-3)
    Sample use: unit_set_armour_upgrade spearmen1 3
    Class: UNIT_SET_ARMOUR_UPGRADE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_experience
    Parameters: unit_label new_experience_level
    Description: sets the specified unit's experience level (0-9)
    Sample use: unit_set_experience roman_general 7
    Class: UNIT_SET_EXPERIENCE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: kill_unit
    Parameters: unit_label
    Description: Completely wipes out the specified unit
    Sample use: kill_unit carthaginians2
    Class: KILL_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: reduce_unit_strength
    Parameters: unit_label percentage
    Description: Kills enough men to reduce a unit to the specifies percentage of it's original strangth
    Sample use: reduce_unit_strength carthaginians2 50
    Class: REDUCE_UNIT_STRENGTH
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_guard_mode
    Parameters: unit_label on/off
    Description: Sets the guard melee state for the specified unit
    Sample use: unit_set_guard_mode roman_spearmen on
    Class: UNIT_SET_GUARD_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_skirmish_mode
    Parameters: unit_label on/off
    Description: Sets the skirmish melee state for the specified unit
    Sample use: unit_set_skirmish_mode velites1 off
    Class: UNIT_SET_SKIRMISH_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_fire_at_will_mode
    Parameters: unit_label on/off
    Description: Sets the fire-at-will melee state for the specified unit
    Sample use: unit_set_fire_at_will_mode roman_archers on
    Class: UNIT_SET_FIRE_AT_WILL_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_set_formation_spacing
    Parameters: unit_label loose/tight
    Description: Sets the specified unit's formation spacing to loose or tight
    Sample use: unit_set_formation_spacing roman_archers loose
    Class: UNIT_SET_FORMATION_SPACING
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_taunt
    Parameters: unit_label
    Description: Makes the unit taunt
    Sample use: unit_taunt barb_archers
    Class: UNIT_TAUNT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_use_special_ability
    Parameters: unit_label
    Description: Makes the unit perform their special ability
    Sample use: unit_use_special_ability barb_archers
    Class: UNIT_USE_SPECIAL_ABILITY
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_enable_automation
    Parameters: group_label true/false
    Description: Sets or unsets unit group automation
    Sample use: unit_group_enable_automation
    Class: UNIT_GROUP_ENABLE_AUTOMATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_immediate_place
    Parameters: group_label location degrees
    Description: orders the unit group to move to the specified location
    Sample use: unit_group_immediate_place group6 100 -60 -20
    Class: UNIT_GROUP_IMMEDIATE_PLACE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_halt
    Parameters: group_label
    Description: orders the unit group to stop it's orders
    Sample use: unit_group_order_halt group6
    Class: UNIT_GROUP_ORDER_HALT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_move_formed
    Parameters: group_label x y run(optional)
    Description: orders the unit group to move to the specified location
    Sample use: unit_group_order_move_formed group6 100 -60 run
    Class: UNIT_GROUP_ORDER_MOVE_FORMED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_move_unformed
    Parameters: group_label x y run(optional)
    Description: orders the unit group to move to the specified location
    Sample use: unit_group_order_move_unformed group6 100 -60 run
    Class: UNIT_GROUP_ORDER_MOVE_UNFORMED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_relative_move_formed
    Parameters: group_label x y run(optional)
    Description: orders the unit group to move to the specified location
    Sample use: unit_group_order_relative_move_formed group6 100 -60 run
    Class: UNIT_GROUP_ORDER_RELATIVE_MOVE_FORMED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_relative_move_unformed
    Parameters: group_label x y run(optional)
    Description: orders the unit group to move to the specified location
    Sample use: unit_group_order_relative_move_unformed group6 100 -60 run
    Class: UNIT_GROUP_ORDER_RELATIVE_MOVE_UNFORMED
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_move_to_missile_range_of_unit
    Parameters: group_label target_unit_label
    Description: move the unit group so that at least one unit is in range of the target unit
    Sample use: unit_group_move_to_missile_range_of_unit archer_group enemy_spearmen3
    Class: UNIT_GROUP_MOVE_TO_MISSILE_RANGE_OF_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_move_to_missile_range_of_group
    Parameters: group_label target_group_label run(optional)
    Description: move the unit group so that at least one unit is in range of at least one unit in the target group
    Sample use: unit_group_move_to_missile_range_of_group archer_group enemy_group
    Class: UNIT_GROUP_MOVE_TO_MISSILE_RANGE_OF_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_attack_unit
    Parameters: group_label target_unit_label run(optional)
    Description: order the unit group to attack the target unit
    Sample use: unit_group_order_attack_unit group1 enemy_unit4
    Class: UNIT_GROUP_ORDER_ATTACK_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_attack_group
    Parameters: group_label target_group_label run(optional)
    Description: orders the unit group to attack the target group
    Sample use: unit_group_order_attack_group cavalry_group1 enemy_archer_group
    Class: UNIT_GROUP_ORDER_ATTACK_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_change_group_formation
    Parameters: group_label formation_name
    Description: sets a group formation from descr_formations.txt
    Sample use: unit_group_order_change_group_formation group2 ordered_triple_line_1
    Class: UNIT_GROUP_ORDER_CHANGE_GROUP_FORMATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_order_turn
    Parameters: group_label angle relative(optional)
    Description: rotates the unit group to an angle or by a number of degrees relative to it's current angle (see unit_order_turn)
    Sample use: unit_group_order_turn group2 90 (turns the group to 90 degrees)
    Class: UNIT_GROUP_ORDER_TURN
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_set_morale
    Parameters: group_label morale_level (beserk/impetuous/high/firm/shaken/wavering/routing)
    Description: sets and locks the morale level for each unit in the group
    Sample use: unit_set_morale infantry_group routing
    Class: UNIT_GROUP_SET_MORALE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_unset_morale
    Parameters: group_label
    Description: unlocks the units' morale, the game will retake control and update the morale normally
    Sample use: unit_group_unset_morale infantry_group
    Class: UNIT_GROUP_UNSET_MORALE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_change_unit_formation
    Parameters: group_label formation_type (square, horde, testudo, phalanx)
    Description: changes the formation of each unit in the specified unit group
    Sample use: unit_group_change_unit_formation hoplite_group phalanx
    Class: UNIT_GROUP_CHANGE_UNIT_FORMATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_set_guard_mode
    Parameters: group_label on/off
    Description: Sets the guard melee state for all units in the specified group
    Sample use: unit_group_set_guard_mode group2 off
    Class: UNIT_GROUP_SET_GUARD_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_set_skirmish_mode
    Parameters: group_label on/off
    Description: Sets the skirmish melee state for all units in the specified group
    Sample use: unit_group_set_skirmish_mode archer_group on
    Class: UNIT_GROUP_SET_SKIRMISH_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_set_fire_at_will_mode
    Parameters: group_label on/off
    Description: Sets the guard melee state for all units in the specified group
    Sample use: unit_group_set_fire_at_will_mode group2 off
    Class: UNIT_GROUP_SET_FIRE_AT_WILL_MODE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: unit_group_set_formation_spacing
    Parameters: group_label loose/tight
    Description: Sets the formation spacing, for each unit in the group, to loose or tight
    Sample use: unit_group_set_formation_spacing group1 loose
    Class: UNIT_GROUP_SET_FORMATION_SPACING
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: move_strat_camera
    Parameters: strategy map position
    Description: Move the camera smoothly to the position
    Sample use: move_camera 20,35
    Class: MOVE_STRAT_CAMERA
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: snap_strat_camera
    Parameters: strategy map position
    Description: Move the camera immediately to the position
    Sample use: snap_strat_camera 20,35
    Class: SNAP_STRAT_CAMERA
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: zoom_strat_camera
    Parameters: strategy map position
    Description: Change the zoom of the camera (0 right up close, 1 far out), clamped at a hard-coded lower bound
    Sample use: zoom_camera 0.4
    Class: ZOOM_STRAT_CAMERA
    Implemented: No
    Author: Guy
    ---------------------------------------------------
    Identifier: camera_restrictions_set
    Parameters: on/off
    Description: sets or unsets the restricted camera
    Sample use: camera_restrictions_set on
    Class: CAMERA_RESTRICTIONS_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_event_cuts_active_set
    Parameters: on/off
    Description: activates and deactivates the event cut camera
    Sample use: camera_event_cuts_active_set off
    Class: CAMERA_EVENT_CUTS_ACTIVE_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_default_mode_set
    Parameters: tw/rts/general/user_pref
    Description: Sets the default camera to TotalWar Camera (tw), RTS Camera (rts), General's Camera (general) or whichever mode the player has in his preferences (user_pref)
    Sample use: camera_default_mode_set tw
    Class: CAMERA_DEFAULT_MODE_SET
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: battle_default_camera
    Parameters: n/a
    Description: Sets the default camera
    Sample use: battle_default_camera
    Class: BATTLE_DEFAULT_CAMERA
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: battle_general_camera
    Parameters: n/a
    Description: Sets the general's camera
    Sample use: battle_general_camera
    Class: BATTLE_GENERAL_CAMERA
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: set_camera_bookmark
    Parameters: Bookmark index (0-21), position(x,y,z) target(x,y,z)
    Description: Sets a camera bookmark to position and target specified, which can later be recalled with UseCameraBookmark
    Sample use: set_camera_bookmark 1, 100, 0, 100, 100, 0, 0 - Will set the camera bookmark to position (100,0,100), looking straight back along the z axis
    Class: SET_CAMERA_BOOKMARK
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: camera_position_at_bookmark
    Parameters: Index (0-21)
    Description: If the bookmark has been set (either in game, or with Set_Camera_Bookmark), then this will move the camera to the position and target specified by the bookmark
    Sample use: camera_position_at_bookmark 0
    Class: CAMERA_POSITION_AT_BOOKMARK
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_zoom_to_bookmark
    Parameters: Index (0-21) max_speed(optional default=200)
    Description: If the bookmark has been set (either in game, or with set_camera_bookmark), then this will move the camera to the position and target specified by the bookmark
    Sample use: camera_zoom_to_bookmark 0 50
    Class: CAMERA_ZOOM_TO_BOOKMARK
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_position
    Parameters: position x,y,z target x,y,z
    Description: Immediately places the camera at the specified position
    Sample use: camera_position 0 0 0 0 0 -1
    Class: CAMERA_POSITION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_zoom_to
    Parameters: position x,y,z target x,y,z speed(optional)
    Description: Zoom camera to position, and look at target
    Sample use: camera_zoom_to 0 0 0 0 0 -1 50
    Class: CAMERA_ZOOM_TO
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_look_at_position
    Parameters: x y or location_label
    Description: camera turns to look at a position on the battlefield, but doesn't move
    Sample use: camera_look_at_position 123.4 56.7
    Class: CAMERA_LOOK_AT_POSITION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_look_at_unit
    Parameters: unit_label
    Description: turns the camera to look at the unit without moving
    Sample use: camera_look_at_unit spearmen7
    Class: CAMERA_LOOK_AT_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_track_unit
    Parameters: unit_label direction distance height pitch(optional)
    Description: camera tracks the specified unit, direction can be a number in degrees or an identifier front, back, left or right
    Sample use: camera_track_unit roman_cavalry1 left 20 10 -15
    Class: CAMERA_TRACK_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: camera_zoom_to_unit
    Parameters: unit_label
    Description: zoom the camera to the soecified unit
    Sample use: camera_zoom_to_unit spearmen7
    Class: CAMERA_ZOOM_TO_UNIT
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: e_camera_zoom_to_unit
    Parameters:
    Description: zoom the camera to the unit specified by the event
    Sample use: e_camera_zoom_to_unit
    Class: E_CAMERA_ZOOM_TO_UNIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: inhibit_camera_input
    Parameters: true/false
    Description: Stop the user affecting the camera position, either through the keyboard or mouse movement
    Sample use: inhibit_camera_input true
    Class: INHIBIT_CAMERA_INPUT
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: declare_prologue
    Parameters: none
    Description: enforce prologue considerations upon the world, e.g. no general death during auto-resolve
    Sample use: declare_prologue
    Class: DECLARE_PROLOGUE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: terminate_prologue
    Parameters: none
    Description: withdraw prologue considerations upon the world, e.g. no general death during auto-resolve
    Sample use: terminate_prologue
    Class: TERMINATE_PROLOGUE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: provoke_rebellion
    Parameters: settlement name
    Description: Start a rebellion in the named settlement at the start of the next turn
    Sample use: provoke_rebellion Segesta
    Class: PROVOKE_REBELLION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: move
    Parameters: character name, x, y
    Description: Move the named character to the location specified
    Sample use: move Gaius Julius, 20, 44
    Class: MOVE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: reposition_character
    Parameters: character, x, y
    Description: Snap the character to a position
    Sample use: reposition_character Gaius Maximus, 14, 53
    Class: REPOSITION_CHARACTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: replenish_action_points
    Parameters: character name
    Description: replenish the character's action points
    Sample use: replenish_action_points Gaius Julius
    Class: REPLENISH_ACTION_POINTS
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: replenish_units
    Parameters: army identifier (the general's name)
    Description: replenish all the units to full numbers for the army
    Sample use: replenish_units Gaius Julius
    Class: REPLENISH_UNITS
    Implemented: No
    Author: Guy
    ---------------------------------------------------
    Identifier: spawn_character
    Parameters: faction, character as in character description in historical battle
    Description: create an army at a particular location
    Sample use: spawn_character Julii Foedus Chaerea, general, command 0, influence 0, management 0, subterfuge 0, age 20, x 54, y 124
    Class: SPAWN_CHARACTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: spawn_army ... end
    Parameters: faction, character and units as in army description in historical battle (character description for general and unit descriptions for remainder of the army)
    Description: create an army at a particular location
    Sample use: spawn_army
    faction romans_julii
    character Foedus Chaerea, general, command 0, influence 0, management 0, subterfuge 0, age 20, , x 54, y 124
    unit roman generals guard cavalry soldiers 20 exp 9 armour 1 weapon_lvl 0
    unit roman legionary first cohort ii soldiers 40 exp 0 armour 0 weapon_lvl 0
    unit roman legionary cohort ii soldiers 60 exp 0 armour 0 weapon_lvl 0
    unit roman praetorian cohort i soldiers 60 exp 0 armour 0 weapon_lvl 0
    end
    Class: SPAWN_ARMY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: engage_armies
    Parameters: attacking general, defending general
    Description: Instruct the attacking general to attack the defending general
    Sample use: engage_armies Gaius Julius, Epiroderix
    Class: ENGAGE_ARMIES
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: script
    Parameters: none
    Description: start a script
    Sample use: script
    Class: SCRIPT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: terminate_script
    Parameters:
    Description: terminate a script
    Sample use: terminate_script
    Class: TERMINATE_SCRIPT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: spawn_battle
    Parameters: folder name
    Description: Start the battle contained in the named folder, relative to the maps folder. The next command in the script should be prepare_for_battle.
    Sample use: spawn_battle custom/punic_1
    Class: SPAWN_BATTLE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: if
    Parameters: conditions to satisfy to execute the scope
    Description: conditional execution
    Sample use: if TimerElapsed < 1000
    Class: IF
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: while
    Parameters: conditions to satisfy to execute this while
    Description: start a while loop
    Sample use: while TimerElapsed < 1000
    Class: WHILE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: monitor_conditions
    Parameters: conditions to monitor to execute this scope
    Description: start a monitor loop when conditions are of a particular value
    Sample use: monitor_conditions not I_CharacterIsSelected Gaius Julius
    Class: MONITOR_STATE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: monitor_event
    Parameters: event name, conditions to monitor to execute this scope
    Description: start a monitor loop in response to an event
    Sample use: monitor_event IncomingMessage IncomingMessageType wonder_captured
    Class: MONITOR_EVENT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: terminate_monitor
    Parameters:
    Description: terminate a monitor loop
    Sample use: terminate_monitor
    Class: TERMINATE_MONITOR
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: console_command
    Parameters:
    Description: execute a command through the console
    Sample use: console_command kill_character "Gaius Julius"
    Class: CONSOLE_COMMAND
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: declare_counter
    Parameters: name of the counter, a single word identifier.
    Description: declare a counter and give it an initial value of zero
    Sample use: declare_counter blib
    Class: DECLARE_COUNTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: inc_counter
    Parameters: name of the counter, quantity to modify it by.
    Description: change a counter by a particular amount
    Sample use: inc_counter blib -137
    Class: MODIFY_COUNTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: set_counter
    Parameters: name of the counter, quantity to set it to.
    Description: change a counter to a particular value
    Sample use: set_counter blib -137
    Class: SET_COUNTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: prepare_for_battle
    Parameters:
    Description: Clear all the unit labels, location labels &c. This is separate from the spawn_battle command in case you are scripting a historical battle.
    Sample use: prepare_for_battle
    Class: PREPARE_FOR_BATTLE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: declare_show_me
    Parameters:
    Description: Flag the script as a show me script - required for the AbandonShowMe event
    Sample use: declare_show_me
    Class: DECLARE_SHOW_ME
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: label_unit
    Parameters: alliance, army, unit, label
    Description: Label a particular unit
    Sample use: label_unit 0 2 4 julii_hastati_2
    Class: LABEL_UNIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: label_location
    Parameters: x, z, label
    Description: Label a particular location
    Sample use: label_location 35 58 the_big_hill
    Class: LABEL_LOCATION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: define_unit_group
    Parameters: group_label unit1 unit2 unit3 ...
    Description: creates a unit group containing the specified units
    Sample use: define_unit_group group1 archers1 archers2 archers3 spearmen1
    Class: DEFINE_UNIT_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: undefine_unit_group
    Parameters: group_label
    Description: removes the specified unit group
    Sample use: undefine_unit_group archer_group5
    Class: UNDEFINE_UNIT_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: remove_unit_from_group
    Parameters: group_label unit_label
    Description: removes the unit from the group, if it is already a member
    Sample use: remove_unit_from_group group1 archers1
    Class: REMOVE_UNIT_FROM_GROUP
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: declare_timer
    Parameters: timer name
    Description: declare a script timer
    Sample use: declare_timer rout_timer
    Class: DECLARE_TIMER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: restart_timer
    Parameters: none
    Description: restart the script timer
    Sample use: restart_timer
    Class: RESTART_TIMER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: heed_pause
    Parameters: on/off
    Description: turn on/off the game pause acknowledgement - off by default
    Sample use: heed_pause on
    Class: HEED_PAUSE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: wait
    Parameters: time in seconds
    Description: Wait for the specified time before proceeding to the next script command. The timer is based on the display update, so pausing the game does not pause the timer unless heed_pause is declared.
    Sample use: wait 1.3
    Class: DISPLAY_WAIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: campaign_wait
    Parameters: time in seconds
    Description: Wait for the specified time before proceeding to the next script command.
    Sample use: campaign_wait 1.3
    Class: CAMPAIGN_WAIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: battle_wait
    Parameters: time in seconds
    Description: Wait for the specified time before proceeding to the next script command. The timer is based on the battle update, so pausing and fast forwarding will affect the timer.
    Sample use: battle_wait 1.3
    Class: BATTLE_WAIT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: suspend_during_battle
    Parameters: on/off
    Description: suspend the script during battles - off by default
    Sample use: suspend_during_battle on
    Class: SUSPEND_DURING_BATTLE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_help_player
    Parameters: payback
    Description: Issue a senate mission to gift the player with the payback - receipt and notification takes place at the start of the next turn
    Sample use: senate_mission_help_player one_best_buildable_unit
    Class: SENATE_MISSION_HELP_PLAYER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_assassination
    Parameters: payback, character name
    Description: Issue a senate mission to assassinate the character named in the parameter list for a reward of the payback
    Sample use: senate_mission_assassination minor_reward Gaius Julius
    Class: SENATE_MISSION_ASSASSINATION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_cease_hostilities
    Parameters: payback, faction
    Description: Issue a senate mission to instruct the player to cease hostilities against the named faction for a reward of the payback
    Sample use: senate_mission_cease_hostilities two_minor_exotic_units Gauls
    Class: SENATE_MISSION_CEASE_HOSTILITIES
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_declare_war
    Parameters: payback, faction
    Description: Issue a senate mission to instruct the player to prosecute a war against the named faction for a reward of the payback
    Sample use: senate_mission_declare_war major_reward Gauls
    Class: SENATE_MISSION_DECLARE_WAR
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_broker_peace
    Parameters: payback, faction
    Description: Issue a senate mission to instruct the player to prosecute a war against the named faction for a reward of the payback
    Sample use: senate_mission_broker_peace major_reward Gauls
    Class: SENATE_MISSION_BROKER_PEACE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: senate_mission_take_city
    Parameters: payback, settlement name
    Description: Issue a senate mission to take the settlement named in the parameter list for a reward of the payback
    Sample use: senate_mission_assassination moderate_reward Tarquini
    Class: SENATE_MISSION_TAKE_CITY
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: set_music_state
    Parameters: tension, mobilize, battle or custom
    Description: Sets the music state in the battle
    Sample use: set_music_state mobilize
    Class: SET_MUSIC_STATE
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: play_sound_event
    Parameters: [] [tag = ]
    Description: Plays sound event
    Sample use: play_sound_event PREBATTLE_TEST
    Class: PLAY_SOUND_EVENT
    Implemented: Yes
    Author: Artem
    ---------------------------------------------------
    Identifier: stop_sound_event
    Parameters:
    Description: Stops tagged sound events
    Sample use: stop_sound_event PREBATTLE_TEST
    Class: STOP_SOUND_EVENT
    Implemented: Yes
    Author: Artem
    ---------------------------------------------------
    Identifier: point_at_character
    Parameters: character name
    Description: point at the character
    Sample use: point_at_character Gaius Julius
    Class: POINT_AT_CHARACTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: point_at_settlement
    Parameters: settlement name
    Description: point at the settlement
    Sample use: point_at_settlement Roma
    Class: POINT_AT_SETTLEMENT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: e_point_at_settlement
    Parameters:
    Description: point at a settlement specified in a piece of advice
    Sample use:
    Class: E_POINT_AT_SETTLEMENT
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: point_at_strat_position
    Parameters: strategy map position
    Description: point at the position
    Sample use: point_at_strat_position 44, 55
    Class: POINT_AT_STRAT_POSITION
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: point_at_message
    Parameters: message number/id, [up|down|left|right|top_left|top_right|bot_left|bot_right] - optional, set the direction that the pointer will come from
    Description: point at the message
    Sample use: point_at_message 0
    Class: POINT_AT_MESSAGE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ui_flash_start
    Parameters: UI element (see available_ui_element_ids.txt for appropriate identifiers), [up|down|left|right|top_left|top_right|bot_left|bot_right] - optional, set the direction that the pointer will come from
    Description: move the highlight pointer to the named element
    Sample use: ui_flash_start finances_button
    Class: UI_FLASH_START
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ui_flash_stop
    Parameters: none
    Description: clear the tutorial pointer
    Sample use: ui_flash_stop
    Class: UI_FLASH_STOP
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: settlement_flash_start
    Parameters: strategy map position
    Description: highlight the tile
    Sample use: settlement_flash_start Tarquinii
    Class: SETTLEMENT_FLASH_START
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: settlement_flash_stop
    Parameters: strategy map position
    Description: stop highlighting the tile
    Sample use: settlement_flash_stop Tarquinii
    Class: SETTLEMENT_FLASH_STOP
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: character_flash_start
    Parameters: character name
    Description: flash the tile under the character
    Sample use: character_flash_start Gaius Julius
    Class: CHARACTER_FLASH_START
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: character_flash_stop
    Parameters: character name
    Description: stop flashing the tile under the character
    Sample use: character_flash_stop Gaius Julius
    Class: CHARACTER_FLASH_STOP
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: point_at_location
    Parameters: position (x,y) or location label
    Description: Indicates a position on the battle map
    Sample use: point_at_location pos1
    Class: POINT_AT_LOCATION
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: point_at_unit_pos
    Parameters: unit_label
    Description: Indicates a unit's position on the battle map
    Sample use: point_at_unit_pos generals_unit
    Class: POINT_AT_UNIT_POS
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: point_at_unit_group_pos
    Parameters: group_label
    Description: Indicates a unit_group's position on the battle map
    Sample use: point_at_unit_group_pos infantry_group1
    Class: POINT_AT_UNIT_GROUP_POS
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: remove_battle_map_arrow
    Parameters:
    Description: removes the arrow created by point_at_location/unit/unit_group
    Sample use: remove_battle_map_arrow
    Class: REMOVE_BATTLE_MAP_ARROW
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: point_at_card
    Parameters: card type (unit | character | building), id, nth instance
    Description: Points at the card type specified if it can be found
    For units and buildings 'id' is their id in the tech-tree
    For characters it is their name
    Use nth instance to skip over cards with the same type
    Sample use: point_at_card unit hastati 2 - to point at the second hastati card the game can find
    Class: POINT_AT_CARD
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: point_at_unit_card
    Parameters: unit label, [up|down|left|right|top_left|top_right|bot_left|bot_right] - optional, set the direction that the pointer will come from
    Description: Points at the card of the specified unit
    Sample use: point_at_card roman_archers
    Class: POINT_AT_UNIT_CARD
    Implemented: Yes
    Author: Robbie
    ---------------------------------------------------
    Identifier: e_point_at_unit_card
    Parameters: [up|down|left|right|top_left|top_right|bot_left|bot_right] - optional, set the direction that the pointer will come from
    Description: Points at the card of the unit referred to in the current event context
    Sample use: e_point_at_unit_card
    Class: E_POINT_AT_UNIT_CARD
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: show_mouse_button_animation
    Parameters: [left | right] true/false
    Description: Starts/stops the animation showing which mouse button to press (either left or right at the moment)
    Sample use: show_mouse_button_animation left true - start the animation showing the left mouse button being pressed. show_mouse_button_animation left false - stop the left mouse button animation. NOTE: Only 1 animation can be shown at a time
    Class: SHOW_MOUSE_BUTTON_ANIMATION
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: hide_ui
    Parameters:
    Description: Hide the entire UI (for cinematic purposes)
    Sample use: hide_ui
    Class: HIDE_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: show_ui
    Parameters:
    Description: Show the entire UI (after hiding)
    Sample use: show_ui
    Class: SHOW_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: disable_ui
    Parameters: UI element (see available_ui_element_ids.txt for appropriate identifiers)
    Description: turn off the named UI element
    Sample use: disable_ui finances_button
    Class: DISABLE_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: enable_ui
    Parameters: UI element (see available_ui_element_ids.txt for appropriate identifiers)
    Description: turn on the named UI element
    Sample use: enable_ui finances_button
    Class: ENABLE_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: disable_entire_ui
    Parameters: none
    Description: suspend the entire UI
    Sample use: disable_entire_ui
    Class: DISABLE_ENTIRE_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: enable_entire_ui
    Parameters: none
    Description: reactivate the entire UI
    Sample use: enable_entire_ui
    Class: ENABLE_ENTIRE_UI
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: set_cards_selectable
    Parameters: true/false
    Description: set whether cards are selectble or not
    Sample use: set_cards_selectable false
    Class: SET_CARDS_SELECTABLE
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: disable_cursor
    Parameters: none
    Description: deactivate and hide the cursor
    Sample use: disable_cursor
    Class: DISABLE_CURSOR
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: enable_cursor
    Parameters: none
    Description: activate and show the cursor
    Sample use: enable_cursor
    Class: ENABLE_CURSOR
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: reveal_tile
    Parameters: strategy map position
    Description: remove the shroud from the tile
    Sample use: reveal_tile 25, 43
    Class: REVEAL_TILE
    Implemented: No
    Author: Guy
    ---------------------------------------------------
    Identifier: play_video
    Parameters: filename
    Description: play a piece of video
    Sample use: play_video fmv/rome_intro.mpg
    Class: PLAY_VIDEO
    Implemented: No
    Author: Guy
    ---------------------------------------------------
    Identifier: advance_advice_thread
    Parameters: thread name, no_dismiss
    Description: Increment the score of the advice thread
    Sample use: advance_advice_thread 0098_prologue_selection no_dismiss
    Class: ADVANCE_ADVICE_THREAD
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: dismiss_advice
    Parameters:
    Description: Dismiss the currently displayed advice
    Sample use: dismiss_advice
    Class: DISMISS_ADVICE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: suspend_unscripted_advice
    Parameters: flag
    Description: Suspend (or restore) all advice not generated by the script
    Sample use: suspend_unscripted_advice true
    Class: SUSPEND_UNSCRIPTED_ADVICE
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: select_character
    Parameters: character name
    Description: selects a character on the campaign map
    Sample use: select_character Gaius Julius
    Class: SELECT_CHARACTER
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: e_select_character
    Parameters:
    Description: selects a character referred to in the current event context on the campaign map
    Sample use: e_select_character
    Class: E_SELECT_CHARACTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: select_settlement
    Parameters: settlement name
    Description: selects a settlement on the campaign map
    Sample use: select_settlement Roma
    Class: SELECT_SETTLEMENT
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: e_select_settlement
    Parameters:
    Description: selects a settlement referred to in the current event context on the campaign map
    Sample use: e_select_settlement
    Class: E_SELECT_SETTLEMENT
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: call_object_shortcut
    Parameters: ui object name, shortcut name (see available_ui_element_ids.txt for appropriate element identifiers)
    Description: calls the keyboard shortcut of a ui element
    the shortcut name can left out
    Most buttons don't require a shortcut name, instead the 'on_select' method is called
    Sample use: call_object_shortcut strat_ui speedup_ai - will toggle the fast ai mode
    call_object_shortcut diplomacy_overview_button - will select the diplomacy overview button
    Class: CALL_OBJECT_SHORTCUT
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: simulate_mouse_click
    Parameters: [lclick_down|lclick_up|rclick_down|rclick_up|ldbl_click]
    Description: Acts as if the given mouse event had happened on the currently 'selected' ui_element (see 'select_element' command)
    Sample use: select_element hud_show_buildings_tab
    simulate_mouse_click lclick_down
    Class: SIMULATE_MOUSE_CLICK
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: select_ui_element
    Parameters: element id (see available_ui_element_ids.txt for appropriate identifiers)
    Description: Use in conjunction with simulate mouse click to store the element that will next recieve the simulated mouse click
    Sample use: select_element hud_show_buildings_tab
    simulate_mouse_click lclick_down
    Class: SELECT_ELEMENT
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: disable_shortcuts
    Parameters: {element_id}, true/false
    Description: This will disable/enable all keyboard shortcuts for a given element (or all elements if element_id is omitted), except the key defined as being the 'quit' key (ESC by default). See data/descr_shortcuts.txt for the element_ids that are useable
    Sample use: disable_shortcuts true - to disable, disable_shortcuts false - to enable them again
    Class: DISABLE_SHORTCUTS
    Implemented: Yes
    Author: Tom
    ---------------------------------------------------
    Identifier: filter_unit_commands
    Parameters: switch, unit name, function
    Description: Turn off the command shell, or one part of it, for all units or the named unit
    Sample use: filter_unit_commands on velites_alpha change_formation
    filter_unit_commands off velites_alpha
    filter_unit_commands off
    Class: UNIT_UISHELL_FILTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: filter_unit_group_commands
    Parameters: switch, unit name, function
    Description: Turn off the command shell, or one part of it, for all units or the named unit
    Sample use: filter_unit_group_commands on storm_troopers change_formation
    filter_unit_group_commands off storm_troopers
    filter_unit_group_commands off
    Class: UNIT_GROUP_UISHELL_FILTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: filter_unit_selection_commands
    Parameters: switch, function
    Description: Turn off the command shell, or one part of it, for all units
    Sample use: filter_unit_selection_commands on change_formation
    filter_unit_selection_commands off

    Class: UNIT_SELECTION_UISHELL_FILTER
    Implemented: Yes
    Author: Chris
    ---------------------------------------------------
    Identifier: filter_settlement_commands
    Parameters: switch, unit name, function
    Description: Turn off the command shell, or one part of it, for all settlements or the named settlement
    Sample use: filter_settlement_commands on Arretium change_formation
    filter_settlement_commands off Arretium
    filter_settlement_commands off
    Class: SETTLEMENT_UISHELL_FILTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: filter_character_commands
    Parameters: switch, unit name, function
    Description: Turn off the command shell, or one part of it, for all characters or the named character
    Sample use: filter_character_commands on Gaius Julius, change_formation (note comma)
    filter_character_commands off Gaius Julius
    filter_character_commands off
    Class: CHARACTER_UISHELL_FILTER
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: filter_all_ui_commands
    Parameters: switch
    Description: Turn on or off the command shell
    Sample use: filter_all_ui_commands on
    Class: SWITCH_ALL_UISHELL_FILTERS
    Implemented: Yes
    Author: Guy
    ---------------------------------------------------
    Identifier: ui_indicator
    Parameters: { } or {track } or {track_3d } or {track_ground } or {track_ground_3d } or {track_unit } or {track_unit_3d } [colour ] [scale ] [period ] [loop]
    Description: Display a UI indicator
    Sample use: ui_indicator 0 circle 500 500 colour 255 255 0 scale 2.0 period 2.0 loop
    Class: UI_INDICATOR_COMMAND
    Implemented: Yes
    Author: Charlie
    ---------------------------------------------------
    Identifier: ui_indicator_remove
    Parameters:
    Description: Remove a UI indicator
    Sample use: ui_indicator_remove 0
    Class: UI_INDICATOR_REMOVE_COMMAND
    Implemented: Yes
    Author: Charlie
    ---------------------------------------------------
    Identifier: steal_esc_key
    Parameters: on/off
    Description: Steals keyboard input for the escape key, taking away it's default behaviour. When the ESC kay is pressed, the trigger ET_ESC_PRESSED will fire, so this should be monitored. Default functionality of esc will be returned at this point. Note that if anything else steals the esc key after this command, then that will get priority instead. The intended use for this command is to allow script writers to create skippable sections that are skipped by pressing ESC
    Sample use:
    Class: STEAL_ESC_KEY
    Implemented: No
    Author: Tom

  4. #4
    Shaidar Haran Senior Member SAM Site Champion Myrddraal's Avatar
    Join Date
    Feb 2004
    Location
    UK
    Posts
    5,752

    Default Re: Events, Conditions, & Commands

    Thanks a lot, this is really usefull. But I can't see a way to start a script on load yet...

    I never go the demo, so I never saw this stuff. Thx again.

  5. #5
    aka AggonyAdherbal Member Lord Adherbal's Avatar
    Join Date
    Oct 2004
    Location
    Belgium
    Posts
    1,014

    Default Re: Events, Conditions, & Commands

    at the end of the descr_strat.txt in the campaign folders you can add a script file. For example:

    script
    Prologue_Campaign_Script.txt

    Is that what you ment ?
    Member of The Lordz Games Studio:
    A new game development studio focusing on historical RTS games of the sword & musket era
    http://www.thelordzgamesstudio.com

    Member of The Lordz Modding Collective:
    Creators of Napoleonic Total War I & II
    http://www.thelordz.co.uk

  6. #6
    Shaidar Haran Senior Member SAM Site Champion Myrddraal's Avatar
    Join Date
    Feb 2004
    Location
    UK
    Posts
    5,752

    Default Re: Events, Conditions, & Commands

    No Adherbal, I know that. I have been working on scripts for some time making a script to have four turns a year instead of two. What I mean is, I devised a way to make a show me how script to launch at the start of the game. This enables the player to save the game whilst the script is running. But I haven't found a similar way to automatically re-launch the script when the game is reloaded from a saved game.

  7. #7
    Spends his time on TWC Member Simetrical's Avatar
    Join Date
    Dec 2004
    Location
    New York City
    Posts
    1,358

    Default Re: Events, Conditions, & Commands

    It appears that the PreBattle trigger isn't implemented. This seriously screws up my fix for the doubled traits bug, unfortunately. If anyone can get it working, we can fix that perfectly.

    -Simetrical
    TWC Administrator

    MediaWiki Developer

  8. #8
    EB Traiter Member Malrubius's Avatar
    Join Date
    Jan 2005
    Location
    On a tree-covered mountain in Anniston, Alabama, USA
    Posts
    2,633

    Default Re: Events, Conditions, & Commands

    I can confirm that PreBattle doesn't work.

    It also looks like InEnemyLands returns the opposite of what's expected. It returns true when your agent/general is NOT in enemy lands, and false when he is. Maybe someone else can confirm this?

    [edit]
    Also, CharacterDamagedByDisaster seems to fire every turn.
    Last edited by Malrubius; 07-09-2005 at 15:17. Reason: added stuff

    Ah! the Generals! they are numerous, but not good for much (especially if they're Languorous)!
    -- Aristophanes, if he played EB

  9. #9
    Bug Hunter Senior Member player1's Avatar
    Join Date
    Feb 2005
    Location
    Belgrade, Serbia
    Posts
    1,405

    Default Re: Events, Conditions, & Commands

    CharacterMarries event doesn't work too.

    As well as CharacterComesOfAge, when used for generating retinue memebers (works fine for VnVs).
    BUG-FIXER, an unofficial patch for both Rome: Total War and its expansion pack

  10. #10
    EB Traiter Member Malrubius's Avatar
    Join Date
    Jan 2005
    Location
    On a tree-covered mountain in Anniston, Alabama, USA
    Posts
    2,633

    Default Re: Events, Conditions, & Commands

    SettlementName, when used in edct.txt, doesn't seem to work for settlement names with two parts, like "New York". It works fine for "Néw_York" or "New_York", however.

    Tried examples like these (with a displayed name of New York):
    SettlementName "New York"
    SettlementName 'New York'
    SettlementName New_York
    SettlementName NewYork

    None of them worked. If you want to give a trait to someone in a settlement with more than 1 part to its name, it needs an underscore or something.
    Last edited by Malrubius; 09-28-2005 at 10:06.

    Ah! the Generals! they are numerous, but not good for much (especially if they're Languorous)!
    -- Aristophanes, if he played EB

  11. #11
    EB Traiter Member Malrubius's Avatar
    Join Date
    Jan 2005
    Location
    On a tree-covered mountain in Anniston, Alabama, USA
    Posts
    2,633

    Default Re: Events, Conditions, & Commands

    Anybody know what the HealthPercentage does? Would it tell us something about what sort of health bonuses are active on the settlement?


    Code:
    Identifier: HealthPercentage
    Trigger requirements: settlement
    Parameters:
    Sample use: HealthPercentage > 35
    Description: Check the health of the settlement
    Battle or Strat: Strat
    Class: HEALTH_PERCENTAGE
    Implemented: Yes
    Author: Guy

    Ah! the Generals! they are numerous, but not good for much (especially if they're Languorous)!
    -- Aristophanes, if he played EB

  12. #12
    EB Traitor Member BozosLiveHere's Avatar
    Join Date
    Jan 2006
    Location
    Uqbar, Tlön
    Posts
    3,662

    Default Re: Events, Conditions, & Commands

    Something I had never noticed before, and I think has been overlooked by a lot of people.

    Quote Originally Posted by docudemon_conditions.txt
    Conditions which take no logic_token in their parameter list can be negated by
    prepending them with not, e.g. not WonBattle
    I have just tested this using RTW 1.5 and indeed using something like and not BattleOdds < 0.5 won't be understood by the engine. Like any other made up condition the engine will just bypass the condition as if it wasn't there.

    Update: After some further testing, apparently what happens is that the engine ignores the not, e.g. if you place a condition and not BattleSuccess = clear it will be understood as and BattleSuccess = clear.
    Last edited by BozosLiveHere; 09-01-2006 at 01:45.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Single Sign On provided by vBSSO