Entities & Custom Encounters

Information for creating custom levels and encounters. Documentation on event calls, entity types, etc.

Entities

A description of various entities that shape the level.

Entities

Entities List (Doom 2016)

A complete list of every entity class in Doom 2016:

idAASObstacle
idAASReachability
idAbnormalPlayerMetrics
idActionNode
idActor
idActorAmbientFilter
idActorWorkNode
idAFEntity_Corpse
idAFEntity_Dummy
idAFEntity_Generic
idAI2
idAIAASHint
idAICombatHint
idAICombatHint_SuppressionFirePoint
idAIConductor
idAIConductor_Coop
idAIDeathVolume
idAIDebugCamera
idAIHint
idAIHintGroup
idAIInteraction
idAISearchHintAnimation
idAISearchHintAuto
idAISearchHintGroup
idAITest
idAITest_Rotation
idAlignedEntity
idAmbientTriggerModifier_SetAITypes
idAnimated
idAnimated_AnimWeb
idAnimated_AnimWeb_Coop
idAnimated_AnimWeb_Samuel
idAnimated_DemonicBait
idAnimated_DemonicEcho
idAnimated_SMM_Pillar
idAnimated_ThreatSensor
idAnimatedAttachment
idAnimatedAttachment_AF
idAnimatedEntity
idAnimatedInteractable
idAnimCamera
idAnimNode
idAnnouncementManager
idArcadeScoreBonus
idARTarget_Info
idAutoMapEntity
idAutoMapManager
idBarricade
idBasePropSpawner
idBecomeDemonPropSpawner
idBFG_Geyser
idBfgBurn
idBillboard
idBinaryAnimation
idBinaryModel
idBotActionEntity
idBotActionEntity_Info
idBotActionEntity_Info_POI
idBotActionEntity_Info_RoamGoal
idBotActionEntity_Usable
idBotPathNodeEntity
idBreakable
idBreakablePlatform
idBuildArea
idCamera
idCameraView
idChargeballComponentManager
idChargeballGoal
idChargeballGoalCamera
idChargeballPickup
idChargeballPlayerStart
idChargeballSpawner
idCinematicCamera
idClothEntity
idCollisionStreamArea
idCombatGrouping
idCombatVolume
idCoopStartingInventory
idCorpse
idCorpseManager
idCoverBlocker
idCyberdemonMissileShooter
idDamageableEntity
idDamageableTower
idDeathmatchPlayerStart
idDebrisEntity
idDecalEntity
idDemonicChainGrappleInfo
idDemonPlayer
idDemonPlayer_Baron
idDemonPlayer_Cacodemon
idDemonPlayer_Harvester
idDemonPlayer_Mancubus
idDemonPlayer_Pinky
idDemonPlayer_Prowler
idDemonPlayer_Revenant
idDemonPlayer_Summoner
idDemonPlayerStart
idDesignSystems_AnimatedBlocker
idDesignSystems_Beacon
idDesignSystems_Checkpoint
idDesignSystems_ControlBox
idDesignSystems_Door
idDesignSystems_Elevator
idDesignSystems_ForceFieldGate
idDesignSystems_GuiDisplay
idDesignSystems_HackBox
idDesignSystems_HandScanner
idDesignSystems_LevelTransitionStation
idDesignSystems_LootBox
idDesignSystems_NarrativeTable
idDesignSystems_PowerCell
idDesignSystems_Receptacle
idDesignSystems_ResupplyStation
idDesignSystems_SaveStation
idDesignSystems_SecurityUnlockStation
idDesignSystems_Turret
idDesignSystems_UpgradeStation
idDesignSystems_VirtualGUI
idDesignSystemsEntity
idDestroyableProp
idDynamicEntity
idDynamicEntity_Damageable
idDynamicSnapMapEntity
idDynamicStampEntity
idDynamicStampEntity_Coop
idDynamicVisibilityBlocker
idDynamicWaterEntity
idEditorModelEntity
idElectricBoltEmitter
idEncounterAmbientAudio
idEncounterGroupMgr
idEncounterManager
idEncounterModifier_Reset
idEncounterModifier_SetEnabledState
idEncounterModifier_SetNextScriptIndex
idEncounterTrigger_AmbientAIAudio
idEncounterTrigger_Commit
idEncounterTrigger_Exit
idEncounterTrigger_OverrideCombatGrouping
idEncounterTrigger_PreCombat
idEncounterTrigger_RaiseUserFlag
idEncounterVolume_ValidCover
idEntity_Safehouse_Location
idEntityCamera
idEntityFog
idEntityFx
idEntityFxRandom
idEntityImposter
idEnvArea
idEnvironmentalDamage_Hurt_Trigger
idEnvironmentalDamage_Point
idEnvironmentalDamage_PointManager_Trigger
idFlightVolumeTraversalSpline
idFoliage
idFreeCamera
idFuncCloth
idFuncRotate
idFuncShadowCaster
idFuncSwing
idGameChallenge
idGameChallenge_Bloodthirst
idGameChallenge_CampaignSinglePlayer
idGameChallenge_Chargeball
idGameChallenge_ClanArena
idGameChallenge_Conveyor
idGameChallenge_Coop
idGameChallenge_Coop_HudInfo
idGameChallenge_Coop_Variables
idGameChallenge_Domination
idGameChallenge_DoubleHelix
idGameChallenge_Elimination
idGameChallenge_FFA
idGameChallenge_FlagMode
idGameChallenge_FreezeTag
idGameChallenge_Possession
idGameChallenge_PVP
idGameChallenge_SafeHouse
idGameChallenge_Sector
idGameChallenge_TDM
idGameSystems_Manager_ContainerEntity
idGlass
idGlobalDataComponent
idGodRays
idGoreEntity
idGuiEntity
idGuiEntityCinematic
idGuiEntityCinematicWide
idGuiEntityCounter
idGuiEntityStatic
idHologram
idInfluenceSpawnSettings
idInfo
idInfo_BounceDestination
idInfo_DoorTraversalChain
idInfo_GatedTraversalChain
idInfo_GatedTraversalSet
idInfo_SpawnConditionProxy
idInfo_TeleportDestination
idInfo_TraversalChain
idInfo_TraversalPoint
idInfo_Trigger_Facing_Target
idInfo_UniversalTraversal
idInfoAAS
idInfoAmbient
idInfoBounds
idInfoCloudShot
idInfoCover
idInfoCoverExposed
idInfoDebugMapName
idInfoDebugMarker
idInfoDebugText
idInfoExportHint
idInfoFlightVolumeEntrance
idInfoFocus
idInfoGoalPosition
idInfoLevelFadeIn
idInfoLookTarget
idInfoLookTargetGroup
idInfoOrbit
idInfoPath
idInfoPlayerHud
idInformationEntity
idInfoRoam
idInfoRuler
idInfoSpawnPoint
idInfoSplineChild
idInfoTexLod
idInfoTraversal
idInfoTraversalEndPoint
idInfoWaitForButtonAfterLoad
idInteractable
idInteractable_EliteGuard
idInteractable_EliteGuard_Coop
idInteractable_GiveItems
idInteractable_LootCrate
idInteractable_LootDrop
idInteractable_Minigame
idInteractable_Moveable
idInteractable_NightmareMarker
idInteractable_Obstacle
idInteractable_Obstacle_SnapDoor
idInteractable_PowerCoreReceptacle
idInteractable_Tutorial
idInteractable_VegaTraining
idInteractable_WeaponModBot
idInteractable_WorldCache
idInteractionCamera
idInventoryStorage
idItemPropSpawner
idJostleAnimated
idJostleSpring
idJostleSwivel
idLaserHazard
idLensFlare
idLight
idLoot_Blocker
idLoot_ItemCase
idLowGravityMover
idMapSpecificUnlockables
idMover
idMoverModifier
idMultiplayerTrigger
idNarrative_Interactable
idNarrativeDirector
idNavSplinePath
idNetworkedEntityFx
idNetworkedParticleEmitter
idObjective_Relay
idOverTheShoulderCamera
idParticleEmitter
idPathCorner
idPerceptionVolume
idPieceEmitter
idPlaceableSnapAIEncounter
idPlayer
idPlayerStart
idPortalSurface
idPortalWorld
idPowerLine
idProjectile
idProjectile_AutoTurret
idProjectile_BfgArc
idProjectile_BfgBurn
idProjectile_Boomerang
idProjectile_CacoDemonRocket
idProjectile_Chargeball
idProjectile_CyberdemonSwarmMissile
idProjectile_DamageOverTime
idProjectile_DeployedLaser
idProjectile_Dispenser
idProjectile_Drone
idProjectile_EMP
idProjectile_GBF
idProjectile_Grenade
idProjectile_Grenade_DemonControl
idProjectile_GroundDeploy
idProjectile_GuardBoulder
idProjectile_HarvesterDetonateBall
idProjectile_Nanobore
idProjectile_PersonalTeleporter
idProjectile_PlasmaPuddle
idProjectile_Proximity_Mine
idProjectile_Rocket
idProjectile_RocketBounce
idProjectile_SiphonGrenade
idProjectile_Slicer
idProjectile_StealthField
idProjectile_StrikerGrenade
idProjectile_SwarmMissile
idProjectile_SwarmMissile_V2
idProjectile_ThreatSensor
idProp
idProp_AIArmor
idProp_ArmorPickup
idProp_Breakable
idProp_BreakableLoot
idProp_ContinuallyUsed
idProp_Conveyor_ControlPoint
idProp_Coop
idProp_Coop_Billboard
idProp_DemonCircle
idProp_Domination_ControlPoint
idProp_DoubleHelix_CapturePoint
idProp_DoubleHelix_Flag
idProp_ElectricArmor
idProp_Explosive
idProp_FlagMode_CapturePoint
idProp_FlagMode_Flag
idProp_HealthPickup
idProp_Loot
idProp_Moveable
idProp_OnlineCollectible
idProp_Pickup
idProp_PlayableDemonCircle
idProp_PowerCell
idProp_Sector_ControlPoint
idProp_Spawnable
idProp_Static
idProp_Usable
idProp_WeaponPickup
idProp_WeaponStatic
idProp2
idQuestNavSplinePath
idRailSplinePath
idRailTurret
idRandomLoot
idReferenceMap
idRegenArea
idResurrectionProxy
idRibbonEmitter
idRiftBuildPosition
idRotatableCamera
idSlowMotionCamera
idSnapAmmoPickup
idSnapBackpackPickup
idSnapDroppable
idSnapEvent
idSnapEvent_MiniBoss
idSnapEvent_Survive
idSnapEvent_WaveBattle
idSnapFilter
idSnapFilter_AI
idSnapFilter_Bool
idSnapFilter_CachedEntity
idSnapFilter_Droppable
idSnapFilter_Equipment
idSnapFilter_Module
idSnapFilter_Player
idSnapFilter_Race
idSnapFilter_Team
idSnapFilter_UserFilter
idSnapFilter_Volume
idSnapFilter_Weapon
idSnapGuiEntity
idSnapInspectCameraHint
idSnapItemHint
idSnapMapAction
idSnapMapAction_AI_SetMod
idSnapMapAction_AI_SetStaggerEnabled
idSnapMapAction_AIConductor_ClearSpawnQueue
idSnapMapAction_AIDifficulty
idSnapMapAction_AssignToTeam
idSnapMapAction_BoolVar_Set
idSnapMapAction_BoolVar_Test
idSnapMapAction_BoolVar_Toggle
idSnapMapAction_CachedEntityVar_Operation
idSnapMapAction_Camera_ActivateCamera
idSnapMapAction_Camera_DeactivateCamera
idSnapMapAction_Camera_FadeCamera
idSnapMapAction_Camera_FadeFromToCamera
idSnapMapAction_Camera_SetEnvironment
idSnapMapAction_Camera_Shake
idSnapMapAction_ChangeRace
idSnapMapAction_CheckTriggerContents
idSnapMapAction_ColorVar_Channel_Operation
idSnapMapAction_ColorVar_Operation
idSnapMapAction_ComboStart_SetEnable
idSnapMapAction_CompleteMainObjective
idSnapMapAction_CompleteSubObjective
idSnapMapAction_Counter_Modify
idSnapMapAction_Counter_Reset
idSnapMapAction_Counter_Set
idSnapMapAction_CustomEventFire
idSnapMapAction_Damage
idSnapMapAction_Door_EndLockdown
idSnapMapAction_Door_StartLockdown
idSnapMapAction_Droppable_Remove
idSnapMapAction_Droppable_Reset
idSnapMapAction_Echo_Glitch
idSnapMapAction_Echo_Opacity
idSnapMapAction_Echo_Play
idSnapMapAction_Encounter_ApplyBuff
idSnapMapAction_Encounter_AssignTeam
idSnapMapAction_EndGame
idSnapMapAction_EndGame_Conditional
idSnapMapAction_Explodable_Explode
idSnapMapAction_FinishCountDown
idSnapMapAction_FinishEncounter
idSnapMapAction_FinishSnapEvent
idSnapMapAction_FollowPath
idSnapMapAction_Gate_SetA
idSnapMapAction_Gate_SetB
idSnapMapAction_Gate_Test
idSnapMapAction_GivePlayerScore
idSnapMapAction_GiveTeamScore
idSnapMapAction_Hazard_SetDamage
idSnapMapAction_Heal
idSnapMapAction_HealAI
idSnapMapAction_HideMainObjective
idSnapMapAction_HideObjective
idSnapMapAction_Incapacitate
idSnapMapAction_Interactable_SetEnable
idSnapMapAction_Interaction
idSnapMapAction_IntTest
idSnapMapAction_IntVar_Operation
idSnapMapAction_IntVar_Random
idSnapMapAction_Kill
idSnapMapAction_KillAI
idSnapMapAction_LaserHazard_SetOn
idSnapMapAction_Light_SetIntensity
idSnapMapAction_Light_SetOn
idSnapMapAction_LoadSubObjectiveProgress
idSnapMapAction_Logic_Fire
idSnapMapAction_Logic_ResetRandomRelayUsedList
idSnapMapAction_Logic_SetDelay
idSnapMapAction_Logic_SetRandomRelayActivateCount
idSnapMapAction_Logic_SwitchFire
idSnapMapAction_LootDropRestriction
idSnapMapAction_ModifyAmmo
idSnapMapAction_Module_AllowAicSpawn
idSnapMapAction_Module_EndLockDown
idSnapMapAction_Module_LockDown
idSnapMapAction_Module_SetEnvironment
idSnapMapAction_Mover_Start
idSnapMapAction_NumTest
idSnapMapAction_NumVar_Operation
idSnapMapAction_NumVar_Random
idSnapMapAction_PauseCountDown
idSnapMapAction_PlayCallout
idSnapMapAction_Player_DropCurrentWeapon
idSnapMapAction_Player_GiveDroppable
idSnapMapAction_Player_GiveItem
idSnapMapAction_Player_GivePowerup
idSnapMapAction_Player_GiveTakeAbility
idSnapMapAction_Player_Respawn
idSnapMapAction_Player_SaveApplyRestorePoint
idSnapMapAction_Player_TakeDroppable
idSnapMapAction_Player_TakeItem
idSnapMapAction_PlayerCamera_FadeCamera
idSnapMapAction_PlayerCamera_FadeFromToCamera
idSnapMapAction_PlayerCamera_SetEnvironment
idSnapMapAction_PlayerCamera_Shake
idSnapMapAction_PlayerInput_SetEnable
idSnapMapAction_PlayerLoadout_GiveLoadout
idSnapMapAction_PlayerLoadout_SetDemonSelection
idSnapMapAction_PlayerLoadout_SetMaxWeaponSlots
idSnapMapAction_PlayerResource_Operation
idSnapMapAction_PlayerResource_Spend
idSnapMapAction_PlayMusic
idSnapMapAction_PlaySpeaker
idSnapMapAction_PostEvent
idSnapMapAction_PowerCoreReceptacle_RespawnCell
idSnapMapAction_PowerCoreReceptacle_SetCoreColor
idSnapMapAction_Prop_EnableFX
idSnapMapAction_RemoveAI
idSnapMapAction_RemoveEntity
idSnapMapAction_RemovePOI
idSnapMapAction_Repeater_Stop
idSnapMapAction_Repeater_Toggle
idSnapMapAction_ResetAicModuleCooldown
idSnapMapAction_ResetCountDown
idSnapMapAction_ResourceTest
idSnapMapAction_Respawn
idSnapMapAction_Revive
idSnapMapAction_SaveSubObjectiveProgress
idSnapMapAction_Secret
idSnapMapAction_Sequencer_Reset
idSnapMapAction_Sequencer_SetSequenceNumber
idSnapMapAction_SetColor
idSnapMapAction_SetConductorSpawningPauseState
idSnapMapAction_SetCountDown
idSnapMapAction_SetLaunchDestination
idSnapMapAction_SetLaunchSpeed
idSnapMapAction_SetPlayerModifier
idSnapMapAction_SetPlayerScore
idSnapMapAction_SetPOI
idSnapMapAction_SetSubObjectiveProgress
idSnapMapAction_SetTeam
idSnapMapAction_SetTeamScore
idSnapMapAction_Settings_SetActive
idSnapMapAction_SetTriggerActivatable
idSnapMapAction_SetTriggerVisible
idSnapMapAction_ShowMainObjective
idSnapMapAction_ShowMessage
idSnapMapAction_ShowObjective
idSnapMapAction_ShowObjectiveCounter
idSnapMapAction_ShowObjectiveHealth
idSnapMapAction_ShowObjectiveResource
idSnapMapAction_ShowObjectiveTimer
idSnapMapAction_ShowSubObjective
idSnapMapAction_SpawnEncounter
idSnapMapAction_SpawnInhibit_SetEnable
idSnapMapAction_SpawnItem
idSnapMapAction_StartCountDown
idSnapMapAction_StartIterator
idSnapMapAction_StartSnapEvent
idSnapMapAction_StopCountDown
idSnapMapAction_StopMusic
idSnapMapAction_StopSpeaker
idSnapMapAction_StringTest
idSnapMapAction_StringVar_Build
idSnapMapAction_StringVar_Set
idSnapMapAction_TeamResource_Operation
idSnapMapAction_TeamResource_Spend
idSnapMapAction_Teleport
idSnapMapAction_Teleporter_SetEnable
idSnapMapAction_ToggleShowHide
idSnapMapAction_UpdateSpeaker
idSnapMapAction_Volume_EnableDisableTouch
idSnapMapCapEntity
idSnapMapCustomEvent
idSnapMapEntity_IntCompare
idSnapMapEntity_NumCompare
idSnapMapEntity_ResourceCompare
idSnapMapEntity_StringCompare
idSnapMapGameEntity_AI
idSnapMapGameEntity_AIDirector
idSnapMapGameEntity_BouncePad
idSnapMapGameEntity_BouncePadDestination
idSnapMapGameEntity_Callout
idSnapMapGameEntity_Camera
idSnapMapGameEntity_CodexMessage
idSnapMapGameEntity_ComboStart
idSnapMapGameEntity_ControlPoint
idSnapMapGameEntity_Encounter
idSnapMapGameEntity_EncounterList
idSnapMapGameEntity_EndGame
idSnapMapGameEntity_GameplaySettings
idSnapMapGameEntity_HUDSettings
idSnapMapGameEntity_ItemSpawnSettings
idSnapMapGameEntity_Level
idSnapMapGameEntity_Light
idSnapMapGameEntity_Message
idSnapMapGameEntity_Module
idSnapMapGameEntity_Music
idSnapMapGameEntity_NextMapSettings
idSnapMapGameEntity_Objective
idSnapMapGameEntity_ObjectiveSP
idSnapMapGameEntity_ObjectiveSub
idSnapMapGameEntity_Player
idSnapMapGameEntity_Player_Loadout
idSnapMapGameEntity_PlayerCamera
idSnapMapGameEntity_PlayerInput
idSnapMapGameEntity_ScoreSettings
idSnapMapGameEntity_SettingsBase
idSnapMapGameEntity_SnapPoiSettings
idSnapMapGameEntity_Spawner
idSnapMapGameEntity_Spawner_Ammo
idSnapMapGameEntity_Spawner_Backpack
idSnapMapGameEntity_Spawner_Droppable
idSnapMapGameEntity_Spawner_Fx
idSnapMapGameEntity_Speaker
idSnapMapGameEntity_Team
idSnapMapGameEntity_TeleporterDestination
idSnapMapGameEntity_TeleporterPad
idSnapMapGameEntity_TransmissionMessage
idSnapMapGameEntity_WorldText
idSnapMapGameEntityIterator
idSnapMapGameEntityIterator_AI
idSnapMapGameEntityIterator_Player
idSnapMapGameEntityIterator_Team
idSnapMapLensFlare
idSnapMapListener
idSnapMapListener_Activator
idSnapMapListener_AIKilled
idSnapMapListener_CapturePointCaptured
idSnapMapListener_DroppableActivator
idSnapMapListener_IntCompare
idSnapMapListener_IntensityChanged
idSnapMapListener_NumCompare
idSnapMapListener_OnEncounterPercentageReached
idSnapMapListener_OnHealthPercentageReached
idSnapMapListener_OnSnapScoreReached
idSnapMapListener_PlayerEnteredModule
idSnapMapListener_PlayerIncapacitated
idSnapMapListener_PlayerInput
idSnapMapListener_SequencerFired
idSnapMapListener_Simple
idSnapMapListener_SnapAnimEvent
idSnapMapListener_StringCompare
idSnapMapListener_TeamScoreReached
idSnapMapLogic
idSnapMapLogic_Count
idSnapMapLogic_CountDown
idSnapMapLogic_Delay
idSnapMapLogic_Gate
idSnapMapLogic_RandomRelay
idSnapMapLogic_Relay
idSnapMapLogic_Repeater
idSnapMapLogic_Sequencer
idSnapMapLogic_Switch
idSnapMapParticleEmitter
idSnapMapPortal
idSnapMapStaticWaterEntity
idSnapMapUserFilter
idSnapMapVariable
idSoundDoor
idSoundEnvironment
idSoundTrigger
idSpawnArea
idSpawnNode
idSpawnNodeSplines
idSpawnPoint
idSpeaker
idSpeaker_Beam
idSpectatorCamera
idSpitfireCannon
idSplinePath
idSpringCamera
idStaticEntity
idStaticMultiGuiEntity
idStaticVisibilityBlocker
idStaticWaterEntity
idSummoningTemplate
idSyncEntity
idTarget_ActionScript
idTarget_ActivateOutline
idTarget_AdaptiveTickToggle
idTarget_AIEvent
idTarget_AmplitudeTrigger
idTarget_AnimWebChangeState
idTarget_AnimWebChangeStateVia
idTarget_AnimWebPause
idTarget_AnimWebUnpause
idTarget_ApplyExplosionImpulse
idTarget_ApplyImpulse
idTarget_Award_Adrenaline
idTarget_Award_RushAttack
idTarget_BinaryModelController
idTarget_Break
idTarget_ChangeColor
idTarget_ChangeMaterial
idTarget_ChangeVolume_PlayerEnvOverride
idTarget_Cinematic
idTarget_CinematicHud
idTarget_ClearFakeEnemy
idTarget_Codex
idTarget_CollisionDamage
idTarget_Command
idTarget_CompassPOI
idTarget_Conditional
idTarget_ConditionalAccessor
idTarget_Count
idTarget_Count_Random
idTarget_Credits
idTarget_Cvar
idTarget_Damage
idTarget_DeactivateStatusEffects
idTarget_DisableEscMenu
idTarget_Disconnect
idTarget_DummyFire
idTarget_DynamicChallenge_End
idTarget_DynamicChallenge_FailChallenge
idTarget_DynamicChallenge_GiveBonus
idTarget_DynamicChallenge_PointTrigger
idTarget_DynamicChallenge_Start
idTarget_EnableAIEvent
idTarget_EnableGroup
idTarget_EnableTarget
idTarget_EndOfCampaign
idTarget_EndOfClassicDoomLevel
idTarget_EndOfLevel
idTarget_Enemy
idTarget_EquipItem
idTarget_FakeEnemy
idTarget_FireWeapon
idTarget_FirstThinkActivate
idTarget_ForceDormancy
idTarget_ForceGroupRole
idTarget_GameChallengeGameOver
idTarget_GameChallengeSetState
idTarget_GameStateIntInc
idTarget_GameStateIntSet
idTarget_GiveCollectible
idTarget_GiveItems
idTarget_GiveWeaponUpgradePoints
idTarget_GroupExpression
idTarget_GroupMessage
idTarget_GUICommand
idTarget_Hide
idTarget_InteractionAction
idTarget_Intro
idTarget_InventoryCheck
idTarget_LayerStateChange
idTarget_LevelTransition
idTarget_LightController
idTarget_MakeActivatable
idTarget_ModifyGroup
idTarget_ModifyTraversalClass
idTarget_Objective_Complete
idTarget_Objective_Give
idTarget_Objective_HideEntities
idTarget_Objective_Replace
idTarget_Objective_Triggered
idTarget_Path
idTarget_Perk
idTarget_Ping
idTarget_PlayerCheckpoint
idTarget_PlayerInvulnerability
idTarget_PlayerModifier
idTarget_PlayerStatModifier
idTarget_PlayerStatus
idTarget_PlayerViewEffect
idTarget_PlayerWhiplash
idTarget_PlayMovieClip
idTarget_PlayVoiceOver
idTarget_Print
idTarget_RandomImpulse
idTarget_Remove
idTarget_RemoveItems
idTarget_Secret
idTarget_SecurityUnlockChangeState
idTarget_SetGroupCombatStage
idTarget_SetInEncounterGroup
idTarget_SetSpawnSpot
idTarget_ShakeTrigger
idTarget_Show
idTarget_ShowGui
idTarget_Snap_Objective
idTarget_SoundDuck
idTarget_Spawn
idTarget_Spawn_Coop
idTarget_Spawn_Parent
idTarget_Spawn_Target
idTarget_StartSoundShader
idTarget_Subtitle
idTarget_SwapFaction
idTarget_Teleport
idTarget_Test
idTarget_TestActivation
idTarget_TestCommand
idTarget_TestEntity
idTarget_TestEntityBool
idTarget_TestExit
idTarget_TestInstruction
idTarget_TestOverrideStatus
idTarget_TestPlayerState
idTarget_TestScreenCompare
idTarget_TestScreenShot
idTarget_TestShotsFired
idTarget_Timeline
idTarget_Timer
idTarget_TutorialGui
idTarget_TutorialPopupLoadout
idTarget_UnlockArcadeMode
idTarget_UnlockUltraNightmare
idTarget_ViewPos
idTarget_VoiceCommunication
idTargetSpawnGroup
idTeamCapturePoint
idTeleporterPad
idTest_AimPoint
idTest_ConeConstraint
idTest_MetaData_Bounds
idTest_MetaData_Circle
idTest_MetaData_Cylinder
idTest_MetaData_Cylinder2
idTest_MetaData_Fov
idTest_MetaData_FovPitch
idTest_MetaData_FovYaw
idTest_MetaData_Line
idTest_MetaData_Model
idTest_MetaData_MoveableSpheres
idTest_MetaData_Plane
idTest_MetaData_SectorPitch
idTest_MetaData_SectorYaw
idTest_MetaData_String
idTest_MetaData_Target
idTest_MetaData_WebPath
idTest_RandomAimPoint
idTest_RotationTracker
idTest_Sector
idTestEntity
idTestModel2
idTrailerCamera
idTrigger
idTrigger_AIInteraction
idTrigger_BouncePad
idTrigger_CoopSafeZone
idTrigger_Damage
idTrigger_DummyFire
idTrigger_DynamicHurt
idTrigger_EnergyField
idTrigger_Facing
idTrigger_ForcePlayerBodyReactionOnce
idTrigger_Hurt
idTrigger_Multiplayer
idTrigger_PlayerHud_PlayMovieClip
idTrigger_Push
idTrigger_RemoveEntities
idTrigger_RemoveInventoryItems
idTrigger_Repulsor
idTrigger_TakeDamage
idTrigger_Teleporter
idTrigger_TestPlayerState
idTrigger_VoiceCommunication
idTriggerToucher
idTumbleWeed
idTurret
idUmbraVolume
idUtilityCamera
idVectorFieldEntity
idVolume
idVolume_AREntity
idVolume_Blocking
idVolume_ControlPointSpawnInfluence
idVolume_CustomLedgeGrab
idVolume_Damage
idVolume_DamageOverTime
idVolume_DemonicBait
idVolume_DemonicPossession
idVolume_DeployedLaser
idVolume_Domination
idVolume_EmpField
idVolume_EnvironmentHazard
idVolume_Flight
idVolume_ForceDormant
idVolume_Gravity
idVolume_HandsEnvironmentalReaction
idVolume_Inhibit_AIDirector_Spawning
idVolume_InvalidDemonDropZone
idVolume_ItemGroup
idVolume_KillDownedInjured
idVolume_LocationCalling
idVolume_MancubusSteam
idVolume_MancubusSteamFX
idVolume_MatterBallCore
idVolume_MatterBallWarp
idVolume_OliviasGuardFight_DangerZone
idVolume_PauseArcadeModeFuse
idVolume_PlasmaPuddle
idVolume_PlasmaPuddleFX
idVolume_PlayerBodyReaction
idVolume_PlayerEnvOverride
idVolume_PlayerUseProxy
idVolume_PlayerViewEffect
idVolume_RevivePlayer
idVolume_RunCycleHint
idVolume_RuneHint
idVolume_Safehouse_Sensor
idVolume_Safehouse_Shield
idVolume_SecretHint
idVolume_Sector
idVolume_Siphon
idVolume_SnapLockdownDoor
idVolume_SoulDrop
idVolume_SpaceWarp
idVolume_Stairs
idVolume_StealthField
idVolume_ToggleableDamageOverTime
idVolume_Trigger
idVolume_Trigger_Editable
idVolume_Trigger_Editable_Damageable
idVolume_VirtualGUI
idWaterEntity
idWaterRippleEmitter
idWaveShield
idWeaponEntity
idWorldClipBounds
idWorldDestructibleEntity
idWorldspawn
Entities

