== trigger(func) == This is the constructor. It defines the function(s) that will be called iteratively and registers them. == priority(int=1) == This method defines the priority the trigger has. == enable() == This method activates the trigger. == disable() == This method deactivates the trigger. Every trigger starts with a preceding function that contains the code we want "triggered". To make it a trigger, you would create a new Trigger object specifying the function(s) you want to work with: {{{ function trigName() { if(accumulated("food") >= 500) { sendchat("this player has 500+ food!"); } } trigger = new trigger(trigName()); }}} Now, The trigger is registered and recognized by the engine. You, then, have to activate it to make it work. To activate/deactivate triggers, you use the enable and disable methods. For optimization, you can also set a priority for triggers within 4 different levels (1 being default). Priority must be called before enabling it: {{{ trigger.priority(4); trigger.enable; trigger.disable; }}} Additionally, you may want to group functions for easy modification and work with them as you would with one. So, you can create a trigger group like this: {{{ trigger = new trigger(trigName(), trigFoo(), trigBar()); }}} == Trigger Reference == === Conditions: === {{{ trigAISignal(ai, signal); trigCinematicAbort(); trigAccumulated(player, attr); trigUnitsAllDead(); trigBuildingsAllDead(); trigBringObjectToArea(); // Waiting for Bobby to define this trigBringObjectToObject(); // Waiting for Bobby to define this trigCheatEntered(string); trigChatContains(string); trigChatChoiceAnswer(string); trigChance(int); trigObjectDestroyed(object); trigDifficulty(); trigDiplomacyChange(source, target, type = all); trigDistanceToPoint(object, point, radius); trigDistanceToObject(source, target, radius); trigPercentComplete(object); trigPercentDamaged(object); trigLogCompare(); // what is this? trigLogCheck(); // what is this? trigVarCompare(); // what is this? trigVarCheck(); // what is this? trigObjectInteracted(); // how is this used? trigObjectActive(object); trigObjectDead(object); trigObjectChanged(object); trigObjectVisible(player, object, amount); trigObjectsInArea(object, area); trigObjectOwned(player, object); trigObjectCaptured(player, object); trigObjectSelected(player, object); trigObjectTypeSelected(player, type); trigObjectGarrisoned(object, type, amount); trigPlayerActive(player); trigPlayerAtPop(player); trigPlayerDefeated(player); trigPlayerDistanceToPoint(player, point, radius); trigPlayerDistanceToObject(player, target, radius); trigPlayerIsBuilding(player, type); trigPlayerResigned(player); trigPlayerUnitCount(player, type); trigTechResearch(player, tech); trigTechResearched(player, tech); trigTechResearching(player, tech); trigTimer(ms); }}} === Effects: === {{{ trigAIScriptGoal(); // details here trigCampaignAdvance(); trigCampaignNext(); trigAreaStringChange(); trigHeroChange(); trigBlockAllAmbient(); trigBlockAllMusic(); trigBlockAllSounds(); trigCameraCut(); trigCameraTrack(); trigChangeDiplomacy(); trigChangeElevation(); trigChangeOwnership(); trigChangeTerrain(); trigChangeView(); trigCheats(); trigChat(); trigCinematicMode(); trigChatClear(); trigUIClear(); trigCounterValueAdd(); trigCounterStop(); trigCounter(); //isn't this a condition just like timer? trigCounterClear(); trigWaterCreate(); trigDeclareVictory(); trigDisplayInstructions(); trigEndGame(); trigUnitEnable(); trigFadeToColor(); trigFadeOutSounds(); trigFadeOutMusic(); trigMinimapFlare(); trigUIFlash(); trigUIFlashCategory(); trigUIFlashTech(); trigUIFlashTrain(); trigFlashObjects(); trigMinimapFlashObjects(); trigGameSpeed(); trigMainMenu(); trigGroupChange(); trigGrantResources(); trigHealUnit(); trigHideScore(); trigHighlightUnits(); trigKillObject(); trigKillObjectsInArea(); trigLockAllGates(); trigLockGate(); trigLog(); trigLogChange(); trigModifyObject(); trigModifyObjectAbility(); trigModifyObjectIcon(); trigModifyObjectName(); trigModifyResourceValue(); trigMoveObjectToArea(); trigMusicFilename(); trigMusicMood(); trigMusicPlay(); trigMusicStop(); trigObjectAnimation(); trigObjectChangeType(); trigObjectCreate(); trigObjectDamage(); trigObjectDamageInArea(); // cheezy's did you check with them to see if this was possible? maybe load them at start // and do a switch type thing? trigObjectFileLoad(); trigObjectFreeze(); trigObjectHeading(); trigObjectInAreaMove(); trigObjectScale(); trigObjectStop(); trigObjectTask(); trigPatrol(); trigGamePause(); trigObjectiveWindowPause(); // kinda redundant, why not just make conditions to check if they are open, then do game pause? trigPhaseUpgradePause(); trigPlaceFoundation(); trigPlayDialogue(); trigPlayDialogueChoice(); trigPlayRPGDialogue(); trigPlayMovie(); trigPlaySound(); trigPlayerDestroyAllBuildings(); trigPlayerDestroyAllUnits(); trigPlayerLOSChange(); trigPlayerSetActive(); trigPlayNextMusicTrack(); trigRateConstruction(); trigRateResearch(); trigRateTraining(); trigRateReset(); trigDataLog(); trigRemoveMiniMap(); trigRemoveObject(); trigRemoveObjectsInArea(); trigRenderFog(); trigRenderRain(); trigRenderSky(); trigRenderSnow(); trigReshroud(); trigRevealMap(); trigChatSend(); trigChatSendChoice(); trigSetPlaylist(); trigSetLighting(); trigSetObjective(); trigSetHint(); trigDefeatPlayer(); trigPlayerWon(); trigUnitOutlines(); trigUnitScramble(); trigShakeCamera(); trigSoundFilename(); trigSoundPause(); trigScrambleStop(); trigTechStatus(); trigTeleportUnits(); trigToggleView(); trigToggleTerritories(); trigTransferResources(); trigTributeResources(); trigUnblockAllAmbient(); trigUnblockAllSounds(); trigUnblockMusic(); trigUnfreezeUnit(); trigUnload(); trigUnlockGate(); trigUnitBuildBuilding(); trigUnitGarrison(); trigUnitWork(); trigUserControls(); trigWinMessageSet(); trigLossMessageSet(); trigWriteToLog(); trigYouLose(); trigYouWin(); }}}