Skip to main content

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;
	}
}
}