Entities List (Doom Eternal)

An incomplete list of known entity classes in Doom Eternal:

idAASObstacle
idAASReachability
idAbnormalPlayerMetrics
idActionNode
idActor
idActorAmbientFilter
idActorWorkNode
idAFEntity_Corpse
idAFEntity_Dummy
idAFEntity_Generic
idAFEntity_GetUpTest
idAI2
idAIAASHint
idAICombatHint
idAICombatHint_SuppressionFirePoint
idAIDeathVolume
idAIDebugCamera
idAIHint
idAIHintGroup
idAIInteraction
idAIMapMarkupEntity
idAISearchHintAnimation
idAISearchHintAuto
idAISearchHintGroup
idAITest
idAITest_Rotation
idAlignedEntity
idAmbientNodeExclusionArea
idAmbientNodeGenerationArea
idAmbientTriggerModifier_SetAITypes
idAnimated
idAnimated_AnimWeb
idAnimated_AnimWeb_Samuel
idAnimated_ThreatSensor
idAnimatedAttachment
idAnimatedAttachment_AF
idAnimatedEntity
idAnimatedInteractable
idAnimatedSimple_AnimSys
idAnimatedSimple_Faust
idAnimCamera
idAnimNode
idAnnouncementManager
idArchvileTemplate
idAutomapMapGroupRevealEntity
idAutomapSectionRevealTrigger
idBarricade
idBasePropSpawner
idBFG_Geyser
idBfgBurn
idBillboard
idBloatedEntity
idBossInfo
idBotActionEntity
idBotActionEntity_Info
idBotActionEntity_Info_POI
idBotActionEntity_Info_RoamGoal
idBotActionEntity_Usable
idBotPathNodeEntity
idBreakable
idBreakablePlatform
idBuildArea
idCamera
idCameraView
idCampaignInvaderStart
idCaptureFrames
idCinematicCamera
idCollectibleEntity
idCollisionExclusionVolume
idCollisionStreamArea
idCombatGrouping
idCombatVolume
idCoopStartingInventory
idCrusher
idCyberdemonMissileShooter
idDamageableAttachment
idDeathmatchPlayerStart
idDebrisEntity
idDecalEntity
idDecalEntity_Coop
idDemonPlayer
idDemonPlayer_Arachnotron
idDemonPlayer_Archvile
idDemonPlayer_Baron
idDemonPlayer_Cacodemon
idDemonPlayer_Mancubus
idDemonPlayer_Marauder
idDemonPlayer_PainElemental
idDemonPlayer_Pinky
idDemonPlayer_Prowler
idDemonPlayer_Revenant
idDemonPlayer_Summoner
idDemonPlayerStart
idDestroyableProp
idDestructible
idDestructibleManager
idDynamicEntity
idDynamicEntity_Damageable
idDynamicVisibilityBlocker
idEditorModelEntity
idElectricBoltEmitter
idEncounterAmbientAudio
idEncounterGroupMgr
idEncounterManager
idEncounterModifier_Reset
idEncounterModifier_SetEnabledState
idEncounterModifier_SetNextScriptIndex
idEncounterTrigger_AmbientAIAudio
idEncounterTrigger_Commit
idEncounterTrigger_Exit
idEncounterTrigger_OverrideCombatGrouping
idEncounterTrigger_PreCombat
idEncounterTrigger_RaiseUserFlag
idEncounterVolume_ValidCover
idEnergyShell
idEngineEntity
idEntity
idEntityCamera
idEntityFx
idEntityFxRandom
idEnvArea
idEnvironmentalDamage_Hurt_Trigger
idEnvironmentalDamage_Point
idEnvironmentalDamage_PointManager_Trigger
idEscapePod
idExtraLifeTeleportLocation
idFlightVolumeTraversalSpline
idFreeCamera
idFreeDbgCam
idFuncRotate
idFuncShadowCaster
idFuncSwing
idGameChallenge
idGameChallenge_CampaignSinglePlayer
idGameChallenge_Horde
idGameChallenge_PVP
idGameChallenge_PVPTutorial
idGameChallenge_Shell
idGeomCacheEntity
idGladiatorShield
idGoreEntity
idGuiEntity
idGuiEntity_Cinematic
idGuiEntity_Text
idHeightmapVolumeEntity
idHighlightBehavior
idHighlightBehavior_Augment
idInfluenceSpawnSettings
idInfo
idInfo_BounceDestination
idInfo_DoorTraversalChain
idInfo_FastTravel
idInfo_SpawnConditionProxy
idInfo_TeleportDestination
idInfo_TraversalBase
idInfo_TraversalChain
idInfo_TraversalPoint
idInfo_Trigger_Facing_Target
idInfo_UniversalTraversal
idInfoAAS
idInfoAmbient
idInfoBounds
idInfoCloudShot
idInfoCover
idInfoCoverExposed
idInfoDebugMarker
idInfoExportHint
idInfoFlightVolumeEntrance
idInfoFocus
idInfoGoalPosition
idInfoLevelFadeIn
idInfoLookTarget
idInfoLookTargetGroup
idInfoOrbit
idInfoPath
idInfoPlayerHud
idInfoRoam
idInfoRuler
idInfoSpawnPoint
idInfoSplineChild
idInfoStandPoint
idInfoTexLod
idInfoTraversal
idInfoTraversal_Bot
idInfoTraversal_Ultimate
idInfoTraversalEndPoint
idInfoWaitForButtonAfterLoad
idInteractable
idInteractable_Automap
idInteractable_BatterySocket
idInteractable_Challenge_Shrine
idInteractable_CollectibleViewer
idInteractable_CurrencyExchange
idInteractable_Doom
idInteractable_EliteGuard
idInteractable_EliteGuard_Coop
idInteractable_GiveItems
idInteractable_GoreBud
idInteractable_GoreNest
idInteractable_HighlightSelector
idInteractable_JukeBox
idInteractable_LootCrate
idInteractable_LootDrop
idInteractable_Minigame
idInteractable_Moveable
idInteractable_NightmareMarker
idInteractable_Obstacle
idInteractable_Respec
idInteractable_Rune
idInteractable_Shooter
idInteractable_SlayerGate
idInteractable_SlayerGate_Coop
idInteractable_SonicBoost
idInteractable_Tutorial
idInteractable_VegaTraining
idInteractable_WeaponModBot
idInteractable_WorldCache
idInteractionCamera
idInvasionAreaManager
idInvasionBlocker
idInventoryStorage
idIOS_MeteorCrater
idItemPropSpawner
idJostleAnimated
idJostleSpring
idJostleSwivel
idLensFlare
idLight
idLogicEntity
idLowGravityMover
idMidnightCutscene
idMover
idMoverModifier
idMultiplayerTrigger
idMusicEntity
idNetworkedEntityFx
idNetworkedParticleEmitter
idNetworkLight
idObjective_Relay
idOverTheShoulderCamera
idParticleEmitter
idPathCorner
idPerceptionVolume
idPhotoModeCamera
idPieceEmitter
idPlayer
idPlayerStart
idPortalSurface
idPortalWorld
idPoseableEntity
idProjectile
idProjectile_AIHomingRocket
idProjectile_Auger
idProjectile_BfgArc
idProjectile_BfgBurn
idProjectile_CacoDemonRocket
idProjectile_CyberdemonSwarmMissile
idProjectile_DamageOverTime
idProjectile_Destroyer
idProjectile_EMP
idProjectile_Grenade
idProjectile_GrenadeFast
idProjectile_Mancubus_Smoke
idProjectile_MeatHook
idProjectile_Rocket
idProjectile_RollingFire
idProjectile_SiphonGrenade
idProjectile_SwarmMissile
idProjectile_SwarmMissile_V2
idProjectileShield
idProp
idProp_AIArmor
idProp_ArmorPickup
idProp_Breakable
idProp_BreakableLoot
idProp_ContinuallyUsed
idProp_Coop
idProp_Coop_Billboard
idProp_DemonCircle
idProp_ElectricArmor
idProp_Explosive
idProp_HealthPickup
idProp_Moveable
idProp_OnlineCollectible
idProp_Pickup
idProp_PlayableDemonCircle
idProp_Spawnable
idProp_Static
idProp_Usable
idProp_WeaponPickup
idProp_WeaponStatic
idProp2
idPurifyingBeam
idReferenceMap
idRegenArea
idResurrectionProxy
idRibbon2Emitter
idRiftBuildPosition
idRotatableCamera
idSlowMotionCamera
idSoundAreaEntity
idSoundBeamEntity
idSoundBoxEntity
idSoundEntity
idSoundPrefetchEntity
idSoundSphereEntity
idSoundSubtitlesEntity
idSoundTrigger
idSpawnArea
idSpawnNode
idSpawnNodeSplines
idSpawnPoint
idSpectacleCamera
idSpectatorCamera
idSpitfireCannon
idSplinePath
idSpringCamera
idStaticEntity
idStaticMultiGuiEntity
idStaticVisibilityBlocker
idStaticWaterEntity
idSummoningTemplate
idSyncEntity
idTarget
idTarget_ActionScript
idTarget_AdaptiveTickToggle
idTarget_AIEvent
idTarget_AIGlobalSettings
idTarget_AIProxy
idTarget_AmplitudeTrigger
idTarget_AnimWebChangeState
idTarget_AnimWebChangeStateVia
idTarget_AnimWebPause
idTarget_AnimWebUnpause
idTarget_ApplyExplosionImpulse
idTarget_ApplyImpulse
idTarget_Award_Adrenaline
idTarget_Award_RushAttack
idTarget_Break
idTarget_ChangeColor
idTarget_ChangeMaterial
idTarget_ChangeVolume_PlayerEnvOverride
idTarget_ClearFakeEnemy
idTarget_Codex
idTarget_CollisionDamage
idTarget_Command
idTarget_Conditional
idTarget_ConditionalAccessor
idTarget_Count
idTarget_Count_Random
idTarget_Credits
idTarget_CurrencyCheck
idTarget_Cvar
idTarget_Damage
idTarget_DeactivateStatusEffects
idTarget_DemonBountyAiTypes
idTarget_DevLoadoutSwap
idTarget_DisableEscMenu
idTarget_DisableInvasion
idTarget_Disconnect
idTarget_Disconnect_GoToScreen
idTarget_DormancyRadius
idTarget_DummyFire
idTarget_DynamicChallenge_End
idTarget_DynamicChallenge_FailChallenge
idTarget_DynamicChallenge_GiveBonus
idTarget_DynamicChallenge_PointTrigger
idTarget_DynamicChallenge_Start
idTarget_EnableAIEvent
idTarget_EnableGroup
idTarget_EnableTarget
idTarget_EncounterChallenge
idTarget_EndInvasion
idTarget_EndOfCampaign
idTarget_Enemy
idTarget_EquipItem
idTarget_FadeComplete
idTarget_FakeEnemy
idTarget_FastTravelInhibit
idTarget_FastTravelUnlock
idTarget_FireWeapon
idTarget_FirstThinkActivate
idTarget_ForceDormancy
idTarget_ForceGroupRole
idTarget_GameChallengeGameOver
idTarget_GameStateIntInc
idTarget_GameStateIntSet
idTarget_GeomCacheStreamer
idTarget_GiveItems
idTarget_GiveWeaponUpgradePoints
idTarget_GroupExpression
idTarget_GroupMessage
idTarget_GUICommand
idTarget_Hide
idTarget_HideHands
idTarget_InteractionAction
idTarget_Intro
idTarget_InventoryCheck
idTarget_LayerStateChange
idTarget_LevelTransition
idTarget_LightController
idTarget_MakeActivatable
idTarget_MapGroupUnlock
idTarget_Melee
idTarget_ModifyGroup
idTarget_ModifyTraversalClass
idTarget_Notification
idTarget_Objective_Complete
idTarget_Objective_Give
idTarget_Objective_HideEntities
idTarget_Objective_Replace
idTarget_Objective_Triggered
idTarget_Path
idTarget_Perk
idTarget_Ping
idTarget_PlayerCheckpoint
idTarget_PlayerInvulnerability
idTarget_PlayerModifier
idTarget_PlayerStatModifier
idTarget_PlayerStatus
idTarget_PlayerViewEffect
idTarget_PlayerWhiplash
idTarget_PlayVoiceOver
idTarget_PodiumSpawn
idTarget_POI
idTarget_Print
idTarget_RandomImpulse
idTarget_Remove
idTarget_RemoveItems
idTarget_RemoveSaveGate
idTarget_Secret
idTarget_SetGroupCombatStage
idTarget_SetInEncounterGroup
idTarget_SetSpawnSpot
idTarget_ShakeTrigger
idTarget_Show
idTarget_ShowGui
idTarget_ShowHands
idTarget_Snap_Objective
idTarget_SoundDuck
idTarget_Spawn
idTarget_Spawn_Parent
idTarget_Spawn_Target
idTarget_StartSoundShader
idTarget_Subtitle
idTarget_SwapFaction
idTarget_SwapNavMesh
idTarget_Teleport
idTarget_TestPlayerState
idTarget_Timeline
idTarget_Timer
idTarget_TutorialGui
idTarget_UnlockUltraNightmare
idTarget_ViewPos
idTarget_VisibilityController
idTargetSpawnGroup
idTeamCapturePoint
idTeleporterPad
idTendrilEye
idTest_MetaData_Bounds
idTest_MetaData_Circle
idTest_MetaData_Cylinder
idTest_MetaData_Cylinder2
idTest_MetaData_Fov
idTest_MetaData_FovPitch
idTest_MetaData_FovYaw
idTest_MetaData_Line
idTest_MetaData_Model
idTest_MetaData_MoveableSpheres
idTest_MetaData_Plane
idTest_MetaData_SectorPitch
idTest_MetaData_SectorYaw
idTest_MetaData_String
idTest_MetaData_Target
idTest_MetaData_WebPath
idTest_Sector
idTestEntity
idTestModel2
idTexlodNodeGenerationArea
idToucher
idTrailerCamera
idTrigger
idTrigger_AIInteraction
idTrigger_BouncePad
idTrigger_ChallengeBoundry
idTrigger_Damage
idTrigger_DemonDamageOutModifier
idTrigger_Dormancy
idTrigger_DummyFire
idTrigger_DynamicHurt
idTrigger_EnergyField
idTrigger_Facing
idTrigger_ForcePlayerBodyReactionOnce
idTrigger_GorillaBar
idTrigger_Hurt
idTrigger_InvasionAreaEnter
idTrigger_InvasionAreaExit
idTrigger_ModPlayerVelocity
idTrigger_MovementModifier
idTrigger_Multiplayer
idTrigger_Push
idTrigger_RemoveEntities
idTrigger_RemoveInventoryItems
idTrigger_Repulsor
idTrigger_SonicBoom
idTrigger_StatDrivenEvent
idTrigger_TakeDamage
idTrigger_Teleporter
idTrigger_Teleporter_Fade
idTrigger_TestPlayerState
idTrigger_VisibilityController
idTrigger_VoiceCommunication
idTriggerToucher
idTurret
idUmbraVisibilityContributionVolume
idUmbraVolume
idUtilityCamera
idVolume
idVolume_Blocking
idVolume_ControlPointSpawnInfluence
idVolume_CustomLedgeGrab
idVolume_Damage
idVolume_DamageOverTime
idVolume_DemonicBait
idVolume_DemonicPossession
idVolume_DeployedLaser
idVolume_DoomGravity
idVolume_EmpField
idVolume_Flight
idVolume_FlightObstacle
idVolume_ForceDormant
idVolume_Gravity
idVolume_Invasion
idVolume_InvasionInhibit
idVolume_InvasionSpawnZone
idVolume_KillDownedInjured
idVolume_LightRigModifier
idVolume_LocationCalling
idVolume_MancubusFlamethrower
idVolume_MancubusSteam
idVolume_MancubusSteamFX
idVolume_MatterBallWarp
idVolume_OliviasGuardFight_DangerZone
idVolume_PlacedFlightVolume
idVolume_PlasmaPuddle
idVolume_PlasmaPuddleFX
idVolume_PlayerBodyReaction
idVolume_PlayerEnvOverride
idVolume_PlayerUseProxy
idVolume_PlayerViewEffect
idVolume_RevivePlayer
idVolume_RunCycleHint
idVolume_RuneHint
idVolume_SecretHint
idVolume_Siphon
idVolume_SpaceWarp
idVolume_Stairs
idVolume_StatusEffect
idVolume_StealthField
idVolume_StreamTreeMarkup
idVolume_ToggleableDamageOverTime
idVolume_TogglePlayerBodyReaction
idVolume_TraversalGen
idVolume_Trigger
idVolume_VisualImpairment
idWaterEntity
idWaveShield
idWeaponEntity
idWorldClipBounds
idWorldspawn
jakesDevWidget
Entities

