Team Fortress: Add fancy class help upon spawn.

TODO: Make this optional, via setinfokeys
This commit is contained in:
Marco Cawthorne 2019-09-11 13:33:32 +02:00
parent 5132b28c49
commit 4029e92713
3 changed files with 49 additions and 39 deletions

View file

@ -1,23 +1,39 @@
/*
* Copyright (c) 2016-2019 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
class info_player_teamspawn:CBaseTrigger class info_player_teamspawn:CBaseTrigger
{ {
int m_iTeam;
void() info_player_teamspawn; void() info_player_teamspawn;
}; };
void info_player_teamspawn::info_player_teamspawn(void) void
info_player_teamspawn::info_player_teamspawn(void)
{ {
int team = 1;
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) { for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
switch (argv(i)) { switch (argv(i)) {
case "team_no": case "team_no":
m_iTeam = stoi(argv(i+1)); team = stoi(argv(i+1));
break; break;
default: default:
break; break;
} }
} }
switch (m_iTeam) { switch (team) {
case 1: case 1:
classname = "info_teamspawn_blue"; classname = "info_teamspawn_blue";
break; break;
@ -33,4 +49,4 @@ void info_player_teamspawn::info_player_teamspawn(void)
} }
} }
CLASSEXPORT(i_p_t, info_player_teamspawn)

View file

@ -14,14 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* void
================= Game_Input(void)
Input_Handle
Handles impulse and whatnot
=================
*/
void Game_Input(void)
{ {
if (input_buttons & INPUT_BUTTON0) { if (input_buttons & INPUT_BUTTON0) {
Weapons_Primary(); Weapons_Primary();
@ -45,30 +39,6 @@ void Game_Input(void)
if (cvar("sv_cheats") == 1) { if (cvar("sv_cheats") == 1) {
player pl = (player)self; player pl = (player)self;
if (self.impulse == 101) {
pl.health = 100;
pl.armor = 100;
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_MEDKIT);
Weapons_AddItem(pl, WEAPON_KNIFE);
Weapons_AddItem(pl, WEAPON_WRENCH);
Weapons_AddItem(pl, WEAPON_UMBRELLA);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_SNIPER);
Weapons_AddItem(pl, WEAPON_TRANQUIL);
Weapons_AddItem(pl, WEAPON_RAILGUN);
Weapons_AddItem(pl, WEAPON_AUTORIFLE);
Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_NAILGUN);
Weapons_AddItem(pl, WEAPON_GLAUNCHER);
Weapons_AddItem(pl, WEAPON_SUPERNAIL);
Weapons_AddItem(pl, WEAPON_FLAMER);
Weapons_AddItem(pl, WEAPON_RPG);
Weapons_AddItem(pl, WEAPON_PIPEBOMB);
Weapons_AddItem(pl, WEAPON_ASSCAN);
Weapons_AddItem(pl, WEAPON_INCENDIARY);
}
if (self.impulse == 102) { if (self.impulse == 102) {
// Respawn all the entities // Respawn all the entities
for (entity a = world; (a = findfloat(a, gflags, GF_CANRESPAWN));) { for (entity a = world; (a = findfloat(a, gflags, GF_CANRESPAWN));) {

View file

@ -1,3 +1,18 @@
/*
* Copyright (c) 2016-2019 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
enum { enum {
CLASS_SCOUT = 1, CLASS_SCOUT = 1,
@ -98,55 +113,64 @@ CSEv_TeamJoin_f(float f)
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_NAILGUN); Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SCOUT");
break; break;
case CLASS_SNIPER: case CLASS_SNIPER:
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SNIPER); Weapons_AddItem(pl, WEAPON_SNIPER);
Weapons_AddItem(pl, WEAPON_AUTORIFLE); Weapons_AddItem(pl, WEAPON_AUTORIFLE);
Weapons_AddItem(pl, WEAPON_NAILGUN); Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SNIPER");
break; break;
case CLASS_SOLDIER: case CLASS_SOLDIER:
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS); Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_RPG); Weapons_AddItem(pl, WEAPON_RPG);
env_message_single(pl, "HELP_SOLDIER");
break; break;
case CLASS_DEMO: case CLASS_DEMO:
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_GLAUNCHER); Weapons_AddItem(pl, WEAPON_GLAUNCHER);
Weapons_AddItem(pl, WEAPON_PIPEBOMB); Weapons_AddItem(pl, WEAPON_PIPEBOMB);
env_message_single(pl, "HELP_DEMOMAN");
break; break;
case CLASS_MEDIC: case CLASS_MEDIC:
Weapons_AddItem(pl, WEAPON_MEDKIT); Weapons_AddItem(pl, WEAPON_MEDKIT);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS); Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_SUPERNAIL); Weapons_AddItem(pl, WEAPON_SUPERNAIL);
env_message_single(pl, "HELP_MEDIC");
break; break;
case CLASS_HVYWEAPON: case CLASS_HVYWEAPON:
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS); Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_ASSCAN); Weapons_AddItem(pl, WEAPON_ASSCAN);
env_message_single(pl, "HELP_HWGUY");
break; break;
case CLASS_PYRO: case CLASS_PYRO:
Weapons_AddItem(pl, WEAPON_CROWBAR); Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS); Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_FLAMER); Weapons_AddItem(pl, WEAPON_FLAMER);
Weapons_AddItem(pl, WEAPON_INCENDIARY); Weapons_AddItem(pl, WEAPON_INCENDIARY);
env_message_single(pl, "HELP_PYRO");
break; break;
case CLASS_SPY: case CLASS_SPY:
Weapons_AddItem(pl, WEAPON_KNIFE); Weapons_AddItem(pl, WEAPON_KNIFE);
Weapons_AddItem(pl, WEAPON_TRANQUIL); Weapons_AddItem(pl, WEAPON_TRANQUIL);
Weapons_AddItem(pl, WEAPON_DBS); Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_NAILGUN); Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SPY");
break; break;
case CLASS_ENGINEER: case CLASS_ENGINEER:
Weapons_AddItem(pl, WEAPON_WRENCH); Weapons_AddItem(pl, WEAPON_WRENCH);
Weapons_AddItem(pl, WEAPON_RAILGUN); Weapons_AddItem(pl, WEAPON_RAILGUN);
Weapons_AddItem(pl, WEAPON_DBS); Weapons_AddItem(pl, WEAPON_DBS);
env_message_single(pl, "HELP_ENGINEER");
break; break;
} }
pl.g_items |= ITEM_SUIT; pl.g_items |= ITEM_SUIT;
} }