9. Multiplayer Modding
Information for playing and creating multiplayer mods such as modded Battlemode, Slayer vs Slayer, Co-op, and Invasion.
- Getting Starting
- Decls
- Playable Slayers
- Playable Demons
- Projectiles
- Damage
- Chainsaw
- Lootdrops
- RenderParms
- FX
- Cursed Prowlers
- Screechers
- Tyrants
- Cueballs
- Bullet Casing Collision
- Sync Melee
- Entities
Getting Starting
This chapter contains all the necessary information for playing and optimizing multiplayer mods.
How to Play Multiplayer Mods
See Commands (CMD) before proceeding.
How to Play
- How to Install Mods (general guide): https://wiki.eternalmods.com/books/1-how-to-install-mods/page/how-to-install-mods-doom-eternal
- Get the latest version of the Eternal Mod Injector.
Windows (Steam): https://gamebanana.com/tools/download/7475
Linux (Steam): https://github.com/leveste/EternalBasher/releases - All players should have the same multiplayer-related mods installed (most addons are client-sided and not every player needs to have them installed). If a player has different or extra mods installed, their game may de-sync and crash. Texture, Model, String, & Audio mods should be unaffected. Everything in the "Overrides" folder must be removed if it exists.
- A player (the host) should create a private lobby and invite a friend or two (the clients). The host invite players by selecting the Social Menu ( P ) and finding their friend or favorite profiles.
Some multiplayer mods only require 2 players, the mod author should specify this. - Once all players are ready, the host should execute one of the
loadDevMenuOptioncommands in the console provided by the mod author. Alternatively, players may ready-up with mods that require 3 players such BATTLEMODE & INVASION. Some mods require the host to executenet_gameserver_enable 0before starting a game.
Press the Grave Accent ( ` ) key to open the console. Copy the loadDevMenuOption command and use CTRL + V to paste it into the console, then press ENTER. All players will now be loaded into the map. - Here is an example of a command to load into a multiplayer map:
loadDevMenuOption devmenuoption/pvp 0 1
This command will load the Forsaken map from BATTLEMODE. A mod author can change the index of this command.
You can learn more about loading into BATTLEMODE maps here: https://wiki.eternalmods.com/books/3-developer-console/page/load-battlemode-maps
Multiplayer modding guides: https://wiki.eternalmods.com/books/9-multiplayer-modding
Network Issues
Game Issues
- Players cannot access dossier to see the mini-map or change their runes.
- Take Back rune & Extra Lives do not work.
- Time-affecting runes and weapons will de-sync clients.
- Barrels may not explode properly. This is due to making them Network Replicated and treating them as a loot drop, which prevents idProp2 entities from crashing the game for clients.
Host Issues
- Non-network replicated actions triggered by the host will not active for clients.
- Player Outlines and Nametags are invisible to the host. Outlines can be visible if they are static (do not disappear/reappear when breaking line of sight).
- Secondary Fire weapon projectile & hitscan attacks are invisible & inaudible to clients. Damage SFX can be added to damage decls for PvP modes so clients can hear the weapon if they are hit by one.
Client Issues
- Chaingun Energy Shield weapon mod crashes the game.
- Ice Bomb equipment lags the game.
- Health/Armor for Blood crystal upgrades do not work.
- Certain Runes do not work consistently. Notably, time-affecting runes.
- Punchables and Shootables offer no visual feedback.
- Entity Offsets will shift AI closer to the world origin (0, 0, 0) by 0.6%.
- Chainsaw fuel pickups cannot be picked-up after a client has already picked-up 2 of them in the same map. Fuel pickups can be modified into give ammo triggers to oust this issue.
- Armored Barons crash the game when they strike a player with their mace attack & their armor does not appear.
- Blood Maykrs will not disable their shield when vulnerable even though they can be damaged and killed during the window.
- Cursed Prowlers can be killed and locked-onto when a client is cursed. The curse effect can be changed so the host and clients may undergo a similar experience.
- Tyrants will crash the game when they walk. The walking behavior can be disabled to oust this issue.
- Cueballs will not launch themselves when killed and may not explode. They can immediately explode in place so the host and clients will see the same effect.
- Spirits can only be targeted and killed by the host.
- Tentacles cannot be chainsawed.
Network Replication
About
- Most entities have either networkReplicated = false; or networkReplicated = true; near the top of the entity outside the edit field. They determine how entities are broadcasted to clients, but they often create many visual issues or crashes when set to true.
- For example: a network replicated door obstacle will have a positioning offset that is located at a slightly incorrect location for clients. The effect is greater the farther away the entity is from 0, 0, 0 or the world origin. This applies to every network replicated entity but the effects are gradually more noticeable from further distances.
- Network replicated entities located beyond the coordinates of x = 800, y = 800, z = 200 will be unplayable for clients.
Entity offsets are roughly 0.6% closer to the coordinates of 0, 0, 0 for clients. The host does not experience this issue.
There are ways to work around entity offsets (see Entities). As of the current versions of modded multiplayer, only the AI suffer from entity offsets.
Maps with Non-Noticeable Offsets (xy < 300, z < 100)
- All 9 BATTLEMODE maps
- Fortress of Doom
- Cultist Base
- Doom Hunter Base
Intro Tram & Boss Stage2 arenas have tolerable offsets - Super Gore Nest
- Arc Complex
- Taras Nabad
Flooded & Crucible arenas have tolerable offsets - The Blood Swamps
Left-side arenas have tolerable offsets - The Dark Lord
Stage1 & Stage3 arenas have unplayable offsets
Maps with Tolerable Offsets (xy < 800, z < 200)
- Hell on Earth
Barge & Citadel areas have unplayable offsets - Sentinel Prime
- Nekravol I
- Urdak
Yellow Control Tower has borderline unplayable offsets - Final Sin
- The Holt
Possessed Tyrant arena & onward have unplayable offsets - Reclaimed Earth
Entire map has borderline unplayable offsets
Maps with Unplayable Offsets (xy > 800, z > 200)
- Exultia
Sentinel section has tolerable offsets - Mars Core
- Nekravol II
- UAC Atlantica Facility
Intro arena to Red Key arena have tolerable offsets - The World Spear
Intro Village section has tolerable offsets - Immora
Useful Commands
Optimization
restartMapWithLobby
Can be executed by the host to restart the entire map for all players in the party.exitShellLobby
Can be execute by the host to leave the match and retain all players within their party, so long as the clients do not select ACCEPT in the warning menu.disconnect
Can be executed by clients to leave the match and stay in the party, so long as the clients do not select ACCEPT in the warning menu.g_havokHeapLimitMB 200
Can be executed by any player to increase the havok limit (how much geo can do things simultaneously) which may prevent some crashes.net_maxRate 100
Can be executed by any player to increase the network rate which may decrease latency.
Development
pvp_skipReadyUp 1
Can be executed by the host to bypass the "waiting for players" event on map start. Leaving this enabled with other players may create issues for clients.pvp_skipReadyUp 0
Can be executed by the host to enable the "waiting for players" event.ai_faction_overrideEmotion_ai 0
Can be executed by the host to stop all AI from attacking much like the "notarget" command.ai_faction_overrideEmotion_ai -1
Can be executed by the host to enable normal AI aggression towards players and other AI.warning_disable allCan be executed by any player to disable the barrage of warnings in the console.warning_enable all
Can be executed by any player to enable all warnings. Restarting the game will also enable all warnings.
Auto-Executing Commands on Game Launch
- You can input commands as a new line into the candidate.cfg file within the DOOMEternal\base folder to auto-execute them when the game launches. Below is an example of DOOMEternal's installation file path for Windows.
C:\Program Files (x86)\Steam\steamapps\common\DOOMEternal\base\candidate.cfg - The candidate.cfg file can execute other config files with the
exec NameOfFile.cfgcommand added as a new line.
See Also
Decls
This chapter contains required and recommended changes to decl files.
Playable Slayers
Replace Archvile actorModifier to Slayer
gameresources_patch1\generated\decls\actormodifier\actormodifier\pvp\demon\archvile.decl
{
edit = {
displayName = "#str_decl_actormodifier_become_slayer_name_GHOST53519";
description = "#str_decl_actormodifier_become_slayer_desc_GHOST53520";
entityDef = "player";
pvpNormalUpgrades = "slayer/normal_upgrades";
pvpPowerUpgrades = "slayer/normal_upgrades";
uiSlot = "SLOT_DEMON";
uiIcon = "art/ui/pvp_playericons/ico_pvp_players_doomguy_hud";
uiIconAlt = "art/ui/pvp_playericons/ico_pvp_players_doomguy_hud_dead";
uiIconLarge = "art/ui/pvp_playericons/ico_pvp_players_doomguy";
playableCharacter = "slayer";
pvpTutorialCvarValue = 4;
}
}
Slayer entityDef
gameresources_patch1\generated\decls\entitydef\player.decl
{
class = "idPlayer";
networkReplicated = true;
disableAIPooling = false;
editorVars {
rotatable = false;
showOrientation = false;
showFixedBox = false;
skipRenderModelInEditor = false;
showInRenderMode = false;
placeable = false;
color = ( 1, 1, 1, 1 );
size = ( 0, 0, 0 );
originOffset = ( 0, 0, 0 );
material = "";
translucent = false;
editorName = "";
description = "";
}
edit = {
automapPropertiesDecl = "player";
flags = {
takedamage = true;
skipRenderModelReplication = true;
}
renderModelInfo = {
model = "md6def/characters/humans/male/base/doom_marine_3p.md6";
scale = {
x = 1;
y = 1;
z = 1;
}
lightRigDecl = "player/doom_marine_3p";
}
clipModelInfo = {
type = "CLIPMODEL_CYLINDER";
size = {
x = 1;
y = 1;
z = 1;
}
numSides = 6;
}
validPlayerKillRecipient = true;
killerNames = {
num = 1;
item[0] = "#str_decl_damage_self_inflicted_GHOST81048";
}
targetingDecl = "player/default";
fxDecl = "player/player";
forcedAdditionalSphereContents = "CONTENTS_AIAWARE";
actorConstants = {
perception = {
eyeOffset = {
z = 1.63800001;
}
crouchedEyeOffset = {
z = 0.610000014;
}
}
actorSounds = {
sndFootsteps = "play_md6_editor_footstep";
}
footstepEffectTable = "impacteffect/footsteps/player";
footstepEffectTable_Sprint = "impacteffect/footsteps/player_sprint";
footstepEffectTable_SlowWalk = "impacteffect/footsteps/player_slowwalk";
footstepEffectTable_CrouchWalk = "impacteffect/footsteps/player_slowwalk";
footstepEffectTable_Landing = "impacteffect/landings/player";
footstepEffectTable_HeavyLanding = "impacteffect/landings/player_heavy";
wallClimbEffectTable_AttachToWall_Left = "impacteffect/wall climb/wall_climb_attach";
wallClimbEffectTable_AttachToWall_Right = "impacteffect/wall climb/wall_climb_attach_righthand";
wallClimbEffectTable_JumpOffWall = "impacteffect/wall climb/wall_climb_jump_off_wall";
wallClimbEffectTable_ClimbMoving_Left = "impacteffect/wall climb/wall_climb";
wallClimbEffectTable_ClimbMoving_Right = "impacteffect/wall climb/wall_climb";
monkeyBarEffectTable_Start = "impacteffect/monkey bar/monkey_bar_on";
monkeyBarEffectTable_Stop = "impacteffect/monkey bar/monkey_bar_off";
weaponFolyForImpactList = {
num = 7;
item[0] = {
weaponFolyTable = "impacteffect/weapon_foley_player/chaingun";
weaponForFoly = "weapon/player/chaingun";
}
item[1] = {
weaponFolyTable = "impacteffect/weapon_foley_player/shotgun";
weaponForFoly = "weapon/player/shotgun";
}
item[2] = {
weaponFolyTable = "impacteffect/weapon_foley_player/super_shotgun";
weaponForFoly = "weapon/player/double_barrel";
}
item[3] = {
weaponFolyTable = "impacteffect/weapon_foley_player/plasma";
weaponForFoly = "weapon/player/plasma_rifle";
}
item[4] = {
weaponFolyTable = "impacteffect/weapon_foley_player/heavy_cannon";
weaponForFoly = "weapon/player/heavy_cannon";
}
item[5] = {
weaponFolyTable = "impacteffect/weapon_foley_player/rocket_launcher";
weaponForFoly = "weapon/player/rocket_launcher";
}
item[6] = {
weaponFolyTable = "impacteffect/weapon_foley_player/gauss";
weaponForFoly = "weapon/player/gauss_rifle";
}
}
footstepEvents = "footstepevents/default";
waterInteraction = {
emissionRate = 0.100000001;
}
}
afProperties = {
articulatedFigure = "human/doom_marine_3p";
}
actorEditable = {
entityDamageComponent = {
entityDamage = "entitydamage/player";
}
radiusDamageJoints = {
num = 4;
item[0] = "head_part01_md";
item[1] = "spine_part04_md";
item[2] = "leg_lower_rt";
item[3] = "leg_lower_lf";
}
}
factionName = "player";
startingInventory = {
num = 11;
item[0] = {
inventoryDecl = "weapon/player/shotgun";
}
item[1] = {
inventoryDecl = "weapon/player/rocket_launcher";
}
item[2] = {
inventoryDecl = "weapon/player/chaingun";
}
item[3] = {
inventoryDecl = "weapon/player/double_barrel";
}
item[4] = {
inventoryDecl = "weapon/player/heavy_cannon";
}
item[5] = {
inventoryDecl = "weapon/player/gauss_rifle";
}
item[6] = {
inventoryDecl = "weapon/player/plasma_rifle";
}
item[7] = {
inventoryDecl = "weapon/player/chainsaw";
}
item[8] = {
inventoryDecl = "abilities/environmentsuit";
}
item[9] = {
inventoryDecl = "abilities/grapplegloves";
}
item[10] = {
inventoryDecl = "jumpboots/base";
}
}
masterWeaponList = {
num = 9;
item[0] = "weapon/player/shotgun";
item[1] = "weapon/player/double_barrel";
item[2] = "weapon/player/heavy_cannon";
item[3] = "weapon/player/chaingun";
item[4] = "weapon/player/plasma_rifle";
item[5] = "weapon/player/gauss_rifle";
item[6] = "weapon/player/rocket_launcher";
item[7] = "weapon/player/bfg";
item[8] = "weapon/player/chainsaw";
}
walkIKDecl = "walkik/human_player";
inventory = {
conversionTable = "base";
autoConvertSimpleItems = true;
autoConvertComplexItems = true;
}
playerAdditiveHandsAnims = {
additiveCrouch = "additive/crouch";
additiveUnCrouch = "additive/uncrouch";
}
thirdPersonBodyDefault = "player_tp_body_praetor";
thirdPersonBodyPraetor = "player_tp_body_praetor";
playableCharacter = "slayer";
handsModelDefault = "md6def/player/human/base/praetor.md6";
handsModelPraetor = "md6def/player/human/base/praetor.md6";
handsModelDefault_D1 = "md6def/player/human/base/praetor_d1.md6";
handsModelPraetor_D1 = "md6def/player/human/base/praetor_d1.md6";
handsModelDefaultShowHideMeshInfo = {
meshesToHide = {
num = 1;
item[0] = "body";
}
meshesToShow = {
num = 1;
item[0] = "arms";
}
}
handsModelPraetorShowHideMeshInfo = {
meshesToHide = {
num = 1;
item[0] = "body";
}
meshesToShow = {
num = 2;
item[0] = "arm_MESH";
item[1] = "knife_base_MESH";
}
}
handsModelDefault_D1ShowHideMeshInfo = {
meshesToHide = {
num = 1;
item[0] = "body";
}
meshesToShow = {
num = 1;
item[0] = "arms";
}
}
handsModelPraetor_D1ShowHideMeshInfo = {
meshesToHide = {
num = 1;
item[0] = "body";
}
meshesToShow = {
num = 2;
item[0] = "arm_MESH";
item[1] = "knife_base_MESH";
}
}
thirdPersonModelDefaultShowHideMeshInfo = {
meshesToHide = {
num = 1;
item[0] = "launcher_low_base";
}
}
handsAnimWeb = "animweb/player/fp_hands";
handsAnimWeb_D1 = "animweb/player/fp_hands_d1";
handsFX = "player/fp_hands";
helmetModel = "md6def/player/human/base/helmet.md6";
normalBFG = "weapon/player/bfg";
hiddenBFG = "weapon/player/unmaykr";
weaponAutoSelectPriorityList = {
num = 8;
item[0] = "weapon/player/shotgun";
item[1] = "weapon/player/heavy_cannon";
item[2] = "weapon/player/plasma_rifle";
item[3] = "weapon/player/chaingun";
item[4] = "weapon/player/double_barrel";
item[5] = "weapon/player/gauss_rifle";
item[6] = "weapon/player/rocket_launcher";
item[7] = "weapon/player/chainsaw";
}
handsHitReactionData = {
animWebDecl = "animweb/player/fp_hands_hit_reactions";
defaultAnimWebSubWeb = "default";
defaultAnimWebState = "idle";
reactions = {
num = 13;
item[0] = {
name = "generic_1";
animWebState = "generic_1";
descriptor = {
anglePerturbDegs = 45;
}
}
item[1] = {
name = "generic_2";
animWebState = "generic_2";
descriptor = {
anglePerturbDegs = 45;
}
}
item[2] = {
name = "melee_1";
animWebState = "melee_1";
descriptor = {
type = "HANDSHITREACTION_MELEE";
allowWeaponAlphaOverride = false;
}
}
item[3] = {
name = "melee_2";
animWebState = "melee_2";
descriptor = {
type = "HANDSHITREACTION_MELEE";
allowWeaponAlphaOverride = false;
}
}
item[4] = {
name = "explosive_1";
animWebState = "explosive_1";
descriptor = {
type = "HANDSHITREACTION_EXPLOSIVE";
anglePerturbDegs = 45;
strengthTable = "player/handsanimation/hitdirection/explosive";
allowWeaponAlphaOverride = false;
}
}
item[5] = {
name = "explosive_2";
animWebState = "explosive_2";
descriptor = {
type = "HANDSHITREACTION_EXPLOSIVE";
anglePerturbDegs = 45;
strengthTable = "player/handsanimation/hitdirection/explosive";
allowWeaponAlphaOverride = false;
}
}
item[6] = {
name = "fire_1";
animWebState = "fire_1";
descriptor = {
type = "HANDSHITREACTION_FIRE";
anglePerturbDegs = 45;
allowWeaponAlphaOverride = false;
}
}
item[7] = {
name = "fire_2";
animWebState = "fire_2";
descriptor = {
type = "HANDSHITREACTION_FIRE";
anglePerturbDegs = 45;
allowWeaponAlphaOverride = false;
}
}
item[8] = {
name = "pushed";
animWebState = "pushed";
impactReaction = "pushed_impact";
descriptor = {
type = "HANDSHITREACTION_PUSHED";
anglePerturbDegs = 45;
allowWeaponAlphaOverride = false;
movementGraph = "player/handsanimation/hitdirection/pushed";
}
}
item[9] = {
name = "pushed_impact";
animWebState = "pushed_impact";
descriptor = {
type = "HANDSHITREACTION_NONE";
allowWeaponAlphaOverride = false;
}
}
item[10] = {
name = "lunge";
animWebState = "pushed";
impactReaction = "lunge_impact";
descriptor = {
type = "HANDSHITREACTION_LUNGE";
allowWeaponAlphaOverride = false;
movementGraph = "player/handsanimation/hitdirection/pushed";
}
}
item[11] = {
name = "lunge_impact";
animWebState = "pushed_impact";
descriptor = {
type = "HANDSHITREACTION_NONE";
allowWeaponAlphaOverride = false;
}
}
item[12] = {
name = "shotgunner_knockback";
descriptor = {
type = "HANDSHITREACTION_SHOTGUNNER_KNOCKBACK";
allowWeaponAlphaOverride = false;
movementGraph = "player/handsanimation/hitdirection/shotgunner_knockback";
}
}
}
}
playerBodyReactionData = {
tpBodyDefaultPath = "player/tp_body/default/idle";
reactionsBase = {
num = 34;
item[0] = {
name = "blastLarge";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
useDead = true;
throwsPlayer = true;
dontUseInWater = true;
enable = false;
rangeMax = 4.76300001;
state_start = {
name = "blastLarge start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastLargeFall";
}
state_impactGround = {
name = "blastLarge land";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastLargeLand";
}
state_impactGroundDead = {
name = "blastLarge landDead";
tpBodyDestPath = "player/tp_body/blast/blastLargeLandDead";
tpBodyViaPath = "player/tp_body/blast/blastLargeLandDead_into";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[1] = {
name = "blastLarge2";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
useDead = true;
throwsPlayer = true;
dontUseInWater = true;
enable = false;
rangeMax = 4.76300001;
state_start = {
name = "blastLarge2 start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastLargeFall";
}
state_impactGround = {
name = "blastLarge2 land";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastLargeLand2";
}
state_impactGroundDead = {
name = "blastLarge2 landDead";
tpBodyDestPath = "player/tp_body/blast/blastLargeLandDead";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[2] = {
name = "blastSmall";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
dontUseInWater = true;
enable = false;
rangeMax = 9.52500057;
state_start = {
name = "blastSmall start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastSmallFall";
}
state_impactGround = {
name = "blastSmall_land";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blastSmallLand";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[3] = {
name = "blastSmall2";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
dontUseInWater = true;
enable = false;
rangeMax = 9.52500057;
state_start = {
name = "blast";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/blast";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[4] = {
name = "death_generic";
type = "PLAYER_BODY_REACTION_DEATH";
useAlive = true;
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
state_start = {
name = "death_generic";
tpBodyDestPath = "player/tp_body/deaths/death_generic";
tpBodyViaPath = "player/tp_body/deaths/death_generic_into";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
reactionAlignToDir = false;
}
item[5] = {
name = "deadBlast";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useDead = true;
throwsPlayer = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "deadBlastLarge start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/blast/deadblastLargeFall";
}
state_impactGround = {
name = "deadblastLarge land";
tpBodyDestPath = "player/tp_body/blast/deadblastlargeland";
tpBodyViaPath = "player/tp_body/blast/deadblastlargeland_into";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[6] = {
name = "fallDeath";
type = "PLAYER_BODY_REACTION_FALL";
useDead = true;
offGroundOnly = true;
dontUseInWater = true;
state_start = {
name = "fallDeath";
tpBodyDestPath = "player/tp_body/fall/fallDeath";
tpBodyViaPath = "player/tp_body/fall/fallDeath_into";
}
reactionNumVariations = 6;
reactionAlignToDir = false;
}
item[7] = {
name = "poisonGasDeath";
type = "PLAYER_BODY_REACTION_POISON_GAS";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "poisonGasDeath";
tpBodyDestPath = "player/tp_body/poisonGas/poisonGasDeath";
tpBodyViaPath = "player/tp_body/poisonGas/poisonGasDeath_into";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
reactionAlignToDir = false;
}
item[8] = {
name = "damage/stumble";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
useDead = true;
throwsPlayer = true;
dontUseInWater = true;
enable = false;
rangeMin = 4.76300001;
rangeMax = 9.52500057;
state_start = {
name = "stumble start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/base/damage/stumble";
}
state_impactGround = {
name = "blastLarge land";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/base/damage/stumble_land";
}
state_impactGroundDead = {
name = "stumble death";
tpBodyDestPath = "player/tp_body/base/damage/knockdown_dead_idle";
tpBodyViaPath = "player/tp_body/base/damage/knockdown_dead_into";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[9] = {
name = "damage/knockdown";
type = "PLAYER_BODY_REACTION_EXPLOSIVE";
useAlive = true;
useDead = true;
throwsPlayer = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
rangeMax = 2.43799996;
state_start = {
name = "knockdown start";
tpBodyDestPath = "player/tp_body/base/default/idle";
tpBodyViaPath = "player/tp_body/base/damage/knockdown";
}
state_impactGround = {
name = "knockdown land";
tpBodyDestPath = "player/tp_body/base/default/idle";
tpBodyViaPath = "player/tp_body/base/damage/knockdown_land";
}
state_impactGroundDead = {
name = "knockdown death";
tpBodyDestPath = "player/tp_body/base/damage/knockdown_dead_idle";
}
reactionNumDirs = "PLAYER_BODY_REACTION_NUMDIRS_4";
}
item[10] = {
name = "groundPound";
type = "PLAYER_BODY_REACTION_GROUND_POUND";
useAlive = true;
throwsPlayer = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "groundPound start";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/groundPound/groundPound";
}
reactionAlignToDir = false;
inhibitView = false;
pitchConstraintDegs = 89;
yawConstraintDegs = 45;
}
item[11] = {
name = "heavyLanding";
type = "PLAYER_BODY_REACTION_HEAVY_LANDING";
useAlive = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "heavyLanding";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/land/land_heavy";
}
reactionAlignToDir = false;
}
item[12] = {
name = "fireDeath";
type = "PLAYER_BODY_REACTION_FIRE";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "fireDeath";
tpBodyDestPath = "player/tp_body/deaths/death_fire";
}
reactionAlignToDir = false;
}
item[13] = {
name = "gibDeath";
type = "PLAYER_BODY_REACTION_GIB";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "blastDeath";
tpBodyDestPath = "player/tp_body/deaths/death_blast";
}
reactionAlignToDir = false;
}
item[14] = {
name = "gibDeathEasterEgg";
type = "PLAYER_BODY_REACTION_GIB";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
chanceToOccur = 0;
enable = false;
state_start = {
name = "blastDeathEasterEgg";
tpBodyDestPath = "player/tp_body/deaths/death_blast_easter_egg";
}
reactionAlignToDir = false;
}
item[15] = {
name = "death_gib_lite";
type = "PLAYER_BODY_REACTION_GIB_LITE";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "blastDeathLite";
tpBodyDestPath = "player/tp_body/deaths/death_gib_lite";
}
reactionAlignToDir = false;
}
item[16] = {
name = "gibFalling";
type = "PLAYER_BODY_REACTION_GIB_FALLING";
useDead = true;
offGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "gibFalling";
tpBodyDestPath = "player/tp_body/deaths/death_air_blast";
}
reactionAlignToDir = false;
}
item[17] = {
name = "massiveMeleeHitDeath";
type = "PLAYER_BODY_REACTION_MASSIVE_MELEE_HIT";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "massiveMeleeHitDeath";
tpBodyDestPath = "player/tp_body/deaths/death_massive_melee_hit";
}
reactionAlignToDir = false;
clipCameraMovement = false;
}
item[18] = {
name = "sliceVerticalDeath";
type = "PLAYER_BODY_REACTION_SLICE_VERTICAL";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "sliceVerticalDeath";
tpBodyDestPath = "player/tp_body/deaths/death_slice_vertical";
}
reactionAlignToDir = false;
}
item[19] = {
name = "sliceHorizontalDeath";
type = "PLAYER_BODY_REACTION_SLICE_HORIZONTAL";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "sliceHorizontalDeath";
tpBodyDestPath = "player/tp_body/deaths/death_slice_horizontal";
}
reactionAlignToDir = false;
}
item[20] = {
name = "death_lava";
type = "PLAYER_BODY_REACTION_DEATH_LAVA";
useDead = true;
enable = false;
state_start = {
name = "death_lava";
tpBodyDestPath = "player/tp_body/deaths/death_lava";
}
reactionAlignToDir = false;
}
item[21] = {
name = "death_lava_2";
type = "PLAYER_BODY_REACTION_DEATH_LAVA";
useDead = true;
state_start = {
name = "death_lava_2";
tpBodyDestPath = "player/tp_body/deaths/death_lava_2";
}
reactionAlignToDir = false;
}
item[22] = {
name = "airDeath";
type = "PLAYER_BODY_REACTION_DEATH";
useDead = true;
offGroundOnly = true;
needsPhysics = true;
state_start = {
name = "airDeath loop";
tpBodyDestPath = "player/tp_body/deaths/death_air_loop";
tpBodyViaPath = "player/tp_body/deaths/death_air_into";
}
state_impactGround = {
name = "airDeath impact";
tpBodyDestPath = "player/tp_body/deaths/death_air_impact";
}
reactionAlignToDir = false;
}
item[23] = {
name = "landSlam";
type = "PLAYER_BODY_REACTION_LAND_SLAM";
useAlive = true;
dontUseInWater = true;
state_start = {
name = "landSlam";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/land/land_slam";
}
reactionAlignToDir = false;
}
item[24] = {
name = "landSlamAlt";
type = "PLAYER_BODY_REACTION_LAND_SLAM_ALT";
useAlive = true;
dontUseInWater = true;
state_start = {
name = "landSlamAlt";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/land/land_slam_2019";
}
reactionAlignToDir = false;
}
item[25] = {
name = "returnFromHell";
type = "PLAYER_BODY_REACTION_RETURN_FROM_HELL";
useAlive = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "landSlam";
tpBodyDestPath = "player/tp_body/default/idle";
tpBodyViaPath = "player/tp_body/return_from_hell/return_from_hell";
}
reactionAlignToDir = false;
}
item[26] = {
name = "death_electricity";
type = "PLAYER_BODY_REACTION_ELECTRICAL";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_electricity";
tpBodyDestPath = "player/tp_body/deaths/death_electricity";
}
reactionAlignToDir = false;
}
item[27] = {
name = "death_bite";
type = "PLAYER_BODY_REACTION_DEATH_BITE";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
enable = false;
state_start = {
name = "death_bite";
tpBodyDestPath = "player/tp_body/deaths/death_bite";
}
reactionAlignToDir = false;
}
item[28] = {
name = "death_acid";
type = "PLAYER_BODY_REACTION_ACID";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_acid";
tpBodyDestPath = "player/tp_body/deaths/death_acid";
}
reactionAlignToDir = false;
}
item[29] = {
name = "death_decapitation";
type = "PLAYER_BODY_REACTION_DEATH_DECAPITATION";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_decapitation";
tpBodyDestPath = "player/tp_body/base/deaths/death_decapitation";
}
reactionAlignToDir = false;
}
item[30] = {
name = "death_run_over";
type = "PLAYER_BODY_REACTION_DEATH_RUN_OVER";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_run_over";
tpBodyDestPath = "player/tp_body/deaths/death_run_over";
}
reactionAlignToDir = false;
}
item[31] = {
name = "death_hole_in_chest";
type = "PLAYER_BODY_REACTION_DEATH_HOLE_IN_CHEST";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_hole_in_chest";
tpBodyDestPath = "player/tp_body/deaths/death_hole_in_chest";
}
reactionAlignToDir = false;
}
item[32] = {
name = "death_argent_arcs";
type = "PLAYER_BODY_REACTION_DEATH_ARGENT_ARCS";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_argent_arcs";
tpBodyDestPath = "player/tp_body/deaths/death_argent_arcs";
}
reactionAlignToDir = false;
}
item[33] = {
name = "death_xenon";
type = "PLAYER_BODY_REACTION_DEATH_XENON";
useDead = true;
onGroundOnly = true;
dontUseInWater = true;
needsPhysics = true;
enable = false;
state_start = {
name = "death_xenon";
tpBodyDestPath = "player/tp_body/deaths/death_xenon";
}
reactionAlignToDir = false;
}
}
}
ignoreDirectionalDamageInPVP = true;
weaponTargetingHighlightDecl = "highlight_outline";
highlightLOSBoxDecl = "highlight_los_slayer";
allowsSlayerHighlight = true;
doom5Melee = {
doomBladeDecl = "weapon/player/doomblade";
meleeIntervalMS = 500;
meleeProjectile_Forward = "projectile/player/melee_d5_forward";
meleeProjectile_PowerStrike = "projectile/player/melee_d5_power_strike";
hitAnimRateScale = 0.75;
damageForwardForMeleeLevel = {
num = 3;
item[0] = "damage/player/melee_d5_forward";
item[1] = "damage/player/melee_d5_forward_2";
item[2] = "damage/player/melee_d5_forward_3";
}
areaEffectDelayMS = 200;
powerStrikeLevels = {
num = 1;
item[0] = {
chargeLevel = 60;
chargeLevelSound = "play_power_strike_ready_full";
damageDecl = "damage/player/melee_d5_power_strike";
areaEffectDecl = "projectile_ent/player/melee_d5_power_strike_aoe";
}
}
powerStrikeChargeLevelSoundInterval = 500;
}
syncMelee = {
syncGroups = {
num = 1;
item[0] = {
syncInteractions = {
num = 1;
item[0] = "syncdeath/playerdeath/imp/front_armrip";
}
}
}
thirdPersonRemoteInstigatorStatusEffect = "statuseffect/pvp/slayer/presentation_gk_invulnerability";
useLights = true;
defaultLightParms = {
lightDef = "light/sync_point";
offset = {
z = 0.952000022;
}
fadeInSec = 0.5;
fadeOutSec = 0.5;
}
soundParms = {
startSound = "play_glory_kill_duck";
endSound = "play_glory_kill_off";
startSoundBerserk = "play_berserk_kill_duck";
endSoundBerserk = "play_berserk_kill_off";
startSoundCrucible = "play_berserk_kill_duck";
endSoundCrucible = "play_berserk_kill_off";
fadeInSec = 0.5;
fadeOutSec = 0.5;
}
}
minWeaponPoints = 7;
minPraetorTokens = 6;
resetCheckpointDeathsWhenShown = false;
resetLevelDeathsWhenShown = false;
numDeathsPerCheckpoint = 99999999;
weaponPointTutorial = "tutorialevent/ingame_tutorial/spend_your_points_wp";
praetorTokenTutorial = "tutorialevent/ingame_tutorial/spend_your_points_pt";
weaponAndPraetorTutorial = "tutorialevent/ingame_tutorial/spend_your_points_wp_pt";
progressionTutorialCodex = "codex/tutorials/progression";
marauderKilledPlayerTutorial = "tutorialevent/ingame_tutorial/weak_point_marauder_death";
tyrantCrucibleDef = "cineractive/e2m2_base/tyrant_crucible_hammer/tyrant_crucible_hammer_sync";
archvileSyncDef = "cineractive/hammer_trailer/archvile_hammer_sync";
tcamViewShake = "advancedscreenviewshake/trailercam_shake";
uiResources = {
dossierSuitBackground = "dossier/suit_background";
emberVideo = "dossier/ember";
dossierForegroundVideo = "dossier/foreground";
mainObjectiveVideo = "video/main_objective";
eolVideo = "dossier/ashforeground";
grenadeArrow = "textures/guis/hud/interior_damage/indicator_n";
grenadeIcon = "textures/guis/hud/interior_damage/d_grenade";
}
waterValues = "slayer";
dashItemDecl = "ability_dash";
dodgeStats = {
initialSpeedDuration = 0.0700000003;
middleDuration = 0.0799999982;
slowDownDuration = 0.100000001;
initialVerticalSpeed = 0.0949999988;
viewRollScalar = 4;
}
breadCrumbs = {
ribbonSplinePath = "spline/path";
ribbonEffect = "breadcrumb";
ribbonSamples = 50;
ribbonInitialHeight = 0.381000012;
}
dashboard = {
radMeter = {
decay = {
decayRate = 1;
}
radShieldItemDecl = "map_objects/rad_shield_damage_decreases_shield";
radShieldItemDecl2 = "map_objects/rad_shield_time_decreases_shield";
radShieldRechargeItemDecl = "map_objects/rad_suit_refill_shield";
hazardInfoList = {
num = 4;
item[0] = {
declDamage = "damage/hazard/slime";
noDamageTimeWithRadMS = 500;
meterDecreasePerDamage = 0.100000001;
}
item[1] = {
declDamage = "damage/hazard/water_toxic";
noDamageTimeWithRadMS = 500;
meterDecreasePerDamage = 0.0599999987;
}
item[2] = {
declDamage = "damage/hazard/slime_sac";
noDamageTimeWithRadMS = 500;
meterDecreasePerDamage = 0.0500000007;
}
item[3] = {
declDamage = "damage/hazard/poison_bog";
noDamageTimeWithRadMS = 500;
meterDecreasePerDamage = 0.0799999982;
}
}
fxDecl = "player/hazmat_shield";
startHazardSoundDecl = "play_rad_suit_lp";
stopHazardSoundDecl = "play_rad_suit_off";
meter25PercentSoundDecl = "play_rad_suit_low_warning_loop";
uiMeterScale = 100;
}
dashMeter = {
maxValue = 100;
maxValueSound = "play_dash_recharge";
playMaxValueSoundOnInit = false;
pipMetering = {
maxNumPips = 2;
}
deathBonus = 0;
maxValueSoundRechargedFromEmpty = "play_dash_recharge_double";
}
powerStrikeMeter = {
maxValue = 100;
maxValueSound = "play_power_strike_ready_full";
regeneration = {
regenRate = 10;
}
debugBar = {
x = 0.800000012;
y = 0.800000012;
width = 0.100000001;
height = 0.00749999983;
frameColor = {
x = 0;
y = 0;
}
barColor = {
x = 0.75;
y = 0.75;
z = 0.75;
}
}
}
judgementMeter = {
maxValue = 3;
maxValueSound = "play_power_strike_ready_full";
pipMetering = {
maxNumPips = 3;
}
regeneration = {
regenRate = 0.699999988;
}
debugBar = {
x = 0.800000012;
y = 0.75;
width = 0.150000006;
height = 0.0199999996;
frameColor = {
x = 0;
y = 0;
w = 0.75;
}
barColor = {
x = 0.75;
y = 0.75;
z = 0.75;
w = 0.75;
}
}
decayKillPips = 10;
decayKillDemonCosts = {
num = 6;
item[0] = {
monsterType = "AI_MONSTER_CUEBALL";
value = 0;
}
item[1] = {
monsterType = "AI_MONSTER_TENTACLE";
value = 1;
}
item[2] = {
monsterType = "AI_MONSTER_ZOMBIE_TIER_1 AI_MONSTER_ZOMBIE_TIER_3 AI_MONSTER_IMP AI_MONSTER_STONE_IMP AI_MONSTER_GARGOYLE AI_MONSTER_HELL_SOLDIER AI_MONSTER_SHOTGUN_SOLDIER AI_MONSTER_LOSTSOUL AI_MONSTER_MARAUDER_WOLF";
value = 1;
}
item[3] = {
monsterType = "AI_MONSTER_ZOMBIE_MAYKR AI_MONSTER_PROWLER AI_MONSTER_CURSED_PROWLER AI_MONSTER_CARCASS";
value = 1;
}
item[4] = {
monsterType = "AI_MONSTER_HELLKNIGHT AI_MONSTER_DREADKNIGHT AI_MONSTER_PINKY AI_MONSTER_SPECTRE AI_MONSTER_CACODEMON AI_MONSTER_PAIN_ELEMENTAL AI_MONSTER_MANCUBUS AI_MONSTER_CYBER_MANCUBUS AI_MONSTER_ARACHNOTRON AI_MONSTER_REVENANT AI_MONSTER_WHIPLASH AI_MONSTER_BLOOD_ANGEL";
value = 1;
}
item[5] = {
monsterType = "AI_MONSTER_DOOM_HUNTER AI_MONSTER_MARAUDER AI_MONSTER_BARON AI_MONSTER_TYRANT AI_MONSTER_ARCHVILE";
value = 1;
}
}
useDecayKillDemonCosts = true;
regenRequiresInactive = true;
}
oxygenMeter = {
regeneration = {
regenRate = 2;
}
oxygenSuitItemDecl = "map_objects/dive_suit_damage_decreases_oxygen";
oxygenSuitRechargeItemDecl = "map_objects/dive_suit_refill_oxygen";
hazardInfoList = {
num = 4;
item[0] = {
declDamage = "damage/hazard/water_deep";
noDamageTimeWithSuitMS = 600;
meterDecreasePerDamage = 0.0500000007;
}
item[1] = {
declDamage = "damage/hazard/water_deep_increased";
noDamageTimeWithSuitMS = 500;
meterDecreasePerDamage = 0.100000001;
}
item[2] = {
declDamage = "damage/hazard/water_toxic";
noDamageTimeWithSuitMS = 500;
meterDecreasePerDamage = 0.0500000007;
}
item[3] = {
declDamage = "damage/hazard/water_toxic_increased";
noDamageTimeWithSuitMS = 500;
meterDecreasePerDamage = 0.0500000007;
}
}
fxDecl = "player/hazmat_shield";
meter25PercentSoundDecl = "play_rad_suit_low_warning_loop";
uiMeterScale = 100;
oxygenRegenDelay = {
value = 2;
}
}
notificationManager = {
notificationDefs = {
num = 88;
item[0] = "hud/codex";
item[1] = "hud/keycard";
item[2] = "hud/objective_update";
item[3] = "hud/objective_complete";
item[4] = "hud/mod_acquired";
item[5] = "hud/rune_acquired";
item[6] = "hud/praetor_acquired";
item[7] = "hud/weapon_point";
item[8] = "hud/collectible_acquired";
item[9] = "hud/argentupgrade_acquired";
item[10] = "hud/callouts/generic_callout";
item[11] = "hud/callouts/round_timer_callout";
item[12] = "hud/callouts/ally_used_card";
item[13] = "hud/callouts/enemy_used_card";
item[14] = "hud/callouts/match_defeat";
item[15] = "hud/callouts/match_victory";
item[17] = "hud/callouts/round_start";
item[18] = "hud/weapon_broken";
item[19] = "hud/invasion/incoming_invader";
item[20] = "hud/fast_travel";
item[21] = "hud/sentinel_armor_activated";
item[22] = "hud/sentinel_armor_deactivated";
item[23] = "hud/extra_life_activated";
item[24] = "hud/extra_life_acquired";
item[25] = "hud/secret_found";
item[26] = "hud/combat_point";
item[27] = "hud/bounty_complete";
item[28] = "hud/keycard";
item[29] = "hud/slayer_key";
item[30] = "hud/slayer_gate";
item[31] = "hud/mission_challenge_update";
item[32] = "hud/mission_challenge_complete";
item[33] = "hud/slayer_encounter";
item[34] = "hud/weapon_mastery_challenge_update";
item[35] = "hud/sentinel_battery_acquired";
item[36] = "hud/slayer_battery";
item[37] = "hud/automap";
item[38] = "hud/event/mission_complete";
item[39] = "hud/event/boss_complete";
item[40] = "hud/event/invasion_complete";
item[41] = "hud/event/master_level_complete";
item[42] = "hud/event/pvp_match_complete";
item[43] = "hud/rune_upgrade_token_acquired";
item[44] = "hud/bounty_spawned";
item[45] = "hud/secret_hint";
item[46] = "hud/checkpoint";
item[47] = "hud/weapon_mastery";
item[48] = "hud/hint";
item[49] = "hud/inventory_acquired";
item[50] = "hud/rad_suit_acquired";
item[51] = "hud/equipment_pickup_acquired";
item[52] = "hud/objective_show_last";
item[53] = "hud/milestone_complete";
item[54] = "hud/season_level_up";
item[55] = "hud/slayer_gate_e3";
item[56] = "hud/weapon_points";
item[57] = "hud/level_up";
item[58] = "hud/secret_encounter_found";
item[59] = "hud/milestone_complete_silent";
item[60] = "hud/upgrade_reminder";
item[61] = "hud/secret_encounter_failed";
item[62] = "hud/secret_encounter_complete";
item[63] = "hud/weapon_mastery_challenge_complete";
item[64] = "hud/upgrade_reminder_praetor";
item[65] = "hud/objective_pinned";
item[66] = "hud/mission_challenge_intro";
item[67] = "hud/gold_boss_start";
item[68] = "hud/gold_boss_defeated";
item[69] = "hud/extra_life_encounter_complete";
item[70] = "hud/extra_life_encounter_failed";
item[71] = "hud/extra_life_encounter_found";
item[72] = "hud/master_level_start";
item[73] = "hud/slayer_encounter_no_points";
item[74] = "hud/extra_lifed_maxed";
item[75] = "hud/extra_life_acquired_2";
item[76] = "hud/extra_life_acquired_3";
item[77] = "hud/dive_suit_acquired";
item[78] = "hud/secret_encounter_dlc_complete";
item[79] = "hud/secret_encounter_dlc_complete_skin_progress";
item[80] = "hud/secret_encounter_dlc_complete_skin_unlocked";
item[81] = "hud/support_rune_acquired";
item[82] = "hud/player_cursed";
item[83] = "hud/horde/timed_bounty_start";
item[84] = "hud/horde/timed_bounty_completed";
item[85] = "hud/horde/timed_bounty_failed";
item[86] = "hud/horde/state_share_win";
item[87] = "hud/horde/state_share_lose";
}
}
weaponManager = {
masterAllWeapons = "campaign/master_all_weapons";
requiredMasteredWeapons = {
num = 8;
item[0] = "campaign/master_ballista";
item[1] = "campaign/master_chaingun";
item[2] = "campaign/master_combat_shotgun";
item[3] = "campaign/master_heavy_cannon";
item[4] = "campaign/master_plasma_rifle";
item[5] = "campaign/master_rocket_launcher";
item[6] = "campaign/master_super_shotgun";
}
dossierOrderWeaponList = {
num = 9;
item[0] = "weapon/player/shotgun";
item[1] = "weapon/player/heavy_cannon";
item[2] = "weapon/player/plasma_rifle";
item[3] = "weapon/player/rocket_launcher";
item[4] = "weapon/player/double_barrel";
item[5] = "weapon/player/gauss_rifle";
item[6] = "weapon/player/chaingun";
item[7] = "weapon/player/bfg";
item[8] = "weapon/player/unmaykr";
}
}
runeManager = {
masterRuneList = {
num = 9;
item[0] = "perk/player/runes/glory_kill_speed";
item[1] = "perk/player/runes/glory_kill_dash";
item[2] = "perk/player/runes/speed_boost_on_glory_kill";
item[3] = "perk/player/runes/double_jump_air_control";
item[4] = "perk/player/runes/modify_enemy_stagger_duration";
item[5] = "perk/player/runes/activate_focus_on_death_blow";
item[6] = "perk/player/runes/target_strike";
item[7] = "perk/player/runes/decrease_equipment_recharge";
item[8] = "perk/player/runes/blood_punch_loot_on_damage";
}
runePerkGroup = "perkgroups/runes";
supportRunePerkGroup = "perkgroups/support_runes";
runeSlotReq = {
ptr = {
ptr[0] = 1;
ptr[1] = 2;
ptr[2] = 3;
}
}
}
suitManager = {
masterSuitGroup = "perkgroups/suit";
fundamentals = {
display = "#str_praetor_fundamentals";
description = "#str_praetor_fundamentals_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/fundamentals";
suitUpgrades = {
num = 4;
item[0] = "perk/player/suit/fundamentals/ledge_grab_speed";
item[1] = "perk/player/suit/fundamentals/weapon_change_speed";
item[2] = "perk/player/suit/dash/dash_regen_delay";
item[3] = "perk/player/suit/dash/dash_gk_restore_dash";
}
}
extermination = {
index = 1;
display = "#str_praetor_extermination";
description = "#str_praetor_extermination_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/extermination";
suitUpgrades = {
num = 4;
item[0] = "perk/player/equipment/frag_reduce_cooldown";
item[1] = "perk/player/equipment/frag_concussive_blast";
item[2] = "perk/player/equipment/frag_max_capacity";
item[3] = "perk/player/equipment/frag_cluster_bombs";
}
}
selfPreservation = {
index = 2;
display = "#str_praetor_self_preservation";
description = "#str_praetor_self_preservation_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/self_preservation";
suitUpgrades = {
num = 4;
item[0] = "perk/player/suit/self_preservation/reduce_hazard_damage";
item[1] = "perk/player/suit/self_preservation/reduce_self_weapon_damage";
item[2] = "perk/player/suit/extermination/barrels_respawn";
item[3] = "perk/player/suit/extermination/barrels_drop_ammo";
}
}
powerups = {
index = 3;
display = "#str_praetor_powerups";
description = "#str_praetor_powerups_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/powerups";
suitUpgrades = {
num = 4;
item[0] = "perk/player/equipment/ice_reduce_cooldown";
item[1] = "perk/player/equipment/ice_extend_duration";
item[2] = "perk/player/equipment/ice_health_drops";
item[3] = "perk/player/equipment/ice_melee_shatter";
}
}
exploration = {
index = 4;
display = "#str_praetor_exploration";
description = "#str_praetor_exploration_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/navigation";
suitUpgrades = {
num = 4;
item[0] = "perk/player/suit/exploration/automap_shows_map_station";
item[1] = "perk/player/suit/exploration/automap_shows_progression_items";
item[2] = "perk/player/suit/exploration/automap_increased_fog_radius";
item[3] = "perk/player/suit/exploration/dossier_shows_progression_items";
}
}
dash = {
index = 5;
display = "#str_praetor_dash";
description = "#str_praetor_dash_desc";
iconMaterial = "art/ui/dossier/icons/preator_suit/category/dash";
suitUpgrades = {
num = 4;
item[0] = "perk/player/suit/self_preservation/reduce_hazard_damage";
item[1] = "perk/player/suit/self_preservation/reduce_self_weapon_damage";
item[2] = "perk/player/suit/extermination/barrels_respawn";
item[3] = "perk/player/suit/extermination/barrels_drop_ammo";
}
}
argentCellPerkGroup = "perkgroups/argent_cell";
suitPerkGroup = "perkgroups/suit";
cheatcode = "CHEAT_CODE_TYPE_QUAKECON_MODE";
allAcqTutorial = "tutorialevent/ingame_tutorial/quakecon_mode";
}
unlockableManager = {
missionChallenges = "missionchallenge/main";
milestones = "milestonelist/main";
}
statManager = {
explorationHintOptions = {
num = 3;
item[0] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_CHALLENGES_COMPLETED";
value = 0;
operation = "RULE_OPERATION_EQUALS";
}
}
resultDataDecl = "hint/gameplay/mission_challenge";
}
item[1] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_SECRETS_FOUND";
secondStat = "STAT_SECRETS";
secondStatDuration = "DUR_LEVEL";
value = 50;
operation = "RULE_OPERATION_LESS_THAN_PERCENTAGE";
}
}
bonusRules = {
num = 1;
item[0] = {
stat = "STAT_SECRETS_FOUND";
secondStat = "STAT_SECRETS";
secondStatDuration = "DUR_LEVEL";
value = 25;
operation = "RULE_OPERATION_LESS_THAN_PERCENTAGE";
}
}
resultDataDecl = "hint/exploration/secrets";
}
item[2] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_SLAYER_GATE_USED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_EQUALS";
}
}
resultDataDecl = "hint/exploration/slayer_gate";
}
}
combatHintOptions = {
num = 25;
item[0] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_REVENANT_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/revenant";
}
item[1] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_HELL_MARINE_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/soldier_blaster";
}
item[2] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_PINKY_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/pinky";
}
item[3] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_BARON_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/baron";
}
item[4] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_CACODEMON_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/cacodemon";
}
item[5] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_MANCUBUS_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/mancubus_fire";
}
item[6] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_LOST_SOUL_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/lost_soul";
}
item[7] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_HELL_SHOTGUNNER_KILLED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/soldier_shield";
}
item[8] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_SHOTGUN_DAMAGE";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/shotgun";
}
item[9] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_DBL_SHOTGUN_DAMAGE";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/double_barrel";
}
item[10] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_ASS_RIFLE_DAMAGE";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/heavy_cannon";
}
item[11] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_PLASM_RIFLE_DAMAGE";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/plasma_rifle";
}
item[12] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_ROCKET_LAUNCHER_KILLS";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/rocket_launcher";
}
item[13] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_CHAINGUN_KILLS";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/chaingun";
}
item[14] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_GAUSS_KILLS";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/gauss_rifle";
}
item[15] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_BFG_KILLS";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/bfg";
}
item[16] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_WEAPON_CHAINSAW_KILLS";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/chainsaw";
}
item[17] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_SHOTGUN_FULL_AUTO_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/shotgun_full_auto";
}
item[18] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_SHOTGUN_STICKY_BOMB_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/shotgun_pop_rockets";
}
item[19] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_HAR_SCOPE_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/heavy_cannon_bolt_action";
}
item[20] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_HAR_MICROMISSILE_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/heavy_cannon_burst_detonate";
}
item[21] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_CHAINGUN_TURRET_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/chaingun_turret";
}
item[22] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_PLASMA_HEATWAVE_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/plasma_rifle_aoe";
}
item[23] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_ROCKET_LAUNCHER_DETONATE_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/rocket_launcher_detonate";
}
item[24] = {
requiredRules = {
num = 1;
item[0] = {
stat = "STAT_ROCKET_LAUNCHER_LOCKON_EARNED";
statDuration = "DUR_GAME";
value = 0;
operation = "RULE_OPERATION_GREATER_THAN_VALUE";
}
}
resultDataDecl = "hint/combat/rocket_launcher_lock_mod";
}
}
}
collectibleManager = {
collectibleGroupUIData = "collectiblecategorydata";
}
uiWalkthroughManager = {
walkthroughTutorials = {
praetorSuitTutorial = "uiwalkthrough_praetorsuit";
modBotTutorial = "uiwalkthrough_modbot";
argentCellTutorial = "uiwalkthrough_argentcell";
runeTutorial = "uiwalkthrough_runes";
runeTutorialInteractState = "used_rune";
supportRuneTutorial = "uiwalkthrough_supportrunes";
}
}
soundPackManager = {
soundPacks = {
num = 1;
item[0] = "classic_doomguy_sounds";
}
}
scoreManager = {
rubric = "horde";
}
violenceKillEvents = {
num = 18;
item[0] = "violenceevent/weapon_mastery/shotgun/full_auto_kill_pinky";
item[1] = "violenceevent/weapon_mastery/rocket_launcher/lock_on_kill_prowler";
item[2] = "violenceevent/weapon_mastery/heavy_cannon/piercing_bolt_headshot";
item[3] = "violenceevent/weapon_mastery/ballista/arbalest_kill_cacodemons";
item[4] = "violenceevent/weapon_mastery/ballista/destroyer_kill_n_in_one_shot";
item[5] = "violenceevent/weapon_mastery/chaingun/mobile_turret_kill_n_in_one_deployment";
item[6] = "violenceevent/weapon_mastery/plasma_rifle/heat_blast_kill_n_in_one_shot";
item[7] = "violenceevent/mission_challenge/bfg_kill_doom_hunter";
item[8] = "violenceevent/mission_challenge/chapel_of_ghouls";
item[9] = "violenceevent/mission_challenge/balls_to_the_wall";
item[10] = "violenceevent/mission_challenge/master_of_puppets";
item[11] = "violenceevent/weapon_mastery/plasma_rifle/microwave_kill_n_in_one_shot";
item[12] = "violenceevent/mission_challenge/bonded_by_blood";
item[13] = "violenceevent/mission_challenge/external_combustion";
item[14] = "violenceevent/mission_challenge/hammer_smashed_face";
item[15] = "violenceevent/mission_challenge/kill_n_demons_with_one_frag";
item[16] = "violenceevent/mission_challenge/angel_of_death";
item[17] = "violenceevent/pvp/timeout";
}
violenceHitEvents = {
num = 8;
item[0] = "violenceevent/weapon_mastery/heavy_cannon/micro_missle_kill_n_demons";
item[1] = "violenceevent/mission_challenge/through_the_fire_and_flames";
item[2] = "violenceevent/dash_into_pinky";
item[3] = "violenceevent/pvp/fire_starter";
item[4] = "violenceevent/pvp/ignition";
item[5] = "violenceevent/pvp/wolf_master";
item[6] = "violenceevent/pvp/dodge_this";
item[7] = "violenceevent/pvp/punch_drunk";
}
}
playerProps = "player/default";
playerMechanicLedgeGrab = {
animAliases = {
ledgePullUp = "ledgeGrab/ledgePullUp";
ledgePullUpMantle = "ledgeGrab/ledgePullUpMantle";
ledgePullUpRounded = "ledgeGrab/ledgePullUpRounded";
ledgePullUpMantleRounded = "ledgeGrab/ledgePullUpMantleRounded";
ledgePullUpAngled = "ledgeGrab/ledgePullUpAngled";
ledgePullUpMantleAngled = "ledgeGrab/ledgePullUpMantleAngled";
ledgeClimbUp = "ledgeGrab/ledgeClimbUp";
ledgeClimbUpMantle = "ledgeGrab/ledgeClimbUpMantle";
railingPullUp = "ledgeGrab/railingPullUp";
railingPullUpMantle = "ledgeGrab/railingPullUpMantle";
}
thirdPersonAnimIndex = {
ledgePullUpMantle = 1;
ledgePullUpMantleRounded = 1;
ledgePullUpMantleAngled = 1;
ledgeClimbUp = 4;
ledgeClimbUpMantle = 5;
railingPullUp = 2;
railingPullUpMantle = 3;
}
}
playerMechanicWallGrab = {
initiateMaxAngle = 115;
maxDeltaYaw = 115;
constrainedViewAnglesRate = 250;
speedNormal = 12.3820009;
speedSprint = 12.3820009;
speedDismountPerp = 5.71500015;
speedDismountUp = 5.90500021;
speedDismountFwd = 9.52500057;
sound_mount = "player/foley/wallgrab/player_foley_wallgrab_mount";
sound_move = "player/foley/wallgrab/player_foley_wallgrab_move";
sound_dismount = "player/foley/wallgrab/player_foley_wallgrab_dismount";
}
playerMechanicWallClimb = {
anims = {
climb_up_cycle_right = "wall_climb/climb_up_cycle_right";
climb_up_cycle_left = "wall_climb/climb_up_cycle_left";
climb_down_cycle_right = "wall_climb/climb_down_cycle_right";
climb_down_cycle_left = "wall_climb/climb_down_cycle_left";
climb_right_cycle = "wall_climb/climb_right_cycle";
climb_left_cycle = "wall_climb/climb_left_cycle";
climb_into_up_right = "wall_climb/climb_up_into_right";
climb_into_up_left = "wall_climb/climb_up_into_left";
climb_into_down_right = "wall_climb/climb_down_into_right";
climb_into_down_left = "wall_climb/climb_down_into_left";
climb_into_right = "wall_climb/climb_right_into";
climb_into_left = "wall_climb/climb_left_into";
climb_out_up_right = "wall_climb/climb_up_out_right";
climb_out_up_left = "wall_climb/climb_up_out_left";
climb_out_down_right = "wall_climb/climb_down_out_right";
climb_out_down_left = "wall_climb/climb_down_out_left";
climb_out_right = "wall_climb/climb_right_out";
climb_out_left = "wall_climb/climb_left_out";
climb_out_right_mid = "wall_climb/climb_left_out_mid";
climb_out_left_mid = "wall_climb/climb_right_out_mid";
idle = "wall_climb/idle";
to_pointing = "wall_climb/climb_to_pointing";
from_pointing = "wall_climb/climb_from_pointing";
mount_air = "wall_climb/mount_air";
mount_ground = "wall_climb/mount_ground";
look_left = "wall_climb/look_left";
look_left_up_45 = "wall_climb/look_left_up_45";
look_left_up_90 = "wall_climb/look_left_up_90";
look_right = "wall_climb/look_right";
look_right_up_45 = "wall_climb/look_right_up_45";
look_right_up_90 = "wall_climb/look_right_up_90";
look_right_idle = "wall_climb/look_right_idle";
look_left_idle = "wall_climb/look_left_idle";
}
globalTraceDistance = 10;
viewPitchTable = "wall_climb_view_pitch";
verticalMoveTable = "wall_climb_slowmove";
horizontalMoveTable = "wall_climb_horizontalmove";
attachToWallSoundDecl = "play_climb_hit";
jumpOffWallSoundDecl = "play_climb_off";
removeHandFromWallSoundDecl = "play_climb_hand";
attachHandToWallSoundDecl = "play_climb_hand_wall";
distanceToWallToActivate = 7.5;
startMoveDelaySec = 0;
slowMoveDelayBetweenSec = 0;
initialMovementDelaySec = 0.300000012;
maxDeltaYawViewAngle = 220;
goalSpeedVerticalAccelRate = 3;
goalSpeedHorizontalAccelRate = 5;
goalSpeedVerticalJumpAccelRate = 5;
goalSpeedHorizontalJumpAccelRate = 5;
goalSpeedVerticalDecelRate = 5;
goalSpeedHorizontalDecelRate = 5;
jumpToWallSpeed = 40;
overdriveDecl = "statuseffect/overdrive";
wallClimbText = "#str_climb_wall";
}
playerMechanicGorillaBarJump = {
swingAnimation = "monkeyBar/grab";
maxLookAngleFromBar = 90;
screenShakeDecl = "advancedscreenviewshake/monkey_bar";
}
playerMechanicInteract = {
animData = {
interactAnimDatas = {
num = 3;
item[0] = {
type = "PLAYER_MECHANIC_THIRD_PERSON_INTERACT_TYPE_GENERIC";
}
item[1] = {
type = "PLAYER_MECHANIC_THIRD_PERSON_INTERACT_TYPE_SENTINEL_CRYSTAL";
animIndex = 1;
}
item[2] = {
type = "PLAYER_MECHANIC_THIRD_PERSON_INTERACT_TYPE_BUTTON";
animIndex = 2;
outroAnimIndex = 1;
}
}
}
statusEffect = "statuseffect/invasion/slayer/interact_invulnerability";
}
playerAbilityFuelRate = 3;
playerHealth = {
components = {
components[0] = {
regenInterval = {
value = 0.0299999993;
}
regenDelay = {
value = 12;
}
}
components[1] = {
max = {
defaultValue = 50;
}
drainLimit = 50;
starting = {
defaultValue = 0;
}
regenInterval = {
value = 0.0299999993;
}
regenDelay = {
value = 12;
}
}
}
}
energyShellDecl = "pickup/energy_shell";
energyShellDeclMP = "pickup/energy_shell_mp";
playerHealthRTPC = "player_health";
soundResetStates = {
num = 3;
item[0] = "swimming/none";
item[1] = "cinematic/none";
item[2] = "curse/none";
}
goreComponent = {
goreContainer = "player";
}
damageScaleTableComponent = {
list = {
num = 7;
item[0] = {
declDamage = "damage/special/ability_dash";
declTable = "player/damage_volume_test";
}
item[1] = {
declDamage = "damage/hazard/bio";
declTable = "player/bio_hazard_damage";
}
item[2] = {
declDamage = "damage/hazard/lava";
declTable = "player/lava_hazard_damage";
}
item[3] = {
declDamage = "damage/hazard/slime";
declTable = "player/slime_hazard_damage";
resetTableOnExitTimeMS = 2000;
}
item[4] = {
declDamage = "damage/hazard/water_toxic";
declTable = "player/slime_hazard_damage";
resetTableOnExitTimeMS = 2000;
}
item[5] = {
declDamage = "damage/hazard/slime_sac";
declTable = "player/slime_sac_hazard_damage";
resetTableOnExitTimeMS = 2000;
}
item[6] = {
declDamage = "damage/hazard/poison_bog";
declTable = "player/poison_bog_hazard_damage";
resetTableOnExitTimeMS = 2000;
}
}
}
playerHud = {
declHUD = "default";
}
playerDemoHud = {
declHUD = "demo";
}
demonPlayerHud = {
declHUD = "demon";
}
bodyAnimWeb = "animweb/player/doom_marine_3p";
suffocationDamage = "damage/base/suffocation";
waterBoostScaleMax = 4.75;
waterBoostSound = "play_swish_frantic";
playerRevive = "play_player_revive";
doubleJumpSound = "play_double_jump";
audioLogComponent = {
stories = {
num = 1;
item[0] = "dev_story/attack_of_the_jeff";
}
}
screenFXDecl = "player/screen_damage";
playerAimEventDecl = "base/misc/playeraim";
playerInteractionEventDecl = "base/misc/playerinteraction";
bodyEventDecl = "base/misc/body";
thirdPersonFXDecl = "player/tp_body";
combatEncounterScoringDecl = "base";
nightmareMarkerDef = "interact/nightmaremarker/public";
nightmareMarkerDefFriends = "interact/nightmaremarker/public";
nightmareMarkerDefBestRun = "interact/nightmaremarker/furthest";
nightmareMarkerDefPublic = "interact/nightmaremarker/public";
maxNumMarkersLvl = 30;
gamePauseSound = "play_game_pause";
gameUnpauseSound = "play_game_resume";
slayerInvasionData = "default";
weaponFists = "weapon/player/fists";
weaponFistsBerserk = "weapon/player/fists_berserk";
weaponFistsDoom5Melee = "weapon/player/fists_doom5melee";
weaponFistsSwim = "weapon/player/fists_swim";
weaponPointingArm = "weapon/player/pointing_arm";
weaponCrucible = "weapon/player/crucible";
equipmentLauncherLeftDecl = "equipmentlauncher/equipmentlauncherleft";
equipmentLauncherRightDecl = "equipmentlauncher/equipmentlauncherright";
weaponFlameBelchLeft = "weapon/player/equipment_flame_belch";
weaponFlameBelchRight = "weapon/player/equipment_flame_belch_right";
weaponChainsaw = "weapon/player/chainsaw";
weaponPlasma = "weapon/player/plasma_rifle";
weaponChaingun = "weapon/player/chaingun";
weaponHammer = "weapon/player/hammer";
guiInfo = {
icon = "art/ui/pvp_playericons/ico_pvp_players_doomguy_hud";
iconAlt = "art/ui/pvp_playericons/ico_pvp_players_doomguy_hud_dead";
}
lockonData = {
lockon_acquiringSound = "play_revenant_lock_warning";
lockon_lockedSound = "play_demonplayer_missileslocked";
lockon_broken = "play_rocket_lockon_break_alert";
}
friendlyRepulsorRadius = 0.25;
enemyRepulsorRadius = 0.25;
controlRespawnedFromDeath = true;
canRespawn = true;
}
}
Playable Demons
Info
- entityDef decl locations for each demon:
gameresources_patch1\generated\decls\entitydef\player\demonplayer_archvile.decl gameresources_patch1\generated\decls\entitydef\player\demonplayer_dreadknight.decl gameresources_patch1\generated\decls\entitydef\player\demonplayer_painelemental.decl gameresources_patch1\generated\decls\entitydef\player\demonplayer_revenant.decl gameresources_patch1\generated\decls\entitydef\player\demonplayer_mancubus.decl gameresources_patch2\generated\decls\entitydef\player\demonplayer_marauder.decl - Damage decl locations for each demon:
gameresources_patch1\generated\decls\damage\damage\demonplayer\pvp\archvilegameresources_patch1\generated\decls\damage\damage\demonplayer\pvp\mancubusgameresources_patch1\generated\decls\damage\damage\demonplayer\pvp\revenantgameresources_patch2\generated\decls\damage\damage\demonplayer\pvp\archvilegameresources_patch2\generated\decls\damage\damage\demonplayer\pvp\mancubusgameresources_patch2\generated\decls\damage\damage\demonplayer\pvp\maraudergameresources_patch2\generated\decls\damage\damage\demonplayer\pvp\painelementalgameresources_patch2\generated\decls\damage\damage\demonplayer\pvp\revenantpvp_laser_patch1\generated\decls\damage\damage\demonplayer\pvp\dreadknightwarehouse_patch1\generated\decls\damage\damage\demonplayer\pvp\marauder
Most of the Dread Knight's damage decls are located in each of the _patch1 Battlemode resources, except pvp_sideswipe (Stronghold). The Dread Knight's berserk damage decls are located in warehouse_patch1.
Co-op
- Set pvpPlayerDamageScale & demonPlayerDamageScale to 0 for all damage decls.
- Set demonPlayerCanActivate to true for all idTrigger & idEncounterTrigger_Commit entities.
- Set demonPlayersPassThrough to false for all idInteractable_Obstacle entities.
Invasion
- Set demonPlayersPassThrough to false for any idInteractable_Obstacle or idMover entities that should be walled-off for all players.
- Set demonPlayersPassThrough to true & allowDemonplayerProjectilePassThrough to false for all "combat barrier" entities. These are the idDynamicEntity and would include either mystical_combat_barrier.lwo / gameplay_energyBarrier_a.lwo / gameplay_energyBarrier_b.lwo as the clipmodel.
Projectiles
gameresources\generated\decls\projectile\projectile\player\chaingun_turret.decl
Add the following to fix the Mobile Turret infinite sound loop bug.
{
inherit = "projectile/base/bullet";
edit = {
fireSoundStart = "play_pistol_hand_cannon_fire"; // fireSoundLoopStart & fireSoundStop are replaced
impactEffectTable = "impacteffect/projectiles/weapons/chaingun";
damageDecl = "damage/firearm/chaingun_turret";
spawnCount = 4;
impactEffectSpawnCount = 1;
tracerInfo = {
tracerMtr = NULL;
doRandomTracers = true;
randomTracerType = "TRACERRANDOM_VARIABLE";
randomTracerNum = 2;
tracerLength = 2.477;
sndTracer = "projectile/mp_bullet_passby";
ribbon2Decls = {
num = 3;
item[0] = {
ribbonDecl = "chaingun_tracer_base";
offset = {
x = -0.324999988;
}
thirdPersonOffset = {
x = -0.324999988;
}
}
item[1] = {
ribbonDecl = "chaingun_tracer_base_90";
offset = {
x = -0.324999988;
}
thirdPersonOffset = {
x = -0.324999988;
}
}
item[2] = {
ribbonDecl = "chaingun_tracer_base_solid";
}
}
}
}
}
gameresources\generated\decls\projectile\projectile\player\double_barrel_flame_meat_hook.decl
Add the following to enable a flame FX for the host player whenever they use the Meathook.
{
inherit = "projectile/player/double_barrel_meat_hook";
edit = {
fireSoundStart = "play_wpn_shotgun_double_meathook_master_fire";
fxDecl = "weapon/meathook/meathook_projectile_mastery";
notHitscanInfo = {
entityDef = "projectile_ent/throwable/player/flaming_meat_hook";
clientAuthoritative = false; // set to false
}
projectilePlaysFireSound = true; // set to true
}
}
gameresources\generated\decls\projectile\projectile\player\shotgun_pop_rocket.decl
Add the following to fix some network issues with Sticky Bombs.
{
inherit = "projectile/player/assault_rifle_assaultrifle_secondary";
edit = {
fireSoundStart = "play_shotgun_pop_rocket_fire";
impactEffectTable = "impacteffect/projectiles/weapons/shotgun_poprocket";
fxDecl = "weapon/combat_shotgun/sticky_bomb_projectile";
notHitscanInfo = {
entityDef = "projectile_ent/player/shotgun_pop_rocket";
physicsProperties = {
bounciness = 0;
actorClipRadius = 0.400000006;
}
explodeSound = "play_sticky_bomb_explosion";
flySound = "play_rocket_fly_loop";
whizBySound = "play_sfx_rocket_passby";
whizByDist = 5.71500015;
isRetrievable = false;
clientAuthoritative = true; // set to true
adjustFireAngle = -4;
grenadeInfo = {
minDetonationDelay = 500;
maxDetonationDelay = 500;
countDownOnThrow = false;
bouncesBeforeDetonationTimerStart = 1;
warningSound = "play_cs_sticky_bomb_timer_1_mono";
minSpeed = 52.3880043;
maxSpeed = 52.3880043;
useSimplePhysics = false;
}
swallowInfo = {
canBeSwallowed = true;
explodeDamageDelayMS = 1500;
swallowStat = "STAT_WEAKPOINT_CACODEMON_MOUTH";
}
}
damageDecl = "damage/firearm/pop_rocket";
splashDamageDecl = "damage/firearm/pop_rocket_splash";
splashDoesntIgnoreDirectHitTarget = true;
projectilePlaysFireSound = true;
}
}
Damage
gameresources_patch2\generated\decls\damage\damage\firearm\chaingun.decl
Apply changes to any desired damage decl.
{
edit = {
damageParms = {
weaponDamageType = "PLAYER_WEAPON_CHAINGUN";
bulletPenetrationData = {
demonPlayerBlocksPenetration = true;
}
damageName = "chaingun";
damageSource = "DAMAGESRC_BULLET";
aiDamageMitigation = {
num = 2;
item[0] = {
monsterType = "AI_MONSTER_ICON_OF_SIN AI_MONSTER_MAYKR_ANGEL";
maxDamage = -1;
damageScalar = 0.600000024;
}
item[1] = {
monsterType = "AI_MONSTER_SAMUEL_BOSS";
maxDamage = -1;
damageScalar = 0.439999998;
}
}
damageSoundWhenLocalDemonPlayerIsHit = "play_bullet_damage_demon";
knocksOffArmor = false;
damageIcon = "textures/guis/hud/damage_icons/slayer/weapon/weapon_chaingun";
declGoreBehavior = "gorebehavior/firearm/chaingun";
skillshotHighlightInfo = {
fadeTime = 300;
color = {
r = 1;
a = 1;
}
}
}
maxDamage = {
defaultValue = 20;
}
minDamage = {
defaultValue = 20;
}
pvpPlayerDamageScale = 0.5; // slayer damage scale, set to 0 for co-op
demonPlayerDamageScale = 0.5; // overrall demon player damage scale, set to 0 for co-op
demonPlayerDamageMitigation = { // remove for co-op
num = 6;
item[0] = {
monsterType = "AI_MONSTER_PLAYER_ARCHVILE";
damageScalar = {
defaultValue = 0.75; // 75% on PC
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75; // 75% damage on console
}
}
}
}
item[1] = {
monsterType = "AI_MONSTER_PLAYER_MANCUBUS";
damageScalar = {
defaultValue = 0.75;
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75;
}
}
}
}
item[2] = {
monsterType = "AI_MONSTER_PLAYER_MARAUDER";
damageScalar = {
defaultValue = 0.75;
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75;
}
}
}
}
item[3] = {
monsterType = "AI_MONSTER_PLAYER_PAIN_ELEMENTAL";
damageScalar = {
defaultValue = 0.75;
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75;
}
}
}
}
item[4] = {
monsterType = "AI_MONSTER_PLAYER_REVENANT";
damageScalar = {
defaultValue = 0.75;
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75;
}
}
}
}
item[5] = {
monsterType = "AI_MONSTER_PLAYER_DREADKNIGHT";
damageScalar = {
defaultValue = 0.75;
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = 0.75;
}
}
}
}
}
}
}
Chainsaw
gameresources\generated\decls\damage\damage\melee\sync_kill_chainsaw.decl
Chainsaw will automatically give the player ammo instead of dropping ammo loot drops.
{
inherit = "damage/melee/sync_kill";
edit = {
damageParms = {
weaponDamageType = "PLAYER_WEAPON_CHAINSAW";
damageName = "sync_kill_chainsaw";
damageTypes = "DAMAGETYPE_HEALTH DAMAGETYPE_SYNC";
damageSource = "DAMAGESRC_CHAINSAW";
killStat = "STAT_WEAPON_CHAINSAW_KILLS";
declGoreBehavior = "gorebehavior/firearm/chainsaw";
ammoReturnOnDeath = {
num = 4;
item[0] = {
giveItemOverTime = {
decl = "ammo/sharedammopool/shells";
count = 15;
}
aiType = "AI_MONSTER_ZOMBIE_TIER_1 AI_MONSTER_ZOMBIE_TIER_3 AI_MONSTER_ZOMBIE_MAYKR AI_MONSTER_IMP AI_MONSTER_GARGOYLE AI_MONSTER_PROWLER AI_MONSTER_HELL_SOLDIER AI_MONSTER_SHOTGUN_SOLDIER AI_MONSTER_CARCASS AI_MONSTER_LOSTSOUL AI_MONSTER_HELLKNIGHT AI_MONSTER_DREADKNIGHT AI_MONSTER_PINKY AI_MONSTER_SPECTRE AI_MONSTER_CACODEMON AI_MONSTER_PAIN_ELEMENTAL AI_MONSTER_MANCUBUS AI_MONSTER_CYBER_MANCUBUS AI_MONSTER_ARACHNOTRON AI_MONSTER_REVENANT AI_MONSTER_WHIPLASH AI_MONSTER_DOOM_HUNTER AI_MONSTER_MARAUDER AI_MONSTER_MARAUDER_WOLF AI_MONSTER_BARON AI_MONSTER_TYRANT AI_MONSTER_ARCHVILE AI_MONSTER_CUEBALL AI_MONSTER_BUFF_POD AI_MONSTER_TENTACLE AI_MONSTER_GLADIATOR AI_MONSTER_ICON_OF_SIN AI_MONSTER_MAYKR_ANGEL AI_MONSTER_ZOMBIE_T1_SCREECHER AI_MONSTER_STONE_IMP AI_MONSTER_CURSED_PROWLER AI_MONSTER_CHAINGUN_SOLDIER AI_MONSTER_BLOOD_ANGEL AI_MONSTER_ARMORED_BARON AI_MONSTER_SUPER_TENTACLE AI_MONSTER_SPIRIT AI_MONSTER_TURRET AI_MONSTER_DEMONIC_TROOPER AI_MONSTER_SAMUEL_BOSS AI_MONSTER_DARKLORD_BOSS";
}
item[1] = {
giveItemOverTime = {
decl = "ammo/sharedammopool/bullets";
count = 90;
}
aiType = "AI_MONSTER_ZOMBIE_TIER_1 AI_MONSTER_ZOMBIE_TIER_3 AI_MONSTER_ZOMBIE_MAYKR AI_MONSTER_IMP AI_MONSTER_GARGOYLE AI_MONSTER_PROWLER AI_MONSTER_HELL_SOLDIER AI_MONSTER_SHOTGUN_SOLDIER AI_MONSTER_CARCASS AI_MONSTER_LOSTSOUL AI_MONSTER_HELLKNIGHT AI_MONSTER_DREADKNIGHT AI_MONSTER_PINKY AI_MONSTER_SPECTRE AI_MONSTER_CACODEMON AI_MONSTER_PAIN_ELEMENTAL AI_MONSTER_MANCUBUS AI_MONSTER_CYBER_MANCUBUS AI_MONSTER_ARACHNOTRON AI_MONSTER_REVENANT AI_MONSTER_WHIPLASH AI_MONSTER_DOOM_HUNTER AI_MONSTER_MARAUDER AI_MONSTER_MARAUDER_WOLF AI_MONSTER_BARON AI_MONSTER_TYRANT AI_MONSTER_ARCHVILE AI_MONSTER_CUEBALL AI_MONSTER_BUFF_POD AI_MONSTER_TENTACLE AI_MONSTER_GLADIATOR AI_MONSTER_ICON_OF_SIN AI_MONSTER_MAYKR_ANGEL AI_MONSTER_ZOMBIE_T1_SCREECHER AI_MONSTER_STONE_IMP AI_MONSTER_CURSED_PROWLER AI_MONSTER_CHAINGUN_SOLDIER AI_MONSTER_BLOOD_ANGEL AI_MONSTER_ARMORED_BARON AI_MONSTER_SUPER_TENTACLE AI_MONSTER_SPIRIT AI_MONSTER_TURRET AI_MONSTER_DEMONIC_TROOPER AI_MONSTER_SAMUEL_BOSS AI_MONSTER_DARKLORD_BOSS";
}
item[2] = {
giveItemOverTime = {
decl = "ammo/sharedammopool/cells";
count = 135;
}
aiType = "AI_MONSTER_ZOMBIE_TIER_1 AI_MONSTER_ZOMBIE_TIER_3 AI_MONSTER_ZOMBIE_MAYKR AI_MONSTER_IMP AI_MONSTER_GARGOYLE AI_MONSTER_PROWLER AI_MONSTER_HELL_SOLDIER AI_MONSTER_SHOTGUN_SOLDIER AI_MONSTER_CARCASS AI_MONSTER_LOSTSOUL AI_MONSTER_HELLKNIGHT AI_MONSTER_DREADKNIGHT AI_MONSTER_PINKY AI_MONSTER_SPECTRE AI_MONSTER_CACODEMON AI_MONSTER_PAIN_ELEMENTAL AI_MONSTER_MANCUBUS AI_MONSTER_CYBER_MANCUBUS AI_MONSTER_ARACHNOTRON AI_MONSTER_REVENANT AI_MONSTER_WHIPLASH AI_MONSTER_DOOM_HUNTER AI_MONSTER_MARAUDER AI_MONSTER_MARAUDER_WOLF AI_MONSTER_BARON AI_MONSTER_TYRANT AI_MONSTER_ARCHVILE AI_MONSTER_CUEBALL AI_MONSTER_BUFF_POD AI_MONSTER_TENTACLE AI_MONSTER_GLADIATOR AI_MONSTER_ICON_OF_SIN AI_MONSTER_MAYKR_ANGEL AI_MONSTER_ZOMBIE_T1_SCREECHER AI_MONSTER_STONE_IMP AI_MONSTER_CURSED_PROWLER AI_MONSTER_CHAINGUN_SOLDIER AI_MONSTER_BLOOD_ANGEL AI_MONSTER_ARMORED_BARON AI_MONSTER_SUPER_TENTACLE AI_MONSTER_SPIRIT AI_MONSTER_TURRET AI_MONSTER_DEMONIC_TROOPER AI_MONSTER_SAMUEL_BOSS AI_MONSTER_DARKLORD_BOSS";
}
item[3] = {
giveItemOverTime = {
decl = "ammo/sharedammopool/rockets";
count = 6;
}
aiType = "AI_MONSTER_ZOMBIE_TIER_1 AI_MONSTER_ZOMBIE_TIER_3 AI_MONSTER_ZOMBIE_MAYKR AI_MONSTER_IMP AI_MONSTER_GARGOYLE AI_MONSTER_PROWLER AI_MONSTER_HELL_SOLDIER AI_MONSTER_SHOTGUN_SOLDIER AI_MONSTER_CARCASS AI_MONSTER_LOSTSOUL AI_MONSTER_HELLKNIGHT AI_MONSTER_DREADKNIGHT AI_MONSTER_PINKY AI_MONSTER_SPECTRE AI_MONSTER_CACODEMON AI_MONSTER_PAIN_ELEMENTAL AI_MONSTER_MANCUBUS AI_MONSTER_CYBER_MANCUBUS AI_MONSTER_ARACHNOTRON AI_MONSTER_REVENANT AI_MONSTER_WHIPLASH AI_MONSTER_DOOM_HUNTER AI_MONSTER_MARAUDER AI_MONSTER_MARAUDER_WOLF AI_MONSTER_BARON AI_MONSTER_TYRANT AI_MONSTER_ARCHVILE AI_MONSTER_CUEBALL AI_MONSTER_BUFF_POD AI_MONSTER_TENTACLE AI_MONSTER_GLADIATOR AI_MONSTER_ICON_OF_SIN AI_MONSTER_MAYKR_ANGEL AI_MONSTER_ZOMBIE_T1_SCREECHER AI_MONSTER_STONE_IMP AI_MONSTER_CURSED_PROWLER AI_MONSTER_CHAINGUN_SOLDIER AI_MONSTER_BLOOD_ANGEL AI_MONSTER_ARMORED_BARON AI_MONSTER_SUPER_TENTACLE AI_MONSTER_SPIRIT AI_MONSTER_TURRET AI_MONSTER_DEMONIC_TROOPER AI_MONSTER_SAMUEL_BOSS AI_MONSTER_DARKLORD_BOSS";
}
}
}
}
}
Lootdrops
The lootdropcomponent decls would need to be adjusted.
gameresources_patch1\generated\decls\lootdropcomponent\ai\default_ambient.decl
{
inherit = "ai/default";
edit = {
droppableItems = {
num = 28;
item[0] = "lootdrop/health/health_low_kill";
item[1] = "lootdrop/health/health_low_gk";
item[2] = NULL;
item[3] = NULL;
item[4] = NULL;
item[5] = NULL;
item[6] = NULL;
item[7] = NULL;
item[8] = NULL;
item[9] = NULL;
item[10] = "lootdrop/health/health_low_crucible";
item[11] = "lootdrop/health/health_med_crucible";
item[12] = "lootdrop/health/health_high_crucible";
item[13] = "lootdrop/extra_life/extra_life_refund";
item[14] = "lootdrop/ammo/hammer/weakpoint_drop";
item[15] = "lootdrop/ammo/hammer/headshot_drop";
item[16] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam";
item[17] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam";
item[18] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam";
item[19] = "lootdrop/ammo/shotgun/shells_hammer_slam";
item[20] = "lootdrop/armor/hammer_slam";
item[21] = "lootdrop/health/health_hammer_slam";
item[22] = "lootdrop/armor/hammer_slam_upgraded";
item[23] = "lootdrop/health/health_hammer_slam_upgraded";
item[24] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam_upgraded";
item[25] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam_upgraded";
item[26] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam_upgraded";
item[27] = "lootdrop/ammo/shotgun/shells_hammer_slam_upgraded";
}
onlyDropOnce = true;
}
}
gameresources_patch1\generated\decls\lootdropcomponent\ai\default_fodder.decl
{
inherit = "ai/default";
edit = {
droppableItems = {
num = 30;
item[0] = "lootdrop/health/health_low_kill";
item[1] = "lootdrop/health/health_low_gk";
item[2] = NULL;
item[3] = NULL;
item[4] = NULL;
item[5] = NULL;
item[6] = NULL;
item[7] = NULL;
item[8] = NULL;
item[9] = NULL;
item[10] = "lootdrop/health/blood_punch_splash";
item[11] = "lootdrop/ammo/shotgun/shells_full_auto_giveback_fodder";
item[12] = "lootdrop/health/health_low_crucible";
item[13] = "lootdrop/health/health_med_crucible";
item[14] = "lootdrop/health/health_high_crucible";
item[15] = "lootdrop/extra_life/extra_life_refund";
item[16] = "lootdrop/ammo/hammer/weakpoint_drop";
item[17] = "lootdrop/ammo/hammer/headshot_drop";
item[18] = "lootdrop/ammo/shotgun/shells_hammer_slam";
item[19] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam";
item[20] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam";
item[21] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam";
item[22] = "lootdrop/armor/hammer_slam";
item[23] = "lootdrop/health/health_hammer_slam";
item[24] = "lootdrop/armor/hammer_slam_upgraded";
item[25] = "lootdrop/health/health_hammer_slam_upgraded";
item[26] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam_upgraded";
item[27] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam_upgraded";
item[28] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam_upgraded";
item[29] = "lootdrop/ammo/shotgun/shells_hammer_slam_upgraded";
}
onlyDropOnce = true;
}
}
gameresources_patch1\generated\decls\lootdropcomponent\ai\default_heavy.decl
{
inherit = "ai/default";
edit = {
droppableItems = {
num = 30;
item[0] = NULL;
item[1] = NULL;
item[2] = NULL;
item[3] = NULL;
item[4] = "lootdrop/health/health_high_kill";
item[5] = "lootdrop/health/health_low_gk";
item[6] = NULL;
item[7] = NULL;
item[8] = NULL;
item[9] = NULL;
item[10] = "lootdrop/health/blood_punch_splash";
item[11] = "lootdrop/ammo/shotgun/shells_full_auto_giveback_heavy";
item[12] = "lootdrop/health/health_low_heavy_crucible";
item[13] = "lootdrop/health/health_med_heavy_crucible";
item[14] = "lootdrop/health/health_high_crucible";
item[15] = "lootdrop/extra_life/extra_life_refund";
item[16] = "lootdrop/ammo/hammer/weakpoint_drop";
item[17] = "lootdrop/ammo/hammer/headshot_drop";
item[18] = "lootdrop/ammo/shotgun/shells_hammer_slam";
item[19] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam";
item[20] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam";
item[21] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam";
item[22] = "lootdrop/armor/hammer_slam";
item[23] = "lootdrop/health/health_hammer_slam";
item[24] = "lootdrop/armor/hammer_slam_upgraded";
item[25] = "lootdrop/health/health_hammer_slam_upgraded";
item[26] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam_upgraded";
item[27] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam_upgraded";
item[28] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam_upgraded";
item[29] = "lootdrop/ammo/shotgun/shells_hammer_slam_upgraded";
}
onlyDropOnce = true;
}
}
gameresources_patch1\generated\decls\lootdropcomponent\ai\default_superheavy.decl
{
inherit = "ai/default";
edit = {
droppableItems = {
num = 28;
item[0] = NULL;
item[1] = "lootdrop/health/health_low_kill";
item[2] = "lootdrop/health/health_low_gk";
item[3] = NULL;
item[4] = NULL;
item[5] = NULL;
item[6] = NULL;
item[7] = "lootdrop/health/blood_punch_splash";
item[8] = "lootdrop/ammo/shotgun/shells_full_auto_giveback_superheavy";
item[9] = "lootdrop/health/health_superheavy_kill";
item[10] = "lootdrop/health/health_low_heavy_crucible";
item[11] = "lootdrop/health/health_med_heavy_crucible";
item[12] = "lootdrop/health/health_high_crucible";
item[13] = "lootdrop/extra_life/extra_life_refund";
item[14] = "lootdrop/ammo/hammer/weakpoint_drop";
item[15] = "lootdrop/ammo/hammer/headshot_drop";
item[16] = "lootdrop/ammo/shotgun/shells_hammer_slam";
item[17] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam";
item[18] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam";
item[19] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam";
item[20] = "lootdrop/armor/hammer_slam";
item[21] = "lootdrop/health/health_hammer_slam";
item[22] = "lootdrop/armor/hammer_slam_upgraded";
item[23] = "lootdrop/health/health_hammer_slam_upgraded";
item[24] = "lootdrop/ammo/heavy_cannon/bullets_hammer_slam_upgraded";
item[25] = "lootdrop/ammo/plasma_rifle/cells_hammer_slam_upgraded";
item[26] = "lootdrop/ammo/rocket_launcher/rockets_hammer_slam_upgraded";
item[27] = "lootdrop/ammo/shotgun/shells_hammer_slam_upgraded";
}
onlyDropOnce = true;
}
}
RenderParms
gameresources_patch1\generated\decls\fx\player\tp_body.decl
Green render highlight for Slayer vs Slayer.
item[85] = {
name = "highlight_tint";
group = "highlight";
type = "FX_RENDERPARM";
startCondition = {
num = 74;
item[0] = "FX_NONE";
item[1] = "FX_PICKUP_HEALTH_SMALL";
item[2] = "FX_PICKUP_HEALTH_MEDIUM";
item[3] = "FX_PICKUP_HEALTH_LARGE";
item[4] = "FX_PICKUP_ARMOR_SMALL";
item[5] = "FX_PICKUP_ARMOR_MEDIUM";
item[6] = "FX_PICKUP_ARMOR_LARGE";
item[7] = "FX_PLAYER_STATUS1_START";
item[8] = "FX_PLAYER_STATUS1_STOP";
item[9] = "FX_PLAYER_STATUS2_START";
item[10] = "FX_PLAYER_STATUS2_STOP";
item[11] = "FX_PLAYER_STATUS2_ALT_1_START";
item[12] = "FX_PLAYER_STATUS2_ALT_2_START";
item[13] = "FX_PLAYER_STATUS2_ALT_3_START";
item[14] = "FX_PLAYER_STATUS3_START";
item[15] = "FX_PLAYER_STATUS3_STOP";
item[16] = "FX_PLAYER_STATUS4_START";
item[17] = "FX_PLAYER_STATUS4_STOP";
item[18] = "FX_PLAYER_STATUS5_START";
item[19] = "FX_PLAYER_STATUS5_STOP";
item[20] = "FX_ZIPLINE_SPEED_SLOW";
item[21] = "FX_ZIPLINE_SPEED_SLOW_REVERSE";
item[22] = "FX_ZIPLINE_SPEED_MED";
item[23] = "FX_ZIPLINE_SPEED_MED_REVERSE";
item[24] = "FX_ZIPLINE_SPEED_FAST";
item[25] = "FX_ZIPLINE_SPEED_FAST_REVERSE";
item[26] = "FX_GLORY_SAVAGERY_START";
item[27] = "FX_GLORY_SAVAGERY_START_THIRD";
item[28] = "FX_GLORY_SAVAGERY_START_END_THIRD";
item[29] = "FX_GLORY_SAVAGERY_AOE_START_END_THIRD";
item[30] = "FX_GLORY_SAVAGERY_AOE_LOW_HEALTH_START_END_THIRD";
item[31] = "FX_SAVING_THROW_START";
item[32] = "FX_RUNE_BLOOD_FUELED";
item[33] = "FX_RUNE_SEEK_DESTROY";
item[34] = "FX_PROP_PICKUP";
item[35] = "FX_VEH_START_BOOST";
item[36] = "FX_CINEMATIC_MP_20";
item[37] = "FX_DOUBLE_JUMP_THIRD_PERSON";
item[38] = "FX_DASH_ACTIVATED";
item[39] = "FX_CINEMATIC_MP_1";
item[40] = "FX_CINEMATIC_MP_2";
item[41] = "FX_CINEMATIC_MP_4";
item[42] = "FX_CINEMATIC_MP_5";
item[43] = "FX_CINEMATIC_MP_6";
item[44] = "FX_CINEMATIC_MP_7";
item[45] = "FX_CINEMATIC_MP_8";
item[46] = "FX_CINEMATIC_MP_9";
item[47] = "FX_CINEMATIC_MP_18";
item[48] = "FX_CINEMATIC_MP_19";
item[49] = "FX_CINEMATIC_MP_20";
item[50] = "FX_CINEMATIC_1";
item[51] = "FX_CINEMATIC_2";
item[52] = "FX_CINEMATIC_3";
item[53] = "FX_CINEMATIC_4";
item[54] = "FX_CINEMATIC_5";
item[55] = "FX_CINEMATIC_7";
item[56] = "FX_CINEMATIC_8";
item[57] = "FX_CINEMATIC_9";
item[58] = "FX_CINEMATIC_10";
item[59] = "FX_CINEMATIC_13";
item[60] = "FX_CINEMATIC_14";
item[61] = "FX_CINEMATIC_15";
item[62] = "FX_CINEMATIC_16";
item[63] = "FX_CINEMATIC_17";
item[64] = "FX_CINEMATIC_18";
item[65] = "FX_CINEMATIC_19";
item[66] = "FX_CINEMATIC_20";
item[67] = "FX_START_DAMAGE_LEVEL_1";
item[68] = "FX_START_DAMAGE_LEVEL_2";
item[69] = "FX_START_DAMAGE_LEVEL_4";
item[70] = "FX_BURN_1_START";
item[71] = "FX_BURN_2_START";
item[72] = "FX_PLAYER_MOVEMENT_LANDED";
item[73] = "FX_EXPLOSIVE_ARMED";
}
renderParmParms = {
declRenderParm = "highlightfillcolor";
color = {
r = 0;
g = 0.8;
b = 0;
a = 0.5;
}
}
}
gameresources_patch1\generated\decls\fx\demon_player\archvile\archvile.decl
Purple render highlight for Invasion.
item[84] = {
name = "highlight_tint";
group = "highlight";
type = "FX_RENDERPARM";
startCondition = {
num = 11;
item[0] = "FX_NONE";
item[1] = "FX_PICKUP_HEALTH_SMALL";
item[2] = "FX_PICKUP_HEALTH_MEDIUM";
item[3] = "FX_PICKUP_HEALTH_LARGE";
item[4] = "FX_PLAYER_STATUS1_STOP";
item[5] = "FX_PLAYER_STATUS2_STOP";
item[6] = "FX_PLAYER_STATUS3_STOP";
item[7] = "FX_PLAYER_STATUS4_STOP";
item[8] = "FX_PLAYER_STATUS5_STOP";
item[9] = "FX_ZIPLINE_SPEED_FAST_REVERSE";
item[10] = "FX_MAN_ON_FIRE";
}
renderParmParms = {
declRenderParm = "highlightfillcolor";
color = {
r = 0.8;
g = 0;
b = 1;
a = 0.1;
}
}
}
FX
All of these changes reduce lag for client players.
gameresources\generated\decls\fx\weapon\gauss_cannon\projectile_destroyer.decl
item[10] = {
name = "rock_debris";
group = "explosion";
type = "FX_DESTRUCTIBLE";
startCondition = {
num = 7;
item[0] = "FX_PROJECTILE_EXPLODE_DIRT";
item[1] = "FX_PROJECTILE_EXPLODE_PLASTIC";
item[2] = "FX_PROJECTILE_EXPLODE_WOOD";
item[3] = "FX_PROJECTILE_EXPLODE_STONE";
item[4] = "FX_PROJECTILE_EXPLODE_METAL";
item[5] = "FX_PROJECTILE_EXPLODE_DEFAULT";
item[6] = "FX_PROJECTILE_EXPLODE_ASPHALT";
}
stopCondition = {
num = 1;
item[0] = "FX_NONE";
}
rotationType = "FX_ROT_EXPLICIT_ANGLES";
destructibleParms = {
destructible = "";
}
}
gameresources\generated\decls\fx\weapon\gauss_cannon\projectile_destroyer_charge_level_3.decl
item[0] = {
name = "rock_debris";
group = "explosion";
type = "FX_DESTRUCTIBLE";
color = {
y = 0.13013652;
z = 0.0273208916;
}
startCondition = {
num = 7;
item[0] = "FX_PROJECTILE_EXPLODE_DIRT";
item[1] = "FX_PROJECTILE_EXPLODE_PLASTIC";
item[2] = "FX_PROJECTILE_EXPLODE_WOOD";
item[3] = "FX_PROJECTILE_EXPLODE_STONE";
item[4] = "FX_PROJECTILE_EXPLODE_METAL";
item[5] = "FX_PROJECTILE_EXPLODE_DEFAULT";
item[6] = "FX_PROJECTILE_EXPLODE_ASPHALT";
}
stopCondition = {
num = 1;
item[0] = "FX_NONE";
}
rotationType = "FX_ROT_EXPLICIT_ANGLES";
destructibleParms = {
destructible = "";
}
}
item[1] = {
name = "explosion_shake";
group = "explosion";
type = "FX_SCREEN_SHAKE";
duration = 3;
fadeStartDistance = 1.90499997;
distance = 9.52500057;
color = {
y = 0.13013652;
z = 0.0273208916;
}
startCondition = {
num = 1;
item[0] = "FX_PROJECTILE_EXPLODE";
}
stopCondition = {
num = 1;
item[0] = "FX_NONE";
}
screenShakeParms = {
advancedShakeDecl = "advancedscreenviewshake/loadout/adv_shake_l";
}
}
item[2] = {
name = "explosion_piece";
group = "explosion";
type = "FX_PARTICLE";
duration = 1000;
looping = true;
color = {
y = 0.13013652;
z = 0.0273208916;
}
startCondition = {
num = 1;
item[0] = "FX_PROJECTILE_EXPLODE_PIECE_1";
}
stopCondition = {
num = 1;
item[0] = "FX_NONE";
}
originType = "FX_ORG_TRACK_POS";
rotationType = "FX_ROT_TRACK_AXIS";
particleParms = {
declPrt = "";
}
}
gameresources\generated\decls\fx\weapon\plasma_rifle\plasma_rifle_microwave_3rd.decl
item[1] = {
name = "muzzle_flash_primary";
group = "fire_microwave";
type = "FX_PARTICLE";
duration = 500;
fadeOutTime = 500;
color = {
x = 0.0451862141;
y = 0.254152179;
}
tagNames = {
num = 1;
item[0] = "fx_muzzle_z_barrel";
}
startCondition = {
num = 1;
item[0] = "";
}
stopCondition = {
num = 1;
item[0] = "";
}
originType = "FX_ORG_TRACK_POS";
rotationType = "FX_ROT_TRACK_AXIS";
particleParms = {
declPrt = "";
}
}
Cursed Prowlers
e5m1_spear_patch2\generated\decls\aicomponent_prototypes\aicomponent\prowler_cursed.decl
Some of the curse effects do not apply to clients. This decl change will make it consistent for both host and client.
{
edit = {
curseArmorInfo = {
armorBuffModifiers = {
className = "idEntityModifier_Berserk";
object = {
durationInSeconds = {
minRange = -1;
maxRange = -1;
}
damageTakenScale = 1;
goreDamageScale = 1;
disabledPainTypes = "BF_PAIN_STAGGER BF_PAIN_STAGGER_VULNERABLE";
buffOverrides = {
num = 10;
item[0] = {
damageDecls = "player_power_direct";
damageTakenScale = 4;
goreDamageScale = 1;
}
item[1] = {
damageDecls = "player_power_aoe";
painTakenScale = 0;
goreDamageScale = 0;
disabledPainTypes = "BF_PAIN_FALTER_LIGHT BF_PAIN_FALTER BF_PAIN_PUSHBACK BF_PAIN_STAGGER";
}
item[2] = {
damageDecls = "equip_flamebelch";
damageTakenScale = 1;
}
item[3] = {
damageDecls = "player_melee";
disabledPainTypes = "BF_PAIN_FALTER_LIGHT BF_PAIN_FALTER BF_PAIN_PUSHBACK BF_PAIN_MELEE_D5_FORWARD_REACT BF_PAIN_MELEE_D5_LEFT_REACT BF_PAIN_MELEE_D5_RIGHT_REACT BF_PAIN_MELEE_D5_UPPERCUT_REACT BF_PAIN_STAGGER";
}
item[4] = {
damageDecls = "mod_rocketlauncher_remotedetonate_all";
disabledPainTypes = "BF_PAIN_FALTER_LIGHT BF_PAIN_FALTER BF_PAIN_PUSHBACK BF_PAIN_STAGGER";
}
item[5] = {
damageDecls = "mod_plasmagun_heatblast";
disabledPainTypes = "BF_PAIN_FALTER_LIGHT BF_PAIN_FALTER BF_PAIN_PUSHBACK BF_PAIN_STAGGER";
}
item[6] = {
damageDecls = "equip_frag_direct";
disabledPainTypes = "BF_PAIN_FALTER_LIGHT BF_PAIN_FALTER BF_PAIN_PUSHBACK BF_PAIN_STAGGER";
}
item[7] = {
damageDecls = "equip_frag_splash";
disabledPainTypes = "BF_PAIN_FALTER BF_PAIN_PUSHBACK";
}
item[8] = {
damageDecls = "player_hammer";
disabledPainTypes = "BF_PAIN_FALTER BF_PAIN_PUSHBACK";
}
item[9] = {
damageDecls = "crushers";
damageTakenScale = 1;
disabledPainTypes = "BF_PAIN_FALTER BF_PAIN_PUSHBACK";
}
}
}
}
armorDisableFlags = "DISABLE_SYNC_KILLS";
curseAppliedTranscode = "TRANSCODE_SHOULD_RETREAT";
retreatMemoryKey = "wants_retreat";
}
}
}
Screechers
e5m1_spear\generated\decls\md6def\md6def\characters\monsters\zombie_tier1\base\zombie_tier1_berserk.md6.decl
Additional FxConditions must trigger
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_back/head_v1.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_02.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_03.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_04.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_06.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_07.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_08.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_09.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_10.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_11.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_12.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_13.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_14.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_15.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_16.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_17.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_18.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_19.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_20.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_21.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_22.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_23.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_inplace_02.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/upper_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/upper_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/chest_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/chest_in_place_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/gut_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/gut_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_arm_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_arm_in_place_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_leg_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_leg_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_arm_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_arm_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_leg_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_leg_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/upper_body.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/lower_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/lower_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/upper_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/upper_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/lower_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/lower_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/upper_body_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/upper_body_inplace_01.md6anim" {
event "ae_applyBuffModifiers" {
frame 1.0000
row 17
}
event "ae_soundNoSkip" {
frame 1.0000
row 18
soundevent ""
}
event "ae_startFX" {
frame 1.0000
row 19
fxCondition_t FX_CINEMATIC_20
}
event "ae_soundNoSkip" {
frame 0.0235
row 1
soundevent "play_zombie_alert_screech"
}
event "ae_startFX" {
frame 0.0000
row 0
fxCondition_t FX_CINEMATIC_MP_1
}
event "ae_stopFX" {
frame 45.0000
row 3
fxCondition_t FX_START_DEATH_1
}
}
.
Tyrants
e5m1_spear\generated\decls\aimovementgraph\tyrant.decl
Tyrants should not be able to walk because that causes clients to crash.
{
edit = {
}
}
Cueballs
gameresources\generated\decls\md6def\md6def\characters\monsters\zombie_cueball\base\zombie_cueball.md6.decl
Cueballs should instantly explode on death.
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_02.md6anim" {
event "ae_goreEnableByName" {
frame 4.7773
row 3
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_01.md6anim" {
event "ae_goreEnableByName" {
frame 9.5611
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_03.md6anim" {
event "ae_goreEnableByName" {
frame 0.0000
row 4
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_04.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_06.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_07.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_08.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_09.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_10.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_11.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_12.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_13.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_14.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_15.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_16.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_17.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_18.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_19.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_20.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_21.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_22.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_front/head_23.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9593
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/moving_forward/hit_back/head_v1.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 4
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/burn/burn_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 5
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/burn/burn_02.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 3
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_02.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_03.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_04.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_05.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_06.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_back_07.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_forward_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_left_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_left_02.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_right_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_right_02.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/melee/forced_right_03.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1319
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0000
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0084
row 4
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/lower_body_inplace_02.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0431
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/upper_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0181
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_back/upper_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1154
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/chest_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0273
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/chest_in_place_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0660
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/fall_cycle_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 0
locked 0
string "full_body"
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/gut_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0570
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/gut_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0996
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_arm_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1506
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_arm_in_place_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 0.9798
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_leg_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1107
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/left_leg_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0445
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_arm_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.2033
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_arm_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.2044
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_leg_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0672
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/right_leg_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0552
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_front/upper_body.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0677
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/lower_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0997
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/lower_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0498
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/upper_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1645
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_left/upper_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.2243
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/lower_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.2042
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/lower_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.2755
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/upper_body_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.1280
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
anim "md6/characters/monsters/zombie_tier1/base/motion/death/stationary/hit_right/upper_body_inplace_01.md6anim" {
event "ae_goreEnableByName" {
frame 0.0010
row 2
locked 0
string "full_body"
}
event "ae_startRagdoll" {
frame 1.0916
row 3
locked 0
int 0
int 0
int 0
}
event "ae_detonateSelf" {
frame 0.5000
row 1
locked 0
explosion ""
}
event "ae_radiusDamage" {
frame 0.0000
row 1
locked 0
damage "damage/ai/zombie/cueball"
string "full_body"
}
}
Bullet Casing Collision
gameresources_patch1\generated\decls\md6def\md6def\objects\weapons\heavy\chaingun.md6.decl
Bullet casings should not spawn because they have collision with the hitscan tracers.
anim "md6/objects/weapons/heavy/chaingun/motion/player/human/base/core/shootstate_into.md6anim" {
event "ae_fireWeaponRightPrimaryOnly" {
frame 0.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 4.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 8.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 12.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 16.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 20.0000
row 0
}
}
anim "md6/objects/weapons/heavy/chaingun/motion/player/human/base/core/shootstate_01.md6anim" {
event "ae_fireWeaponRightPrimaryOnly" {
frame 0.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 4.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 8.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 12.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 16.0000
row 0
}
event "ae_fireWeaponRightPrimaryOnly" {
frame 20.0000
row 0
}
}
anim "md6/objects/weapons/heavy/chaingun/motion/player/human/base/core/turretmode_shootstate_01.md6anim" {
event "ae_fireWeaponRightSecondaryOnly" {
frame 0.0000
row 0
}
event "ae_fireWeaponRightSecondaryOnly" {
frame 4.0000
row 0
}
event "ae_fireWeaponRightSecondaryOnly" {
frame 8.0000
row 0
}
event "ae_fireWeaponRightSecondaryOnly" {
frame 12.0000
row 0
}
event "ae_fireWeaponRightSecondaryOnly" {
frame 16.0000
row 0
}
event "ae_fireWeaponRightSecondaryOnly" {
frame 20.0000
row 0
}
}
Sync Melee
gameresources_patch1\generated\decls\entitydef\syncmelee\pinky_3p.decl
Pinky Spectres need to be added as a third-person participant.
{
inherit = "syncmelee/base";
editorVars {
placeable = false;
}
edit = {
renderModelInfo = {
model = "md6def/objects/syncentities/3p_syncentity11.md6";
}
syncAnim = "animweb/syncmelee/pinky_3p/null/null";
animWeb = "animweb/syncmelee/pinky_3p";
thirdPersonParticipants = {
num = 6;
item[0] = {
instance = "";
entityDef = "player";
attachJointName = "attach00";
target = "";
spawnAction = "SPAWN_NEVER";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
animSetName = "thirdPerson_instigator";
}
item[1] = {
instance = "";
entityDef = "objects/gore/gorekit/gorekit";
attachJointName = "attach02";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[2] = {
instance = "";
entityDef = "ai/heavy/pinky";
attachJointName = "attach01";
target = "";
spawnAction = "SPAWN_NEVER";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
type = "TARGET";
animSetName = "thirdPerson_target";
}
item[3] = {
instance = "";
entityDef = "objects/weapons/melee/chainsaw_3p";
attachJointName = "attach03";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND_AND_HIDE";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[4] = {
instance = "";
entityDef = "objects/weapons/melee/crucible_3p";
attachJointName = "attach04";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND_AND_HIDE";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[5] = {
instance = "";
entityDef = "ai/heavy/pinky_spectre";
attachJointName = "attach01";
target = "";
spawnAction = "SPAWN_NEVER";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
type = "TARGET";
animSetName = "thirdPerson_target";
}
}
firstPersonModelOverride = "objects/syncentities/syncentity11.md6";
thirdPersonSyncEntityAnimSetName = "thirdPerson";
thirdPersonFallbackAnim = "animweb/syncmelee/pinky_3p/kill_front_head";
}
}
gameresources_patch1\generated\decls\entitydef\syncmelee\soldier_blaster_3p.decl
Riot Soldiers need to be added as a third-person participant.
{
inherit = "syncmelee/base";
editorVars {
placeable = false;
}
edit = {
renderModelInfo = {
model = "md6def/objects/syncentities/3p_syncentity11.md6";
}
syncAnim = "animweb/syncmelee/soldier_blaster_3p/null/null";
animWeb = "animweb/syncmelee/soldier_blaster_3p";
thirdPersonParticipants = {
num = 7;
item[0] = {
instance = "";
entityDef = "player";
attachJointName = "attach00";
target = "";
spawnAction = "SPAWN_NEVER";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
animSetName = "thirdPerson_instigator";
}
item[1] = {
instance = "";
entityDef = "objects/gore/gorekit/gorekit";
attachJointName = "attach02";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[2] = {
instance = "";
entityDef = "ai/fodder/soldier_blaster";
attachJointName = "attach01";
target = "";
spawnAction = "SPAWN_NEVER";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
type = "TARGET";
animSetName = "thirdPerson_target";
}
item[3] = {
instance = "";
entityDef = "ai/fodder/soldier_shield";
attachJointName = "attach01";
target = "";
spawnAction = "SPAWN_NEVER";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
animSetName = "thirdPerson_target";
type = "TARGET";
}
item[4] = {
instance = "";
entityDef = "objects/weapons/melee/chainsaw_3p";
attachJointName = "attach03";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[5] = {
instance = "";
entityDef = "objects/weapons/melee/crucible_3p";
attachJointName = "attach04";
target = "";
spawnAction = "SPAWN_IF_HAS_ANIMATION";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND_AND_HIDE";
clearWhenFinished = true;
animSetName = "thirdPerson_helper";
type = "HELPER";
}
item[6] = {
instance = "";
entityDef = "ai/fodder/soldier_chaingun";
attachJointName = "attach01";
target = "";
spawnAction = "SPAWN_NEVER";
showAction = "SHOW_WITH_ANIM";
attachAction = "ATTACH_SIMULATE_BIND";
finishAction = "FINISHACTION_UNBIND";
clearWhenFinished = true;
animSetName = "thirdPerson_target";
type = "TARGET";
}
}
firstPersonModelOverride = "objects/syncentities/syncentity11.md6";
thirdPersonSyncEntityAnimSetName = "thirdPerson";
thirdPersonFallbackAnim = "animweb/syncmelee/soldier_blaster_3p/kill_front_upper";
}
}
Entities
This chapter contains required and recommended changes to entities.
Game Challenges
Co-op
entity {
entityDef coop_game_challenge {
inherit = "info/game_challenge/battlearena";
class = "idGameChallenge_PVP";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
networkSerializeTransforms = false;
modeFlags = {
allowRespawning = true;
allowBulletPenetration = false;
}
difficultySettings = {
playerIncomingDamageScale = "campaign/playerincomingdamage";
aiIncomingDamageScale = "campaign/aiincomingdamage";
healthPickupScale = "campaign/healthpickup";
armorPickupScale = "campaign/armorpickup";
ammoPickupScale = "campaign/ammopickup";
bfgAmmoPickupScale = "campaign/bfgammopickup";
healthDropScale = "campaign/healthdrop";
armorDropScale = "campaign/armordrop";
ammoDropScale = "campaign/ammodrop";
bfgAmmoDropScale = "campaign/bfgammodrop";
}
scoreLimit = 99;
numLives = 0;
numRounds = 99;
actorModifierListDecl = "actormodifiers_pvp";
gcGameEventCallouts = {
slayerPowerWeapon = "pvp/combat_events/slayer_power_weapon";
demonSummonedCallout = "pvp/combat_events/general_card_event";
demonEffectCallout = "pvp/combat_events/general_card_event";
demonEffectStatusTimer = "pvp/status_timers/demon_effect";
demonQuickUse1Callout = "pvp/combat_events/general_card_event";
demonQuickUse2Callout = "pvp/combat_events/general_card_event";
damageBoostCallout = "pvp/combat_events/general_card_event";
damageBoostStatusTimer = "pvp/status_timers/timer_damage_boost";
hasteCallout = "pvp/combat_events/general_card_event";
hasteStatusTimer = "pvp/status_timers/timer_haste";
mitigationCallout = "pvp/combat_events/general_card_event";
mitigationStatusTimer = "pvp/status_timers/timer_damage_mitigation";
invulnerableCallout = "pvp/combat_events/general_card_event";
invulnerableStatusTimer = "pvp/status_timers/timer_invulnerable";
berserkCallout = "pvp/combat_events/general_card_event";
berserkStatusTimer = "pvp/status_timers/timer_berserk";
regenCallout = "pvp/combat_events/general_card_event";
regenStatusTimer = "pvp/status_timers/timer_regeneration";
lootBlockedCallout = "pvp/voiced/loot_blocked";
lootBlockedStatusTimer = "pvp/status_timers/timer_loot_blocked";
extraLifeCallout = "pvp/combat_events/general_card_event";
demonCriticalHealth = "";
demonCriticalRecovery = "pvp/voiced/demon_healed";
slayerCriticalHealth = "pvp/voiced/slayer_health_critical";
everyoneCritical = "main_heavy";
}
hitConfirmSoundsInfo = "default";
characterStatusEventText = {
invulnerableText = {
textId = "#str_decl_powerup_statuseffect_GHOST45053";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
toughenedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45054";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
vulnerableText = {
textId = "#str_decl_powerup_statuseffect_GHOST45055";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
strengthenedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45056";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
hastedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45057";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
slowedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45058";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
berserkingText = {
textId = "#str_decl_powerup_statuseffect_GHOST45059";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
lootBlockedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45060";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
}
aiSpawnPoolDecl = "maps/game/pvp/battlemode";
enableBrinkOfDeath = true;
desummonKillDamage = "damage/hazard/pvp_round_kill";
slayerHighlightDecl = "pvp/demon_view_slayer_outline";
demonHighlightDecl = "pvp/demon_view_slayer_outline";
teammateHighlightDecl = "pvp/demon_view_slayer_outline";
slayerHighlightLOSBoxDecl = "highlight_los_slayer";
demonSpawnTargetEntity = "online/summon_target";
demonSpawnTargetEntityOneHit = "online/summon_target_onehit";
playerSpawnDef = "player";
teamSuperSettings = {
damageFactorAI = 9.99999975e-05;
tickFactor = 0.00329999998;
}
playerAlwaysFullBodyGibs = true;
maxPlayersPerTeam = {
ptr = {
ptr[0] = 1;
ptr[1] = 2;
}
}
demonOutlineColor = {
g = 0.501960993;
}
demonAllyOutlineColor = {
r = 1;
g = 0.501960993;
b = 0;
}
fillColorDemonSees = {
r = 0.199999988;
g = 0.199999988;
b = 0.199999988;
a = 0.850000024;
}
fillColorSlayerSees = {
r = 0.199999988;
g = 0.199999988;
b = 0.199999988;
a = 0.850000024;
}
fillColorHitFlash = {
g = 0;
b = 0;
a = 0.501960993;
}
slayerHighlightOptions = {
allyDemon = "EHM_ALWAYS";
enemyDemon = "EHM_ALWAYS";
allySlayer = "EHM_ALWAYS";
enemySlayer = "EHM_ALWAYS";
}
demonHighlightOptions = {
allyDemon = "EHM_ALWAYS";
enemyDemon = "EHM_ALWAYS";
allySlayer = "EHM_ALWAYS";
enemySlayer = "EHM_ALWAYS";
}
raceToStyle = true;
pvpGameEventCallouts = {
roundOne = "";
roundTwo = "";
roundThree = "";
roundFour = "";
roundFinal = "";
preMatchFiveSecondsRemaining = "";
preMatchFourSecondsRemaining = "";
preMatchThreeSecondsRemaining = "";
preMatchTwoSecondsRemaining = "";
preMatchOneSecondRemaining = "";
roundStart = "";
finalRound = "";
demonsRoundLost = "";
slayerRoundLost = "";
slayerKilled = "pvp/voiced/slayer_killed";
demonKilled = "pvp/voiced/slayer_killed";
demonsKilled = "pvp/voiced/slayer_killed";
slayerVictory = "";
demonVictory = "";
demonRespawningSoon = "";
respawnFiveSecondsRemaining = "";
respawnFourSecondsRemaining = "";
respawnThreeSecondsRemaining = "";
respawnTwoSecondsRemaining = "";
respawnOneSecondRemaining = "";
demonRespawned = "pvp/voiced/demon_resurrected";
delayDuringSync = {
num = 1;
item[0] = "pvp/voiced/slayer_killed";
}
}
jockeyTimeDuration = {
value = 0;
}
roundCalloutTimeDuration = {
value = 0.1;
}
roundStartCalloutDelaySec = {
value = 0;
}
roundEndCalloutDelaySec = {
value = 0;
}
upgradeUIDelaySec = {
value = 0;
}
upgradeUIDuration = {
value = 0;
}
matchEndCalloutDelaySec = {
value = 0;
}
matchEndResultsDelaySec = {
value = 0;
}
pvpProgressionScoringDecl = "battle_arena";
pvpLifecycleManager = {
podiumAvatarEntDefs = {
num = 7;
item[0] = "podiums/avatars/archvile";
item[1] = "podiums/avatars/doom_marine";
item[2] = "podiums/avatars/mancubus";
item[3] = "podiums/avatars/pain_elemental";
item[4] = "podiums/avatars/revenant";
item[5] = "podiums/avatars/marauder";
item[6] = "podiums/avatars/dreadknight";
}
podiumLayers = {
num = 1;
item[0] = "game/pvp/podium_stage";
}
slayerPodiumEntities = "pvp_match_slayer_podium_";
demonPodiumEntities = "pvp_match_demon_podium_slot_";
characterAnimBlendMS = 0;
playerAppearSound = "play_pvp_staging_spawnin";
}
slayerPVPLoadoutDecl = "pvploadout/default";
demonPVPLoadoutDecl = "pvpdemonloadout/default";
respawnTimeSec = {
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = {
value = 0.1;
}
}
}
}
respawnTimeCapSec = {
defaultValue = {
value = 0.1;
}
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = {
value = 0.1;
}
}
}
}
respawnStatusEffects = {
num = 0;
}
idealRespawnDistanceFromSlayer = 0;
slayerLayersToActivate = {
num = 1;
item[0] = "game/pvp/slayer_team";
}
demonLayersToActivate = {
num = 1;
item[0] = "game/pvp/demon_team";
}
layersToDeactivate = {
num = 1;
item[0] = "game/pvp/permanently_hidden";
}
musicWinState = "music_ghost_states/pvp_lose";
musicLoseState = "music_ghost_states/pvp_lose";
musicHealthCriticalState = "music_ghost_states/main_heavy";
closeCallHealthThreshold = 50;
clutchThreshold = 5;
comebackThreshold = 3;
surpriseTimeLimit = {
value = 3;
}
surviveThreshold = 4;
requiredPlayerCount = 2;
respawnHealthScalar = 0.5;
powerUpgradeRound = 99;
soundOcclusionBypass = false;
gameDifficulty = "DIFFICULTY_NIGHTMARE";
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
}
}
}
Slayer vs Slayer
entity {
entityDef deathmatch_game_challenge {
inherit = "info/game_challenge/battlearena";
class = "idGameChallenge_PVP";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
networkSerializeTransforms = false;
modeFlags = {
allowRespawning = true;
allowBulletPenetration = false;
}
scoreLimit = 3;
numLives = 0;
numRounds = 5;
actorModifierListDecl = "actormodifiers_pvp";
gcGameEventCallouts = {
slayerPowerWeapon = "pvp/combat_events/slayer_power_weapon";
demonSummonedCallout = "pvp/combat_events/general_card_event";
demonEffectCallout = "pvp/combat_events/general_card_event";
demonEffectStatusTimer = "pvp/status_timers/demon_effect";
demonQuickUse1Callout = "pvp/combat_events/general_card_event";
demonQuickUse2Callout = "pvp/combat_events/general_card_event";
damageBoostCallout = "pvp/combat_events/general_card_event";
damageBoostStatusTimer = "pvp/status_timers/timer_damage_boost";
hasteCallout = "pvp/combat_events/general_card_event";
hasteStatusTimer = "pvp/status_timers/timer_haste";
mitigationCallout = "pvp/combat_events/general_card_event";
mitigationStatusTimer = "pvp/status_timers/timer_damage_mitigation";
invulnerableCallout = "pvp/combat_events/general_card_event";
invulnerableStatusTimer = "pvp/status_timers/timer_invulnerable";
berserkCallout = "pvp/combat_events/general_card_event";
berserkStatusTimer = "pvp/status_timers/timer_berserk";
regenCallout = "pvp/combat_events/general_card_event";
regenStatusTimer = "pvp/status_timers/timer_regeneration";
lootBlockedCallout = "pvp/voiced/loot_blocked";
lootBlockedStatusTimer = "pvp/status_timers/timer_loot_blocked";
extraLifeCallout = "pvp/combat_events/general_card_event";
demonCriticalHealth = "pvp/voiced/demon_health_critical";
demonCriticalRecovery = "pvp/voiced/demon_healed";
slayerCriticalHealth = "pvp/voiced/slayer_health_critical";
}
hitConfirmSoundsInfo = "default";
characterStatusEventText = {
invulnerableText = {
textId = "#str_decl_powerup_statuseffect_GHOST45053";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
toughenedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45054";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
vulnerableText = {
textId = "#str_decl_powerup_statuseffect_GHOST45055";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
strengthenedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45056";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
hastedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45057";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
slowedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45058";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
berserkingText = {
textId = "#str_decl_powerup_statuseffect_GHOST45059";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
lootBlockedText = {
textId = "#str_decl_powerup_statuseffect_GHOST45060";
color = {
r = 0.87450999;
g = 0.87450999;
b = 0.87450999;
}
}
}
aiSpawnPoolDecl = "maps/game/pvp/battlemode";
enableBrinkOfDeath = false;
desummonKillDamage = "damage/hazard/pvp_round_kill";
slayerHighlightDecl = "pvp/slayer_view_demon_outline";
demonHighlightDecl = "pvp/demon_view_teammate_outline";
teammateHighlightDecl = "pvp/demon_view_teammate_outline";
slayerHighlightLOSBoxDecl = "highlight_los_slayer";
demonSpawnTargetEntity = "online/summon_target";
demonSpawnTargetEntityOneHit = "online/summon_target_onehit";
playerSpawnDef = "player";
teamSuperSettings = {
damageFactorAI = 9.99999975e-05;
tickFactor = 0.00329999998;
}
playerAlwaysFullBodyGibs = true;
maxPlayersPerTeam = {
ptr = {
ptr[0] = 1;
ptr[1] = 2;
}
}
demonOutlineColor = {
g = 0.501960993;
}
demonAllyOutlineColor = {
r = 1;
g = 0.501960993;
b = 0;
}
fillColorDemonSees = {
r = 0.199999988;
g = 0.199999988;
b = 0.199999988;
a = 0.850000024;
}
fillColorSlayerSees = {
r = 0.199999988;
g = 0.199999988;
b = 0.199999988;
a = 0.850000024;
}
fillColorHitFlash = {
g = 0;
b = 0;
a = 0.501960993;
}
slayerHighlightOptions = {
allyDemon = "EHM_NONE";
enemyDemon = "EHM_NONE";
allySlayer = "EHM_ALWAYS";
enemySlayer = "EHM_NONE";
}
demonHighlightOptions = {
allyDemon = "EHM_ALWAYS";
enemyDemon = "EHM_ALWAYS";
allySlayer = "EHM_ALWAYS";
enemySlayer = "EHM_ALWAYS";
}
raceToStyle = true;
pvpGameEventCallouts = {
roundOne = "pvp/voiced/round_one";
roundTwo = "pvp/voiced/round_two";
roundThree = "pvp/voiced/round_three";
roundFour = "pvp/voiced/round_four";
roundFinal = "pvp/voiced/final_round";
preMatchFiveSecondsRemaining = "pvp/chimes/five";
preMatchFourSecondsRemaining = "pvp/chimes/four";
preMatchThreeSecondsRemaining = "pvp/chimes/three";
preMatchTwoSecondsRemaining = "pvp/chimes/two";
preMatchOneSecondRemaining = "pvp/chimes/one";
roundStart = "pvp/voiced/fight";
finalRound = "pvp/voiced/final_round";
demonsRoundLost = "pvp/voiced/demons_round_lost";
slayerRoundLost = "pvp/voiced/slayer_round_lost";
slayerKilled = "pvp/voiced/slayer_killed";
demonKilled = "";
demonsKilled = "pvp/voiced/demons_killed";
slayerVictory = "pvp/voiced/slayer_won_the_match";
demonVictory = "pvp/voiced/demons_won_the_match";
demonRespawningSoon = "pvp/voiced/demon_resurrecting_soon";
respawnFiveSecondsRemaining = "pvp/chimes/resurrect_five";
respawnFourSecondsRemaining = "pvp/chimes/resurrect_four";
respawnThreeSecondsRemaining = "pvp/chimes/resurrect_three";
respawnTwoSecondsRemaining = "pvp/chimes/resurrect_two";
respawnOneSecondRemaining = "pvp/chimes/resurrect_one";
demonRespawned = "pvp/voiced/demon_resurrected";
delayDuringSync = {
num = 3;
item[0] = "pvp/voiced/slayer_killed";
item[1] = "pvp/voiced/demons_won_the_match";
item[2] = "pvp/voiced/slayer_round_lost";
}
}
jockeyTimeDuration = {
value = 5;
}
roundCalloutTimeDuration = {
value = 3;
}
roundStartCalloutDelaySec = {
value = 2;
}
upgradeUIDelaySec = {
value = 0;
}
matchEndCalloutDelaySec = {
value = 0;
}
matchEndResultsDelaySec = {
value = 0;
}
pvpProgressionScoringDecl = "battle_arena";
pvpLifecycleManager = {
podiumAvatarEntDefs = {
num = 7;
item[0] = "podiums/avatars/archvile";
item[1] = "podiums/avatars/doom_marine";
item[2] = "podiums/avatars/mancubus";
item[3] = "podiums/avatars/pain_elemental";
item[4] = "podiums/avatars/revenant";
item[5] = "podiums/avatars/marauder";
item[6] = "podiums/avatars/dreadknight";
}
podiumLayers = {
num = 1;
item[0] = "game/pvp/podium_stage";
}
slayerPodiumEntities = "pvp_match_slayer_podium_";
demonPodiumEntities = "pvp_match_demon_podium_slot_";
characterAnimBlendMS = 0;
playerAppearSound = "play_pvp_staging_spawnin";
}
slayerPVPLoadoutDecl = "pvploadout/default";
demonPVPLoadoutDecl = "pvpdemonloadout/default";
respawnTimeSec = {
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = {
value = 0;
}
}
}
}
respawnTimeCapSec = {
defaultValue = {
value = 0;
}
branchPairs = {
num = 1;
item[0] = {
branchKey = "CONTROLLERPAD_DECL";
branchResult = {
value = 0;
}
}
}
}
respawnStatusEffects = {
num = 0;
}
idealRespawnDistanceFromSlayer = 100;
slayerLayersToActivate = {
num = 1;
item[0] = "game/pvp/slayer_team";
}
demonLayersToActivate = {
num = 1;
item[0] = "game/pvp/demon_team";
}
layersToDeactivate = {
num = 1;
item[0] = "game/pvp/permanently_hidden";
}
musicWinState = "music_ghost_states/pvp_win";
musicLoseState = "music_ghost_states/pvp_lose";
closeCallHealthThreshold = 50;
clutchThreshold = 5;
comebackThreshold = 3;
surpriseTimeLimit = {
value = 3;
}
surviveThreshold = 4;
requiredPlayerCount = 2;
soundOcclusionBypass = false;
}
}
}
Pickups
Pickup
For non-respawning pickups, only use the idProp2/idMover entities.
idProp2
Remove the bindInfo if this is a self-respawning pickup.
entity {
entityDef deathmatch_pickup_mega_health_1 {
inherit = "pickup/health/large";
class = "idProp2";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true; // Must be true
disableAIPooling = false;
edit = {
bindInfo = { // remove if self-respawning pickup
bindParent = "deathmatch_pickup_mega_health_1_offset_mover"; // fixes entity offset
}
renderModelInfo = {
model = "art/pickups/health/megaHealth_head_a.lwo";
contributesToLightProbeGen = false;
noAmbient = true;
scale = {
x = 1;
y = 1;
z = 1;
}
emissiveColor = {
r = 0;
g = 0.913725019;
}
emissiveScale = 3;
}
spawn_statIncreases = {
num = 1;
item[0] = {
stat = "STAT_ITEMS_SPAWNED";
increase = 1;
}
}
equipOnPickup = true;
lootStyle = "LOOT_TOUCH";
triggerDef = "trigger/props/megahealth";
isStatic = true;
canBePossessed = true;
fxDecl = "pickups/megahealth_head";
useableComponentDecl = "mega_health";
sound_spawn = "play_pickup_loop_05";
sound_stop = "stop_pickup_loop_05";
pickup_statIncreases = {
num = 1;
item[0] = {
stat = "STAT_HEALTH_PICKUP";
increase = 1;
}
}
spawnPosition = { // Be sure to set the spawn position
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Be sure to set the spawn orientation
mat = {
mat[0] = {
x = -1;
y = 0;
z = 0;
}
mat[1] = {
x = 0;
y = -1;
z = 0;
}
}
}
targets = {
num = 1;
item[0] = "deathmatch_pickup_mega_health_1_respawn_relay"; // Activates relay to start respawn process
}
isLootDrop = true; // Must be true
}
}
}
idMover
Optional, but will fix the entity offset for the pickup. However, the pickup's spawn orientation will revert to its default value.
entity {
entityDef deathmatch_pickup_mega_health_1_offset_mover {
inherit = "func/mover";
class = "idMover";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
spawnPosition = { // Be sure to set the spawn position
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // The spawn orientation does not matter
mat = {
mat[0] = {
x = -1;
y = 0;
z = 0;
}
mat[1] = {
x = 0;
y = -1;
z = 0;
}
}
}
renderModelInfo = {
model = NULL;
}
clipModelInfo = {
clipModelName = NULL;
}
}
}
}
Respawning Pickups
Target Spawn
entity {
entityDef deathmatch_pickup_mega_health_1_respawn {
inherit = "target/spawn";
class = "idTarget_Spawn";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be 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 = 1;
item[0] = {
name = "deathmatch_pickup_mega_health_1"; // Activates respawning pickup
}
}
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 = "";
disablePooling = false;
spawnPosition = { // Be sure to set the spawn position
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Be sure to set the spawn orientation
mat = {
mat[0] = {
x = -1;
y = 0;
z = 0;
}
mat[1] = {
x = 0;
y = -1;
z = 0;
}
}
}
}
}
}
Relay
entity {
entityDef deathmatch_pickup_mega_health_1_respawn_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1; // Activates on one count
spawnPosition = { // Spawn position is not important
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "deathmatch_pickup_mega_health_1_respawn"; // Activates target spawn
}
delay = 15; // Must have a delay
repeat = true; // Can activate again
}
}
}
Chainsaw Pickups
Info
Chainsaw fuel pickups cannot be picked-up after a client has already picked-up 2 of them in the same map.
This method will give ALL Slayers +1 fuel pickup when one Slayer tries to pickup a fuel canister.
idDynamicEntity
entity {
entityDef coop_pickup_ammo_gas_1_fake {
inherit = "func/dynamic";
class = "idDynamicEntity"; // This is the fuel canister model
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Be sure to set the spawn position
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Be sure to set the spawn orientation
mat = {
mat[0] = {
x = -1;
y = 0;
z = 0;
}
mat[1] = {
x = 0;
y = -1;
z = 0;
}
}
}
renderModelInfo = {
model = "art/pickups/ammo/ammo_chainsaw_01.lwo";
contributesToLightProbeGen = false;
ignoreDesaturate = true;
emissiveScale = 0.2;
scale = {
x = 2;
y = 2;
z = 2;
}
}
clipModelInfo = {
type = "CLIPMODEL_NONE";
}
dormancy = {
canBecomeDormant = true;
}
}
}
}
idTrigger
entity {
entityDef coop_pickup_ammo_gas_1_trigger {
inherit = "trigger/trigger";
class = "idTrigger";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Set the spawn position to same as the idDynamicEntity
x = -11.11;
y = -11.11;
z = -11.11;
}
renderModelInfo = {
model = NULL;
}
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 2;
y = 2;
z = 2;
}
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake_timeline"; // Targets the removal or respawn timeline
}
playerCanActivate = true;
clientCanActivate = true;
triggerForAllClients = true;
triggerOnEnter = true;
triggerOnce = true; // Set to false for respawning pickup
wait = 0; // Add a wait timer for respawning pickup
}
}
}
Global SFX / Give Fuel
A separate relay entity must exist once to activate the sound effect & give fuel ammo command.
entity {
entityDef multiplayer_chainsaw_refill_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 2;
item[0] = "multiplayer_chainsaw_refill"; // Ammo refill
item[1] = "multiplayer_chainsaw_refill_sfx"; // Sound effect
}
repeat = true; // Must be true
}
}
}
entity {
entityDef multiplayer_chainsaw_refill_sfx {
inherit = "sound/soundentity";
class = "idSoundEntity";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
temporarySoundEvent = true;
spawnPosition = { // The spawn position does not matter
x = 1;
y = 1;
z = 1;
}
soundOcclusionBypass = true;
startEvents = {
num = 1;
item[0] = "play_pickup_ammo_chainsaw";
}
stopEvents = {
num = 1;
item[0] = "play_pickup_ammo_chainsaw";
}
}
}
}
entity {
entityDef multiplayer_chainsaw_refill {
class = "idTarget_Command";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
commandText = "give ammo/sharedammopool/fuel"; // Be sure to set the ammo count to 1 for this decl
spawnPosition = { // The spawn position does not matter
x = 1;
y = 1;
z = 1;
}
}
}
}
Removal Timeline / Relay
entity {
entityDef coop_pickup_ammo_gas_1_fake_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true; // Must be true
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "coop_pickup_ammo_gas_1_fake_remove"; // Remove relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "multiplayer_chainsaw_refill_relay"; // SFX & give fuel relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef coop_pickup_ammo_gas_1_fake_remove {
inherit = "target/remove";
class = "idTarget_Remove";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake"; // Removes the chainsaw canister model
}
}
}
}
Respawn Timeline / Relay
entity {
entityDef coop_pickup_ammo_gas_1_fake_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true; // Must be true
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "coop_pickup_ammo_gas_1_fake_relay"; // Respawn relay
events = {
num = 2;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
item[1] = {
eventTime = 30000; // Show fuel cansiter render model after 30 seconds
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "multiplayer_chainsaw_refill_fuck_you_relay"; // SFX & give fuel relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef coop_pickup_ammo_gas_1_fake_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake"; // Show/Hide fuel canister render model
}
repeat = true; // Must be true
}
}
}
Resetting Encounter Managers
If you want Encounter Managers to reset when a round ends (all players die on either team), you will need to setup a unique exit trigger for every idEncounterManager entity. The round_end entity must target the exit trigger.
idEncounterTrigger_Exit
entity {
entityDef multiplayer_reset_encounter_on_round_end {
inherit = "encounter/trigger/exit";
class = "idEncounterTrigger_Exit";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // The spawn position does not matter
x = 0;
y = 0;
z = 0;
}
triggerOnce = false; // Must be false
resetScriptOnExit = true; // Must be true
}
}
}
round_end
This entity will always activate so long as the entityDef name is unchanged.
entity {
entityDef round_end { // Do not change the entityDef name
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
count = 1;
delay = 0;
call = "";
repeat = true; // Must be true
checkLiveActivator = false;
adjustFor16msFrames = false;
selfActivateDelay = -1;
waitInterval = 0;
delayMin = -1;
delayMax = -1;
spawnPosition = { // The spawn position does not matter
x = 1;
y = 1;
z = 1;
}
targets = {
num = 2;
item[0] = "multiplayer_reset_encounter_on_round_end"; // Exit trigger
item[1] = "invasion_ambient_music_1_new"; // Recommended to target a new ambient music timeline
}
}
}
}
idEncounterManager
entity {
entityDef coop_encounter_manager_test_1 {
inherit = "encounter/manager";
class = "idEncounterManager";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
enableAIHighlightOnFinish = false;
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 = { // The spawn position does not matter
x = 0;
y = 0;
z = 0;
}
combatRatingScale = "COMBAT_RATING_SCALE_IGNORE";
encounterComponent = {
entityEvents = {
num = 1;
item[0] = {
entity = "coop_encounter_manager_test_1"; // Must match the entityDef name
events = {
num = 1;
item[0] = {
eventCall = {
eventDef = "designerComment";
args = {
num = 2;
item[0] = {
string = "This is a test encounter";
}
item[1] = {
bool = true;
}
}
}
}
}
}
}
}
exitTriggers = {
num = 1; // Must be present in addition to the encounter's normal exit trigger
item[0] = "multiplayer_reset_encounter_on_round_end";
}
}
}
}
Music
Event Call
item[0] = {
eventCall = {
eventDef = "activateTarget";
args = {
num = 2;
item[0] = {
entity = "heavy_music_timeline_1";
}
item[1] = {
string = "activate heavy music";
}
}
}
}
Entities
entity {
entityDef heavy_music_timeline_1 {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 1;
item[0] = {
entity = "heavy_music_relay_1";
events = {
num = 2;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowOnClients = true;
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef heavy_music_relay_1 {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "heavy_music_1";
}
repeat = true;
}
}
}
entity {
entityDef heavy_music_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_heavy";
initialSwitchGroup = "music_ghost_switch";
initialSwitchState = "doom_hunter_music";
}
}
}
Doors
Door
entity {
entityDef interact_doors_cultist_wide_01_1 {
inherit = "interact/doors/cultist_wide_01";
class = "idInteractable_Obstacle";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
soundOffset = {
z = 1.5;
}
whenToSave = "SGT_CHECKPOINT";
flags = {
skipRenderModelReplication = true;
}
dormancy = {
distance = 100;
playerDistance = 120;
playerRearwardDistance = 80;
}
fxDecl = "gameplay/invasion/demon_door";
interaction = {
initalState = "interactables/door/normal/locked";
interactionGraph = "interactables/door";
stateData = {
num = 1;
item[0] = {
stateName = "interactables/door/normal/locked";
}
}
transitionData = {
num = 12;
item[0] = {
transitionName = "needs_key_To_unlocked_open";
additionalWaitMs = 1000;
playSoundOnTransition = "play_doomhunter_widedoor_open_unlocked";
}
item[1] = {
transitionName = "unlocked_To_unlocked_open";
playSoundOnTransition = "play_doomhunter_widedoor_open";
}
item[2] = {
transitionName = "unlocked_open_To_unlocked";
playSoundOnTransition = "play_doomhunter_widedoor_close";
}
item[3] = {
transitionName = "locked_To_locked_open";
playSoundOnTransition = "play_doomhunter_widedoor_open";
}
item[4] = {
transitionName = "locked_open_To_locked";
playSoundOnTransition = "play_doomhunter_widedoor_close";
}
item[5] = {
transitionName = "unlocked_open_To_locked";
playSoundOnTransition = "play_doomhunter_widedoor_close";
}
item[6] = {
transitionName = "locked_To_locked_fail";
}
item[7] = {
transitionName = "needs_key_To_needs_key_failed";
}
item[8] = {
transitionName = "locked_To_unlocked";
}
item[9] = {
transitionName = "unlocked_To_locked";
}
item[10] = {
transitionName = "start_locked_To_locked";
}
item[11] = {
transitionName = "locked_To_stay_open";
}
}
animWebDecl = "animweb/interact/doors/cultist_wide_01";
}
touchData = {
retouchDelaySec = 0.5;
triggerDef = "trigger/interact/cultist_wide_01_square";
}
stateColors = {
num = 8;
item[0] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_red";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_red";
}
}
state = "start_locked";
}
item[1] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_red";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_red";
}
}
state = "activate_to_unlock";
}
item[2] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_red";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_red";
}
}
state = "locked";
}
item[3] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_red";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_red";
}
}
state = "needs_key";
}
item[4] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_green";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_blue";
}
}
state = "unlocked";
}
item[5] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_green";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_blue";
}
}
state = "locked_open";
}
item[6] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_green";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_blue";
}
}
state = "unlocked_open";
}
item[7] = {
colorScale = 5;
materialSwapList = {
num = 2;
item[0] = {
from = "art/tile/glow/doorglow_a";
to = "art/tile/glow/doorglow_green";
}
item[1] = {
from = "art/tile/glow/doorglow_b";
to = "art/tile/glow/doorglow_blue";
}
}
state = "stay_open";
}
}
collisionPieces = {
num = 4;
item[0] = {
meshName = "collision";
jointName = "collision_joint";
}
item[1] = {
meshName = "collision1";
jointName = "collision1_joint";
}
item[2] = {
meshName = "collision2";
jointName = "collision2_joint";
}
item[3] = {
meshName = "collision3";
jointName = "collision3_joint";
}
}
blockerBoundsExpandDists = {
x = 0.100000001;
y = 1;
z = 0.100000001;
}
stateObstacleData = {
num = 16;
item[0] = {
statePath = "interactables/door/normal/activate_to_unlock";
obstacleReachability = true;
}
item[1] = {
statePath = "interactables/door/normal/locked";
obstacleReachability = true;
}
item[2] = {
statePath = "interactables/door/normal/locked_fail";
obstacleReachability = true;
}
item[3] = {
statePath = "interactables/door/normal/locked_open";
}
item[4] = {
statePath = "interactables/door/normal/needs_key";
obstacleReachability = true;
}
item[5] = {
statePath = "interactables/door/normal/needs_key_failed";
obstacleReachability = true;
}
item[6] = {
statePath = "interactables/door/normal/start_locked";
obstacleReachability = true;
}
item[7] = {
statePath = "interactables/door/normal/stay_open";
}
item[8] = {
statePath = "interactables/door/normal/unlocked";
}
item[9] = {
statePath = "interactables/door/normal/unlocked_open";
}
item[10] = {
statePath = "interactables/door/oneWay/oneWay_closed";
obstacleReachability = true;
}
item[11] = {
statePath = "interactables/door/oneWay/oneWay_lock_fail";
obstacleReachability = true;
}
item[12] = {
statePath = "interactables/door/oneWay/oneWay_locked";
obstacleReachability = true;
}
item[13] = {
statePath = "interactables/door/oneWay/oneWay_open";
}
item[14] = {
statePath = "interactables/door/oneWay/oneWay_open_fail";
obstacleReachability = true;
}
item[15] = {
statePath = "interactables/door/oneWay/oneWay_opened";
}
}
dissolveDistance = 20;
renderModelInfo = {
model = "md6def/objects/doors/cultist_wide_door_01/cultist_wide_door_01.md6";
}
guiData = {
swfFile = "swf/worldgui/guientity/1_interact_lock_default.swf";
scale = 0.0850000009;
initialCommands = {
num = 1;
item[0] = {
commandType = "SPRITE_HIDE";
}
}
positionOffset = {
x = 8;
z = 25;
}
}
umbraVisBlocking = "CAN_BLOCK";
umbraSoundBlocking = "CAN_BLOCK";
demonPlayerRenderModel = "art/objects/door/demon/cultist_wideDoor_01_demon.lwo";
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
demonPlayersPassThrough = false;
}
}
}
Open
entity {
entityDef interact_doors_cultist_wide_01_1_open {
inherit = "target/interact_action_door";
class = "idTarget_InteractionAction";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
renderModelInfo = {
materialRemap = {
num = 1;
item[0] = {
to = "art/tile/common/nodraw";
}
}
}
actionFilter = "interactionAction/door";
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
targets = {
num = 1;
item[0] = "interact_doors_cultist_wide_01_1";
}
action = "IA_DOOR_OPEN";
}
}
}
Replication
entity {
entityDef interact_doors_cultist_wide_01_1_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "interact_doors_cultist_wide_01_1_relay";
events = {
num = 1;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "interact_doors_cultist_wide_01_1_remove";
events = {
num = 1;
item[0] = {
eventTime = 2500;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef interact_doors_cultist_wide_01_1_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "interact_doors_cultist_wide_01_1_open";
}
repeat = true;
}
}
}
entity {
entityDef interact_doors_cultist_wide_01_1_remove {
inherit = "target/remove";
class = "idTarget_Remove";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "interact_doors_cultist_wide_01_1";
}
repeat = true;
}
}
}
Shootables
Shootable
Disable network replication
entity {
entityDef funky_shootable_1 {
inherit = "func/shootable";
class = "idTrigger_TakeDamage";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
renderModelInfo = {
model = "art/kit/gameplay/breakable_glow_b.lwo";
scale = {
x = 0.25;
y = 0.25;
z = 0.25;
}
}
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 1.5;
y = 1.5;
z = 1.5;
}
}
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = {
mat = {
mat[0] = {
x = 0;
y = -1;
z = 0;
}
mat[1] = {
x = 1;
y = 0;
z = 0;
}
}
}
wait = 0;
triggerOnce = true;
triggerForAllClients = true;
playerCanActivate = false;
deadAiCanActivate = false;
allowZeroDamage = true;
soundActivated = "play_shootable_activate";
soundReady = "play_shootable_reset";
fxDecl = "gameplay/shootable";
weaponDamageType = "PLAYER_WEAPON_SHOTGUN_ PLAYER_WEAPON_SHOTGUN_FULL_AUTO_ PLAYER_WEAPON_SHOTGUN_FULL_AUTO_MASTERY_ PLAYER_WEAPON_SHOTGUN_STICKY_BOMB_ PLAYER_WEAPON_DOUBLE_BARRELED_SHOTGUN_ PLAYER_WEAPON_PLASMA_ PLAYER_WEAPON_PLASMA_HEATWAVE_ PLAYER_WEAPON_PLASMA_SUPERCHARGE_ PLAYER_WEAPON_PLASMA_ICE_BOMB_ PLAYER_WEAPON_HAR_ PLAYER_WEAPON_HAR_SCOPE_ PLAYER_WEAPON_HAR_MICROMISSLE_ PLAYER_WEAPON_ROCKETLAUNCHER_ PLAYER_WEAPON_ROCKETLAUNCHER_DETONATE_ PLAYER_WEAPON_ROCKETLAUNCHER_LOCKON_ PLAYER_WEAPON_BALLISTA_ PLAYER_WEAPON_BALLISTA_ARBALEST_ PLAYER_WEAPON_BALLISTA_DESTROYER_ PLAYER_WEAPON_CHAINGUN_ PLAYER_WEAPON_CHAINGUN_TURRET_ PLAYER_WEAPON_CHAINGUN_GATLING_ PLAYER_WEAPON_MEAT_HOOK_NAPALM_ PLAYER_WEAPON_BFG_ PLAYER_WEAPON_FRAG_ PLAYER_WEAPON_FRAG_GRENADE_ PLAYER_WEAPON_FRAG_GRENADE_CLUSTER_ PLAYER_WEAPON_FLAME_BELCH_ PLAYER_WEAPON_FLAME_BELCH_NAPALM_ PLAYER_WEAPON_PISTOL_ PLAYER_WEAPON_PISTOL_HAND_CANNON_ PLAYER_WEAPON_UNMAYKR_ PLAYER_WEAPON_MICROWAVE_MOD_";
targets = {
num = 1;
item[0] = "funky_shootable_1_timeline";
}
dormancy = {
allowDormancy = false;
allowPvsDormancy = false;
}
keepAfterTriggerOnce = true;
}
}
}
Replication
entity {
entityDef funky_shootable_1_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "funky_shootable_1_relay";
events = {
num = 1;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "funky_shootable_1_remove";
events = {
num = 1;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef funky_shootable_1_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "something_to_activate";
}
dormancy = {
allowPvsDormancy = false;
}
delay = 0;
}
}
}
entity {
entityDef funky_shootable_1_remove {
inherit = "target/remove";
class = "idTarget_Remove";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "funky_shootable_1";
}
dormancy = {
allowPvsDormancy = false;
}
delay = 0;
}
}
}
Breakable Walls
Breakable Wall
entity {
entityDef destructible_mall_wall_b_1 {
inherit = "destructible/e2m1_nest/mall_wall_b";
class = "idDestructible";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
whenToSave = "SGT_CHECKPOINT";
flags = {
skipRenderModelReplication = true;
}
soundOffset = {
z = 1.5;
}
renderModelInfo = {
emissiveColor = {
r = 0;
b = 0.0470587984;
}
emissiveScale = 6;
model = "art/kit/hell_earth/walls/crack_mall_b_whole.lwo";
acceptsDecals = true;
}
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 7.19999981;
y = 1;
z = 7.0999999;
}
numSides = 6;
}
soundOcclusionBypass = true;
targetingDecl = NULL;
fxDecl = "gameplay/invasion/demon_door";
destructible = {
idleCommands = {
num = 1;
item[0] = {
time = 10000;
command = "IDLE_COMMAND_BECOME_STATIC";
}
}
decl = "destructible/e2m1_nest/mall_wall_b";
}
effectiveDamageTypes = {
num = 1;
item[0] = "damage/special/no_damage";
}
meleeOnDash = false;
dissolveDistance = 20;
demonPlayerRenderModel = "art/kit/hell_earth/walls/crack_mall_a_demon.lwo";
umbraVisBlocking = "CAN_BLOCK";
umbraSoundBlocking = "CAN_BLOCK";
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
dormancy = {
playerDistance = 20;
playerRearwardDistance = 20;
allowDistanceDormancy = false;
allowDormancy = true;
allowPvsDormancy = false;
}
targets = {
num = 1;
item[0] = "destructible_mall_wall_b_1_timeline";
}
demonPlayersPassThrough = false;
}
}
}
Replication
entity {
entityDef destructible_mall_wall_b_1_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 1;
item[0] = {
entity = "destructible_mall_wall_b_1_relay";
events = {
num = 1;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef destructible_mall_wall_b_1_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "destructible_mall_wall_b_1";
}
repeat = false;
}
}
}
Bounce Pads
Dynamic Entity (Backer)
entity {
entityDef invasion_bouncepad_back_1 {
inherit = "func/dynamic";
class = "idDynamicEntity";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Set the position roughly -0.2 (on the z axis) behind the emitter FX
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Backer should be laying on the ground
mat = {
mat[0] = {
x = 0.707107;
y = -0.707107;
z = 0;
}
mat[1] = {
x = 0.707107;
y = 0.707107;
z = 0;
}
mat[2] = {
x = 0;
y = 0;
z = 1;
}
}
}
renderModelInfo = {
model = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo";
scale = { // Do not change the scale, it will break collision
x = 0.66;
y = 0.66;
z = 0.5;
}
}
clipModelInfo = {
clipModelName = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo"; // Adds collision
}
}
}
}
Emitter FX (Slayer Team)
entity {
layers {
"game/pvp/slayer_team" // Only the Slayer can see this FX
}
entityDef invasion_bouncepad_fx_slayer_1 {
inherit = "func/fx";
class = "idEntityFx";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
canBecomeDormant = true;
}
dormancy = {
delay = 5;
distance = 78.029007;
}
spawnPosition = { // Position should be identical to the FX on the demon team
x = -11.11;
y = -11.11;
z = -11.11;
}
fxEffect = "gameplay/invasion/bounce_pad_slayer"; // Emitter is red
spawnOrientation = { // Orientation should not be changed
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;
}
}
}
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
Emitter FX (Demon Team)
entity {
layers {
"game/pvp/demon_team" // Only Demon Players can see this FX
}
entityDef invasion_bouncepad_fx_slayer_1 {
inherit = "func/fx";
class = "idEntityFx";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
canBecomeDormant = true;
}
dormancy = {
delay = 5;
distance = 78.029007;
}
spawnPosition = { // Position should be identical to the FX on the slayer team
x = -11.11;
y = -11.11;
z = -11.11;
}
automapPropertiesDecl = "invasion_bounce_demon";
fxEffect = "gameplay/invasion/bounce_pad_demon"; // Emitter is purple
spawnOrientation = { // Orientation should not be changed
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;
}
}
}
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
Bouncepad
entity {
entityDef invasion_bouncepad_from_1 {
inherit = "trigger/bounce_pad";
class = "idTrigger_BouncePad";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
canBecomeDormant = true;
}
launchFX = "fx/bounce_pad/basic";
spawnPosition = { // Position should be roughtly +1 (z axis) above the FX
x = -11.11;
y = -11.11;
z = -11.11;
}
renderModelInfo = {
model = NULL;
scale = {
x = 1;
y = 1;
z = 1;
}
}
clipModelInfo = {
clipModelName = "maps/game/sp/e1m3_cult/e1m3_cult/invasion_x_bouncepad_from_1";
size = {
x = 1.5;
y = 1.5;
z = 1;
}
}
playerCanActivate = false; // Slayer cannot activate
demonPlayerCanActivate = true; // Demon players can activate
destination = "invasion_bouncepad_dest_1"; // Fly to this destination when activated
launchSpeed = 32; // Speed demons will fly upwards
}
}
}
Destination
entity {
layers {
"game/pvp/demon_team" // Only demon players can be launched
}
entityDef invasion_bouncepad_dest_1 {
inherit = "info/bounce_destination";
class = "idInfo_BounceDestination";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Increase z axis position close to the destination
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Orientation does not matter
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;
}
}
}
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
Teleporters
Timeline
The timeline is only required for teleporter cooldowns.
entity {
layers {
"game/pvp/demon_team" // Applies only to Demon Players
}
entityDef invasion_portal_timeline_1 {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false so cooldown is not shared globally
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "invasion_portal_fx_demon_1";
events = {
num = 2;
item[0] = {
eventCall = {
eventDef = "hide"; // Hide 1st effect upon activation
args = {
num = 0;
}
}
}
item[1] = {
eventTime = 5000;
eventCall = {
eventDef = "show"; // Show 1st effect after 5 seconds
args = {
num = 0;
}
}
}
}
}
item[1] = {
entity = "invasion_portal_fx_demon_2";
events = {
num = 2;
item[0] = {
eventCall = {
eventDef = "hide"; // Hide 2nd effect upon activation
args = {
num = 0;
}
}
}
item[1] = {
eventTime = 5000;
eventCall = {
eventDef = "show"; // Show 2nd effect after 5 seconds
args = {
num = 0;
}
}
}
}
}
}
}
allowClientsToStart = true; // Must be true
shouldForceTimelineFinish = true; // Must be true
}
}
}
Dynamic Entity (Backer)
entity {
entityDef invasion_portal_back_1 {
inherit = "func/dynamic";
class = "idDynamicEntity";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Set the spawn position roughly -0.2 (on the x or y axis) behind the portal FX
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Backer should be standing upright
mat = {
mat[0] = {
x = 0;
y = 0;
z = -1;
}
mat[1] = {
x = -1;
y = 0;
z = 0;
}
mat[2] = {
x = 0;
y = 1;
z = 0;
}
}
}
renderModelInfo = {
model = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo";
scale = { // Do not change the scale, it will break collision
x = 0.66;
y = 0.66;
z = 0.5;
}
}
clipModelInfo = {
clipModelName = "art/kit/hell/bridge/bridge_archPillar_a_divider.lwo"; // Adds collision
}
}
}
}
Portal FX (Slayer Team)
entity {
layers {
"game/pvp/slayer_team" // Only the Slayer can see this FX
}
entityDef invasion_portal_fx_slayer_1 {
inherit = "func/fx";
class = "idEntityFx";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
canBecomeDormant = true;
}
dormancy = {
delay = 5;
distance = 78.029007;
}
spawnPosition = { // Position should be identical to the FX on the demon team
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Orientation should be identical to the FX on the demon team
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;
}
}
}
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
flags = {
hide = false;
}
fxEffect = "gameplay/invasion/teleporter_flat_demon"; // FX is red
}
}
}
Portal FX (Demon Team)
entity {
layers {
"game/pvp/demon_team" // Only Demon Players can see this FX
}
entityDef invasion_portal_fx_demon_1 {
inherit = "func/fx";
class = "idEntityFx";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
canBecomeDormant = true;
}
dormancy = {
delay = 5;
distance = 78.029007;
}
spawnPosition = { // Position should be identical to the FX on the slayer team
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Orientation should be identical to the FX on the slayer team
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;
}
}
}
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
flags = {
hide = false;
}
fxEffect = "gameplay/invasion/teleporter_flat_slayer"; // FX is blue
}
}
}
Teleporter
entity {
layers {
"game/pvp/demon_team" // Only demon players can use the teleporter
}
entityDef invasion_portal_from_1 {
inherit = "trigger/teleporter";
class = "idTrigger_Teleporter";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false so cooldown is not shared globally
disableAIPooling = false;
edit = {
clientCanActivate = true; // Must be true
fxExtraCondition = "FX_EXTRA_COND_MAX";
sounds = {
activated = "play_arena_teleporter_use";
}
spawnPosition = { // Position should be close to the idDynamicEntity backer
x = -11.11;
y = -11.11;
z = -11.11;
}
renderModelInfo = {
model = NULL;
}
clipModelInfo = {
type = "CLIPMODEL_CYLINDER";
size = { // Scale based on portal size
x = 1;
y = 3;
z = 2;
}
clipModelName = NULL;
}
targets = {
num = 1;
item[0] = "invasion_portal_timeline_1"; // Activate the timeline to show and hide FX
}
dormancy = {
playerDistance = 6;
playerRearwardDistance = 6;
}
flags = {
hide = false;
}
wait = 5; // Deactivate both teleporters for 5 seconds
playerCanActivate = false; // Slayer cannot activate
demonPlayerCanActivate = true; // Demon players can activate
otherTeleporter = "invasion_portal_from_2"; // Deactivate this teleporter
destination = "invasion_portal_dest_1"; // Go to this destination when activated
}
}
}
Destination
entity {
entityDef invasion_portal_dest_1 {
inherit = "info/teleport_destination";
class = "idInfo_TeleportDestination";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Position should be just foward of the opposing idTrigger_Teleporter
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Orientation should be identical to the opposing idEntityFx
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;
}
}
}
}
}
}
Triggers
Trigger
entity {
entityDef trigger_volume_1 {
inherit = "trigger/trigger";
class = "idTrigger";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
demonPlayerCanActivate = true;
removeFlag = "RMV_CHECKPOINT_ALLOW_MS";
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
renderModelInfo = {
model = NULL;
scale = {
x = 1;
y = 1;
z = 1;
}
}
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 5;
y = 5;
z = 5;
}
}
targets = {
num = 1;
item[0] = "trigger_volume_1_timeline";
}
wait = 0;
triggerOnce = true;
}
}
}
Replication
entity {
entityDef trigger_volume_1_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 1;
item[0] = {
entity = "trigger_volume_1_relay";
events = {
num = 1;
item[0] = {
eventTime = 250;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef trigger_volume_1_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "something_to_activate";
}
repeat = true;
}
}
}
Gorilla Bars
Entity
Disable network replication.
entity {
entityDef game_interact_vault_pipe_1 {
inherit = "interact/vault/pipe";
class = "idTrigger_GorillaBar";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
removeFlag = "RMV_CHECKPOINT_ALLOW_MS";
renderModelInfo = {
model = "art/test/monkey_bar_a.lwo";
}
netRelevancyFlags = "";
triggerOnce = false;
triggerOnEnter = true;
testForValidGrab = true;
spawnPosition = {
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = {
mat = {
mat[0] = {
x = 0;
y = 1;
}
mat[1] = {
x = -1;
y = 0;
}
}
}
clipModelInfo = {
clipModelName = "art/test/monkey_bar_a.lwo";
}
animOffsetAdjust = {
x = -1;
}
}
}
}
Startup Commands
Add this to "shell.entities" and trigger with a logic entity
entity {
entityDef mapstart_commands {
class = "idTarget_Command";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
commandText = "pvp_lobby_showFullMapList 1; net_gameserver_enable 0; net_maxRate 100; g_havokHeapLimitMB 200; g_damageScaleAItoDP 4; g_damageScaleSlayertoSlayer 0; g_damageScaleSlayertoDP 0; g_damageScaleDPtoSlayer 0; pm_disableWalkingOnTheEdgeOfLedge 0; warning_disable general; warning_disable anim";
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
}
}
}
Command details
- pvp_lobby_showFullMapList 1 - Shows entire map list if non PVP maps are added
- net_gameserver_enable 0 - Enables local hosting
- net_maxRate 100 - Reduces likelihood of crashes
- g_havokHeapLimitMB 200 - Reduces likelihood of crashes
- g_damageScaleAItoDP 4 - Multiplies AI damage to Demon Players by x4 (x2 more than Nightmare difficulty, remove for Invasion/SVS)
- g_damageScaleSlayertoSlayer 0 - Slayers cannot damage other Slayers (remove for Invasion/SVS)
- g_damageScaleSlayertoDP 0 - Slayers cannot damage other Demon Players (remove for Invasion/SVS)
- g_damageScaleDPtoSlayer 0 - Demon Players cannot damage other Slayers (remove for Invasion/SVS)
- pm_disableWalkingOnTheEdgeOfLedge 0 - Movement is no longer negated when moving off a ledge
- warning_disable general - Removes warning spam in the console
- warning_disable anim - Removes warning spam in the console