idAI2

An entity for AI/NPCs, usually demons.

idAI2 can be individually placed throughout a map, or more preferably, spawned with an idTarget_Spawn. The exact ai type of the idAI2 can be checked by looking at the inherit parameter.

Eternal

entity {
	layers {
		"spawn_target_layer"
	}
	entityDef example_ai_soldier_eternal {
	inherit = "ai/fodder/soldier_blaster";
	class = "idAI2";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = true;
	disableAIPooling = false;
	edit = { // See "struct idAI2 : public idActor"
		highlightDecl = "glorykill_highlight";
		clipModelInfo = {
			type = "CLIPMODEL_BOX";
			size = {
				x = 0.600000024;
				y = 0.600000024;
				z = 1.829;
			}
		}
		dormancy = {
			delay = 30;
			distance = 19.5070019;
		}
		spawn_statIncreases = { // Increase these stats on spawn
			num = 1;
			item[0] = {
				stat = "STAT_AI_SPAWNED";
				increase = 1;
			}
		}
		targetingDecl = "characters/soldier_blaster"; // Targeting Decl ( defines specific aim assist / AR target points )
		actorConstants = { // See "struct idActor::idActorConstant"
			perception = {
				eyeOffset = { // offset of eye relative to physics origin {{ units = m }}
					z = 1.71500003;
				}
				crouchedEyeOffset = { // eye offset when crouched {{ units = m }}
					z = 1.06700003;
				}
			}
			actorSounds = {
				sndFootsteps = "footsteps/hellified_soldier/hs_footstep";
				sndRagdollStart = "play_hell_soldier_death_short";
			}
			footstepEffectTable = "impacteffect/footsteps/ai_soldier";
			footstepEvents = "footstepevents/default";
			painInfo = {
				decayDelay = 1000; // delay for the decay, in game ticks.
				bucketMaxValue = 400; // the max value for the leaky bucket
				decayRate = -20; // the decay rate for the bucket
			}
			bulletPenetrationData = {
				energyCostToPenetrate = 10; // costs this much penetration energy to penetrate this actor
				damageScaleToPenetrate = 0.75; // bullet damage is scaled by this amount after penetrating
			}
			footstepEffectTable_Sprint = "impacteffect/footsteps/ai_soldier_sprint";
			footstepEffectTable_SlowWalk = "impacteffect/footsteps/ai_soldier";
			footstepEffectTable_CrouchWalk = "impacteffect/footsteps/ai_soldier";
			footstepEffectTable_Landing = "impacteffect/footsteps/ai_soldier_landing";
			footstepEffectTable_HeavyLanding = "impacteffect/footsteps/ai_soldier_landing";
			ledgeGrabEffectTable = "impacteffect/footsteps/ai_soldier";
			ledgeGrabEffectTable_Heavy = "impacteffect/footsteps/ai_soldier";
			ledgeGrabEffectTable_Friendly = "impacteffect/footsteps/ai_soldier";
			ledgeGrabEffectTable_FriendlyHeavy = "impacteffect/footsteps/ai_soldier";
		}
		actorEditable = { // See "struct idActor::idActorEditable"
			entityDamageComponent = { // names of joint groups, their associated damage scale, and armor level
				entityDamage = "entitydamage/ai/soldier_blaster/base";
			}
			injuredStates = { // defines parameters of each injured state, see "struct idInjuredState"
				num = 1;
				item[0] = {
					name = "not_injured";
					damageGroupMaxGoreLevels = {
						num = 6;
						item[0] = {
							damageGroupName = "head";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
						item[1] = {
							damageGroupName = "chest";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
						item[2] = {
							damageGroupName = "right_arm";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
						item[3] = {
							damageGroupName = "left_arm";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
						item[4] = {
							damageGroupName = "right_leg";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
						item[5] = {
							damageGroupName = "left_leg";
							maxGoreLevel = "GORELEVEL_TATTERED";
						}
					}
					allowIK = true; // true if AI uses IK in this injured state
					canUseAllTraversalsWhileInjured = true; // true if AI can use all traversals in this injured state
					canUseDownTraversalsWhileInjured = true; // true if AI can use down traversals in this injured state
				}
			}
			radiusDamageJoints = { // names of joints to trace to for radius damage tests
				num = 6;
				item[0] = "head_part01_md";
				item[1] = "spine_part01_md";
				item[2] = "arm_hand_lf";
				item[3] = "arm_hand_rt";
				item[4] = "leg_lower_lf";
				item[5] = "leg_lower_rt";
			}
		}
		factionName = "blaster";
		mass = 18.1439991; // mass of the actor {{ units = kg }}
		lootable = false;
		lootDropComponent = { // lootdrop decl for campaign
			lootDropDataDecl = "ai/default_fodder";
		}
		pvpLootDropComponent = { // lootdrop decl for Battlemode
			lootDropDataDecl = "ai/default_fodder_pvp";
		}
		aiConstants = { // See "struct idAI2::idAIConstant"
			components = {
				ptr = {
					ptr[12] = {
						componentDecl = "aicomponent/pathmanager/base";
					}
					ptr[14] = {
						componentDecl = "aicomponent/attack/base";
					}
					ptr[9] = {
						componentDecl = "aicomponent/positionawareness/soldier_blaster/base";
					}
					ptr[10] = {
						componentDecl = "aicomponent/extendedsense/soldier_blaster/base";
					}
					ptr[11] = {
						componentDecl = "aicomponent/transientfocus/soldier_blaster/base";
					}
					ptr[13] = {
						componentDecl = "aicomponent/soldier_blaster";
					}
				}
			}
			syncMelee = { // See "struct idSyncAttack"
				msAfterAttackBeforeCanSync = 250; // how long after a regular attack before a sync attack can be performed
				syncMeleeEntityDefs = { // entityDef decls for syncmelee
					num = 2;
					item[0] = "syncmelee/soldier_blaster";
					item[1] = "syncmelee/soldier_blaster_3p";
				}
				syncGroups = { // See "struct idSyncAttack"
					num = 1;
					item[0] = {
						syncGroupName = "";
						syncInteractions = { // syncInteraction decls
							num = 19;
							item[0] = "syncdeath/playervsai/soldier_blaster/right_upper";
							item[1] = "syncdeath/playervsai/soldier_blaster/left_upper";
							item[2] = "syncdeath/playervsai/soldier_blaster/front_upper";
							item[3] = "syncdeath/playervsai/soldier_blaster/front_head";
							item[4] = "syncdeath/playervsai/soldier_blaster/left_lower";
							item[5] = "syncdeath/playervsai/soldier_blaster/above_back";
							item[6] = "syncdeath/playervsai/soldier_blaster/above_front";
							item[7] = "syncdeath/playervsai/soldier_blaster/front_rightarm";
							item[8] = "syncdeath/playervsai/soldier_blaster/front_leftarm";
							item[9] = "syncdeath/playervsai/soldier_blaster/berserk/berserk_above_front";
							item[10] = "syncdeath/playervsai/soldier_blaster/chainsaw/cut_back";
							item[11] = "syncdeath/playervsai/soldier_blaster/back_lower";
							item[12] = "syncdeath/playervsai/soldier_blaster/chainsaw/cut_front";
							item[13] = "syncdeath/playervsai/soldier_blaster/berserk/berserk_front_upper";
							item[14] = "syncdeath/playervsai/soldier_blaster/right_lower";
							item[15] = "syncdeath/playervsai/soldier_blaster/back_upper";
							item[16] = "syncdeath/playervsai/soldier_blaster/crucbile/crucible_front";
							item[17] = "syncdeath/playervsai/soldier_blaster/crucbile/crucible_back";
							item[18] = "syncdeath/playervsai/soldier_blaster/front_lower";
						}
					}
				}
				alwaysAllowChainsawGloryKill = true; // if true then always allow chainsaw glory kills without needing stagger states or other such things
			}
			aiDeathStat = "STAT_HELL_MARINE_KILLED"; // what stat to increase on death of this ai
			positioningParms = { // parms used to control major positioning in behaviour finite state machine
				num = 2;
				item[0] = "soldier_blaster/plasma";
				item[1] = "soldier_blaster/plasma_object";
			}
			aiDeathCodex = "codex/hell/demon_soldier_blaster"; // what codex to give the player when this ai dies
		}
		aiEditable = { // See "struct idAIEditable"
			perception = { // See "struct idAIPerception"
				actorPerceptionRadius = 39; // max radius at which AI can perceive other actors {{ units = m }}
				obstaclePerceptionRadius = 78; // max radius at which AI can perceive obstacles {{ units = m }}
				closePerceptionRadius = 5; // max radius .... for close FOV {{ units = m }}
				eventPerceptionRadius = 39; // max radius at which AI will perceive any events {{ units = m }}
				senseUpdatesOnNonEnemies = false; // if true, AI will skip all worldstate updates for non-enemies
			}
			useTouchComponent = true;
			death = { // See "struct idAIEditable::idAIDeath"
				ignoreDamageType = "DAMAGETYPE_EMP"; // entity will not take any damage from any damage decl that ANDs with this value
				fadeOutAfterDeathDelay_Seconds = { // delay burn-away fx until at least after this much time ( 0 uses default, negative implies never )
					value = 3;
				}
				removeAfterFadeOutDelay_Seconds = { // remove the entity this long after burn away fx start
					value = 3;
				}
				canBecomeInjured = false; // if true, AI can become injured and use injured runs and idles
				explosionDecl = "ai/default";
				declTwitchPain = "twitchpain/soldier_blaster";
				deathAnim = ""; // animation to force on death
				trigger = ""; // idEntity to trigger on death
				triggerGloryKill = ""; // idEntity to trigger on death by glory kill
				triggerNonGloryKill = ""; // idEntity to trigger on death by normal kill
				onlyDieByGK = false; // true if the AI will only die as a result of receiving sync damage (glory killed)
			}
			movement = { // See "struct idAIEditable::idAIMovement"
				wanderRadius = 19.5070019; // how far an AI can randomly wander from its spawn position {{ units = m }}
				useTraversalClassA = true; // if true, can use class A traversals
			}
			cover = { // See "struct idAIEditable::idAICoverInfo"
				coverRadius = 19.5070019; // max radius at which the AI will check for cover {{ units = m }}
			}
			behaviors = { // See "struct idAIBehaviors"
				decl = "behaviors/soldier_blaster/soldier_blaster"; // the behavior typeinfo decl this behavior uses.
				declBehaviorEvents = "behaviorevents/default"; // AI events
				attackGraph = "ai/soldier_blaster"; // available attacks
			}
			vsAIDamageMask = "HEALTH"; // damageCategoryMask_t; how to process damage taken from other AI
			spawnSettings = { // Refer to "struct idAIEditable::idAISpawn"
				entranceAnimPath = "animweb/characters/monsters/soldier_blaster/spawn/teleport_entrance"; // initial animation to play specified via animref if entranceAnim not given
				spawnFXEntityDef = "fx/spawn_in_fodder"; // entity def for fx to use when spawned with AIOVERRIDE_TELEPORT
				initialState = "AIOVERRIDE_TELEPORT"; // initial valye for aiStateOverride_t; can be overwritten in the spawn target
				teleportDelayMS = 750; // How long it takes to spawn in when using AIOVERRIDE_TELEPORT
				chanceMissingArmor = { // See "struct idAIEditable::idAIMissingArmor"
					num = 0;
					item[0] = {
						damageGroup = "head"; // damage group whose armour may or may not be there
						missingChance = 100; // 0-100 % chance that armour is missing
					}
				}
			}
			demonTeamInfo = {
				canHostLostSouls = true;
			}
			staggerEnabled = true; // Set to false to disable staggering
		}
		aiHealth = { // Refer to "struct idHealthT < aiHealthComponent_t , AI_HEALTH_MAX , AI_HEALTH_HITPOINTS >"
			components = {
				components[1] = {
					max = 0; // Max regen allowed
					regenInterval = { // interval, in seconds, between regen updates.
						value = 0;
					}
				}
				components[0] = {
					max = 400; // Max HP allowed
					starting = 400; // HP when spawned
				}
			}
		}
		goreComponent = { // See "struct idGoreComponent"
			goreContainer = "ai/fodder/soldier"; // gore component decl
		}
		afProperties = { // See "struct idAnimator_AF : public idAnimator_Base"
			impactEffectTable = "impacteffect/ragdoll/ragdoll_fodder"; // impact table for sound and particles
			articulatedFigure = "characters/monsters/soldier_blaster_auto"; // the articulated figure decl to use
		}
		renderModelInfo = {
			model = "md6def/characters/monsters/soldier_blaster/base/soldier_blaster.md6"; // md6def decl to use
			lightRigDecl = "soldier_blaster/soldier_blaster_default";
			materialRemap = { // Use to replace the textures on a per entity basis
				num = 0;
			}
		}
		fxDecl = "character/hellified_soldier_blaster/hellified_soldier_blaster"; // fx decl for this entity
		startingInventory = { // See "struct idInventoryAttachmentDef"
			num = 2;
			item[0] = {
				startSlot = "EQUIPPED"; // startingSlot_t; EQUIPPED, HOLSTERED, or BACKPACK
				inventoryDecl = "weapon/ai/soldier_blaster/plasma"; // inventory decl for this attachment
			}
			item[1] = {
				showHolstered = false; // if true, attach and show the item when it's holstered
				inventoryDecl = "weapon/ai/soldier_blaster/plasma_slug";
			}
		}
		walkIKDecl = "walkik/biped_base";
		killerNames = { // What to string display when killed by this entity
			num = 1;
			item[0] = "#str_decl_demoncard_summon_fodder_blaster_soldier_name_GHOST53375";
		}
		spawnPosition = {
			x = -74.8000107;
			y = 181.34996;
			z = -1626.30005;
		}
		flags = {
			hide = true;
		}
	}
}
}
Entities

idArchvileTemplate

An entity to control what ai types an Archvile can summon.

Usage

entity {
	entityDef example_archvile_template {
	class = "idArchvileTemplate";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		summonList = { // List of ai types to spawn
			aiSpawnTypeList = {
				num = 10;
				item[0] = "ENCOUNTER_SPAWN_PROWLER";
				item[1] = "ENCOUNTER_SPAWN_HELL_KNIGHT";
				item[2] = "ENCOUNTER_SPAWN_MANCUBUS";
				item[3] = "ENCOUNTER_SPAWN_REVENANT";
				item[4] = "ENCOUNTER_SPAWN_CARCASS";
				item[5] = "ENCOUNTER_SPAWN_DREAD_KNIGHT";
				item[6] = "ENCOUNTER_SPAWN_CACODEMON";
				item[7] = "ENCOUNTER_SPAWN_PAIN_ELEMENTAL";
				item[8] = "ENCOUNTER_SPAWN_CYBER_MANCUBUS";
				item[9] = "ENCOUNTER_SPAWN_ARACHNOTRON";
			}
		}
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
	}
}
}

See Also

 

Entities

idGuiEntity_Text

An entity that displays text in the world.

Example

entity {
	entityDef sample_text { // name of the entity
	inherit = "gui/text";
	class = "idGuiEntity_Text";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noknockback = false;
		}
		renderModelInfo = {
			model = "editors/models/gui_text.lwo";
			scale = { // size of the entity
				x = 10;
				y = 10;
				z = 10;
			}
		}
		clipModelInfo = {
			type = "CLIPMODEL_NONE";
		}
		swf = "swf/guientity/generic_text.swf";
		spawnPosition = { // location of where the entity will appear
			x = 1;
			y = 1;
			z = 1;
		}
		spawnOrientation = { // direction the entity will face
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 0;
					y = 1;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		dormancy = {
			allowDistanceDormancy = false;
			allowDormancy = false;
			allowPvsDormancy = false;
		}
		dynamicMoveActive = true;
		swfScale = 0.02; // size of the string
		bodyText = {
			text = "Sample Text"; // the string itself
		}
		headerText = { // Use if using generic_text.swf and without bodyText
			text = "Text\nWith\nLine\nBreaks"; // enter text here
			color = {
				r = 1;
				g = 1;
				b = 1;
			}
			relativeWidth = 1; // the width of the text relative to the swf (eg. generic_text = 1.0, generic_text_wide = 1.95)
			alignment = "SWF_ET_ALIGN_CENTER"; // Text alignment; SWF_ET_ALIGN_LEFT, SWF_ET_ALIGN_RIGHT, SWF_ET_ALIGN_CENTER, or SWF_ET_ALIGN_JUSTIFY
		}                                      
		billboard = true; // if true, the text entity will always face the player
	}
}
}

String customization applies to both BLANG files and idGuiEntity_Text entities.

See Also

Entities

idMover

An entity that can move around on pre-programmed paths, and also scripted to move around from timelines.

Note: This page was originally written by Chrispy. It was recovered from the now-deleted idTech 7 wiki, and copied here for preservation. This information may be incomplete and needs further details to expand upon it.

idMover Entity

Most of the things you see in the game that are moving are idMovers, except for ai, physics props, and a group of entity types may also move (idFuncSwing, idFuncRotate, etc) but in very limited ways.

Movers, like all entities, can have an arbitrary collisionmodel / rendermodel, or none at all. They can be used along with binding and the scripted movement events (moveTo) to create complex moving objects.

Within Movers you may define a scripted sequence of movements that will be executed when the mover is activated by another entity, or may activate immediately on spawn. The sequence can happen once, or loop.

Things you can do with idMover include:

  1. offsetOrientation - Rotate by Angles (roll, pitch,yaw)
  2. offsetDestination - Move by offset (X Y Z units from current position)
  3. destinationEntity(sp?) - Move to an entities current position.
  4. Activate a list of entities when a scripted movement starts, or ends.
Entities

idMusicEntity

Music Entities are used to play music in the level.

Usage:

entity {
	entityDef sound_sound_musicentity_1 {
	inherit = "sound/musicentity";
	class = "idMusicEntity";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		spawnPosition = {
			x = 1;
			y = 1;
			z = 1;
		}
		initialState = "music_ghost_states/main_ambient"; // music state when level first loads
		initialSwitchGroup = "music_ghost_switch";
		initialSwitchState = "intro_music"; // level music
	}
}
}

> This Music Entity will play ambient music from Hell on Earth.


Not all Music Entities are structured the exact same way.
The music for Super Gore Nest, Mars Core, and the Hub have their usage shown below:

entity {
	entityDef sound_sound_musicentity_2 {
	inherit = "sound/musicentity";
	class = "idMusicEntity";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		spawnPosition = {
			x = 1;
			y = 1;
			z = 1;
		}
		initialState = "music_ghost_states/main_ambient"; // music state when level first loads
		initialSwitchGroup = "music_ghost_switch";
		initialSwitchState = "supergorenest_music"; // level music
		secondarySwitchGroup = "supergorenest_music"; // should be the same as above
		initialSecondarySwitchState = "sgn_combat_suite_1"; // music variant
	}
}
}

> This Music Entity will play ambient music from Super Gore Nest's first music variation.

Notes:

The .entities file will play the bottom-most Music Entity when loading the level.
Use the setMusicState Event Call to shift the music to its ghost states (ambient, light, heavy, etc).
You can activate different music in the same level through activateTarget.

Music States Per Level:

Hell on Earth:
Switch State: intro_music
Ghost States: main_ambient, main_light, main_heavy, additional_reveal, cine_1, cine_2, cine_3

Exultia/Taras Nabad:
Switch State: slayer_city_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, cine_3, cine_4

Cultist Base:
Switch State: cultist_base_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2

Doom Hunter Base:
Switch State: doom_hunter_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, boss_phase1, boss_phase2, boss_vulnerable, cine_boss_intro, cine_boss_end

Super Gore Nest 1:
Switch State: supergorenest_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2
Secondary Switch: sgn_combat_suite_1

Super Gore Nest 2:
Switch State: supergorenest_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2
Secondary Switch: sgn_combat_suite_2

ARC Complex:
Switch State: samuelsbase_music
Ghost States: main_ambient, main_light, main_heavy

Phobos:
Switch State: mars_core_music
Ghost States: main_ambient, main_light, main_heavy, alt_ambient, alt_light, alt_heavy, cine_1, level_marscore_baron, escape_pod
Secondary Switch: phobos

Mars Core:
Switch State: mars_core_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, level_marscore_painelemental, stinger
Secondary Switch: space

Sentinel Prime:
Switch State: gladiator_music
Ghost States: cine_1, cine_2, cine_3, cine_4, boss_phase1, boss_phase2, boss_vulnerable, boss_end, additional_reveal, additional_levelstart

Nekravol:
Switch State: metal_hell_music
Ghost States: main_ambient, main_light, main_heavy

Urdak:
Switch State: maykr_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, cine_3, cine_4, boss_phase1, boss_phase2, boss_vulnerable, additional_reveal, additional_levelstart

Final Sin:
Switch State: icon_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, boss_phase1, boss_phase2, boss_vulnerable, boss_end, credits_start, credits_end

UAC Atlantica Facility:
Switch State: dlc1_oil_rig
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, cine_3, cine_6, stinger

The Blood Swamps:
Switch State: dlc1_hell_swamp_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, boss_phase1, boss_phase2

The Holt:
Switch State: dlc1_maykr_city_music
Ghost States: main_ambient, main_light, main_heavy, cine_3, cine_boss_intro, boss_phase1, boss_phase2, boss_phase3, boss_vulnerable, boss_end, credits_end

The World Spear:
Switch State: dlc_2_spear
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, cine_3, additional_levelstart, stinger

Reclaimed Earth:
Switch State: dlc2_overgrown_earth_music
Ghost States: main_ambient, main_light, main_heavy

Immora/The Dark Lord:
Switch State: dlc2_tech_hell_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2, cine_3, boss_phase1, boss_phase2, boss_phase3, boss_end, credits_start

Hub/BFG Division:
Switch State: hub_music
Ghost States: main_ambient, main_light, main_heavy, cine_1, cine_2
Secondary Switch:

Blood Harvester: (unused track)
Switch State: bloodharvester_music
Ghost States: main_ambient, main_light

BATTLEMODE Music: (pvp)
Switch State: pvp
Ghost States: main_ambient, pvp_lobby, pvp_lobby_end, pvp_lobby_player_ready, pvp_lose, pvp_win, pvp_sudden_death

Classic Music: (in Slayer Tutorial)
Switch State: tutorial_switch
Ghost States: main_ambient

Entities

idResurrectionProxy

An entity to serve as a summoning location for Summoners.

Usage

entity {
	entityDef example_ai_rez_proxy_1 {
	inherit = "ai/rez_proxy/default";
	class = "idResurrectionProxy";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		renderModelInfo = {
			scale = {
				x = 3;
				y = 3;
				z = 3;
			}
		}
		availableSummons = { // all entitydefs this thing can spawn; this list should remain unchanged
			num = 14;
			item[0] = {
				characterDef = "ai/zombie/hell_base";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[1] = {
				characterDef = "ai/demon/lostsoul";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[2] = {
				characterDef = "ai/demon/imp";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[3] = {
				characterDef = "ai/demon/imp/imp_albino";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[4] = {
				characterDef = "ai/hellified/marine_rifle";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[5] = {
				characterDef = "ai/hellified/hell_base";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[6] = {
				characterDef = "ai/demon/revenant";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[7] = {
				characterDef = "ai/demon/cacodemon";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[8] = {
				characterDef = "ai/demon/pinky";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[9] = {
				characterDef = "ai/demon/pinky_spectre";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[10] = {
				characterDef = "ai/demon/hellknight";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[11] = {
				characterDef = "ai/demon/mancubus";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[12] = {
				characterDef = "ai/demon/mancubus_cyber";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
			item[13] = {
				characterDef = "ai/demon/baron";
				portalDef = "ai/misc/generic_portal";
				fxDecl = "fx/creatures/rez/archvile_spawn";
			}
		}
		radius = 242; // spawns are valid within this radius of the rez proxy
		fxBaseEntity = "func/fx"; // base fx decl to use for summons
		spawnTimeDecl = "base"; // decl describing spawn times for each ai type
		spawnPosition = { // location of the rez proxy/summoning rift
			x = -877;
			y = 1823;
			z = -383.9997253418;
		}
	}
}
}

The location of the rez proxy is the physical location where the Summoner goes to place a summoning rift and summon.

Entities

idSummoningTemplate

An entity to control summoning behaviour of a Summoner.

Usage

entity {
	entityDef example_summoning_template {
	class = "idSummoningTemplate";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		fixedSummoningWaves = { // List of tiered summoning waves, executed sequentially.
			num = 1;
			item[0] = {
				tier1_SpawnList = { // An Imp or Possessed Soldier can be summoned for this tier.
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_HELL_SOLDIER";
				}
				tier2_SpawnList = {
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_ZOMBIE";
				}
				tier3_SpawnList = {
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_SHOTGUN_SOLDIER";
					item[1] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
				}
				completionTest = "SUMMON_CONDITIONS_ALL_DEAD"; // SUMMON_CONDITIONS_ALL_DEAD, SUMMON_CONDITIONS_FIXED_TIMER, or SUMMON_CONDITIONS_WEIGHTED_TIMER
			}
		}
		randomSummoningWaves = { // List of tiered summoning waves, executed in order but looped until the summoning encounter is complete.
			num = 3;
			item[0] = {
				tier1_SpawnList = {
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_ZOMBIE";
				}
				tier2_SpawnList = {
					num = 1;
					item[0] = "ENCOUNTER_SPAWN_REVENANT";
				}
				completionTest = "SUMMON_CONDITIONS_ALL_DEAD";
			}
			item[1] = {
				tier1_SpawnList = {
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_ZOMBIE";
					item[1] = "ENCOUNTER_SPAWN_ZOMBIE";
				}
				tier2_SpawnList = {
					num = 1;
					item[0] = "ENCOUNTER_SPAWN_PINKY";
				}
				completionTest = "SUMMON_CONDITIONS_ALL_DEAD";
			}
			item[2] = {
				tier1_SpawnList = {
					num = 3;
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_ZOMBIE";
					item[2] = "ENCOUNTER_SPAWN_IMP";
				}
				tier2_SpawnList = {
					num = 2;
					item[0] = "ENCOUNTER_SPAWN_PINKY";
					item[1] = "ENCOUNTER_SPAWN_REVENANT";
				}
				completionTest = "SUMMON_CONDITIONS_ALL_DEAD";
			}
		}
		fixedSummonGroups = { // List of groups that is sequentially run
			item[0] = {
				aiSpawnTypeList = {
					item[0] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
					item[1] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
					item[2] = "ENCOUNTER_SPAWN_IMP";
				}
			}
			item[1] = {
				aiSpawnTypeList = {
					item[0] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
					item[1] = "ENCOUNTER_SPAWN_IMP";
					item[2] = "ENCOUNTER_SPAWN_HELL_KNIGHT";
				}
			}
		}
		randomSummonPool = { // List of group to randomly run after all fixed encounters are complete
			item[0] = {
				aiSpawnTypeList = {
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
					item[2] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
				}
			}
			item[1] = {
				aiSpawnTypeList = {
					item[0] = "ENCOUNTER_SPAWN_IMP";
					item[1] = "ENCOUNTER_SPAWN_BEAM_SOLDIER";
					item[2] = "ENCOUNTER_SPAWN_HELL_KNIGHT";
				}
			}
		}
		spawnPosition = {
			x = 8170;
			y = 6877;
			z = 8000;
		}
	}
}
}

Note that once the summoning rift is created, these behaviours will execute on their own, as long as the Summoner remains alive. If killed, the rift will close, and anything defined by the idSummoningTemplate will stop immediately.

 

Entities

idTarget_Command

An entity to trigger the specified console commands.

2016

entity {
	entityDef example_target_command_2016 {
	class = "idTarget_Command";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		commandText = "give ammo";
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
	}
}
}

Eternal

entity {
	entityDef example_target_command_eternal {
	class = "idTarget_Command";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		commandText = "give ammo; give armor; give health; judgementMeter_Set 3";
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
	}
}
}

 

Entities

idTarget_Hide

An entity that will hide the listed entities when activated.

Note that not all entities can be hidden.

2016

entity {
	entityDef example_target_hide_2016 {
	inherit = "target/hide";
	class = "idTarget_Hide";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		spawnPosition = {
			x = 666;
			y = 1000;
			z = 24;
		}
		targets = { // list of entities to hide
			num = 1;
			item[0] = "example_emitter";
		}
		reuseable = true; // if false, this target will be single use
	}
}
}

Eternal

entity {
	entityDef example_target_hide_eternal {
	class = "idTarget_Hide";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		spawnPosition = {
			x = 5;
			y = -105;
			z = -15;
		}
		targets = { // list of entities to hide
			num = 1;
			item[0] = "example_proxy";
		}
		reuseable = true; // if false, this target will be single use
	}
}
}

See Also

Entities

idTarget_Remove

An entity that will remove the listed entities when activated.

2016

entity {
	entityDef example_target_remove_2016 {
	inherit = "target/remove";
	class = "idTarget_Remove";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		spawnPosition = {
			x = 50;
			y = -2000;
			z = -100;
		}
		targets = { // list of entities to remove
			num = 1;
			item[0] = "example_func_emitter_1";
		}
	}
}
}

Eternal

entity {
	entityDef example_target_remove_eternal {
	class = "idTarget_Remove";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
		targets = { // list of entities to remove
			num = 1;
			item[0] = "example_func_dynamic";
        }
	}
}
}

 

Entities

idTarget_Show

An entity that will show the listed entities when activated.

2016

entity {
	entityDef example_target_show_2016 {
	inherit = "target/show";
	class = "idTarget_Show";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		spawnPosition = {
			x = 1848;
			y = -200;
			z = 36;
		}
		targets = {
			num = 1;
			item[0] = "entity_name";
		}
		reuseable = true; // if false, this target will be single use
	}
}
}

Eternal

entity {
	entityDef example_target_show_eternal {
	class = "idTarget_Show";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		spawnPosition = {
			x = 13;
			y = -76;
			z = -5;
		}
		targets = {
			num = 1;
			item[0] = "func_dynamic_vista_example";
		}
		reuseable = true; // if false, this target will be single use
	}
}
}

See Also

Entities

idTarget_Spawn

An entity to spawn other entities. Primarily used for idAI2 entities.

2016

entity {
	entityDef example_target_spawn_2016 {
	inherit = "target/spawn";
	class = "idTarget_Spawn";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		spawnEditable = {
			overwriteTraversalFlags = true; // if set to true, use traversalClassFlags to overwrite the ai's flags
			traversalClassFlags = "CLASS_A";
			spawnAt = ""; // idEntity; the entity (demon) spawned by this spawn target will spawn at the listed entity.
			copyTargets = true; // // if true the targeted entity's target list will be copied to the spawned entity
			additionalTargets = {
				num = 0;
				item[0] = ""; // idEntity
			}
			spawnAnim = ""; // aiStateOverride must be set to AIOVERRIDE_PLAY_ENTRANCE_ANIMATION in order to use spawnAnim
			aiStateOverride = "AIOVERRIDE_TELEPORT"; // aiStateOverride_t
		}
		spawnConditions = { // Inherited from idTarget_Spawn_Parent's idSpawnConditions
			maxCount = 0; // maximum number of entities (demons) that this spawn target will spawn
			reuseDelaySec = 0; // delay in seconds, between uses
			doBoundsTest = false;
			boundsTestType = "BOUNDSTEST_NONE"; // boundsTest_t
			fovCheck = 0; // Whether the spawn target is (not) in the player's FOV, in degrees. Use positive values for within, and negative values for outside of
			minDistance = 0; // The player cannot be closer than the specified distance to the spawn target.
			maxDistance = 0; // The player cannot be further than the specified distance to the spawn target.
			neighborSpawnerDistance = -1;
			LOS_Test = "LOS_NONE"; // targetSpawn_LOSTest; to be combined with an FOV test. LOS_NONE no test, LOS_TRUE must be in LOS, LOS_FALSE must not be in LOS
			playerToTest = "PLAYER_SP"; // which player to test for this spawn target; leave as is for the primary player
			conditionProxy = ""; // idInfo_SpawnConditionProxy; entity at location to do LOS, FOV, and distance checks
		}
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
		spawnOrientation = { // 0 0 0
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = -0;
				}
				mat[1] = {
					x = 0;
					y = 1;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = 0;
					z = 1;
				}
			}
		}
		entityDefs = { // entity list to be spawned by the spawn target
			num = 1;
			item[0] = {
				name = "example_ai_imp_1";
			}
		}
		targets = { // target list to be spawned by the spawn target; this can be excluded/left empty if targetSpawnParent is set, it will draw targets from there instead
			num = 0;
			item[0] = "";
		}
		targetSpawnParent = "example_spawn_parent_1"; // idTarget_Spawn_Parent
	}
}
}

It should be noted that most of these parameters can be excluded unless needed. An idTarget_Spawn can be simplified down to this, as an example, if all the player wishes to do is be able to spawn in demons with the teleport anim/fx and no other frills.

entity {
	entityDef game_target_spawn_mod_1 {
	inherit = "target/spawn";
	class = "idTarget_Spawn";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		"idEntity::entityFlags_t" flags = {
			"bool" noFlood = true;
		}
		spawnEditable = {
			traversalClassFlags = "CLASS_A";
			aiStateOverride = "AIOVERRIDE_TELEPORT";
		}
		spawnPosition = {
			x = 8717;
			y = 8363;
			z = 6633;
		}
		entityDefs = {
			num = 1;
			item[0] = {
				name = "mod_ai_imp_1";
			}
		}
		targetSpawnParent = "mod_master_spawn_parent";
	}
}
}

