|
|
@ -89,8 +89,8 @@ main()
|
|
|
|
|
|
|
|
|
|
|
|
// Specific DVars for this gametype
|
|
|
|
// Specific DVars for this gametype
|
|
|
|
registerPrereleaseDvar(level.gameType, 30, 0, 300);
|
|
|
|
registerPrereleaseDvar(level.gameType, 30, 0, 300);
|
|
|
|
setDvarIfUninitialized("scr_" + level.gameType + "_seekers_primary_weapon", "ak47_reflex_mp");
|
|
|
|
registerSeekersPrimaryWeaponDvar(level.gameType, "ak47_reflex_mp");
|
|
|
|
setDvarIfUninitialized("scr_" + level.gameType + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
|
|
|
registerSeekersSecondaryWeaponDvar(level.gameType, "deserteagle_tactical_mp");
|
|
|
|
|
|
|
|
|
|
|
|
// Don't show perks
|
|
|
|
// Don't show perks
|
|
|
|
SetDvar("scr_showperksonspawn", 0);
|
|
|
|
SetDvar("scr_showperksonspawn", 0);
|
|
|
@ -151,7 +151,7 @@ main()
|
|
|
|
|
|
|
|
|
|
|
|
onPrecacheGametype()
|
|
|
|
onPrecacheGametype()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onPrecacheGametype called\n");
|
|
|
|
logPrint("onPrecacheGametype called");
|
|
|
|
|
|
|
|
|
|
|
|
game["seekers_released_sound"] = "mp_war_objective_taken";
|
|
|
|
game["seekers_released_sound"] = "mp_war_objective_taken";
|
|
|
|
game["seekers_blind_sound"] = "elev_run_end";
|
|
|
|
game["seekers_blind_sound"] = "elev_run_end";
|
|
|
@ -179,7 +179,7 @@ onPrecacheGametype()
|
|
|
|
|
|
|
|
|
|
|
|
registerPrereleaseDvar(dvarString, defaultValue, minValue, maxValue)
|
|
|
|
registerPrereleaseDvar(dvarString, defaultValue, minValue, maxValue)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("registerPrereleaseDvar called\n");
|
|
|
|
logPrint("registerPrereleaseDvar called");
|
|
|
|
|
|
|
|
|
|
|
|
registerWatchDvarInt("prereleasetime", defaultValue);
|
|
|
|
registerWatchDvarInt("prereleasetime", defaultValue);
|
|
|
|
|
|
|
|
|
|
|
@ -200,9 +200,23 @@ registerPrereleaseDvar(dvarString, defaultValue, minValue, maxValue)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
registerSeekersPrimaryWeaponDvar(dvarString, defaultValue)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logPrint("registerSeekersPrimaryWeaponDvar called");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
maps\mp\gametypes\_tweakables::registerTweakable("game", "seekers_primary_weapon", "scr_" + dvarString + "_seekers_primary_weapon", "ak47_reflex_mp");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
registerSeekersSecondaryWeaponDvar(dvarString, defaultValue)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
logPrint("registerSeekersSecondaryWeaponDvar called");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
maps\mp\gametypes\_tweakables::registerTweakable("game", "seekers_secondary_weapon", "scr_" + dvarString + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
updateGametypeDvars()
|
|
|
|
updateGametypeDvars()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("updateGametypeDvars called\n");
|
|
|
|
logPrint("updateGametypeDvars called");
|
|
|
|
|
|
|
|
|
|
|
|
// no time <= {prereleasetime} <= 5 minutes
|
|
|
|
// no time <= {prereleasetime} <= 5 minutes
|
|
|
|
level.preReleaseTime = dvarIntValue("prereleasetime", 30, 0, 5 * 60);
|
|
|
|
level.preReleaseTime = dvarIntValue("prereleasetime", 30, 0, 5 * 60);
|
|
|
@ -210,7 +224,7 @@ updateGametypeDvars()
|
|
|
|
|
|
|
|
|
|
|
|
onStartGameType()
|
|
|
|
onStartGameType()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onStartGameType called\n");
|
|
|
|
logPrint("onStartGameType called");
|
|
|
|
|
|
|
|
|
|
|
|
// Make DVars available
|
|
|
|
// Make DVars available
|
|
|
|
setDvarIfUninitialized("scr_hns_roundswitch", 1);
|
|
|
|
setDvarIfUninitialized("scr_hns_roundswitch", 1);
|
|
|
@ -220,6 +234,8 @@ onStartGameType()
|
|
|
|
setDvarIfUninitialized("scr_hns_winlimit", 4);
|
|
|
|
setDvarIfUninitialized("scr_hns_winlimit", 4);
|
|
|
|
setDvarIfUninitialized("scr_hns_halftime", 0);
|
|
|
|
setDvarIfUninitialized("scr_hns_halftime", 0);
|
|
|
|
setDvarIfUninitialized("scr_hns_numlives", 1);
|
|
|
|
setDvarIfUninitialized("scr_hns_numlives", 1);
|
|
|
|
|
|
|
|
setDvarIfUninitialized("scr_hns_seekers_primary_weapon", "ak47_reflex_mp");
|
|
|
|
|
|
|
|
setDvarIfUninitialized("scr_hns_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
|
|
|
|
|
|
|
|
|
|
|
// reset flags
|
|
|
|
// reset flags
|
|
|
|
gameFlagClear("seekers_released");
|
|
|
|
gameFlagClear("seekers_released");
|
|
|
@ -314,7 +330,7 @@ levelShowModelsOnMinimap()
|
|
|
|
|
|
|
|
|
|
|
|
getSpawnPoint()
|
|
|
|
getSpawnPoint()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("getSpawnPoint called\n");
|
|
|
|
logPrint("getSpawnPoint called");
|
|
|
|
|
|
|
|
|
|
|
|
if (self.pers["team"] == game["seekers"])
|
|
|
|
if (self.pers["team"] == game["seekers"])
|
|
|
|
spawnPointName = "mp_sd_spawn_attacker";
|
|
|
|
spawnPointName = "mp_sd_spawn_attacker";
|
|
|
@ -330,7 +346,7 @@ getSpawnPoint()
|
|
|
|
|
|
|
|
|
|
|
|
onSpawnPlayer()
|
|
|
|
onSpawnPlayer()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onSpawnPlayer called\n");
|
|
|
|
logPrint("onSpawnPlayer called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -359,7 +375,7 @@ onSpawnPlayer()
|
|
|
|
|
|
|
|
|
|
|
|
onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, killId)
|
|
|
|
onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, killId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onPlayerKilled called\n");
|
|
|
|
logPrint("onPlayerKilled called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -376,7 +392,7 @@ onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHit
|
|
|
|
|
|
|
|
|
|
|
|
checkAllowSpectating()
|
|
|
|
checkAllowSpectating()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("checkAllowSpectating called\n");
|
|
|
|
logPrint("checkAllowSpectating called");
|
|
|
|
|
|
|
|
|
|
|
|
wait(0.05);
|
|
|
|
wait(0.05);
|
|
|
|
|
|
|
|
|
|
|
@ -396,7 +412,7 @@ checkAllowSpectating()
|
|
|
|
|
|
|
|
|
|
|
|
onDeadEvent(team)
|
|
|
|
onDeadEvent(team)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onDeadEvent called\n");
|
|
|
|
logPrint("onDeadEvent called");
|
|
|
|
|
|
|
|
|
|
|
|
if (team == "all")
|
|
|
|
if (team == "all")
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -415,7 +431,7 @@ onDeadEvent(team)
|
|
|
|
|
|
|
|
|
|
|
|
onTimeLimit()
|
|
|
|
onTimeLimit()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onTimeLimit called\n");
|
|
|
|
logPrint("onTimeLimit called");
|
|
|
|
|
|
|
|
|
|
|
|
// Hiders win when time limit reached
|
|
|
|
// Hiders win when time limit reached
|
|
|
|
thread maps\mp\gametypes\_gamelogic::endGame(game["hiders"], game["strings"]["time_limit_reached"]);
|
|
|
|
thread maps\mp\gametypes\_gamelogic::endGame(game["hiders"], game["strings"]["time_limit_reached"]);
|
|
|
@ -424,7 +440,7 @@ onTimeLimit()
|
|
|
|
|
|
|
|
|
|
|
|
onNormalDeath(victim, attacker, lifeId)
|
|
|
|
onNormalDeath(victim, attacker, lifeId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onNormalDeath called\n");
|
|
|
|
logPrint("onNormalDeath called");
|
|
|
|
|
|
|
|
|
|
|
|
// Make sure the kill score is set properly
|
|
|
|
// Make sure the kill score is set properly
|
|
|
|
score = maps\mp\gametypes\_rank::getScoreInfoValue("kill");
|
|
|
|
score = maps\mp\gametypes\_rank::getScoreInfoValue("kill");
|
|
|
@ -440,7 +456,7 @@ onNormalDeath(victim, attacker, lifeId)
|
|
|
|
|
|
|
|
|
|
|
|
onOneLeftEvent(team)
|
|
|
|
onOneLeftEvent(team)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("onOneLeftEvent called\n");
|
|
|
|
logPrint("onOneLeftEvent called");
|
|
|
|
|
|
|
|
|
|
|
|
player = getLastLivingPlayer(team);
|
|
|
|
player = getLastLivingPlayer(team);
|
|
|
|
|
|
|
|
|
|
|
@ -450,7 +466,7 @@ onOneLeftEvent(team)
|
|
|
|
|
|
|
|
|
|
|
|
giveLastOnTeamWarning()
|
|
|
|
giveLastOnTeamWarning()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("giveLastOnTeamWarning called\n");
|
|
|
|
logPrint("giveLastOnTeamWarning called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -468,7 +484,7 @@ giveLastOnTeamWarning()
|
|
|
|
|
|
|
|
|
|
|
|
levelReleaseTimer()
|
|
|
|
levelReleaseTimer()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("levelReleaseTimer called\n");
|
|
|
|
logPrint("levelReleaseTimer called");
|
|
|
|
|
|
|
|
|
|
|
|
gameFlagClear("seekers_prerelease_setup");
|
|
|
|
gameFlagClear("seekers_prerelease_setup");
|
|
|
|
gameFlagClear("seekers_released");
|
|
|
|
gameFlagClear("seekers_released");
|
|
|
@ -537,7 +553,7 @@ levelReleaseTimer()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleSeeker() {
|
|
|
|
handleSeeker() {
|
|
|
|
logPrint("handleSeeker called\n");
|
|
|
|
logPrint("handleSeeker called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -584,23 +600,20 @@ handleSeeker() {
|
|
|
|
wait 0.5;
|
|
|
|
wait 0.5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
primaryWeapon = GetDvar("scr_" + level.gameType + "_seekers_primary_weapon", "ak47_reflex_mp");
|
|
|
|
|
|
|
|
secondaryWeapon = GetDvar("scr_" + level.gameType + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// random primary weapon
|
|
|
|
// random primary weapon
|
|
|
|
player GiveWeapon(primaryWeapon, RandomInt(9), false);
|
|
|
|
player GiveWeapon(level.gameTweaks["seekers_primary_weapon"].value, RandomInt(9), false);
|
|
|
|
player setSpawnWeapon(primaryWeapon);
|
|
|
|
player setSpawnWeapon(level.gameTweaks["seekers_primary_weapon"].value);
|
|
|
|
player SwitchToWeapon(primaryWeapon);
|
|
|
|
player SwitchToWeapon(level.gameTweaks["seekers_primary_weapon"].value);
|
|
|
|
|
|
|
|
|
|
|
|
// deagle + tactical knife
|
|
|
|
// deagle + tactical knife
|
|
|
|
player GiveWeapon(secondaryWeapon, 0, false);
|
|
|
|
player GiveWeapon(level.gameTweaks["seekers_secondary_weapon"].value, 0, false);
|
|
|
|
|
|
|
|
|
|
|
|
// single semtex
|
|
|
|
// single semtex
|
|
|
|
player GiveWeapon("semtex_mp");
|
|
|
|
player GiveWeapon("semtex_mp");
|
|
|
|
|
|
|
|
|
|
|
|
// ammo
|
|
|
|
// ammo
|
|
|
|
player GiveMaxAmmo(primaryWeapon);
|
|
|
|
player GiveMaxAmmo(level.gameTweaks["seekers_primary_weapon"].value);
|
|
|
|
player GiveMaxAmmo(secondaryWeapon);
|
|
|
|
player GiveMaxAmmo(level.gameTweaks["seekers_secondary_weapon"].value);
|
|
|
|
|
|
|
|
|
|
|
|
// gametype-friendly perks
|
|
|
|
// gametype-friendly perks
|
|
|
|
player GivePerk("specialty_lightweight");
|
|
|
|
player GivePerk("specialty_lightweight");
|
|
|
@ -619,7 +632,7 @@ handleSeeker() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleHider() {
|
|
|
|
handleHider() {
|
|
|
|
logPrint("handleHider called\n");
|
|
|
|
logPrint("handleHider called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -673,6 +686,7 @@ handleHider() {
|
|
|
|
player thread revealWhenGameEnds();
|
|
|
|
player thread revealWhenGameEnds();
|
|
|
|
/#
|
|
|
|
/#
|
|
|
|
player thread enableUnlimitedReload();
|
|
|
|
player thread enableUnlimitedReload();
|
|
|
|
|
|
|
|
player thread enableWeaponDicing("+actionslot 2");
|
|
|
|
#/
|
|
|
|
#/
|
|
|
|
|
|
|
|
|
|
|
|
if (!gameFlag("seekers_released"))
|
|
|
|
if (!gameFlag("seekers_released"))
|
|
|
@ -702,7 +716,7 @@ handleHider() {
|
|
|
|
|
|
|
|
|
|
|
|
setDisguiseModel(model)
|
|
|
|
setDisguiseModel(model)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("setDisguiseModel called\n");
|
|
|
|
logPrint("setDisguiseModel called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -739,7 +753,7 @@ setDisguiseModel(model)
|
|
|
|
|
|
|
|
|
|
|
|
setRandomDisguiseModel()
|
|
|
|
setRandomDisguiseModel()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("setRandomDisguiseModel called\n");
|
|
|
|
logPrint("setRandomDisguiseModel called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -751,7 +765,7 @@ setRandomDisguiseModel()
|
|
|
|
|
|
|
|
|
|
|
|
deleteDisguiseModel()
|
|
|
|
deleteDisguiseModel()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("deleteDisguiseModel called\n");
|
|
|
|
logPrint("deleteDisguiseModel called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -767,7 +781,7 @@ deleteDisguiseModel()
|
|
|
|
|
|
|
|
|
|
|
|
updateDisguiseView()
|
|
|
|
updateDisguiseView()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("updateDisguiseView called\n");
|
|
|
|
logPrint("updateDisguiseView called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -796,7 +810,7 @@ updateDisguiseView()
|
|
|
|
* person view and third person view.
|
|
|
|
* person view and third person view.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
enableThirdPersonSwitch(playerCommand, value) {
|
|
|
|
enableThirdPersonSwitch(playerCommand, value) {
|
|
|
|
logPrint("enableThirdPersonSwitch called\n");
|
|
|
|
logPrint("enableThirdPersonSwitch called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -828,7 +842,7 @@ enableThirdPersonSwitch(playerCommand, value) {
|
|
|
|
* are looking at.
|
|
|
|
* are looking at.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
enableModelChange(playerCommand) {
|
|
|
|
enableModelChange(playerCommand) {
|
|
|
|
logPrint("enableModelChange called\n");
|
|
|
|
logPrint("enableModelChange called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -963,7 +977,7 @@ handleModelMenuSelection()
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
watchDisguise(angleLockingPlayerCommand, angleModeSwitchPlayerCommand)
|
|
|
|
watchDisguise(angleLockingPlayerCommand, angleModeSwitchPlayerCommand)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("watchDisguise called\n");
|
|
|
|
logPrint("watchDisguise called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -1005,7 +1019,7 @@ watchDisguise(angleLockingPlayerCommand, angleModeSwitchPlayerCommand)
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
watchDisguiseDamage()
|
|
|
|
watchDisguiseDamage()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("watchDisguiseDamage called\n");
|
|
|
|
logPrint("watchDisguiseDamage called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -1039,7 +1053,7 @@ watchDisguiseDamage()
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
enableDisguiseModelAngleModeSwitching(playerCommand)
|
|
|
|
enableDisguiseModelAngleModeSwitching(playerCommand)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("enableDisguiseModelAngleModeSwitching called\n");
|
|
|
|
logPrint("enableDisguiseModelAngleModeSwitching called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -1079,7 +1093,7 @@ enableDisguiseModelAngleModeSwitching(playerCommand)
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
enableDisguiseModelAngleLocking(playerCommand)
|
|
|
|
enableDisguiseModelAngleLocking(playerCommand)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("enableDisguiseModelAngleLocking called\n");
|
|
|
|
logPrint("enableDisguiseModelAngleLocking called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -1112,7 +1126,7 @@ enableDisguiseModelAngleLocking(playerCommand)
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
enableUnlimitedReload()
|
|
|
|
enableUnlimitedReload()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("enableUnlimitedReload called\n");
|
|
|
|
logPrint("enableUnlimitedReload called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
@ -1130,7 +1144,7 @@ enableUnlimitedReload()
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
revealWhenGameEnds()
|
|
|
|
revealWhenGameEnds()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
logPrint("revealWhenGameEnds called\n");
|
|
|
|
logPrint("revealWhenGameEnds called");
|
|
|
|
|
|
|
|
|
|
|
|
player = self;
|
|
|
|
player = self;
|
|
|
|
|
|
|
|
|
|
|
|