‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
dm.gsc
Go to the documentation of this file.
1 #using scripts\shared\gameobjects_shared;
2 #using scripts\shared\math_shared;
3 #using scripts\shared\util_shared;
4 
5 #insert scripts\shared\shared.gsh;
6 
7 #using scripts\mp\gametypes\_globallogic;
8 #using scripts\mp\gametypes\_globallogic_audio;
9 #using scripts\mp\gametypes\_globallogic_score;
10 #using scripts\mp\gametypes\_spawning;
11 #using scripts\mp\gametypes\_spawnlogic;
12 #using scripts\mp\killstreaks\_killstreaks;
13 
14 #using scripts\mp\_util;
15 
16 /*
17  Deathmatch
18  Objective: Score points by eliminating other players
19  Map ends: When one player reaches the score limit, or time limit is reached
20  Respawning: No wait / Away from other players
21 
22  Level requirements
23  ------------------
24  Spawnpoints:
25  classname mp_dm_spawn
26  All players spawn from these. The spawnpoint chosen is dependent on the current locations of enemies at the time of spawn.
27  Players generally spawn away from enemies.
28 
29  Spectator Spawnpoints:
30  classname mp_global_intermission
31  Spectators spawn from these and intermission is viewed from these positions.
32  Atleast one is required, any more and they are randomly chosen between.
33 
34  Level script requirements
35  -------------------------
36  Team Definitions:
37  game["allies"] = "marines";
38  game["axis"] = "nva";
39  Because Deathmatch doesn't have teams with regard to gameplay or scoring, this effectively sets the available weapons.
40 
41  If using minefields or exploders:
42  load::main();
43 
44  Optional level script settings
45  ------------------------------
46  Soldier Type and Variation:
47  game["soldiertypeset"] = "seals";
48  This sets what character models are used for each nationality on a particular map.
49 
50  Valid settings:
51  soldiertypeset seals
52 */
53 
54 /*QUAKED mp_dm_spawn (1.0 0.5 0.0) (-16 -16 0) (16 16 72)
55 Players spawn away from enemies at one of these positions.*/
56 
57 #precache( "string", "OBJECTIVES_DM" );
58 #precache( "string", "OBJECTIVES_DM_SCORE" );
59 #precache( "string", "OBJECTIVES_DM_HINT" );
60 
61 function ‪main()
62 {
64 
65  ‪util::registerTimeLimit( 0, 1440 );
66  ‪util::registerScoreLimit( 0, 50000 );
69  ‪util::registerNumLives( 0, 100 );
70 
71  ‪globallogic::registerFriendlyFireDelay( level.gameType, 0, 0, 1440 );
72 
73  level.scoreRoundWinBased = ( GetGametypeSetting( "cumulativeRoundScores" ) == false );
74  level.teamScorePerKill = GetGametypeSetting( "teamScorePerKill" );
75  level.teamScorePerDeath = GetGametypeSetting( "teamScorePerDeath" );
76  level.teamScorePerHeadshot = GetGametypeSetting( "teamScorePerHeadshot" );
77  level.killstreaksGiveGameScore = GetGametypeSetting( "killstreaksGiveGameScore" );
78 
79  level.onStartGameType =&‪onStartGameType;
80  level.onPlayerKilled =&‪onPlayerKilled;
81  level.onSpawnPlayer =&‪onSpawnPlayer;
82 
84 
85  ‪globallogic_audio::set_leader_gametype_dialog ( "startFreeForAll", "hcStartFreeForAll", "gameBoost", "gameBoost" );
86 
87  // Sets the scoreboard columns and determines with data is sent across the network
88  ‪globallogic::setvisiblescoreboardcolumns( "pointstowin", "kills", "deaths", "kdratio", "score" );
89 }
90 
91 
92 function ‪setupTeam( team )
93 {
94  ‪util::setObjectiveText( team, &"OBJECTIVES_DM" );
95  if ( level.splitscreen )
96  {
97  ‪util::setObjectiveScoreText( team, &"OBJECTIVES_DM" );
98  }
99  else
100  {
101  ‪util::setObjectiveScoreText( team, &"OBJECTIVES_DM_SCORE" );
102  }
103  ‪util::setObjectiveHintText( team, &"OBJECTIVES_DM_HINT" );
104 
105  ‪spawnlogic::add_spawn_points( team, "mp_dm_spawn" );
106  ‪spawnlogic::place_spawn_points( "mp_dm_spawn_start" );
107 
108  level.spawn_start = ‪spawnlogic::get_spawnpoint_array( "mp_dm_spawn_start" );
109 
110 }
111 
113 {
114  setClientNameMode("auto_change");
115 
116  // now that the game objects have been deleted place the influencers
118 
119  level.spawnMins = ( 0, 0, 0 );
120  level.spawnMaxs = ( 0, 0, 0 );
121 
122  foreach( team in level.teams )
123  {
124  ‪setupTeam( team );
125  }
126 
128 
129  level.mapCenter = ‪math::find_box_center( level.spawnMins, level.spawnMaxs );
130  setMapCenter( level.mapCenter );
131 
133  setDemoIntermissionPoint( spawnpoint.origin, spawnpoint.angles );
134 
135  level.displayRoundEndText = false;
136 
137  level thread ‪onScoreCloseMusic();
138 
139  if ( !‪util::isOneRound() )
140  {
141  level.displayRoundEndText = true;
142  }
143 }
144 
145 function ‪onEndGame( winningPlayer )
146 {
147  if ( isdefined( winningPlayer ) && isPlayer( winningPlayer ) )
148  [[level._setPlayerScore]]( winningPlayer, winningPlayer [[level._getPlayerScore]]() + 1 );
149 }
150 
152 {
153  while( !level.gameEnded )
154  {
155  scoreLimit = level.scoreLimit;
156  scoreThreshold = scoreLimit * .9;
157 
158  for(i=0;i<level.players.size;i++)
159  {
160  scoreCheck = [[level._getPlayerScore]]( level.players[i] );
161 
162  if( scoreCheck >= scoreThreshold )
163  {
164  return;
165  }
166  }
167 
168  wait(.5);
169  }
170 }
171 
172 function ‪onSpawnPlayer(predictedSpawn)
173 {
174  if( !level.inPrematchPeriod )
175  {
176  level.useStartSpawns = false;
177  }
178 
179  ‪spawning::onSpawnPlayer(predictedSpawn);
180 }
181 
182 function ‪onPlayerKilled( eInflictor, attacker, iDamage, sMeansOfDeath, weapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration )
183 {
184  if ( !isPlayer( attacker ) || ( self == attacker ) )
185  return;
186 
187  if( !isdefined( ‪killstreaks::get_killstreak_for_weapon( weapon ) ) || ‪IS_TRUE( level.killstreaksGiveGameScore ) )
188  {
189  attacker ‪globallogic_score::givePointsToWin( level.teamScorePerKill );
190  self ‪globallogic_score::givePointsToWin( level.teamScorePerDeath * -1 );
191  if ( sMeansOfDeath == "MOD_HEAD_SHOT" )
192  {
193  attacker ‪globallogic_score::givePointsToWin( level.teamScorePerHeadshot );
194  }
195  }
196 }
‪setObjectiveText
‪function setObjectiveText(team, text)
Definition: _util.gsc:585
‪setvisiblescoreboardcolumns
‪function setvisiblescoreboardcolumns(col1, col2, col3, col4, col5)
Definition: _globallogic.gsc:545
‪isOneRound
‪function isOneRound()
Definition: util_shared.gsc:3497
‪updateAllSpawnPoints
‪function updateAllSpawnPoints()
Definition: _spawning.gsc:551
‪registerRoundWinLimit
‪function registerRoundWinLimit(minValue, maxValue)
Definition: _util.gsc:630
‪register_allowed_gameobject
‪function register_allowed_gameobject(gameobject)
Definition: gameobjects_shared.gsc:67
‪find_box_center
‪function find_box_center(mins, maxs)
Definition: math_shared.gsc:86
‪onScoreCloseMusic
‪function onScoreCloseMusic()
Definition: dm.gsc:151
‪registerFriendlyFireDelay
‪function registerFriendlyFireDelay(dvarString, defaultValue, minValue, maxValue)
Definition: _globallogic.gsc:3917
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪registerNumLives
‪function registerNumLives(minValue, maxValue, teamLivesMinValue, teamLivesMaxValue)
Definition: _util.gsc:664
‪onPlayerKilled
‪function onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, weapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
Definition: dm.gsc:182
‪registerScoreLimit
‪function registerScoreLimit(minValue, maxValue)
Definition: _util.gsc:638
‪onEndGame
‪function onEndGame(winningPlayer)
Definition: dm.gsc:145
‪add_spawn_points
‪function add_spawn_points(team, spawnPointName)
Definition: _spawnlogic.gsc:20
‪setupTeam
‪function setupTeam(team)
Definition: dm.gsc:92
‪create_map_placed_influencers
‪function create_map_placed_influencers()
Definition: _spawning.gsc:522
‪get_killstreak_for_weapon
‪function get_killstreak_for_weapon(weapon)
Definition: _killstreaks.gsc:1357
‪set_leader_gametype_dialog
‪function set_leader_gametype_dialog(startGameDialogKey, startHcGameDialogKey, offenseOrderDialogKey, defenseOrderDialogKey)
Definition: _globallogic_audio.gsc:92
‪place_spawn_points
‪function place_spawn_points(spawnPointName)
Definition: _spawnlogic.gsc:22
‪get_spawnpoint_array
‪function get_spawnpoint_array(classname)
Definition: _spawnlogic.gsc:27
‪setObjectiveHintText
‪function setObjectiveHintText(team, text)
Definition: _util.gsc:595
‪registerRoundLimit
‪function registerRoundLimit(minValue, maxValue)
Definition: _util.gsc:622
‪init
‪function init()
Definition: struct.csc:1
‪givePointsToWin
‪function givePointsToWin(points)
Definition: _globallogic_score.gsc:576
‪setObjectiveScoreText
‪function setObjectiveScoreText(team, text)
Definition: _util.gsc:590
‪main
‪function main()
Definition: dm.gsc:61
‪onStartGameType
‪function onStartGameType()
Definition: dm.gsc:112
‪registerTimeLimit
‪function registerTimeLimit(minValue, maxValue)
Definition: _util.gsc:655
‪get_random_intermission_point
‪function get_random_intermission_point()
Definition: _spawnlogic.gsc:54
‪onSpawnPlayer
‪function onSpawnPlayer(predictedSpawn)
Definition: dm.gsc:172