Eternal

entity {
	entityDef example_target_spawn_eternal {
	inherit = "target/spawn";
	class = "idTarget_Spawn";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		spawnConditions = {
			maxCount = 0;
			reuseDelaySec = 0;
			doBoundsTest = false;
			boundsTestType = "BOUNDSTEST_NONE";
			fovCheck = 0;
			minDistance = 0;
			maxDistance = 0;
			neighborSpawnerDistance = -1;
			LOS_Test = "LOS_NONE";
			playerToTest = "PLAYER_SP";
			conditionProxy = "";
		}
		spawnEditableShared = {
			groupName = "";
			deathTrigger = "";
			coverRadius = 0;
			maxEnemyCoverDistance = 0;
		}
		entityDefs = {
			num = 0;
		}
		conductorEntityAIType = "SPAWN_AI_TYPE_ANY";
		initialEntityDefs = {
			num = 0;
		}
		spawnEditable = {
			spawnAt = "";
			copyTargets = false;
			additionalTargets = {
				num = 0;
			}
			overwriteTraversalFlags = true;
			traversalClassFlags = "CLASS_A";
			combatHintClass = "CLASS_ALL";
			spawnAnim = "";
			aiStateOverride = "AIOVERRIDE_TELEPORT";
			initialTargetOverride = "";
		}
		portal = "";
		targetSpawnParent = "example_spawn_parent";
		disablePooling = false;
		spawnPosition = {
			x = 209.669998;
			y = -10.990000;
			z = -23.95;
		}
	}
}
}

