PvP Logic
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;
}
}
}
}
Deathmatch
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;
}
}
}