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
{
int m_iTeam;
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) {
switch (argv(i)) {
case "team_no":
m_iTeam = stoi(argv(i+1));
team = stoi(argv(i+1));
break;
default:
break;
}
}
switch (m_iTeam) {
switch (team) {
case 1:
classname = "info_teamspawn_blue";
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.
*/
/*
=================
Input_Handle
Handles impulse and whatnot
=================
*/
void Game_Input(void)
void
Game_Input(void)
{
if (input_buttons & INPUT_BUTTON0) {
Weapons_Primary();
@ -45,30 +39,6 @@ void Game_Input(void)
if (cvar("sv_cheats") == 1) {
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) {
// Respawn all the entities
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 {
CLASS_SCOUT = 1,
@ -98,55 +113,64 @@ CSEv_TeamJoin_f(float f)
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SCOUT");
break;
case CLASS_SNIPER:
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SNIPER);
Weapons_AddItem(pl, WEAPON_AUTORIFLE);
Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SNIPER");
break;
case CLASS_SOLDIER:
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_RPG);
env_message_single(pl, "HELP_SOLDIER");
break;
case CLASS_DEMO:
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_GLAUNCHER);
Weapons_AddItem(pl, WEAPON_PIPEBOMB);
env_message_single(pl, "HELP_DEMOMAN");
break;
case CLASS_MEDIC:
Weapons_AddItem(pl, WEAPON_MEDKIT);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_SUPERNAIL);
env_message_single(pl, "HELP_MEDIC");
break;
case CLASS_HVYWEAPON:
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_ASSCAN);
env_message_single(pl, "HELP_HWGUY");
break;
case CLASS_PYRO:
Weapons_AddItem(pl, WEAPON_CROWBAR);
Weapons_AddItem(pl, WEAPON_SBS);
Weapons_AddItem(pl, WEAPON_FLAMER);
Weapons_AddItem(pl, WEAPON_INCENDIARY);
env_message_single(pl, "HELP_PYRO");
break;
case CLASS_SPY:
Weapons_AddItem(pl, WEAPON_KNIFE);
Weapons_AddItem(pl, WEAPON_TRANQUIL);
Weapons_AddItem(pl, WEAPON_DBS);
Weapons_AddItem(pl, WEAPON_NAILGUN);
env_message_single(pl, "HELP_SPY");
break;
case CLASS_ENGINEER:
Weapons_AddItem(pl, WEAPON_WRENCH);
Weapons_AddItem(pl, WEAPON_RAILGUN);
Weapons_AddItem(pl, WEAPON_DBS);
env_message_single(pl, "HELP_ENGINEER");
break;
}
pl.g_items |= ITEM_SUIT;
}