Similarly, a spawn target can be simplified to the following example.

entity {
	entityDef ai_target_spawn_mod_1 {
	inherit = "target/spawn";
	class = "idTarget_Spawn";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		entityDefs = {
			num = 1;
			item[0] = {
				name = "example_ai_gargoyle_1";
			}
		}
		targetSpawnParent = "mod_master_spawn_parent";
		spawnEditable = {
			overwriteTraversalFlags = true;
			traversalClassFlags = "CLASS_A";
			combatHintClass = "CLASS_ALL";
			aiStateOverride = "AIOVERRIDE_TELEPORT";
		}
		spawnPosition = {
			x = 209.669998;
			y = -10.990000;
			z = -23.95;
		}
	}
}
}
Entities

idTarget_Teleport

An entity to teleport the player to the specified location when used.

2016

entity {
	entityDef example_target_teleport_2016 {
	inherit = "target/teleport";
	class = "idTarget_Teleport";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		spawnPosition = { // destination for teleport
			x = -1911.95;
			y = 1800;
			z = -190;
		}
		spawnOrientation = {
			mat = {
				mat[0] = {
					x = 0;
					y = -1;
					z = -0;
				}
				mat[1] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[2] = {
					x = 0;
					y = -0;
					z = 1;
				}
			}
		}
		targetActivator = true; // if true, will teleport the activator
	}
}
}

Eternal

entity {
	entityDef example_target_teleport_eternal {
	class = "idTarget_Teleport";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		spawnPosition = {
			x = 88.999733;
			y = -1079.00024;
			z = -83.75;
		}
		spawnOrientation = {
			mat = {
				mat[0] = {
					x = 0.707106709;
					y = -0.707106829;
				}
				mat[1] = {
					x = 0.707106829;
					y = 0.707106709;
				}
			}
		}
		targetActivator = true;
	}
}
}
Entities

idTrigger

An entity that will trigger its listed targets when used.

2016

entity {
	entityDef example_trigger_2016 {
	inherit = "triggers/trigger";
	class = "idTrigger";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		saveTriggerState = true; // Whether to save the trigger state upon checkpoint (?)
		spawnPosition = {
			x = 1110;
			y = 12448;
			z = 164;
		}
		wait = 0; // Seconds to wait before this idTrigger can be retriggered.
		waitDelta = 0; // Additional seconds added to the wait value with each trigger. This is cumulative.
		waitMin = 0; // Minimum seconds the wait period can become if using waitDelta.
		waitMax = 0; // Maximum seconds the wait period can become if using waitDelta.
		delay = 0; // Delay, in seconds, between activating this idTrigger and when it activates its targets.
		triggerOnce = true; // If true, will only trigger its targets once.
		triggerFirst = true; // If true, this entity must be activate before it can be used.
		triggerOnEnter = true; // If true, it will only activate its targets when entering the trigger.
		triggerOnExit = false; // If true, it will only activate its targets when exiting the trigger.
		aiCanActivate = false; // If true, ai can activate this idTrigger.
		targets = { // list of entities to be triggered
			num = 1;
			item[0] = "example_relay_entity";
		}
		renderModelInfo = {
			model = NULL;
		}
		clipModelInfo = {
			clipModelName = "";
			type = "CLIPMODEL_CYLINDER";
            size = {
                x = 100;
                y = 100;
                z = 100;
            }
		}
	}
}
}

The spawnPosition and clipModelInfo determine the physical location that the player has to walk into to activate the idTrigger. Alternatively, the idTrigger can also be activated by another entity or eventCall.

Entities

idVolume_PlayerEnvOverride

An entity to overwrite the envSettings decl set by idWorldspawn when within the defined volume.

2016

entity {
	entityDef example_volume_player_env_override {
	inherit = "volume/player_env_override";
	class = "idVolume_PlayerEnvOverride";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	edit = {
		spawnPosition = {
			x = -1947;
			y = 787;
			z = -500;
		}
		renderModelInfo = {
			model = NULL;
		}
		clipModelInfo = {
			clipModelName = "";
			type = "CLIPMODEL_CYLINDER";
            size = {
                x = 30000;
                y = 30000;
                z = 10000;
            }
		}
		fadeInTime = 0; // time in milliseconds to fade in
		fadeOutTime = 0; // time in milliseconds to fade out
		startEnabled = true; // if set to false, entity must be activated first before use
		allowToggleOnActivate = true; // if true, activating the entity will toggle it on/off
		declEnv = "vista/bfg_division_ext"; // the env decl to use
	}
}
}

 

Entities

idTarget_Notification

An entity that creates a notification on player's screen when triggered.

Eternal

entity {
	entityDef example_notification {
	class = "idTarget_Notification";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
		notificationType = "HUD_EVENT_PLAYER_NOTIFICATION"; // from list below or notificationType from generated/decls/notification/hud
		header = "#str_swf_notification_secret_found"; // headerText from generated/decls/notification/hud
		subtext = "#str_decl_callout_suit_sentinel_training_unlocked_GHOST82861"; // subText from generated/decls/notification/hud
		icon = "art/ui/dossier/icons/ico_extra_life_3up_on"; // icon from generated/decls/notification/hud
	}
}
}

notificationType list

HUD_NOTIFY_OBJECTIVE_UPDATE
HUD_NOTIFY_OBJECTIVE_COMPLETE
HUD_NOTIFY_OBJECTIVE_REPLACE
HUD_NOTIFY_OBJECTIVE_SHOW_LAST
HUD_NOTIFY_OBJECTIVE_PIN
HUD_NOTIFY_CODEX_RECIEVED
HUD_NOTIFY_CODEX_UPDATED
HUD_NOTIFY_INVENTORY_ACQUIRED
HUD_NOTIFY_RUNE_ACQUIRED
HUD_NOTIFY_RUNE_UPGRADE_TOKEN_ACQUIRED
HUD_NOTIFY_MOD_ACQUIRED
HUD_NOTIFY_PRAETOR_ACQUIRED
HUD_NOTIFY_SENTINEL_BATTERY_ACQUIRED
HUD_NOTIFY_EQUIPMENT_ACQUIRED
HUD_NOTIFY_ARGENTUPGRADE_ACQUIRED
HUD_NOTIFY_COLLECTIBLE_ACQUIRED
HUD_NOTIFY_FAST_TRAVEL_UNLOCKED
HUD_NOTIFY_CHECKPOINT
HUD_NOTIFY_GENERIC_CALLOUT
HUD_NOTIFY_ROUND_TIMER_CALLOUT
HUD_NOTIFY_ROUND_NUMBER_CALLOUT
HUD_NOTIFY_ROUND_LOSE_CALLOUT
HUD_NOTIFY_ROUND_WIN_CALLOUT
HUD_NOTIFY_ROUND_START_CALLOUT
HUD_NOTIFY_ENEMY_USED_CARD_CALLOUT
HUD_NOTIFY_ALLY_USED_CARD_CALLOUT
HUD_NOTIFY_MATCH_VICTORY_CALLOUT
HUD_NOTIFY_MATCH_DEFEAT_CALLOUT
HUD_NOTIFY_INVASION_CALLOUT
HUD_NOTIFY_INVASION_INCOMING
HUD_NOTIFY_CALLOUT_STATUS_TIMER
HUD_NOTIFY_CALLOUT_MAJOR_TIMER
HUD_NOTIFY_CALLOUT_MAJOR_ICON
HUD_NOTIFY_CALLOUT_INVASION_ICON
HUD_NOTIFY_SENTINEL_ARMOR_ACTIVATED
HUD_NOTIFY_SENTINEL_ARMOR_DEACTIVATED
HUD_NOTIFY_EXTRA_LIFE_ACTIVATED
HUD_NOTIFY_EXTRA_LIFE_ACQUIRED
HUD_NOTIFY_EXTRA_LIFE_ACQUIRED_2
HUD_NOTIFY_EXTRA_LIFE_ACQUIRED_3
HUD_NOTIFY_EXTRA_LIFE_MAXED
HUD_NOTIFY_CHEAT_CODE_ACQUIRED
HUD_NOTIFY_GAME_HINT
HUD_NOTIFY_SECRET_HINT
HUD_NOTIFY_SECRET_FOUND
HUD_NOTIFY_SECRET_ENCOUNTER_FOUND
HUD_NOTIFY_SECRET_ENCOUNTER_FAILED
HUD_NOTIFY_SECRET_ENCOUNTER_COMPLETE
HUD_NOTIFY_COMBAT_POINT
HUD_NOTIFY_WEAPON_MASTERY_ACQUIRED
HUD_NOTIFY_BOUNTY_COMPLETE
HUD_NOTIFY_BOUNTY_ACTIVE
HUD_NOTIFY_KEYCARD
HUD_NOTIFY_SLAYER_KEY
HUD_NOTIFY_SLAYER_GATE
HUD_NOTIFY_SLAYER_GATE_E3
HUD_NOTIFY_SLAYER_ENCOUNTER
HUD_NOTIFY_SLAYER_ENCOUNTER_NO_POINTS
HUD_NOTIFY_MISSION_CHALLENGE_INTRO
HUD_NOTIFY_MISSION_CHALLENGE_UPDATE
HUD_NOTIFY_MISSION_CHALLENGE_COMPLETE
HUD_NOTIFY_WEAPON_MASTERY_UPDATE
HUD_NOTIFY_WEAPON_MASTERY_COMPLETE
HUD_NOTIFY_WEAPON_BROKEN
HUD_NOTIFY_DOOM_EVENT_BOSS_COMPLETE
HUD_NOTIFY_DOOM_EVENT_MISSION_COMPLETE
HUD_NOTIFY_DOOM_EVENT_MASTER_LEVEL_COMPLETE
HUD_NOTIFY_DOOM_EVENT_INVASION_COMPLETE
HUD_NOTIFY_DOOM_EVENT_PVP_MATCH_COMPLETE
HUD_NOTIFY_MILESTONE_COMPLETED
HUD_NOTIFY_MILESTONE_COMPLETED_SILENT
HUD_NOTIFY_LEVEL_UP
HUD_NOTIFY_SEASON_LEVEL_UP
HUD_NOTIFY_LATER_IN_THE_MISISON_E3
HUD_NOTIFY_BUFF_POD_NEARBY
HUD_NOTIFY_UPGRADE_REMINDER_PRAETOR
HUD_NOTIFY_DOOM_EVENT_SKYBOX_UNLOCK
HUD_NOTIFY_UPGRADE_PERK
HUD_NOTIFY_ARGENT_BONUS
HUD_NOTIFY_MOD_POINT_ACQUIRED
HUD_NOTIFY_MULTIPLE_MOD_POINT_ACQUIRED
HUD_NOTIFY_AUTOMAP_REVEALED
HUD_NOTIFY_GOLD_BOSS_START
HUD_NOTIFY_GOLD_BOSS_DEFEATED
HUD_NOTIFY_EXTRA_LIFE_ENCOUNTER_FOUND
HUD_NOTIFY_EXTRA_LIFE_ENCOUNTER_FAILED
HUD_NOTIFY_EXTRA_LIFE_ENCOUNTER_COMPLETE
HUD_NOTIFY_SECRET_ENCOUNTER_DLC_COMPLETE
HUD_NOTIFY_SECRET_ENCOUNTER_DLC_COMPLETE_SKIN_PROGRESS
HUD_NOTIFY_SECRET_ENCOUNTER_DLC_COMPLETE_SKIN_UNLOCK
HUD_NOTIFY_RUNE_CRYSTALS_ACQUIRED
HUD_NOTIFY_MASTER_LEVEL_START
HUD_NOTIFY_SUPPORT_RUNE_ACQUIRED
HUD_NOTIFY_SCREECHER_KILLED
HUD_NOTIFY_PLAYER_CURSED
HUD_NOTIFY_HORDE_ROUND_START
HUD_NOTIFY_HORDE_ROUND_END
HUD_NOTIFY_HORDE_WAVE_START
HUD_NOTIFY_HORDE_WAVE_END
HUD_NOTIFY_HORDE_BOUNTY_START
HUD_NOTIFY_HORDE_BOUNTY_COMPLETE
HUD_NOTIFY_HORDE_BOUNTY_FAILED
HUD_NOTIFY_HORDE_STATE_SHARE_COMPLETE
HUD_NOTIFY_HORDE_STATE_SHARE_FAILED
HUD_NOTIFY_MAX

