Add new game mode kill confirmed
Also updates old localizedstrings for some new games modes coming in the future soontm Add Dog tag models. for kill confirmed.pull/4/head
parent
ce51388914
commit
bceb79b7d3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,6 +16,21 @@ LANG_ENGLISH "GUN GAME"
|
||||||
REFERENCE MENU_GUNGAME_DESC
|
REFERENCE MENU_GUNGAME_DESC
|
||||||
LANG_ENGLISH "Be the first to dominate with every gun."
|
LANG_ENGLISH "Be the first to dominate with every gun."
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_DROPPED_ENEMY_GUN_RANK
|
||||||
|
LANG_ENGLISH "Dropped Enemy Gun Rank!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_DROPPED_GUN_RANK
|
||||||
|
LANG_ENGLISH "Dropped Gun Rank!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_GAINED_GUN_RANK
|
||||||
|
LANG_ENGLISH "Gained Gun Rank!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_TOP_GUN_RANK
|
||||||
|
LANG_ENGLISH "Top Gun Rank!"
|
||||||
|
|
||||||
|
REFERENCE MP_WEAPON
|
||||||
|
LANG_ENGLISH "Weapon:"
|
||||||
|
|
||||||
REFERENCE MPUI_SHARPSHOOTER
|
REFERENCE MPUI_SHARPSHOOTER
|
||||||
LANG_ENGLISH "Sharpshooter"
|
LANG_ENGLISH "Sharpshooter"
|
||||||
|
|
||||||
|
@ -40,11 +55,32 @@ LANG_ENGLISH "Kill Confirmed"
|
||||||
REFERENCE MPUI_CONF_CAPS
|
REFERENCE MPUI_CONF_CAPS
|
||||||
LANG_ENGLISH "KILL CONFIRMED"
|
LANG_ENGLISH "KILL CONFIRMED"
|
||||||
|
|
||||||
|
REFERENCE CONF_KILL_CONFIRMED
|
||||||
|
LANG_ENGLISH "KILL CONFIRMED"
|
||||||
|
|
||||||
REFERENCE MENU_CONF
|
REFERENCE MENU_CONF
|
||||||
LANG_ENGLISH "Recover Dog Tags to score for your team and deny enemy scores."
|
LANG_ENGLISH "Recover Dog Tags to score for your team and deny enemy scores."
|
||||||
|
|
||||||
REFERENCE CONF_GAME_DESC
|
REFERENCE OBJECTIVES_CONF
|
||||||
LANG_ENGLISH "Collect Dog Tags to win."
|
LANG_ENGLISH "Recover Dog Tags for the win."
|
||||||
|
|
||||||
|
REFERENCE OBJECTIVES_CONF_SCORE
|
||||||
|
LANG_ENGLISH "Recover Dog Tags to score for your team and deny enemy score. First team to &&1 wins."
|
||||||
|
|
||||||
|
REFERENCE OBJECTIVES_CONF_HINT
|
||||||
|
LANG_ENGLISH "Recover Dog Tags for the win."
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_TAGS_RETRIEVED
|
||||||
|
LANG_ENGLISH "Got Your Tags!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_KILL_DENIED
|
||||||
|
LANG_ENGLISH "Kill Denied!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_DENIED_KILL
|
||||||
|
LANG_ENGLISH "Denied Kill!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_KILL_CONFIRMED
|
||||||
|
LANG_ENGLISH "Kill Confirmed!"
|
||||||
|
|
||||||
REFERENCE MPUI_INF
|
REFERENCE MPUI_INF
|
||||||
LANG_ENGLISH "Infected"
|
LANG_ENGLISH "Infected"
|
||||||
|
@ -55,35 +91,36 @@ LANG_ENGLISH "INFECTED"
|
||||||
REFERENCE MENU_INF
|
REFERENCE MENU_INF
|
||||||
LANG_ENGLISH "Eliminated Survivors become Infected. Infect everyone, or survive the game to win."
|
LANG_ENGLISH "Eliminated Survivors become Infected. Infect everyone, or survive the game to win."
|
||||||
|
|
||||||
REFERENCE INF_GAME_DESC
|
REFERENCE OBJECTIVES_INFECT
|
||||||
LANG_ENGLISH "Eliminated Survivors become Infected. Infect everyone, or survive the game to win."
|
LANG_ENGLISH "Eliminated Survivors become Infected. Infect everyone, or survive the game to win."
|
||||||
|
|
||||||
REFERENCE INF_WAIT_FOR_PLAYERS
|
REFERENCE OBJECTIVES_INFECT_SCORE
|
||||||
LANG_ENGLISH "Waiting for more players..."
|
LANG_ENGLISH "Survivors become Infected. Infect everyone, or survive the game to win."
|
||||||
|
|
||||||
REFERENCE INF_COUNTDOWN
|
REFERENCE OBJECTIVES_INFECT_HINT
|
||||||
LANG_ENGLISH "Infection countdown: "
|
LANG_ENGLISH "Watch your back."
|
||||||
|
|
||||||
REFERENCE INF_ALLIES_ELIM
|
REFERENCE MP_DRAFT_STARTS_IN
|
||||||
LANG_ENGLISH "Survivors eliminated."
|
LANG_ENGLISH "Infection countdown: &&1"
|
||||||
|
|
||||||
REFERENCE INF_GOT_INFECTED
|
REFERENCE SPLASHES_SURVIVOR
|
||||||
LANG_ENGLISH "Infected!"
|
|
||||||
|
|
||||||
REFERENCE INF_LAST_ALIVE
|
|
||||||
LANG_ENGLISH "Last Alive!"
|
|
||||||
|
|
||||||
REFERENCE INF_SURVIVOR
|
|
||||||
LANG_ENGLISH "Survivor!"
|
LANG_ENGLISH "Survivor!"
|
||||||
|
|
||||||
REFERENCE CONF_PICKEDUP_TAGS
|
REFERENCE SPLASHES_FIRST_MERCENARY
|
||||||
LANG_ENGLISH "RETREIVED TAGS"
|
LANG_ENGLISH "First Infected!"
|
||||||
|
|
||||||
REFERENCE CONF_KILL_DENIED
|
REFERENCE SPLASHES_DRAFTED
|
||||||
LANG_ENGLISH "KILL DENIED"
|
LANG_ENGLISH "Infected!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_FINAL_ROGUE
|
||||||
|
LANG_ENGLISH "Final Survivor!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_GOT_DRAFTED
|
||||||
|
LANG_ENGLISH "Got Infected!"
|
||||||
|
|
||||||
|
REFERENCE SPLASHES_DRAFTED_ROGUE
|
||||||
|
LANG_ENGLISH "Got Infected!"
|
||||||
|
|
||||||
REFERENCE CONF_KILL_CONFIRMED
|
|
||||||
LANG_ENGLISH "KILL CONFIRMED"
|
|
||||||
|
|
||||||
REFERENCE MPUI_CRANKED
|
REFERENCE MPUI_CRANKED
|
||||||
LANG_ENGLISH "Cranked"
|
LANG_ENGLISH "Cranked"
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
dm
|
||||||
|
dom
|
||||||
|
sd
|
||||||
|
sab
|
||||||
|
war
|
||||||
|
koth
|
||||||
|
oneflag
|
||||||
|
arena
|
||||||
|
dd
|
||||||
|
ctf
|
||||||
|
gtnw
|
||||||
|
conf
|
||||||
|
gun
|
||||||
|
infect
|
|
@ -0,0 +1,483 @@
|
||||||
|
#include maps\mp\_utility;
|
||||||
|
#include maps\mp\gametypes\_hud_util;
|
||||||
|
#include common_scripts\utility;
|
||||||
|
/*
|
||||||
|
Confirmed Kill
|
||||||
|
Objective: Score points for your team by eliminating players on the opposing team.
|
||||||
|
Score bonus points for picking up dogtags from downed enemies.
|
||||||
|
Map ends: When one team reaches the score limit, or time limit is reached
|
||||||
|
Respawning: No wait / Near teammates
|
||||||
|
|
||||||
|
Level requirementss
|
||||||
|
------------------
|
||||||
|
Spawnpoints:
|
||||||
|
classname mp_tdm_spawn
|
||||||
|
All players spawn from these. The spawnpoint chosen is dependent on the current locations of teammates and enemies
|
||||||
|
at the time of spawn. Players generally spawn behind their teammates relative to the direction of enemies.
|
||||||
|
|
||||||
|
Spectator Spawnpoints:
|
||||||
|
classname mp_global_intermission
|
||||||
|
Spectators spawn from these and intermission is viewed from these positions.
|
||||||
|
Atleast one is required, any more and they are randomly chosen between.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
if(getdvar("mapname") == "mp_background")
|
||||||
|
return;
|
||||||
|
|
||||||
|
maps\mp\gametypes\_globallogic::init();
|
||||||
|
maps\mp\gametypes\_callbacksetup::SetupCallbacks();
|
||||||
|
maps\mp\gametypes\_globallogic::SetupCallbacks();
|
||||||
|
|
||||||
|
registerRoundSwitchDvar( level.gameType, 0, 0, 9 );
|
||||||
|
registerTimeLimitDvar( level.gameType, 5, 0, 20 );
|
||||||
|
registerScoreLimitDvar( level.gameType, 65, 0, 100 );
|
||||||
|
registerRoundLimitDvar( level.gameType, 1, 0, 10 );
|
||||||
|
registerWinLimitDvar( level.gameType, 1, 0, 10 );
|
||||||
|
registerRoundSwitchDvar( level.gameType, 3, 0, 30 );
|
||||||
|
registerNumLivesDvar( level.gameType, 0, 0, 10 );
|
||||||
|
registerHalfTimeDvar( level.gameType, 0, 0, 1 );
|
||||||
|
|
||||||
|
level.teamBased = true;
|
||||||
|
level.onStartGameType = ::onStartGameType;
|
||||||
|
level.getSpawnPoint = ::getSpawnPoint;
|
||||||
|
level.onNormalDeath = ::onNormalDeath;
|
||||||
|
level.onPrecacheGameType = ::onPrecacheGameType;
|
||||||
|
|
||||||
|
//game["dialog"]["gametype"] = "kill_confirmed";
|
||||||
|
|
||||||
|
//level.conf_vo["axis"] = "RU_1mc_kill_confirmed";
|
||||||
|
//level.conf_vo["allies"] = "US_1mc_kill_confirmed";
|
||||||
|
|
||||||
|
level.conf_fx["vanish"] = loadFx( "impacts/small_snowhit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
onPrecacheGameType()
|
||||||
|
{
|
||||||
|
precachemodel( "prop_dogtags_friend" );
|
||||||
|
precachemodel( "prop_dogtags_foe" );
|
||||||
|
precacheshader( "waypoint_dogtags" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onStartGameType()
|
||||||
|
{
|
||||||
|
setClientNameMode("auto_change");
|
||||||
|
|
||||||
|
if ( !isdefined( game["switchedsides"] ) )
|
||||||
|
game["switchedsides"] = false;
|
||||||
|
|
||||||
|
if ( game["switchedsides"] )
|
||||||
|
{
|
||||||
|
oldAttackers = game["attackers"];
|
||||||
|
oldDefenders = game["defenders"];
|
||||||
|
game["attackers"] = oldDefenders;
|
||||||
|
game["defenders"] = oldAttackers;
|
||||||
|
}
|
||||||
|
|
||||||
|
setObjectiveText( "allies", &"OBJECTIVES_CONF" );
|
||||||
|
setObjectiveText( "axis", &"OBJECTIVES_CONF" );
|
||||||
|
|
||||||
|
setObjectiveScoreText( "allies", &"OBJECTIVES_CONF_SCORE" );
|
||||||
|
setObjectiveScoreText( "axis", &"OBJECTIVES_CONF_SCORE" );
|
||||||
|
|
||||||
|
setObjectiveHintText( "allies", &"OBJECTIVES_CONF_HINT" );
|
||||||
|
setObjectiveHintText( "axis", &"OBJECTIVES_CONF_HINT" );
|
||||||
|
|
||||||
|
level.spawnMins = ( 0, 0, 0 );
|
||||||
|
level.spawnMaxs = ( 0, 0, 0 );
|
||||||
|
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
|
||||||
|
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
|
||||||
|
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
|
||||||
|
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
|
||||||
|
|
||||||
|
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
|
||||||
|
setMapCenter( level.mapCenter );
|
||||||
|
|
||||||
|
maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 );
|
||||||
|
maps\mp\gametypes\_rank::registerScoreInfo( "kill_confirmed", 50 );
|
||||||
|
maps\mp\gametypes\_rank::registerScoreInfo( "kill_denied", 50 );
|
||||||
|
maps\mp\gametypes\_rank::registerScoreInfo( "tags_retrieved", 250 );
|
||||||
|
|
||||||
|
level.dogtags = [];
|
||||||
|
|
||||||
|
allowed[0] = level.gameType;
|
||||||
|
|
||||||
|
maps\mp\gametypes\_gameobjects::main(allowed);
|
||||||
|
|
||||||
|
level thread onPlayerConnect(); // Needed since we need to draw the hud.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getSpawnPoint()
|
||||||
|
{
|
||||||
|
spawnteam = self.pers["team"];
|
||||||
|
if ( game["switchedsides"] )
|
||||||
|
spawnteam = getOtherTeam( spawnteam );
|
||||||
|
|
||||||
|
if ( level.inGracePeriod )
|
||||||
|
{
|
||||||
|
spawnPoints = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + spawnteam + "_start" );
|
||||||
|
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( spawnPoints );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( spawnteam );
|
||||||
|
spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( spawnPoints );
|
||||||
|
}
|
||||||
|
|
||||||
|
return spawnPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onPlayerConnect()
|
||||||
|
{
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
level waittill( "connected", player );
|
||||||
|
player.hud_EventPopup = player createEventPopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onNormalDeath( victim, attacker, lifeId )
|
||||||
|
{
|
||||||
|
level thread spawnDogTags( victim, attacker );
|
||||||
|
|
||||||
|
if ( game["state"] == "postgame" && game["teamScores"][attacker.team] > game["teamScores"][level.otherTeam[attacker.team]] )
|
||||||
|
attacker.finalKill = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
spawnDogTags( victim, attacker )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.dogtags[victim.guid] ) )
|
||||||
|
{
|
||||||
|
PlayFx( level.conf_fx["vanish"], level.dogtags[victim.guid].curOrigin );
|
||||||
|
level.dogtags[victim.guid] notify( "reset" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
visuals[0] = spawn( "script_model", (0,0,0) );
|
||||||
|
visuals[0] setModel( "prop_dogtags_foe" );
|
||||||
|
visuals[1] = spawn( "script_model", (0,0,0) );
|
||||||
|
visuals[1] setModel( "prop_dogtags_friend" );
|
||||||
|
|
||||||
|
trigger = spawn( "trigger_radius", (0,0,0), 0, 32, 32 );
|
||||||
|
|
||||||
|
level.dogtags[victim.guid] = maps\mp\gametypes\_gameobjects::createUseObject( "any", trigger, visuals, (0,0,16) );
|
||||||
|
|
||||||
|
// we don't need these
|
||||||
|
_objective_delete( level.dogtags[victim.guid].objIDAllies );
|
||||||
|
_objective_delete( level.dogtags[victim.guid].objIDAxis );
|
||||||
|
maps\mp\gametypes\_objpoints::deleteObjPoint( level.dogtags[victim.guid].objPoints["allies"] );
|
||||||
|
maps\mp\gametypes\_objpoints::deleteObjPoint( level.dogtags[victim.guid].objPoints["axis"] );
|
||||||
|
|
||||||
|
level.dogtags[victim.guid] maps\mp\gametypes\_gameobjects::setUseTime( 0 );
|
||||||
|
level.dogtags[victim.guid].onUse = ::onUse;
|
||||||
|
level.dogtags[victim.guid].victim = victim;
|
||||||
|
level.dogtags[victim.guid].victimTeam = victim.pers["team"];
|
||||||
|
|
||||||
|
level.dogtags[victim.guid].objId = maps\mp\gametypes\_gameobjects::getNextObjID();
|
||||||
|
objective_add( level.dogtags[victim.guid].objId, "invisible", (0,0,0) );
|
||||||
|
objective_icon( level.dogtags[victim.guid].objId, "waypoint_dogtags" );
|
||||||
|
|
||||||
|
level thread clearOnVictimDisconnect( victim );
|
||||||
|
victim thread tagTeamUpdater( level.dogtags[victim.guid] );
|
||||||
|
}
|
||||||
|
|
||||||
|
pos = victim.origin + (0,0,14);
|
||||||
|
level.dogtags[victim.guid].curOrigin = pos;
|
||||||
|
level.dogtags[victim.guid].trigger.origin = pos;
|
||||||
|
level.dogtags[victim.guid].visuals[0].origin = pos;
|
||||||
|
level.dogtags[victim.guid].visuals[1].origin = pos;
|
||||||
|
|
||||||
|
level.dogtags[victim.guid] maps\mp\gametypes\_gameobjects::allowUse( "any" );
|
||||||
|
|
||||||
|
level.dogtags[victim.guid].visuals[0] thread showToTeam( level.dogtags[victim.guid], getOtherTeam( victim.pers["team"] ) );
|
||||||
|
level.dogtags[victim.guid].visuals[1] thread showToTeam( level.dogtags[victim.guid], victim.pers["team"] );
|
||||||
|
|
||||||
|
level.dogtags[victim.guid].attacker = attacker;
|
||||||
|
//level.dogtags[victim.guid] thread timeOut( victim );
|
||||||
|
|
||||||
|
objective_position( level.dogtags[victim.guid].objId, pos );
|
||||||
|
objective_state( level.dogtags[victim.guid].objId, "active" );
|
||||||
|
//objective_player( level.dogtags[victim.guid].objId, attacker getEntityNumber() );
|
||||||
|
|
||||||
|
playSoundAtPos( pos, "mp_killconfirm_tags_drop" );
|
||||||
|
|
||||||
|
level.dogtags[victim.guid] thread bounce();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
showToTeam( gameObject, team )
|
||||||
|
{
|
||||||
|
gameObject endon ( "death" );
|
||||||
|
gameObject endon( "reset" );
|
||||||
|
|
||||||
|
self hide();
|
||||||
|
|
||||||
|
foreach ( player in level.players )
|
||||||
|
{
|
||||||
|
if( player.team == team )
|
||||||
|
self ShowToPlayer( player );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
level waittill ( "joined_team" );
|
||||||
|
|
||||||
|
self hide();
|
||||||
|
foreach ( player in level.players )
|
||||||
|
{
|
||||||
|
if ( player.team == team )
|
||||||
|
self ShowToPlayer( player );
|
||||||
|
|
||||||
|
if ( gameObject.victimTeam == player.team && player == gameObject.attacker )
|
||||||
|
objective_state( gameObject.objId, "invisible" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onUse( player )
|
||||||
|
{
|
||||||
|
pos = self.curOrigin;
|
||||||
|
|
||||||
|
self notify( "reset" );
|
||||||
|
self.visuals[0] hide();
|
||||||
|
self.visuals[1] hide();
|
||||||
|
self.curOrigin = (0,0,1000);
|
||||||
|
self.trigger.origin = (0,0,1000);
|
||||||
|
self.visuals[0].origin = (0,0,1000);
|
||||||
|
self.visuals[1].origin = (0,0,1000);
|
||||||
|
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||||
|
objective_state( self.objId, "invisible" );
|
||||||
|
|
||||||
|
// friendly pickup
|
||||||
|
if ( player.pers["team"] == self.victimTeam )
|
||||||
|
{
|
||||||
|
self.trigger playSound( "mp_killconfirm_tags_deny" );
|
||||||
|
|
||||||
|
player incPlayerStat( "killsdenied", 1 );
|
||||||
|
player incPersStat( "denied", 1 );
|
||||||
|
player maps\mp\gametypes\_persistence::statSetChild( "round", "denied", player.pers["denied"] );
|
||||||
|
|
||||||
|
if ( self.victim == player )
|
||||||
|
{
|
||||||
|
event = "tags_retrieved";
|
||||||
|
splash = &"SPLASHES_TAGS_RETRIEVED";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
event = "kill_denied";
|
||||||
|
splash = &"SPLASHES_KILL_DENIED";
|
||||||
|
}
|
||||||
|
|
||||||
|
// tell the attacker their kill was denied
|
||||||
|
if ( isDefined( self.attacker ) )
|
||||||
|
self.attacker thread EventPopup( &"SPLASHES_DENIED_KILL", (1,0.5,0.5) );
|
||||||
|
}
|
||||||
|
// enemy pickup
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.trigger playSound( "mp_killconfirm_tags_pickup" );
|
||||||
|
|
||||||
|
event = "kill_confirmed";
|
||||||
|
splash = &"SPLASHES_KILL_CONFIRMED";
|
||||||
|
|
||||||
|
player incPlayerStat( "killsconfirmed", 1 );
|
||||||
|
player incPersStat( "confirmed", 1 );
|
||||||
|
player maps\mp\gametypes\_persistence::statSetChild( "round", "confirmed", player.pers["confirmed"] );
|
||||||
|
|
||||||
|
// if not us, tell the attacker their kill was confirmed
|
||||||
|
if ( self.attacker != player )
|
||||||
|
self.attacker onPickup( event, splash );
|
||||||
|
|
||||||
|
player playLocalSound( game["voice"][player.pers["team"]] + "kill_confirmed" );
|
||||||
|
|
||||||
|
player maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( player.pers["team"], 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
player onPickup( event, splash );
|
||||||
|
|
||||||
|
// do all this at the end now so the location doesn't change before playing the sound on the entity
|
||||||
|
self resetTags();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onPickup( event, splash, stat )
|
||||||
|
{
|
||||||
|
level endon( "game_ended" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
self thread EventPopup( splash );
|
||||||
|
maps\mp\gametypes\_gamescore::givePlayerScore( event, self, undefined, true );
|
||||||
|
self thread maps\mp\gametypes\_rank::giveRankXP( event );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resetTags()
|
||||||
|
{
|
||||||
|
self.attacker = undefined;
|
||||||
|
self notify( "reset" );
|
||||||
|
self.visuals[0] hide();
|
||||||
|
self.visuals[1] hide();
|
||||||
|
self.curOrigin = (0,0,1000);
|
||||||
|
self.trigger.origin = (0,0,1000);
|
||||||
|
self.visuals[0].origin = (0,0,1000);
|
||||||
|
self.visuals[1].origin = (0,0,1000);
|
||||||
|
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||||
|
objective_state( self.objId, "invisible" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bounce()
|
||||||
|
{
|
||||||
|
level endon( "game_ended" );
|
||||||
|
self endon( "reset" );
|
||||||
|
|
||||||
|
bottomPos = self.curOrigin;
|
||||||
|
topPos = self.curOrigin + (0,0,12);
|
||||||
|
|
||||||
|
while( true )
|
||||||
|
{
|
||||||
|
self.visuals[0] moveTo( topPos, 0.5, 0.15, 0.15 );
|
||||||
|
self.visuals[0] rotateYaw( 180, 0.5 );
|
||||||
|
self.visuals[1] moveTo( topPos, 0.5, 0.15, 0.15 );
|
||||||
|
self.visuals[1] rotateYaw( 180, 0.5 );
|
||||||
|
|
||||||
|
wait( 0.5 );
|
||||||
|
|
||||||
|
self.visuals[0] moveTo( bottomPos, 0.5, 0.15, 0.15 );
|
||||||
|
self.visuals[0] rotateYaw( 180, 0.5 );
|
||||||
|
self.visuals[1] moveTo( bottomPos, 0.5, 0.15, 0.15 );
|
||||||
|
self.visuals[1] rotateYaw( 180, 0.5 );
|
||||||
|
|
||||||
|
wait( 0.5 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
timeOut( victim )
|
||||||
|
{
|
||||||
|
level endon( "game_ended" );
|
||||||
|
victim endon( "disconnect" );
|
||||||
|
self notify( "timeout" );
|
||||||
|
self endon( "timeout" );
|
||||||
|
|
||||||
|
level maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( 30.0 );
|
||||||
|
|
||||||
|
self.visuals[0] hide();
|
||||||
|
self.visuals[1] hide();
|
||||||
|
self.curOrigin = (0,0,1000);
|
||||||
|
self.trigger.origin = (0,0,1000);
|
||||||
|
self.visuals[0].origin = (0,0,1000);
|
||||||
|
self.visuals[1].origin = (0,0,1000);
|
||||||
|
self maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tagTeamUpdater( tags )
|
||||||
|
{
|
||||||
|
level endon( "game_ended" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
while( true )
|
||||||
|
{
|
||||||
|
self waittill( "joined_team" );
|
||||||
|
|
||||||
|
tags.victimTeam = self.pers["team"];
|
||||||
|
tags resetTags();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
clearOnVictimDisconnect( victim )
|
||||||
|
{
|
||||||
|
level endon( "game_ended" );
|
||||||
|
|
||||||
|
guid = victim.guid;
|
||||||
|
victim waittill( "disconnect" );
|
||||||
|
|
||||||
|
if ( isDefined( level.dogtags[guid] ) )
|
||||||
|
{
|
||||||
|
// block further use
|
||||||
|
level.dogtags[guid] maps\mp\gametypes\_gameobjects::allowUse( "none" );
|
||||||
|
|
||||||
|
// tell the attacker their kill was denied
|
||||||
|
if ( isDefined( level.dogtags[guid].attacker ) )
|
||||||
|
level.dogtags[guid].attacker thread EventPopup( &"SPLASHES_DENIED_KILL", (1,0.5,0.5) );
|
||||||
|
|
||||||
|
// play vanish effect, reset, and wait for reset to process
|
||||||
|
PlayFx( level.conf_fx["vanish"], level.dogtags[guid].curOrigin );
|
||||||
|
level.dogtags[guid] notify( "reset" );
|
||||||
|
wait( 0.05 );
|
||||||
|
|
||||||
|
// sanity check before removal
|
||||||
|
if ( isDefined( level.dogtags[guid] ) )
|
||||||
|
{
|
||||||
|
// delete objective and visuals
|
||||||
|
objective_delete( level.dogtags[guid].objId );
|
||||||
|
level.dogtags[guid].trigger delete();
|
||||||
|
for ( i=0; i<level.dogtags[guid].visuals.size; i++ )
|
||||||
|
level.dogtags[guid].visuals[i] delete();
|
||||||
|
level.dogtags[guid] notify ( "deleted" );
|
||||||
|
|
||||||
|
// remove from list
|
||||||
|
level.dogtags[guid] = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
createEventPopup()
|
||||||
|
{
|
||||||
|
hud_EventPopup = newClientHudElem( self );
|
||||||
|
hud_EventPopup.children = [];
|
||||||
|
hud_EventPopup.horzAlign = "center";
|
||||||
|
hud_EventPopup.vertAlign = "middle";
|
||||||
|
hud_EventPopup.alignX = "center";
|
||||||
|
hud_EventPopup.alignY = "middle";
|
||||||
|
hud_EventPopup.x = 50;
|
||||||
|
hud_EventPopup.y = -35;
|
||||||
|
hud_EventPopup.font = "hudbig";
|
||||||
|
hud_EventPopup.fontscale = 0.65;
|
||||||
|
hud_EventPopup.archived = false;
|
||||||
|
hud_EventPopup.color = (0.5,0.5,0.5);
|
||||||
|
hud_EventPopup.sort = 10000;
|
||||||
|
hud_EventPopup.elemType = "msgText";
|
||||||
|
hud_EventPopup maps\mp\gametypes\_hud::fontPulseInit( 3.0 );
|
||||||
|
return hud_EventPopup;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EventPopup( event, hudColor, glowAlpha )
|
||||||
|
{
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
self notify( "EventPopup" );
|
||||||
|
self endon( "EventPopup" );
|
||||||
|
|
||||||
|
wait ( 0.05 );
|
||||||
|
|
||||||
|
if ( !isDefined( hudColor ) )
|
||||||
|
hudColor = (1,1,0.5);
|
||||||
|
if ( !isDefined( glowAlpha ) )
|
||||||
|
glowAlpha = 0;
|
||||||
|
|
||||||
|
self.hud_EventPopup.color = hudColor;
|
||||||
|
self.hud_EventPopup.glowColor = hudColor;
|
||||||
|
self.hud_EventPopup.glowAlpha = glowAlpha;
|
||||||
|
|
||||||
|
self.hud_EventPopup setText(event);
|
||||||
|
self.hud_EventPopup.alpha = 0.85;
|
||||||
|
|
||||||
|
wait ( 1.0 );
|
||||||
|
|
||||||
|
self.hud_EventPopup fadeOverTime( 0.75 );
|
||||||
|
self.hud_EventPopup.alpha = 0;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
"MPUI_CONF"
|
Loading…
Reference in New Issue