Not all notification types are working.

Event Calls

A description of various eventCalls that can be used when building a custom encounter.

Event Calls

activateTarget

An eventCall to activate another entity from an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "activateTarget";
		args = {
			num = 2;
			item[0] = {
				entity = ""; // target
			}
			item[1] = {
				string = ""; // designComment
			}
		}
	}
}

Example Usage

entity { // You Can't Just Shoot a Hole into the Surface of Mars
	entityDef mod_soundentity_samuel_vo_shoot_mars {
	inherit = "sound/soundentity";
	class = "idSoundEntity";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		temporarySoundEvent = true;
		spawnPosition = {
			x = 4.20000553;
			y = 0.449982464;
			z = 12.1500015;
		}
		soundOcclusionBypass = true;
		startEvents = {
			num = 1;
			item[0] = "play_vo_samuel_hubsamuel_hookup_you_cant_just_shoot__ghost52033";
		}
	}
}
}

item[0] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "activateTarget";
		args = {
			num = 2;
			item[0] = {
				entity = "mod_soundentity_samuel_vo_shoot_mars"; // target
			}
			item[1] = {
				string = "Play Hayden's audio for the Mars Hole line"; // designComment
			}
		}
	}
}

First we place an idSoundEntity with the name mod_soundentity_samuel_vo_shoot_mars in the .entities, and then within the encounter manager, we can use activateTarget on mod_soundentity_samuel_vo_shoot_mars after our waitAIRemaining, so that the "You can't just shoot a hole in the surface of Mars" line is triggered once no ai remain.

 

Event Calls

clearCombatRoles

An eventCall to clear any combat roles set by a preceding setCombatRoles.

Usage

item[0] = {
	eventCall = {
		eventDef = "clearCombatRoles";
		args = {
			num = 2;
			item[0] = {
				eEncounterSpawnType_t = ""; // spawnType
			}
			item[1] = {
				string = ""; // group_label
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_MANCUBUS";
			}
			item[1] = {
				entity = "ai_target_spawn_454";
			}
			item[2] = {
				string = "defender";
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "setCombatRoles";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // spawnType
			}
			item[1] = {
				string = "defender"; // group_label
			}
			item[2] = {
				encounterGroupRole_t = "ROLE_DEFEND"; // group_role
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitAIHealthLevel";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_MANCUBUS";
			}
			item[1] = {
				float = 0.5; // target_group_health
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}
item[3] = {
	eventCall = {
		eventDef = "clearCombatRoles";
		args = {
			num = 2;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_MANCUBUS"; // spawnType
			}
			item[1] = {
				string = "defender"; // group_label
			}
		}
	}
}

In this example, we spawn a Mancubus which is set to ROLE_DEFEND. Once it reaches 50% HP, we use clearCombatRoles to clear the defend role.

See Also

 

Event Calls

clearFactionOverrides

An eventCall to clear any faction overrides set by a preceding setFactionRelation in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "clearFactionOverrides";
		args = {
			num = 0;
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "setFactionRelation";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON"; // instigatorSpawnType
			}
			item[1] = {
				string = ""; // groupLabel
			}
			item[2] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_CYBER_MANCUBUS"; // targetSpawnType
			}
			item[3] = {
				socialEmotion_t = "EMOTION_DESTROY_AT_ALL_COSTS"; // relation
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "setFactionRelation";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_CYBER_MANCUBUS"; // instigatorSpawnType
			}
			item[1] = {
				string = ""; // groupLabel
			}
			item[2] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON"; // targetSpawnType
			}
			item[3] = {
				socialEmotion_t = "EMOTION_DESTROY_AT_ALL_COSTS"; // relation
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitKillCount";
		args = {
			num = 3;
			item[0] = {
				eEncounterEventFlags_t = "ENCOUNTER_SPAWN_ANY";
			}
			item[1] = {
				int = 1;
			}
			item[2] = {
				string = "";
			}
		}
	}
}
item[3] = {
	eventCall = {
		eventDef = "clearFactionOverrides";
		args = {
			num = 0;
		}
	}
}

In this example setFactionRelation is used to create infighting between Barons and Cyber-Mancubi. Once the player has killed 1 of any ai type, clearFactionOverrides is used to restore normal behaviour, having them attack the player instead.

See Also

Event Calls

damageAI

An eventCall to apply a damage type to the specified ai in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "damageAI";
		args = {
			num = 3;
			item[0] = {
				decl = {
					damage = ""; // damageType
				}
			}
			item[1] = {
				eEncounterSpawnType_t = ""; // aiType
			}
			item[2] = {
				string = ""; // groupLabel
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "damageAI";
		args = {
			num = 3;
			item[0] = {
				decl = {
					damage = "damage/triggerhurt/triggerhurt1000_instagib"; // damageType
				}
			}
			item[1] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // aiType
			}
			item[2] = {
				string = "fodder"; // groupLabel
			}
		}
	}
}

In this example, triggerhurt1000_instagib is applied to any ai type with the fodder label, killing them instantly.

 

Event Calls

designerComment

An eventCall for leaving a comment in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "designerComment";
		args = {
			num = 2;
			item[0] = {
				string = ""; // designerComment
			}
			item[1] = {
				bool = true; // printToConsole
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "designerComment";
		args = {
			num = 2;
			item[0] = {
				string = "\nExample text between line breaks\n"; // designerComment
			}
			item[1] = {
				bool = true; // printToConsole
			}
		}
	}
}

 

Event Calls

forceAIToFlee

An eventCall to that forces spawned ai in an idEncounterManager to flee.

Usage

item[0] = {
	eventCall = {
		eventDef = "forceAIToFlee";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = ""; // spawnType
			}
			item[1] = {
				string = ""; // group_label
			}
			item[2] = {
				float = 0; // radius
			}
			item[3] = {
				bool = true; // immediateDespawn
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "forceAIToFlee";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // spawnType
			}
			item[1] = {
				string = ""; // group_label
			}
			item[2] = {
				float = 0; // radius
			}
			item[3] = {
				bool = true; // immediateDespawn
			}
		}
	}
}

 

 

Event Calls

forceChargeOnAllAI

An eventCall to make all spawned ai in an idEncounterManager charge the player.

Usage

item[0] = {
	eventCall = {
		eventDef = "forceChargeOnAllAI";
		args = {
			num = 0;
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = "priority"; // group_label
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
			}
			item[1] = {
				int = 3; // desired_remaing_ai_count
			}
			item[2] = {
				string = "fodder"; // group_label
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "forceChargeOnAllAI";
		args = {
			num = 0;
		}
	}
}

Here, we wait until all ai with the priority label are killed, then we wait until only 3 fodder remain, and we use forceChargeOnAllAI, so that the player does not have to go around hunting stray fodder to finish the encounter.

Event Calls

maintainAICount

An eventCall to maintain a certain quantity of respawning idAI2 in an idEncounterManager.

Usage

item[0] = {
    eventCall = {
        eventDef = "maintainAICount";
        args = {
            num = 8;
            item[0] = {
                eEncounterSpawnType_t = ""; // spawnType
            }
            item[1] = {
                int = 5; // desired_count
            }
            item[2] = {
                int = 10; // max_spawn_count
            }
            item[3] = {
                float = 5; // min_spawn_delay
            }
            item[4] = {
                int = 1; // min_ai_for_respawn
            }
            item[5] = {
                entity = ""; // spawnGroup
            }
            item[6] = {
                string = ""; // group_label
            }
            item[7] = {
                float = 10; // max_spawn_delay
            }
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "maintainAICount";
        args = {
            num = 8;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ZOMBIE"; // spawnType
            }
            item[1] = {
                int = 10; // desired_count
            }
            item[2] = {
                int = 20; // max_spawn_count
            }
            item[3] = {
                float = 3; // min_spawn_delay
            }
            item[4] = {
                int = 5; // min_ai_for_respawn
            }
            item[5] = {
                entity = "ai_target_spawn_volume_76"; // spawnGroup
            }
            item[6] = {
                string = ""; // group_label
            }
            item[7] = {
                float = 5; // max_spawn_delay
            }
        }
    }
}

In this example, 10 Zombies will be spawned, with a 3-5s delay between each (re)spawn. When only 5 Zombies remain, they will begin respawning until there are 10 Zombies again. Once 20 Zombies have been spawned in total, this eventCall is complete.

See Also

 

Event Calls

makeAIAwareOfPlayer

An eventCall to make any ai entities spawned in an idEncounterManager, aware of the player.

Usage

item[0] = {
	eventCall = {
		eventDef = "makeAIAwareOfPlayer";
		args = {
			num = 4;
			item[0] = {
				bool = true; // allActive
			}
			item[1] = {
				bool = false; // onSpawn
			}
			item[2] = {
				string = ""; // groupLabel
			}
			item[3] = {
				bool = false; // restorePerception
			}
		}
	}
}

 

Event Calls

migrateAIFromExternalScript

An eventCall to migrate ai entities from another idEncounterManager, into the current encounter manager.

Usage

item[0] = {
	eventCall = {
		eventDef = "migrateAIFromExternalScript";
		args = {
			num = 4;
			item[0] = {
				entity = ""; // encounterScript
			}
			item[1] = {
				eEncounterSpawnType_t = ""; // aiType
			}
			item[2] = {
				string = ""; // groupLabel
			}
			item[3] = {
				bool = false; // sharedBetweenScripts
			}
		}
	}
}
Event Calls

proceedToNextScript

An eventCall to proceed to the next script in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "proceedToNextScript";
		args = {
			num = 2;
			item[0] = {
				bool = true; // bypassNextWaitForCommit
			}
			item[1] = {
				bool = true; // carryOverExistingUserFlags
			}
		}
	}
}

This eventCall should always be paired with setNextScriptIndex.

See Also

 

Event Calls

raiseEventFlagOnExternalScript

An eventcall to trigger a flag on an idEncounterManager outside of the one that this eventcall is used in.

Usage

item[0] = {
	eventCall = {
		eventDef = "raiseEventFlagOnExternalScript";
		args = {
			num = 3;
			item[0] = {
				entity = "game_ai_encounter_script_encounter_script_pre_combat_imp_room"; // encounterScript
			}
			item[1] = {
				eEncounterEventFlags_t = "ENCOUNTER_EVENT_FLAG_USER_EVENT"; // eventFlag
			}
			item[2] = {
				string = "blue_door_start"; // userFlag
			}
		}
	}
}

Note that using activateTarget directly on the idEncounterTrigger_RaiseUserFlag in question can also accomplish the same effect.

Event Calls

removeAI

An eventCall to remove spawned ai entities from an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "removeAI";
		args = {
			num = 2;
			item[0] = {
				eEncounterSpawnType_t = ""; // spawnType
			}
			item[1] = {
				string = ""; // group_label
			}
		}
	}
}

AI entities removed with this command will be instantly removed, without any death or despawn animation. It is best used for ai types that are not affected by damageAI or forceAIToFlee.

 

Event Calls

setCombatRoles

An eventCall to assign roles to idAI2 in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "setCombatRoles";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = ""; // spawnType
			}
			item[1] = {
				string = ""; // group_label
			}
			item[2] = {
				encounterGroupRole_t = ""; // group_role
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_MANCUBUS";
			}
			item[1] = {
				entity = "ai_target_spawn_454";
			}
			item[2] = {
				string = "defender";
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "setCombatRoles";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // spawnType
			}
			item[1] = {
				string = "defender"; // group_label
			}
			item[2] = {
				encounterGroupRole_t = "ROLE_DEFEND"; // group_role
			}
		}
	}
}

In this example, a Mancubus is spawned with the label defender, and then setCombatRoles is used to set any ai type with the defender label to ROLE_DEFEND.

See Also

 

Event Calls

setFactionRelation

An eventCall to force an emotion between an instigating and target faction in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "setFactionRelation";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = ""; // instigatorSpawnType
			}
			item[1] = {
				string = ""; // groupLabel
			}
			item[2] = {
				eEncounterSpawnType_t = ""; // targetSpawnType
			}
			item[3] = {
				socialEmotion_t = ""; // relation
			}
		}
	}
}

The set emotion is only for the instigator towards the target. The target does not automatically reciprocate the same set emotion.

Example Usage

item[0] = {
	eventCall = {
		eventDef = "setFactionRelation";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON"; // instigatorSpawnType
			}
			item[1] = {
				string = ""; // groupLabel
			}
			item[2] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP ENCOUNTER_SPAWN_HELL_SOLDIER"; // targetSpawnType
			}
			item[3] = {
				socialEmotion_t = "EMOTION_DESTROY_AT_ALL_COSTS"; // relation
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "setFactionRelation";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP ENCOUNTER_SPAWN_HELL_SOLDIER"; // instigatorSpawnType
			}
			item[1] = {
				string = ""; // groupLabel
			}
			item[2] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON"; // targetSpawnType
			}
			item[3] = {
				socialEmotion_t = "EMOTION_DESTROY_AT_ALL_COSTS"; // relation
			}
		}
	}
}

In this example, Barons are set to EMOTION_DESTROY_AT_ALL_COSTS against Imps/Soldiers, and vice versa. This results in forced infighting between Barons and Imps/Soldiers.

See Also

 

Event Calls

setMusicState

An eventCall to change the state of the specified idMusicEntity in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "setMusicState";
		args = {
			num = 3;
			item[0] = {
				entity = ""; // target
			}
			item[1] = {
				decl = {
					soundstate = ""; // stateDecl
				}
			}
			item[2] = {
				string = ""; // designComment
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "setMusicState";
		args = {
			num = 3;
			item[0] = {
				entity = "sound_sound_musicentity_1"; // target
			}
			item[1] = {
				decl = {
					soundstate = "music_ghost_states/main_heavy"; // stateDecl
				}
			}
			item[2] = {
				string = "Change music state to heavy combat music"; // designComment
			}
		}
	}
}

See Also

 

Event Calls

setNextScriptIndex

An eventCall to set the index of the next script in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "setNextScriptIndex";
		args = {
			num = 1;
			item[0] = { // nextScriptIndex
				int = 1;
			}
		}
	}
}

Example Usage

entity { // Custom Encounter #1
	entityDef mod_encounter_manager_custom_1 {
	inherit = "encounter/manager";
	class = "idEncounterManager";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = true;
	disableAIPooling = false;
	edit = {
		enableAIHighlightOnFinish = true;
		disabledAITypeForHighlight = "AI_MONSTER_SPECTRE AI_MONSTER_BUFF_POD AI_MONSTER_TENTACLE";
		playerMetricDef = "encounter/player_metrics";
		chargeCombatGrouping = "encounter/combat_role/charge_command";
		aiTypeDefAssignments = "actorpopulation/default/default_no_bosses";
		spawnPosition = {
			x = 0;
			y = 0;
			z = 0;
		}
		soundOcclusionBypass = true;
		combatRatingScale = "COMBAT_RATING_SCALE_IGNORE";
		encounterComponent = {
			entityEvents = {
				num = 2;
				item[0] = { // Part 0
					entity = "mod_encounter_manager_custom_1";
					events = {
						num = 5;
						item[0] = {
							eventCall = {
								eventDef = "setMusicState";
								args = {
									num = 3;
									item[0] = {
										entity = "sound_sound_musicentity_1";
									}
									item[1] = {
										decl = {
											soundstate = "music_ghost_states/main_heavy";
										}
									}
									item[2] = {
										string = "";
									}
								}
							}
						}
						item[1] = {
							eventCall = {
								eventDef = "spawnSingleAI";
								args = {
									num = 3;
									item[0] = {
										eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON";
									}
									item[1] = {
										entity = "ai_target_spawn_87";
									}
									item[2] = {
										string = "";
									}
								}
							}
						}
						item[2] = {
							eventCall = {
								eventDef = "waitAIRemaining";
								args = {
									num = 3;
									item[0] = {
										eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
									}
									item[1] = {
										int = 0; // desired_remaing_ai_count
									}
									item[2] = {
										string = ""; // group_label
									}
								}
							}
						}
						item[3] = {
							eventCall = {
								eventDef = "setNextScriptIndex";
								args = {
									num = 1;
									item[0] = { // index of next script
										int = 1;
									}
								}
							}
						}
						item[4] = {
							eventCall = {
								eventDef = "proceedToNextScript";
								args = {
									num = 2;
									item[0] = {
										bool = true; // bypassNextWaitForCommit
									}
									item[1] = {
										bool = true; // carryOverExistingUserFlags
									}
								}
							}
						}
					}
				}
				item[1] = { // Part 1
					entity = "mod_encounter_manager_custom_1";
					events = {
						num = 2;
						item[0] = {
							eventCall = {
								eventDef = "setMusicState";
								args = {
									num = 3;
									item[0] = {
										entity = "sound_sound_musicentity_1";
									}
									item[1] = {
										decl = {
											soundstate = "music_ghost_states/main_ambient";
										}
									}
									item[2] = {
										string = "";
									}
								}
							}
						}
						item[1] = {
							eventCall = {
								eventDef = "activateTarget";
								args = {
									num = 2;
									item[0] = {
										entity = "game_target_count_cp11"; // target
									}
									item[1] = {
										string = ""; // designComment
									}
								}
							}
						}
					}
				}
			}
		}
	}
}
}

In this example we use setNextScriptIndex after all there are no ai remaning, followed by proceedToNextScript to advance to the next script. Note that the encounter manager has to be split into multiple scripts (line 26 and 110) in order for setNextScriptIndex to work properly. The next script index does not have to be in sequential order either, as in an encounter manager with 4 scripts, it is possible to advance from script 0 to script 3, skipping over scripts 1 and 2.

See Also

 

Event Calls

spawnAI

An eventCall to spawn multiple idAI2 entities, simultaneously, in an idEncounterManager.

Usage

item[0] = {
    eventCall = {
        eventDef = "spawnAI";
        args = {
            num = 4;
            item[0] = {
                eEncounterSpawnType_t = ""; // spawnType
            }
            item[1] = {
                int = 6; // spawn_count
            }
            item[2] = {
                entity = ""; // spawnGroup
            }
            item[3] = {
                string = ""; // group_label
            }
        }
    }
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnAI";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_HELL_SOLDIER"; // spawnType
			}
			item[1] = {
				int = 6; // spawn_count
			}
			item[2] = {
				entity = "mod_spawngroup_1"; // spawnGroup
			}
			item[3] = {
				string = "fodder"; // group_label
			}
		}
	}
}

 

Event Calls

spawnArchvile

An eventCall to spawn an Archvile.

Usage

item[0] = {
    eventCall = {
        eventDef = "spawnArchvile";
        args = {
            num = 4;
            item[0] = {
                entity = ""; // spawnTarget
            }
            item[1] = {
                entity = ""; // archvileTemplate
            }
            item[2] = {
                string = ""; // archvile_label
            }
            item[3] = {
                string = ""; // group_label
            }
        }
    }
}

Note that if an Archvile is spawned without an idArchvileTemplate, it will default to being able summon all (base game?) ai types, with the exemption of another Archvile.

Example Usage

item[0] = {
    eventCall = {
        eventDef = "spawnArchvile";
        args = {
            num = 4;
            item[0] = {
                entity = "ai_target_spawn_111"; // spawnTarget
            }
            item[1] = {
                entity = "mod_template_2"; // archvileTemplate
            }
            item[2] = {
                string = "super heavy"; // archvile_label
            }
            item[3] = {
                string = "summons"; // group_label
            }
        }
    }
}

 

See Also

 

 

Event Calls

spawnBuffPod

An eventCall to spawn a buff totem.

Usage

item[0] = {
    eventCall = {
        eventDef = "spawnBuffPod";
        args = {
            num = 3;
            item[0] = {
                entity = ""; // spawnTarget
            }
            item[1] = {
                string = ""; // buffpod_label
            }
            item[2] = {
                string = ""; // buffed_ai_label
            }
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "spawnSingleAI";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP"; // spawnType
            }
            item[1] = {
                entity = "ai_target_spawn_46"; // spawnTarget
            }
            item[2] = {
                string = ""; // group_label
            }
        }
    }
}
item[1] = {
    eventCall = {
        eventDef = "spawnSingleAI";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP"; // spawnType
            }
            item[1] = {
                entity = "ai_target_spawn_47"; // spawnTarget
            }
            item[2] = {
                string = "buff me pls"; // group_label
            }
        }
    }
}
item[2] = {
    eventCall = {
        eventDef = "spawnBuffPod";
        args = {
            num = 3;
            item[0] = {
                entity = "ai_target_spawn_451"; // spawnTarget
            }
            item[1] = {
                string = ""; // buffpod_label
            }
            item[2] = {
                string = "buff me pls"; // buffed_ai_label
            }
        }
    }
}

In this example, the totem will only buff the Imp with a group_label of "buff me pls", because that matches the buffed_ai_label the totem is looking for.

 

Event Calls

spawnPossessedAI

An eventCall to spawn an ai that is already possessed by a spirit in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "spawnPossessedAI";
		args = {
			num = 7;
			item[0] = {
				eEncounterSpawnType_t = ""; // ai_spawnType
			}
			item[1] = {
				entity = ""; // ai_spawnTarget
			}
			item[2] = {
				string = ""; // ai_groupLabel
			}
			item[3] = {
				entity = ""; // spirit_spawnTarget
			}
			item[4] = {
				eEncounterSpawnType_t = ""; // spirit_allowedAITypes
			}
			item[5] = {
				string = ""; // spirit_allowedGroupLabel
			}
			item[6] = {
				bool = true; // aiTypeExplicitFiltering
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_PINKY";
			}
			item[1] = {
				entity = "ai_target_spawn_13";
			}
			item[2] = {
				string = "heavy";
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "spawnPossessedAI";
		args = {
			num = 7;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_REVENANT"; // ai_spawnType
			}
			item[1] = {
				entity = "ai_target_spawn_21"; // ai_spawnTarget
			}
			item[2] = {
				string = "beamer"; // ai_groupLabel
			}
			item[3] = {
				entity = "ai_target_spawn_17"; // spirit_spawnTarget
			}
			item[4] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // spirit_allowedAITypes
			}
			item[5] = {
				string = "beamer"; // spirit_allowedGroupLabel
			}
			item[6] = {
				bool = true; // aiTypeExplicitFiltering
			}
		}
	}
}

In this example, we spawn a Pinky with the heavy label. Then we use spawnPossessedAI to spawn a Revenant with the beamer label, and the spirit with the ability to possess any ai type with the beamer label. This way, once the possessed Revenant is dead, there are no other ai that use the beamer label, so the spirit will be unable to possess anyone else, and will despawn.

 

See Also

 

Event Calls

spawnSingleAI

An eventCall to spawn a single idAI2 entity in an idEncounterManager.

Usage

item[0] = {
    eventCall = {
        eventDef = "spawnSingleAI";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = ""; // spawnType
            }
            item[1] = {
                entity = ""; // spawnTarget
            }
            item[2] = {
                string = ""; // group_label
            }
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "spawnSingleAI";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP"; // spawnType
            }
            item[1] = {
                entity = "ai_target_spawn_47"; // spawnTarget
            }
            item[2] = {
                string = "fodder"; // group_label
            }
        }
    }
}

 

Event Calls

spawnSpirit

An eventCall to spawn a spirit in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSpirit";
		args = {
			num = 4;
			item[0] = {
				entity = ""; // spawnTarget
			}
			item[1] = {
				eEncounterSpawnType_t = ""; // allowedAITypes
			}
			item[2] = {
				string = ""; // allowed_group_label
			}
			item[3] = {
				bool = true; // aiTypeExplicitFiltering
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ARACHNOTRON";
			}
			item[1] = {
				entity = "ai_target_spawn_17";
			}
			item[2] = {
				string = "spider";
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ARACHNOTRON";
			}
			item[1] = {
				entity = "ai_target_spawn_21";
			}
			item[2] = {
				string = "possess me";
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "spawnSpirit";
		args = {
			num = 4;
			item[0] = {
				entity = "ai_target_spawn_26"; // spawnTarget
			}
			item[1] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ARACHNOTRON"; // allowedAITypes
			}
			item[2] = {
				string = "possess me"; // allowed_group_label
			}
			item[3] = {
				bool = true; // aiTypeExplicitFiltering
			}
		}
	}
}

In this example, two Arachnotrons are spawned, one with a spider label, and the other with the possess me label. spawnSpirit is then used for ENCOUNTER_SPAWN_ARACHNOTRON with the possess me label, that way only the latter Arachnotron will be possessed.

See Also

Event Calls

spawnSummoner

An eventCall to spawn a Summoner with an idSummoningTemplate

Usage

item[0] = {
	eventCall = {
		eventDef = "spawnSummoner";
		args = {
			num = 4;
			item[0] = {
				entity = ""; // spawnTarget
			}
			item[1] = {
				entity = ""; // summonerTemplate
			}
			item[2] = {
				string = ""; // summoner_label
			}
			item[3] = {
				string = ""; // group_label
			}
		}
	}
}

 

Event Calls

staggeredAISpawn

An eventCall to spawn multiple idAI2 entities, with a delay between each spawn, in an idEncounterManager.

Usage

item[0] = {
    eventCall = {
        eventDef = "staggeredAISpawn";
        args = {
            num = 6;
            item[0] = {
                eEncounterSpawnType_t = ""; // spawnType
            }
            item[1] = {
                int = 5; // spawn_count
            }
            item[2] = {
                entity = ""; // spawnGroup
            }
            item[3] = {
                string = ""; // group_label
            }
            item[4] = {
                float = 1; // minSpawnStagger
            }
            item[5] = {
                float = 5; // maxSpawnStagger
            }
        }
    }
}

minSpawnStagger must be <= maxSpawnStagger

Example Usage

item[0] = {
    eventCall = {
        eventDef = "staggeredAISpawn";
        args = {
            num = 6;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ZOMBIE"; // spawnType
            }
            item[1] = {
                int = 5; // spawn_count
            }
            item[2] = {
                entity = "game_target_spawn_group_13"; // spawnGroup
            }
            item[3] = {
                string = ""; // group_label
            }
            item[4] = {
                float = 7.5; // minSpawnStagger
            }
            item[5] = {
                float = 10; // maxSpawnStagger
            }
        }
    }
}

In this example, 5 Zombies will be spawned, with a 7.5 - 10s delay between each one.

See Also

 

Event Calls

stopMaintainingAICount

An eventCall to end a maintainAICount in an idEncounterManager.

Usage

This eventCall should only be used after a maintainAICount.

item[0] = {
    eventCall = {
        eventDef = "stopMaintainingAICount";
        args = {
            num = 2;
            item[0] = {
                eEncounterSpawnType_t = ""; // spawnType
            }
            item[1] = {
                string = ""; // group_label
            }
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "maintainAICount";
        args = {
            num = 8;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP"; // spawnType
            }
            item[1] = {
                int = 5; // desired_count
            }
            item[2] = {
                int = -1; // max_spawn_count
            }
            item[3] = {
                float = 1; // min_spawn_delay
            }
            item[4] = {
                int = 3; // min_ai_for_respawn
            }
            item[5] = {
                entity = "mod_spawngroup_1"; // spawnGroup
            }
            item[6] = {
                string = "fodder"; // group_label
            }
            item[7] = {
                float = 2; // max_spawn_delay
            }
        }
    }
}
item[1] = {
    eventCall = {
        eventDef = "waitKillCount";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
            }
            item[1] = {
                int = 10;
            }
            item[2] = {
                string = "fodder";
            }
        }
    }
}
item[2] = {
    eventCall = {
        eventDef = "stopMaintainingAICount";
        args = {
            num = 2;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY";
            }
            item[1] = {
                string = "fodder";
            }
        }
    }
}

In this example, the maintainAICount will spawn 5 infinitely respawning Imps. However, once the player has killed 10 Imps, the maintainAICount will be stopped. Any Imps that are present when stopMaintainingAICount was called, will remain.

See Also

 

Event Calls

wait

An eventCall that tells the idEncounterManager to wait a specified amount of time before executing the next eventCall.

Usage

item[0] = {
    eventCall = {
        eventDef = "wait";
        args = {
            num = 1;
            item[0] = {
                float = 0.5; // seconds
            }
        }
    }
}

This eventCall can be used before and/or after most other eventCalls. The unit of time used is in seconds.

Event Calls

waitAIHealthLevel

An eventCall that tells the idEncounterManager to wait until the specified ai type reaches a certain HP level, before executing the next eventCalls.

Usage

item[0] = {
    eventCall = {
        eventDef = "waitAIHealthLevel";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_HELL_KNIGHT"; // spawnType
            }
            item[1] = {
                float = 0.5; // target_group_health
            }
            item[2] = {
                string = ""; // group_label
            }
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "spawnSingleAI";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_CYBER_MANCUBUS"; // spawnType
            }
            item[1] = {
                entity = "game_target_spawn_1312"; // spawnTarget
            }
            item[2] = {
                string = "check health"; // group_label
            } 
        }
    }
}
item[1] = {
    eventCall = {
        eventDef = "waitAIHealthLevel";
        args = {
            num = 3;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_CYBER_MANCUBUS"; // spawnType
            }
            item[1] = {
				float = 0.6; // target_group_health
            }
            item[2] = {
                string = "check health"; // group_label
            } 
        }
    }
}
item[2] = {
    eventCall = {
        eventDef = "spawnAI";
        args = {
            num = 4;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_CACODEMON"; // spawnType
            }
            item[1] = {
				int = 2; // spawn_count
            }
            item[2] = {
                entity = "mod_spawngroup_flying_7"; // spawnGroup
            }
            item[3] = {
                string = "heavy"; // group_label
            }
        }
    }
}

In this example, we spawn a Cyber-Mancubus with the label check_health. Then we call waitAIHealthLevel with said spawnType and group_label, with target_group_health set to 0.6, so that when the Cyber-Mancubus is <= 60% of its HP, the encounter will proceed.

 

Event Calls

waitAIRemaining

An eventCall to wait until a certain quantity of specified ai types remain in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = ""; // aiType
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "spawnAI";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP ENCOUNTER_SPAWN_SHOTGUN_SOLDIER"; // spawnType
			}
			item[1] = {
				int = 4; // spawn_count
			}
			item[2] = {
				entity = "mod_spawngroup_15"; // spawnGroup
			}
			item[3] = {
				string = ""; // group_label
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "spawnAI";
		args = {
			num = 4;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_HELL_SOLDIER ENCOUNTER_SPAWN_BEAM_SOLDIER"; // spawnType
			}
			item[1] = {
				int = 4; // spawn_count
			}
			item[2] = {
				entity = "mod_spawngroup_21"; // spawnGroup
			}
			item[3] = {
				string = ""; // group_label
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // aiType
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}

In this example, 4 Imps/Shotgunners are spawned, and 4 Soldiers/Hell Razers. By using waitAIRemaining set to ENCOUNTER_SPAWN_ANY with a desired_remaing_ai_count of 0, this ensures that all enemies will need to be killed first.

 

Event Calls

waitKillCount

An eventCall that tells the idEncounterManager to wait until a certain quantity of the specified ai type are killed.

Usage

item[0] = {
    eventCall = {
        eventDef = "waitKillCount";
        args = {
            num = 3;
            item[0] = {
                eEncounterEventFlags_t = ""; // aiType
            }
            item[1] = {
                int = 1; // desired_kill_count
            }
            item[2] = {
				string = ""; // group_label
			}
        }
    }
}

Example Usage

item[0] = {
    eventCall = {
        eventDef = "maintainAICount";
        args = {
            num = 8;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP ENCOUNTER_SPAWN_HELL_SOLDIER"; // spawnType
            }
            item[1] = {
                int = 5; // desired_count
            }
            item[2] = {
                int = -1; // max_spawn_count
            }
            item[3] = {
                float = 1; // min_spawn_delay
            }
            item[4] = {
                int = 3; // min_ai_for_respawn
            }
            item[5] = {
                entity = "mod_spawngroup_1"; // spawnGroup
            }
            item[6] = {
                string = "fodder"; // group_label
            }
            item[7] = {
                float = 2; // max_spawn_delay
            }
        }
    }
}
item[1] = {
    eventCall = {
        eventDef = "waitKillCount";
        args = {
            num = 3;
            item[0] = {
                eEncounterEventFlags_t = "ENCOUNTER_SPAWN_ANY"; // aiType
            }
            item[1] = {
                int = 10; // desired_kill_count
            }
            item[2] = {
				string = "fodder"; // group_label
			}
        }
    }
}
item[2] = {
    eventCall = {
        eventDef = "stopMaintainingAICount";
        args = {
            num = 2;
            item[0] = {
                eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // aiType
            }
            item[1] = {
				string = "fodder"; // group_label
			}
        }
    }
}

In this example, the maintainAICount will spawn 5 infinitely respawning Imps or Soldiers. However, once the player has killed 10 fodder, the maintainAICount will be stopped.

 

Event Calls

waitMaintainComplete

An eventCall to wait until a preceding maintainAICount finishes.

Usage

item[0] = {
	eventCall = {
		eventDef = "waitMaintainComplete";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = ""; // aiType
			}
			item[1] = {
				int = 0; // remaining_spawn_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}

This eventcall only works if max_spawn_count is set to a finite amount, ex. not -1.

Example Usage

item[0] = {
	eventCall = {
		eventDef = "maintainAICount";
		args = {
			num = 8;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON";
			}
			item[1] = {
				int = 1; // desired_count
			}
			item[2] = {
				int = 3; // max_spawn_count
			}
			item[3] = {
				float = 5; // min_spawn_delay
			}
			item[4] = {
				int = 0; // min_ai_for_respawn
			}
			item[5] = {
				entity = "mod_spawngroup_encounter7B"; // spawnGroup
			}
			item[6] = {
				string = "priority"; // group_label
			}
			item[7] = {
				float = 5; // max_spawn_delay
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "waitMaintainComplete";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON"; // aiType
			}
			item[1] = {
				int = 0; // remaining_spawn_count
			}
			item[2] = {
				string = "priority"; // group_label
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_PAIN_ELEMENTAL";
			}
			item[1] = {
				entity = "master_level_target_spawn_13";
			}
			item[2] = {
				string = "priority";
			}
		}
	}
}

We start with a maintainAICount that spawns 1 Baron at a time, with up to 3 spawns, each spaced 5s apart. Then we can use waitMaintainComplete with ENCOUNTER_SPAWN_BARON and remaining_spawn_count set to 0, so that when all 3 Barons have spawned (ie. 0 spawns remaining), the encounter manager can proceed to the next eventCall and spawn the Pain Elemental.

See Also

 

Event Calls

waitMulitpleConditions

An eventCall for using multiple wait eventCalls in an idEncounterManager.

This eventCall is spelled incorrectly in the engine ("Mulitple"), and must be used this way.

Usage

item[0] = {
	eventCall = {
		eventDef = "waitMulitpleConditions";
		args = {
			num = 2;
			item[0] = {
				int = 2; // condition_count
			}
			item[1] = {
				encounterLogicOperator_t = ""; // logic_operator
			}
		}
	}
}

Example Usage #1

item[0] = {
	eventCall = {
		eventDef = "waitMulitpleConditions";
		args = {
			num = 2;
			item[0] = {
				int = 2; // condition_count
			}
			item[1] = {
				encounterLogicOperator_t = "ENCOUNTER_LOGICAL_OP_OR"; // logic_operator
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "wait";
		args = {
			num = 1;
			item[0] = {
				float = 10;
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitKillCount";
		args = {
			num = 3;
			item[0] = {
				eEncounterEventFlags_t = "ENCOUNTER_SPAWN_ANY";
			}
			item[1] = {
				int = 2;
			}
			item[2] = {
				string = "";
			}
		}
	}
}

In this example we have two conditions, set to OR. This way, when either 10s pass or any 2 ai types are killed, the encounter proceeds.

Example Usage #2

item[0] = {
	eventCall = {
		eventDef = "waitMulitpleConditions";
		args = {
			num = 2;
			item[0] = {
				int = 3; // condition_count
			}
			item[1] = {
				encounterLogicOperator_t = "ENCOUNTER_LOGICAL_OP_AND"; // logic_operator
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_BARON";
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitAIRemaining";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_MANCUBUS";
			}
			item[1] = {
				int = 0; // desired_remaing_ai_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}
item[3] = {
	eventCall = {
		eventDef = "wait";
		args = {
			num = 1;
			item[0] = {
				float = 5;
			}
		}
	}
}

In this example, we have three conditions, set to AND. This way, there needs to be no Barons and Mancubi, and 5s must have passed as well, in order for the encounter to proceed.

Event Calls

waitRandomKillCount

An eventCall to wait until a random quantity of specified ai types are killed in an idEncounterManager.

Usage

item[0] = {
	eventCall = {
		eventDef = "waitRandomKillCount";
		args = {
			num = 4;
			item[0] = {
				eEncounterEventFlags_t = ""; // aiType
			}
			item[1] = {
				int = 1; // kill_count_min
			}
			item[2] = {
				int = 1; // kill_count_max
			}
			item[3] = {
				string = ""; // group_label
			}
		}
	}
}

A value will be randomly picked from between kill_count_min and kill_count_max (inclusive?). Once that kill count is achieved, the wait condition will be fulfilled.

Example Usage

item[0] = {
	eventCall = {
		eventDef = "waitRandomKillCount";
		args = {
			num = 4;
			item[0] = {
				eEncounterEventFlags_t = "ENCOUNTER_SPAWN_IMP ENCOUNTER_SPAWN_HELL_SOLDIER"; // aiType
			}
			item[1] = {
				int = 15; // kill_count_min
			}
			item[2] = {
				int = 20; // kill_count_max
			}
			item[3] = {
				string = "fodder"; // group_label
			}
		}
	}
}

In this example, once between 15 and 20 Imps/Soldiers are killed, the encounter will proceed.

 

Event Calls

waitStaggeredSpawnComplete

An eventCall to wait until the preceding staggeredAISpawn finishes.

Usage

item[0] = {
	eventCall = {
		eventDef = "waitStaggeredSpawnComplete";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = ""; // aiType
			}
			item[1] = {
				int = 0; // remaining_spawn_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}

Example Usage

item[0] = {
	eventCall = {
		eventDef = "staggeredAISpawn";
		args = {
			num = 6;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_IMP"; // spawnType
			}
			item[1] = {
				int = 3; // spawn_count
			}
			item[2] = {
				entity = "mod_spawngroup_encounter2"; // spawnGroup
			}
			item[3] = {
				string = "fodder"; // group_label
			}
			item[4] = {
				float = 1; // minSpawnStagger
			}
			item[5] = {
				float = 2; // maxSpawnStagger
			}
		}
	}
}
item[1] = {
	eventCall = {
		eventDef = "staggeredAISpawn";
		args = {
			num = 6;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_HELL_SOLDIER"; // spawnType
			}
			item[1] = {
				int = 3; // spawn_count
			}
			item[2] = {
				entity = "mod_spawngroup_encounter2B"; // spawnGroup
			}
			item[3] = {
				string = "fodder"; // group_label
			}
			item[4] = {
				float = 1; // minSpawnStagger
			}
			item[5] = {
				float = 2; // maxSpawnStagger
			}
		}
	}
}
item[2] = {
	eventCall = {
		eventDef = "waitStaggeredSpawnComplete";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_ANY"; // aiType
			}
			item[1] = {
				int = 0; // remaining_spawn_count
			}
			item[2] = {
				string = ""; // group_label
			}
		}
	}
}
item[3] = {
	eventCall = {
		eventDef = "spawnSingleAI";
		args = {
			num = 3;
			item[0] = {
				eEncounterSpawnType_t = "ENCOUNTER_SPAWN_HELL_KNIGHT";
			}
			item[1] = {
				entity = ai_target_spawn_23";
			}
			item[2] = {
				string = "priority";
			}
		}
	}
}

In this example, we have a staggeredAISpawn for 3 Imps, with a 1-2s delay between spawns, and ditto for Soldiers. We can then follow it up with waitStaggeredSpawnComplete, with ENCOUNTER_SPAWN_ANY and remaining_spawn_count set to 0, so that all staggeredAISpawn eventcalls for any ai type will need to finish spawning (ie. 0 remaining spawns), before the encounter can proceed and spawn a Hell Knight.

See Also

 

Type Lists

Type Lists

aiStateOverride_t

These types can also be dumped with sh_type/mh_type aiStateOverride_t

Types

2016

AIOVERRIDE_DEFAULT
AIOVERRIDE_FORCE_AWARENESS_OF_PLAYER
AIOVERRIDE_FORCE_AWARENESS_OF_ENTITY
AIOVERRIDE_FORCE_SEARCH_TO_PLAYER
AIOVERRIDE_FORCE_SEARCH_TO_ENTITY
AIOVERRIDE_CHARGE_MELEE_PLAYER
AIOVERRIDE_PLAY_ENTRANCE_ANIMATION
AIOVERRIDE_FORCE_MOVE_TO_TRAVERSAL
AIOVERRIDE_FORCE_TELEPORT_TO_TRAVERSAL
AIOVERRIDE_TELEPORT
AIOVERRIDE_TELEPORT_FORCE_SPAWN_ANGLE
AIOVERRIDE_SPAWN_ANIM_IDLE
AIOVERRIDE_SPAWNED_BY_SYNC_ENTITY
AIOVERRIDE_WANDER
AIOVERRIDE_ENTRANCE_ANIM_NO_ENEMIES
AIOVERRIDE_TELEPORT_NO_ENEMIES
AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_ENTRANCE
AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_SPLINE

Eternal

AIOVERRIDE_DEFAULT
AIOVERRIDE_FORCE_AWARENESS_OF_PLAYER
AIOVERRIDE_FORCE_AWARENESS_OF_ENTITY
AIOVERRIDE_FORCE_SEARCH_TO_PLAYER
AIOVERRIDE_FORCE_SEARCH_TO_ENTITY
AIOVERRIDE_CHARGE_MELEE_PLAYER
AIOVERRIDE_PLAY_ENTRANCE_ANIMATION
AIOVERRIDE_PLAY_ENTRANCE_ANIMATION_WITH_CORRECTION
AIOVERRIDE_FORCE_MOVE_TO_ENTITY
AIOVERRIDE_FORCE_MOVE_TO_TRAVERSAL
AIOVERRIDE_FORCE_TELEPORT_TO_TRAVERSAL
AIOVERRIDE_TELEPORT
AIOVERRIDE_TELEPORT_FORCE_SPAWN_ANGLE
AIOVERRIDE_SPAWN_ANIM_IDLE
AIOVERRIDE_SPAWNED_BY_SYNC_ENTITY
AIOVERRIDE_WANDER
AIOVERRIDE_ENTRANCE_ANIM_NO_ENEMIES
AIOVERRIDE_TELEPORT_NO_ENEMIES
AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_ENTRANCE
AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_SPLINE

Explanations/Usage

AIOVERRIDE_DEFAULT
AIOVERRIDE_FORCE_AWARENESS_OF_PLAYER

The ai will spawn aware of the player's position.

AIOVERRIDE_FORCE_AWARENESS_OF_ENTITY
AIOVERRIDE_FORCE_SEARCH_TO_PLAYER
AIOVERRIDE_FORCE_SEARCH_TO_ENTITY
AIOVERRIDE_CHARGE_MELEE_PLAYER
AIOVERRIDE_PLAY_ENTRANCE_ANIMATION

The ai will spawn with the specified entrance animation.

AIOVERRIDE_PLAY_ENTRANCE_ANIMATION.png

AIOVERRIDE_PLAY_ENTRANCE_ANIMATION_WITH_CORRECTION

Same usage as AIOVERRIDE_PLAY_ENTRANCE_ANIMATION, but will adjust the animation in the case that the animation travels further than the actual distance covered, to prevent partial clipping into the ground.

AIOVERRIDE_FORCE_MOVE_TO_ENTITY
AIOVERRIDE_FORCE_MOVE_TO_TRAVERSAL
AIOVERRIDE_FORCE_TELEPORT_TO_TRAVERSAL
AIOVERRIDE_TELEPORT

The ai will spawn with its teleport FX, always facing the player.

AIOVERRIDE_TELEPORT_FORCE_SPAWN_ANGLE

Same as AIOVERRIDE_TELEPORT, but facing the direction specified in the spawn target's spawnOrientation.

AIOVERRIDE_SPAWN_ANIM_IDLE

The ai will spawn with the specified idle animation.

AIOVERRIDE_SPAWN_ANIM_IDLE.png

AIOVERRIDE_SPAWNED_BY_SYNC_ENTITY
AIOVERRIDE_WANDER

The spawned ai will wander around (provided they are not set to any target, to infight, or are aware of the player).

AIOVERRIDE_ENTRANCE_ANIM_NO_ENEMIES
AIOVERRIDE_TELEPORT_NO_ENEMIES
AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_ENTRANCE

Same usage as AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_SPLINE (?)

AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_SPLINE

The ai will spawn with its teleport FX and move to the idInfoFlightVolumeEntrance set in its spawn target's initialTargetOverride

AIOVERRIDE_FORCE_TELEPORT_TO_FLIGHT_SPLINE.png

Type Lists

eEncounterSpawnType_t

These types can also be dumped with sh_type/mh_type eEncounterSpawnType_t

Types

2016

ENCOUNTER_SPAWN_ZOMBIE
ENCOUNTER_SPAWN_WELDER_ZOMBIE
ENCOUNTER_SPAWN_IMP
ENCOUNTER_SPAWN_IMP_ALBINO - Unused/Cut AI type
ENCOUNTER_SPAWN_HELL_SOLDIER
ENCOUNTER_SPAWN_SHOTGUN_SOLDIER
ENCOUNTER_SPAWN_BEAM_SOLDIER - Hell Razer
ENCOUNTER_SPAWN_LOST_SOUL
ENCOUNTER_SPAWN_HELL_KNIGHT
ENCOUNTER_SPAWN_CACODEMON
ENCOUNTER_SPAWN_ARCHVILE - Summoner
ENCOUNTER_SPAWN_REVENANT
ENCOUNTER_SPAWN_PINKY
ENCOUNTER_SPAWN_SPECTRE
ENCOUNTER_SPAWN_MANCUBUS
ENCOUNTER_SPAWN_CYBER_MANCUBUS
ENCOUNTER_SPAWN_BARON
ENCOUNTER_SPAWN_CYBERDEMON
ENCOUNTER_SPAWN_ANY

Eternal

ENCOUNTER_SPAWN_ZOMBIE_TIER_1 - Regular Zombie
ENCOUNTER_SPAWN_ZOMBIE_T1_SCREECHER
ENCOUNTER_SPAWN_ZOMBIE_TIER_3 - Mecha Zombie
ENCOUNTER_SPAWN_ZOMBIE_MAYKR - Maykr Drone
ENCOUNTER_SPAWN_IMP
ENCOUNTER_SPAWN_STONE_IMP
ENCOUNTER_SPAWN_GARGOYLE
ENCOUNTER_SPAWN_PROWLER
ENCOUNTER_SPAWN_CURSED_PROWLER
ENCOUNTER_SPAWN_HELL_SOLDIER
ENCOUNTER_SPAWN_SHOTGUN_SOLDIER
ENCOUNTER_SPAWN_CHAINGUN_SOLDIER
ENCOUNTER_SPAWN_CARCASS
ENCOUNTER_SPAWN_LOST_SOUL
ENCOUNTER_SPAWN_HELL_KNIGHT
ENCOUNTER_SPAWN_DREAD_KNIGHT
ENCOUNTER_SPAWN_PINKY
ENCOUNTER_SPAWN_SPECTRE
ENCOUNTER_SPAWN_CACODEMON
ENCOUNTER_SPAWN_PAIN_ELEMENTAL
ENCOUNTER_SPAWN_MANCUBUS
ENCOUNTER_SPAWN_CYBER_MANCUBUS
ENCOUNTER_SPAWN_ARACHNOTRON
ENCOUNTER_SPAWN_REVENANT
ENCOUNTER_SPAWN_BLOOD_ANGEL - Blood Maykr
ENCOUNTER_SPAWN_WHIPLASH - Spectre Whiplashes are spawned using the same type
ENCOUNTER_SPAWN_DOOM_HUNTER
ENCOUNTER_SPAWN_MARAUDER
ENCOUNTER_SPAWN_BARON
ENCOUNTER_SPAWN_ARMORED_BARON
ENCOUNTER_SPAWN_ARCHVILE
ENCOUNTER_SPAWN_TYRANT
ENCOUNTER_SPAWN_GLADIATOR
ENCOUNTER_SPAWN_ICON_OF_SIN
ENCOUNTER_SPAWN_MAYKR_ANGEL - Khan Maykr
ENCOUNTER_SPAWN_SAMUEL_BOSS
ENCOUNTER_SPAWN_CUEBALL
ENCOUNTER_SPAWN_BUFF_POD - Buff Totem
ENCOUNTER_SPAWN_SUPER_TENTACLE
ENCOUNTER_SPAWN_TENTACLE
ENCOUNTER_SPAWN_SPIRIT
ENCOUNTER_SPAWN_TURRET
ENCOUNTER_SPAWN_DEMONIC_TROOPER
ENCOUNTER_SPAWN_GENERIC
ENCOUNTER_SPAWN_ANY

Type Lists

encounterGroupRole_t

These types can also be dumped with sh_type/mh_type encounterGroupRole_t

Types

2016

ROLE_DEFEND
ROLE_ASSAULT
ROLE_FLANK
ROLE_FLANK_CHARGE
ROLE_FORMATION
ROLE_THROW
ROLE_CHARGE

Eternal

ROLE_DEFEND
ROLE_ASSAULT
ROLE_FLANK
ROLE_FLANK_CHARGE
ROLE_FORMATION
ROLE_THROW
ROLE_CHARGE
ROLE_TURRET
ROLE_DEFEND_ZONE

Explanations

Type Lists

socialEmotion_t

These types can also be dumped with sh_type/mh_type socialEmotion_t

Types

2016

EMOTION_TERRIFIED
EMOTION_FEAR
EMOTION_WARY
EMOTION_DESTROY_AT_ALL_COSTS
EMOTION_DESTROY
EMOTION_HATE
EMOTION_ANGER
EMOTION_DISLIKE
EMOTION_ANNOYED
EMOTION_NEUTRAL
EMOTION_FRIENDLY
EMOTION_SQUADMATE
EMOTION_PARTNER

Eternal

EMOTION_TERRIFIED
EMOTION_FEAR
EMOTION_WARY
EMOTION_DESTROY_AT_ALL_COSTS
EMOTION_DESTROY_PRIORITY
EMOTION_DESTROY
EMOTION_HATE
EMOTION_ANGER
EMOTION_DISLIKE
EMOTION_ANNOYED
EMOTION_NEUTRAL
EMOTION_FRIENDLY
EMOTION_SQUADMATE
EMOTION_PARTNER