mirror of
https://git.code.sf.net/p/quake/prozac-qfcc
synced 2024-11-13 00:24:33 +00:00
841a2e09b3
a) If they're holding an item belonging to a team, they get that team's glowcolor b) If they're quad they get blue c) If they're pent they get red. Yellow and Green are both just DIMLIGHT for now, but I'll see if I can't use QSG glow_color/glow_size
4690 lines
145 KiB
C++
4690 lines
145 KiB
C++
/*======================================================
|
||
MENU.QC Custom TeamFortress v2.3
|
||
|
||
(c) TeamFortress Software Pty Ltd 29/2/97
|
||
(c) William Kerney 4/4/00
|
||
(c) Craig Hauser 19/3/00
|
||
========================================================
|
||
This file handles all menu functions and displays.
|
||
======================================================*/
|
||
|
||
#include "defs.qh"
|
||
#include "messages.qh"
|
||
#include "menu.qh"
|
||
|
||
void(vector where) spawnFOG;
|
||
void(entity pl, string s1, string s2, string s3, string s4) CenterPrint4;
|
||
void(entity pl, string s1, string s2, string s3, string s4, string s5, string s6, string s7) CenterPrint7;
|
||
|
||
|
||
void(entity targ, entity inflictor, entity attacker, float damage, float T_flags, float T_AttackType) TF_T_Damage;
|
||
void() W_SetCurrentAmmo;
|
||
void(entity p) bound_other_ammo;
|
||
float(float tno) TeamFortress_TeamSet;
|
||
void(entity p) TeamFortress_SetSkin;
|
||
float(float tno) TeamGetColor;
|
||
void() TeamFortress_ChangeClass;
|
||
void(float type) TeamFortress_DropAmmo;
|
||
float() TeamFortress_TeamPutPlayerInTeam;
|
||
float(float tno) TeamFortress_TeamIsCivilian;
|
||
void(float class) TeamFortress_SpyChangeSkin;
|
||
void(float teamno) TeamFortress_SpyChangeColor;
|
||
void(float building) TeamFortress_Build;
|
||
void(float type) TeamFortress_SpyFeignDeath;
|
||
void(entity spy) Spy_RemoveDisguise;
|
||
void() lvl1_sentry_stand;
|
||
void() lvl2_sentry_stand;
|
||
void() lvl3_sentry_stand;
|
||
float (float tno) TeamFortress_TeamGetNoPlayers;
|
||
float(float myteam) HasFlag;
|
||
void() PrintMOTD;
|
||
|
||
/* WK void(float menu_no) DisplayMenu; */
|
||
// Assorted menus
|
||
void() Menu_Team;
|
||
void() Menu_Class;
|
||
void() Menu_Drop;
|
||
void() Menu_Intro;
|
||
void() PlayerObserverMode;
|
||
// Classhelp
|
||
void() Menu_ClassHelp;
|
||
void() Menu_ClassHelp2;
|
||
void() Menu_StuffClassHelp;
|
||
void(float inp) Menu_ClassHelp_Input;
|
||
// Bindings
|
||
void() Menu_DoBindings;
|
||
void() Menu_ShowBindings1;
|
||
void() Menu_ShowBindings2;
|
||
void() Menu_RepeatHelp;
|
||
// Spy
|
||
void() Menu_Spy;
|
||
void() Menu_Spy_Skin;
|
||
void() Menu_Spy_Color;
|
||
void(float inp) Menu_Spy_Input;
|
||
void(float inp) Menu_Spy_Skin_Input;
|
||
void(float inp) Menu_Spy_Color_Input;
|
||
// Engineer
|
||
void() Menu_Engineer;
|
||
void() Menu_EngineerFix_Dispenser;
|
||
void() Menu_EngineerFix_SentryGun;
|
||
void() Menu_EngineerFix_Tesla;
|
||
void() Menu_EngineerFix_Tesla2;
|
||
void() Menu_EngineerFix_Camera;
|
||
void() Menu_EngineerFix_Sensor;
|
||
void() Menu_EngineerFix_Teleporter;
|
||
void() Menu_EngineerFix_FieldGen;
|
||
void(float inp) Menu_Engineer_Input;
|
||
void(float inp) Menu_EngineerFix_Dispenser_Input;
|
||
void(float inp) Menu_EngineerFix_SentryGun_Input;
|
||
void(float inp) Menu_EngineerFix_Tesla_Input;
|
||
void(float inp) Menu_EngineerFix_Tesla_Input2;
|
||
void(float inp) Menu_EngineerFix_Camera_Input;
|
||
void(float inp) Menu_EngineerFix_Sensor_Input;
|
||
void(float inp) Menu_EngineerFix_Teleporter_Input;
|
||
void(float inp) Menu_EngineerFix_FieldGen_Input;
|
||
|
||
// Demons
|
||
void() Menu_Demon;
|
||
void(float inp) Menu_Demon_Input;
|
||
void() kill_my_demon;
|
||
|
||
// Buildings
|
||
void() Menu_Dispenser;
|
||
void(float inp) Menu_Dispenser_Input;
|
||
void(entity pl, string s1) CenterPrint;
|
||
void(entity pl, string s1, string s2) CenterPrint2;
|
||
float(entity obj, entity builder) CheckArea;
|
||
|
||
// WK - Custom Class
|
||
void() DropFromCustomClassGen; //Extern
|
||
void() PrintMoney;
|
||
void(float cost,float type) BuyWeapon;
|
||
void(float cost,float type) BuyCuTF;
|
||
void(float cost,float type) BuyItem;
|
||
void(float cost, float type) BuyJob;
|
||
/*void(float cost,float type) BuyGren1;
|
||
void(float cost,float type) BuyGren2;*/
|
||
void(float in) PrintRefund;
|
||
void(float in) PrintNotEnoughMoney;
|
||
void() Menu_PrimaryWeapon;
|
||
void(float inp) Menu_PrimaryWeapon_Input;
|
||
void() Menu_SecondaryWeapon;
|
||
void(float inp) Menu_SecondaryWeapon_Input;
|
||
//- Ofn -
|
||
void() Menu_MiscWeapon;
|
||
void(float inp) Menu_MiscWeapon_Input;
|
||
void() Menu_Crusader;
|
||
void(float inp) Menu_Crusader_Input;
|
||
|
||
|
||
void() Menu_Legs;
|
||
void(float inp) Menu_Legs_Input;
|
||
void() Menu_Health;
|
||
void(float inp) Menu_Health_Input;
|
||
void() Menu_Armor;
|
||
void(float inp) Menu_Armor_Input;
|
||
void() Menu_Special;
|
||
void(float inp) Menu_Special_Input;
|
||
void() Menu_Special2;
|
||
void(float inp) Menu_Special2_Input;
|
||
void() Menu_Gren1;
|
||
void(float inp) Menu_Gren1_Input;
|
||
void() Menu_Gren2;
|
||
void(float inp) Menu_Gren2_Input;
|
||
void() Menu_Engineering;
|
||
void(float inp) Menu_Engineering_Input;
|
||
void() Menu_Profession;
|
||
void(float inp) Menu_Profession_Input;
|
||
void() Menu_Profession2;
|
||
void(float inp) Menu_Profession2_Input;
|
||
void() Menu_Proficiency;
|
||
void(float inp) Menu_Proficiency_Input;
|
||
void() Menu_Option;
|
||
void(float inp) Menu_Option_Input;
|
||
|
||
//WK Needed for rotate
|
||
float(float v) anglemod;
|
||
//WK Needed to det sentries et al.
|
||
void(entity inflictor, entity attacker, float damage, entity ignore) T_RadiusDamage;
|
||
//WK Needed to make a bastard
|
||
void(entity bastard,float threshold) createBastard;
|
||
//CY Tinker
|
||
void() DoTinker;
|
||
|
||
// WK --------------
|
||
|
||
//- OfN - Warlock menu (now in warlock.qc) --//
|
||
void(float inp) Menu_Demon_Input; //
|
||
void() Menu_Demon; //
|
||
//-------------------------------------------//
|
||
//- OfN - Army menu (now in army.qc) --------//
|
||
void(float inp) Menu_Army_Input; //
|
||
void() Menu_Army; //
|
||
//-------------------------------------------//
|
||
//- OfN - Hack menu (now in haxxx.qc) -------//
|
||
void(float inp) Menu_EnemyHax_Inp; //
|
||
void() Menu_Enemy_Hax; //
|
||
void(float inp) Menu_FriendHax_Inp; //
|
||
void() Menu_Friend_Hax; //
|
||
//-------------------------------------------//
|
||
float() CheckEnemyDismantle;
|
||
void() SBBuildSensor;
|
||
void() Tesla_Lose_Glow;
|
||
entity(entity OldTesla) TeslaClone;
|
||
float(entity theplayer, float grenslot) GetMaxGrens;
|
||
void (float cost, float type) BuyGren;
|
||
|
||
#ifdef FIELD_FORCEMODE
|
||
void(float value) SetFieldForcedStatus; // player function (self = player) cuts disabled time also
|
||
float() GetFieldForcedStatus; // player
|
||
#endif
|
||
|
||
//------------------------------------------//
|
||
|
||
|
||
|
||
void() ResetMenu =
|
||
{
|
||
if (self.StatusBarSize == 0)
|
||
CenterPrint(self, "\n");
|
||
else
|
||
self.StatusRefreshTime = time + 0.1;
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_DEFAULT;
|
||
};
|
||
|
||
void() Player_Menu =
|
||
{
|
||
// loop function
|
||
if (self.menu_count > MENU_REFRESH_RATE)
|
||
{
|
||
self.menu_count = 0;
|
||
}
|
||
else
|
||
{
|
||
self.menu_count = self.menu_count + 1;
|
||
return;
|
||
}
|
||
|
||
// determine which menu to display
|
||
// WK - Check to see if the custom class menu is overriding us
|
||
if ((self.done_custom & CUSTOM_BUILDING) && !(self.done_custom & CUSTOM_OVERRIDE) && self.playerclass == PC_CUSTOM) {
|
||
self.current_menu = MENU_PRIMARY_WEAPON;
|
||
self.done_custom = self.done_custom | CUSTOM_OVERRIDE;
|
||
}
|
||
|
||
//Don't flash status bars
|
||
if (self.current_menu >= MENU_PRIMARY_WEAPON && self.current_menu <= MENU_OPTION)
|
||
self.StatusRefreshTime = time + 1.5;
|
||
|
||
//- OfN - Checks for destroyed buildings - NEEDED?
|
||
/*if (self.current_menu >= MENU_ENGINEER_FIX_DISPENSER && self.current_menu <= MENU_ENGINEER_FIX_FIELDGEN && !self.building)
|
||
{
|
||
ResetMenu();
|
||
return;
|
||
}*/
|
||
|
||
if (self.current_menu == MENU_INTRO)
|
||
{
|
||
Menu_Intro();
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else if (self.current_menu == MENU_CLASSHELP)
|
||
{
|
||
Menu_ClassHelp();
|
||
if (self.menu_displaytime > 8)
|
||
{
|
||
Menu_StuffClassHelp();
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else
|
||
self.menu_displaytime = self.menu_displaytime + 1;
|
||
}
|
||
else if (self.current_menu == MENU_CLASSHELP2)
|
||
{
|
||
Menu_ClassHelp2();
|
||
if (self.menu_displaytime > 5)
|
||
{
|
||
Menu_StuffClassHelp();
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else
|
||
self.menu_displaytime = self.menu_displaytime + 1;
|
||
}
|
||
else if (self.current_menu == MENU_SHOWBINDS1)
|
||
{
|
||
Menu_ShowBindings1();
|
||
if (self.menu_displaytime > 8)
|
||
{
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else
|
||
self.menu_displaytime = self.menu_displaytime + 1;
|
||
}
|
||
else if (self.current_menu == MENU_SHOWBINDS2)
|
||
{
|
||
Menu_ShowBindings2();
|
||
if (self.menu_displaytime > 8)
|
||
{
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else
|
||
self.menu_displaytime = self.menu_displaytime + 1;
|
||
}
|
||
else if (self.current_menu == MENU_DROP)
|
||
{
|
||
Menu_Drop();
|
||
}
|
||
else if (self.current_menu == MENU_SPY)
|
||
{
|
||
Menu_Spy();
|
||
}
|
||
else if (self.current_menu == MENU_SPY_SKIN)
|
||
{
|
||
Menu_Spy_Skin();
|
||
}
|
||
else if (self.current_menu == MENU_SPY_COLOR)
|
||
{
|
||
Menu_Spy_Color();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER)
|
||
{
|
||
Menu_Engineer();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_DISPENSER)
|
||
{
|
||
Menu_EngineerFix_Dispenser();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_SENTRYGUN)
|
||
{
|
||
Menu_EngineerFix_SentryGun();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TESLA)
|
||
{
|
||
Menu_EngineerFix_Tesla();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TESLA2)
|
||
{
|
||
Menu_EngineerFix_Tesla2();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_CAMERA)
|
||
{
|
||
Menu_EngineerFix_Camera();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_SENSOR)
|
||
{
|
||
Menu_EngineerFix_Sensor();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TELEPORTER)
|
||
{
|
||
Menu_EngineerFix_Teleporter();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_FIELDGEN)
|
||
{
|
||
Menu_EngineerFix_FieldGen();
|
||
}
|
||
else if (self.current_menu == MENU_DISPENSER)
|
||
{
|
||
Menu_Dispenser();
|
||
}
|
||
else if (self.current_menu == MENU_REPEATHELP)
|
||
{
|
||
Menu_RepeatHelp();
|
||
self.current_menu = MENU_DEFAULT;
|
||
}
|
||
else if (self.current_menu == MENU_PICKBINDS)
|
||
{
|
||
Menu_DoBindings();
|
||
}
|
||
else if (self.current_menu == MENU_DEMON)
|
||
{
|
||
Menu_Demon();
|
||
}
|
||
else if (self.current_menu == MENU_ARMY) //- OfN
|
||
{
|
||
Menu_Army();
|
||
}
|
||
else if (self.current_menu == MENU_E_HACK) //- OfN
|
||
{
|
||
Menu_Enemy_Hax();
|
||
}
|
||
else if (self.current_menu == MENU_F_HACK) //- OfN
|
||
{
|
||
Menu_Friend_Hax();
|
||
}
|
||
else if (self.current_menu == MENU_CRUSADER)
|
||
{
|
||
Menu_Crusader();
|
||
}
|
||
//WK ------------------
|
||
else if (self.current_menu == MENU_PRIMARY_WEAPON)
|
||
{
|
||
Menu_PrimaryWeapon();
|
||
}
|
||
else if (self.current_menu == MENU_SECONDARY_WEAPON)
|
||
{
|
||
Menu_SecondaryWeapon();
|
||
}
|
||
else if (self.current_menu == MENU_MISC_WEAPON)
|
||
{
|
||
Menu_MiscWeapon();
|
||
}
|
||
else if (self.current_menu == MENU_LEGS)
|
||
{
|
||
Menu_Legs();
|
||
}
|
||
else if (self.current_menu == MENU_HEALTH)
|
||
{
|
||
Menu_Health();
|
||
}
|
||
else if (self.current_menu == MENU_ARMOR)
|
||
{
|
||
Menu_Armor();
|
||
}
|
||
else if (self.current_menu == MENU_SPECIAL)
|
||
{
|
||
Menu_Special();
|
||
}
|
||
else if (self.current_menu == MENU_SPECIAL2)
|
||
{
|
||
Menu_Special2();
|
||
}
|
||
else if (self.current_menu == MENU_GREN1)
|
||
{
|
||
Menu_Gren1();
|
||
}
|
||
else if (self.current_menu == MENU_GREN2)
|
||
{
|
||
Menu_Gren2();
|
||
}
|
||
else if (self.current_menu == MENU_ENGINEERING)
|
||
{
|
||
Menu_Engineering();
|
||
}
|
||
else if (self.current_menu == MENU_PROFESSION)
|
||
{
|
||
Menu_Profession();
|
||
}
|
||
else if (self.current_menu == MENU_PROFESSION2)
|
||
{
|
||
Menu_Profession2();
|
||
}
|
||
else if (self.current_menu == MENU_PROFICIENCY)
|
||
{
|
||
Menu_Proficiency();
|
||
}
|
||
else if (self.current_menu == MENU_OPTION)
|
||
{
|
||
Menu_Option();
|
||
}
|
||
|
||
//WK ----------------
|
||
else if (self.team_no == 0 && teamplay && (self.lives != 0))
|
||
{
|
||
if (self.motd >= MOTD_FINISHED) {
|
||
self.current_menu = MENU_TEAM;
|
||
Menu_Team();
|
||
}
|
||
}
|
||
//WK Default to custom class gen - OfN - nope!
|
||
else if (self.playerclass == PC_UNDEFINED && (self.lives != 0))
|
||
{
|
||
//- OfN - stock_mode applies
|
||
if (stock_mode < 2) {
|
||
self.current_menu = MENU_CLASS;//-was commented
|
||
Menu_Class();//-was commented
|
||
}
|
||
else
|
||
{
|
||
self.impulse = PC_CUSTOM + TF_CHANGEPC; //-wasnt commented
|
||
TeamFortress_ChangeClass();//-wasnt commented
|
||
}
|
||
}
|
||
else
|
||
self.current_menu = 0;
|
||
};
|
||
|
||
|
||
//WK What the hell is this for?
|
||
/*
|
||
void(float menu_no) DisplayMenu =
|
||
{
|
||
self.current_menu = menu_no;
|
||
|
||
if (menu_no == MENU_TEAM)
|
||
{
|
||
Menu_Team();
|
||
}
|
||
else if (menu_no == MENU_CLASS)
|
||
{
|
||
Menu_Class();
|
||
}
|
||
};
|
||
*/
|
||
|
||
void(float inp) Menu_Team_Input;
|
||
|
||
void() Menu_Team =
|
||
{
|
||
if ((toggleflags & TFLAG_AUTOTEAM) && teamplay)
|
||
{
|
||
// assign player a team
|
||
if (TeamFortress_TeamPutPlayerInTeam())
|
||
return;
|
||
}
|
||
|
||
// The Detection entity may have specified a Team Menu String
|
||
if (team_menu_string)
|
||
{
|
||
CenterPrint(self, team_menu_string);
|
||
return;
|
||
}
|
||
|
||
if (CTF_Map == TRUE)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Blue Team \n<EFBFBD>.. Red Team \n\n\n\n<EFBFBD>.. Bind my keys for me!\n\nFor full details on this patch:\nhttp://www.telefragged.com/teamfortress/\n");
|
||
else if (number_of_teams == 1)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Team One \n");
|
||
else if (number_of_teams == 2)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n \n \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \n");
|
||
else if (number_of_teams == 3)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n<EFBFBD>.. Team Three\n \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \n");
|
||
else // if (number_of_teams == 4)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n<EFBFBD>.. Team Three\n<EFBFBD>.. Team Four \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> \n");
|
||
};
|
||
|
||
void(float inp) Menu_Team_Input =
|
||
{
|
||
//WK Remove starting observer gravity. It might come right back.
|
||
self.gravity = 1;
|
||
|
||
if (inp == 5) // auto team
|
||
TeamFortress_TeamPutPlayerInTeam();
|
||
else if (inp <= number_of_teams && inp > 0)
|
||
TeamFortress_TeamSet(inp);
|
||
else if (number_of_teams == 0 && inp <= TM_MAX_NO)
|
||
TeamFortress_TeamSet(inp);
|
||
else //- OfN
|
||
{
|
||
//ResetMenu();
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
|
||
/*else if (inp == 7)
|
||
self.current_menu = MENU_PICKBINDS;
|
||
else if (inp == 8)
|
||
PlayerObserverMode();*/
|
||
|
||
if (custom_mode!=2) sprint(self, PRINT_MEDIUM, "Press <20> for a custom player class\n");
|
||
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
};
|
||
|
||
void() Menu_Class =
|
||
{
|
||
local entity AD;
|
||
|
||
AD = find(NIL, classname, "info_tfdetect");
|
||
|
||
if (AD)
|
||
{
|
||
if (self.team_no == 1)
|
||
{
|
||
if (AD.noise1)
|
||
{
|
||
CenterPrint(self, AD.noise1);
|
||
return;
|
||
}
|
||
}
|
||
else if (self.team_no == 2)
|
||
{
|
||
if (AD.noise2)
|
||
{
|
||
CenterPrint(self, AD.noise2);
|
||
return;
|
||
}
|
||
}
|
||
else if (self.team_no == 3)
|
||
{
|
||
if (AD.noise3)
|
||
{
|
||
CenterPrint(self, AD.noise3);
|
||
return;
|
||
}
|
||
}
|
||
else if (self.team_no == 4)
|
||
{
|
||
if (AD.noise4)
|
||
{
|
||
CenterPrint(self, AD.noise4);
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (custom_mode!=2)
|
||
{
|
||
if (TeamFortress_TeamIsCivilian(self.team_no))
|
||
CenterPrint(self, "Your team can only be Civilians.\n");
|
||
else if (spy_off == TRUE)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Scout \n<EFBFBD>.. Sniper \n<EFBFBD>.. Soldier \n<EFBFBD>.. Demoman \n<EFBFBD>.. Medic \n<EFBFBD>.. Hvwep \n<EFBFBD>.. Pyro \n<EFBFBD>.. Engineer\n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! \n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Scout \n<EFBFBD>.. Sniper \n<EFBFBD>.. Soldier \n<EFBFBD>.. Demoman \n<EFBFBD>.. Medic \n<EFBFBD>.. Hvwep \n<EFBFBD>.. Pyro \n<EFBFBD>.. Spy \n<EFBFBD>.. Engineer\n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! \n");
|
||
}
|
||
else
|
||
{
|
||
if (TeamFortress_TeamIsCivilian(self.team_no))
|
||
CenterPrint(self, "Your team can only be Civilians.\n");
|
||
else if (spy_off == TRUE)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Scout \n<EFBFBD>.. Sniper \n<EFBFBD>.. Soldier \n<EFBFBD>.. Demoman \n<EFBFBD>.. Medic \n<EFBFBD>.. Hvwep \n<EFBFBD>.. Pyro \n<EFBFBD>.. Engineer\n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>\n\n<EFBFBD>.. Scout \n<EFBFBD>.. Sniper \n<EFBFBD>.. Soldier \n<EFBFBD>.. Demoman \n<EFBFBD>.. Medic \n<EFBFBD>.. Hvwep \n<EFBFBD>.. Pyro \n<EFBFBD>.. Spy \n<EFBFBD>.. Engineer\n");
|
||
}
|
||
};
|
||
|
||
void(float inp) Menu_Class_Input =
|
||
{
|
||
if (inp > 10 || inp < 1)
|
||
return;
|
||
|
||
if (inp==10 && custom_mode==2)
|
||
{
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
|
||
self.impulse = inp + TF_CHANGEPC;
|
||
if (inp == 10) //We picked custom, chnage it from random
|
||
self.impulse = PC_CUSTOM + TF_CHANGEPC;
|
||
|
||
//WK Default to Custom class. TODO: Make this a serverside option - OfN - done!
|
||
// self.impulse = PC_CUSTOM + TF_CHANGEPC;
|
||
|
||
TeamFortress_ChangeClass();
|
||
ResetMenu();
|
||
|
||
if ( DISPLAY_CLASS_HELP )
|
||
self.current_menu = MENU_CLASSHELP;
|
||
else
|
||
self.current_menu = MENU_DEFAULT;
|
||
|
||
self.menu_displaytime = 0;
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
void () Menu_Drop =
|
||
{
|
||
if (self.weapons_carried & WEAP_SPANNER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Shells \n<EFBFBD>.. Nails \n<EFBFBD>.. Rockets \n<EFBFBD>.. Cells \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Shells \n<EFBFBD>.. Nails \n<EFBFBD>.. Rockets \n<EFBFBD>.. Cells \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
};
|
||
|
||
void () Menu_RepeatHelp =
|
||
{
|
||
CenterPrint(self, "Press <20> to see this help again\n");
|
||
};
|
||
|
||
void(float inp) Menu_Drop_Input =
|
||
{
|
||
if ((inp > 0) && (inp < 5))
|
||
{
|
||
TeamFortress_DropAmmo(inp);
|
||
}
|
||
|
||
if ((inp > 0) && (inp < 6))
|
||
ResetMenu();
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
void(float inp) Menu_DoBindings_Input =
|
||
{/*- unusefull
|
||
local string st;
|
||
|
||
if (inp < 4)
|
||
{
|
||
self.impulse = 0;
|
||
if (inp == 1)
|
||
{
|
||
// Flag info
|
||
stuffcmd(self, "bind q \"impulse 23\"\n");
|
||
// Hook
|
||
stuffcmd(self, "bind e \"impulse 22\"\n");
|
||
// Grenade 1
|
||
stuffcmd(self, "bind r \"+gren1\"\n");
|
||
// Grenade 2
|
||
stuffcmd(self, "bind f \"+gren2\"\n");
|
||
// Detonate Pipebombs
|
||
stuffcmd(self, "bind v \"detpipe\"\n");
|
||
// Drop ammo
|
||
stuffcmd(self, "bind c \"dropammo\"\n");
|
||
// Scan
|
||
stuffcmd(self, "bind x \"scan50\"\n");
|
||
// Showclasses
|
||
stuffcmd(self, "bind g \"showclasses\"\n");
|
||
// Inventory
|
||
stuffcmd(self, "bind z \"inv\"\n");
|
||
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_SHOWBINDS1;
|
||
self.menu_displaytime = 0;
|
||
return;
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
// Flag info
|
||
stuffcmd(self, "bind s \"impulse 23\"\n");
|
||
// Hook
|
||
stuffcmd(self, "bind x \"impulse 22\"\n");
|
||
// Grenade 1
|
||
stuffcmd(self, "bind d \"+gren1\"\n");
|
||
// Grenade 2
|
||
stuffcmd(self, "bind c \"+gren2\"\n");
|
||
// Detonate Pipebombs
|
||
stuffcmd(self, "bind f \"detpipe\"\n");
|
||
// Drop ammo
|
||
stuffcmd(self, "bind v \"dropammo\"\n");
|
||
// Scan
|
||
stuffcmd(self, "bind b \"scan50\"\n");
|
||
// Showclasses
|
||
stuffcmd(self, "bind g \"showclasses\"\n");
|
||
// Inventory
|
||
stuffcmd(self, "bind n \"inv\"\n");
|
||
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_SHOWBINDS2;
|
||
self.menu_displaytime = 0;
|
||
return;
|
||
}
|
||
ResetMenu();
|
||
}*///- save space
|
||
};
|
||
|
||
void(float inp) Menu_Input =
|
||
{
|
||
if (self.current_menu == MENU_TEAM)
|
||
Menu_Team_Input(inp);
|
||
else if (self.current_menu == MENU_CLASS)
|
||
Menu_Class_Input(inp);
|
||
else if (self.current_menu == MENU_DROP)
|
||
Menu_Drop_Input(inp);
|
||
else if (self.current_menu == MENU_SPY)
|
||
Menu_Spy_Input(inp);
|
||
else if (self.current_menu == MENU_SPY_SKIN)
|
||
Menu_Spy_Skin_Input(inp);
|
||
else if (self.current_menu == MENU_SPY_COLOR)
|
||
Menu_Spy_Color_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER)
|
||
Menu_Engineer_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_DISPENSER)
|
||
Menu_EngineerFix_Dispenser_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TESLA)
|
||
Menu_EngineerFix_Tesla_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TESLA2)
|
||
Menu_EngineerFix_Tesla_Input2(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_SENTRYGUN)
|
||
Menu_EngineerFix_SentryGun_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_CAMERA)
|
||
Menu_EngineerFix_Camera_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_SENSOR)
|
||
Menu_EngineerFix_Sensor_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_TELEPORTER)
|
||
Menu_EngineerFix_Teleporter_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEER_FIX_FIELDGEN)
|
||
Menu_EngineerFix_FieldGen_Input(inp);
|
||
else if (self.current_menu == MENU_DISPENSER)
|
||
Menu_Dispenser_Input(inp);
|
||
else if (self.current_menu == MENU_CLASSHELP)
|
||
Menu_ClassHelp_Input(inp);
|
||
else if (self.current_menu == MENU_PICKBINDS)
|
||
Menu_DoBindings_Input(inp);
|
||
else if (self.current_menu == MENU_DEMON)
|
||
Menu_Demon_Input(inp);
|
||
else if (self.current_menu == MENU_ARMY)
|
||
Menu_Army_Input(inp);
|
||
else if (self.current_menu == MENU_E_HACK)
|
||
Menu_EnemyHax_Inp(inp);
|
||
else if (self.current_menu == MENU_F_HACK)
|
||
Menu_FriendHax_Inp(inp);
|
||
else if (self.current_menu == MENU_CRUSADER)
|
||
Menu_Crusader_Input(inp);
|
||
else if (self.current_menu == MENU_PRIMARY_WEAPON) //WK --
|
||
Menu_PrimaryWeapon_Input(inp);
|
||
else if (self.current_menu == MENU_SECONDARY_WEAPON)
|
||
Menu_SecondaryWeapon_Input(inp);
|
||
else if (self.current_menu == MENU_MISC_WEAPON)
|
||
Menu_MiscWeapon_Input(inp);
|
||
else if (self.current_menu == MENU_LEGS)
|
||
Menu_Legs_Input(inp);
|
||
else if (self.current_menu == MENU_HEALTH)
|
||
Menu_Health_Input(inp);
|
||
else if (self.current_menu == MENU_ARMOR)
|
||
Menu_Armor_Input(inp);
|
||
else if (self.current_menu == MENU_SPECIAL)
|
||
Menu_Special_Input(inp);
|
||
else if (self.current_menu == MENU_SPECIAL2)
|
||
Menu_Special2_Input(inp);
|
||
else if (self.current_menu == MENU_GREN1)
|
||
Menu_Gren1_Input(inp);
|
||
else if (self.current_menu == MENU_GREN2)
|
||
Menu_Gren2_Input(inp);
|
||
else if (self.current_menu == MENU_ENGINEERING)
|
||
Menu_Engineering_Input(inp);
|
||
else if (self.current_menu == MENU_PROFESSION)
|
||
Menu_Profession_Input(inp);
|
||
else if (self.current_menu == MENU_PROFESSION2)
|
||
Menu_Profession2_Input(inp);
|
||
else if (self.current_menu == MENU_PROFICIENCY)
|
||
Menu_Proficiency_Input(inp);
|
||
else if (self.current_menu == MENU_OPTION)
|
||
Menu_Option_Input(inp); //WK --
|
||
};
|
||
|
||
void() Menu_Intro =
|
||
{
|
||
PrintMOTD ();
|
||
};
|
||
|
||
void() Menu_ClassHelp =
|
||
{
|
||
if (self.menu_displaytime < 5)
|
||
{
|
||
if (self.playerclass == PC_SCOUT)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Shotgun \n4.. Nailgun \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SNIPER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Sniper Rifle/Auto Rifle \n4.. Nailgun \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SOLDIER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Shotgun \n3.. Super Shotgun \n7.. Rocket Launcher \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_DEMOMAN)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Shotgun \n6.. Grenade/Pipebomb Launcher\n \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_MEDIC)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n1.. Medikit/BioWeapon \n2.. Shotgun \n3.. Super Shotgun \n5.. Super Nailgun \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_HVYWEAP)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Shotgun \n3.. Super Shotgun \n7.. Assault Cannon \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_PYRO)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Shotgun \n6.. Flamethrower \n7.. Incendiary Cannon \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SPY)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n2.. Tranquiliser Gun \n3.. Super Shotgun \n4.. Nailgun \n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_ENGINEER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details: \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n1.. Spanner \n2.. RailGun \n3.. Super Shotgun \n\nPress <20> for alias help\n");
|
||
}
|
||
else
|
||
{
|
||
if (self.playerclass == PC_SCOUT)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nFlash Grenade \nConcussion Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nScanner: scan10,scan50,scan250\nHolograph: holo \n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SNIPER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nFlare \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nautozoom : Toggle Rifle Autozooming\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SOLDIER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nNail Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nNone\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_DEMOMAN)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nMirv Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nThe Detpack : det5,det20,det50\nDetonate Pipebombs : detpipe \n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_MEDIC)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nConcussion Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nNone\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_HVYWEAP)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nMirv Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nNone\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_PYRO)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nNapalm Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nNone\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_SPY)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nHallucinogen Grenade\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nGo Undercover : disguise\nStart feigning: feign\n\n\nPress <20> for alias help\n");
|
||
else if (self.playerclass == PC_ENGINEER)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nHand Grenade \nEMP Grenade \n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nStart Building : build \n\n\nPress <20> for alias help\n");
|
||
/* WK Stop GRENADES - Build your own class from appearing
|
||
else if (self.playerclass == PC_CUSTOM)
|
||
CenterPrint(self, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \nBuild your own class!\n\n");
|
||
*/
|
||
}
|
||
};
|
||
|
||
void() Menu_StuffClassHelp =
|
||
{
|
||
/*
|
||
if (self.playerclass == PC_SCOUT)
|
||
{
|
||
sprint(self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD> Details:\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Shotgun\n 4.. Nailgun\n");
|
||
sprint(self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Concussion Grenade\n Flare\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||
sprint(self, PRINT_HIGH, "Scanner: scan10,scan30,scan100\nHolograph: holo\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_SNIPER)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Sniper Rifle/Auto Rifle\n");
|
||
sprint (self, PRINT_HIGH, "4.. Nailgun\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
||
sprint (self, PRINT_HIGH, " autozoom : Toggle Rifle Autozooming\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_SOLDIER)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Shotgun\n 3.. Super Shotgun\n");
|
||
sprint (self, PRINT_HIGH, " 7.. Rocket Launcher\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n Nail Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n None\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_DEMOMAN)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Shotgun\n 6.. Grenade/Pipebomb Launcher\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n Mirv Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n The Detpack : det5,det20,det50\n Detonate Pipebombs : detpipe\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_MEDIC)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 1.. Medikit/BioWeapon\n 2.. Shotgun\n 3.. Super Shotgun\n");
|
||
sprint (self, PRINT_HIGH, " 5.. Super Nailgun\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n Concussion Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n None\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_HVYWEAP)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Shotgun\n 3.. Super Shotgun\n");
|
||
sprint (self, PRINT_HIGH, " 7.. Assault Cannon\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n");
|
||
sprint (self, PRINT_HIGH, " Mirv Grenade\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n None\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_PYRO)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Shotgun\n 6.. Flamethrower\n 7.. Incendiary Cannon\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n Napalm Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n None\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_SPY)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 2.. Tranquiliser Gun\n 3.. Super Shotgun\n 4.. Nailgun\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n Hallucinogenic Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Go Undercover : disguise\n Start feigning: feign\n\n\n");
|
||
}
|
||
else if (self.playerclass == PC_ENGINEER)
|
||
{
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Details:\n\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n 1.. Spanner\n 2.. RailGun\n 3.. Super Shotgun\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Hand Grenade\n EMP Grenade\n");
|
||
sprint (self, PRINT_HIGH, "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n Start Building : build\n\n\n");
|
||
}
|
||
*/
|
||
};
|
||
|
||
void() Menu_ClassHelp2 =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\ninv : Show inventory \n+gren1 : Throw grenade 1\n+gren2 : Throw Grenade 2\nreload : Force a reload \ndropammo : drop some ammo \nskill : use job ability\ntaunt1 : taunts(also 2,3,4)\n");
|
||
}; // \nskill : use job ability
|
||
|
||
void(float inp) Menu_ClassHelp_Input =
|
||
{
|
||
if (self.playerclass == PC_UNDEFINED) return;
|
||
|
||
//CH changed inp from 8 to 9, lgun uses 8
|
||
if (inp == 9)
|
||
{
|
||
Menu_ClassHelp2();
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_CLASSHELP2;
|
||
self.menu_displaytime = 0;
|
||
self.impulse = 0;
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
void() Menu_DoBindings =
|
||
{
|
||
//CenterPrint(self, "<22>.. Use keys: E R F V C Q X G Z\n<>.. Use keys: S X D C F V B G N\n<>.. Don't make bindings \n");
|
||
};
|
||
|
||
void() Menu_ShowBindings1 =
|
||
{
|
||
//CenterPrint(self, "<22>.. Flaginfo \n<>.. Hook \n<>.. Throw Gren 1 \n<>.. Throw Gren 2 \n<>.. Det. Pipebombs\n<>.. Drop ammo \n<>.. Use Scanner \n<>.. Showclasses \n<>.. inventory \n");
|
||
};
|
||
|
||
void() Menu_ShowBindings2 =
|
||
{
|
||
//CenterPrint(self, "<22>.. Flaginfo \n<>.. Hook \n<>.. Throw Gren 1 \n<>.. Throw Gren 2 \n<>.. Det. Pipebombs\n<>.. Drop ammo \n<>.. Use Scanner \n<>.. Showclasses \n<>.. inventory \n");
|
||
};
|
||
|
||
//============================================================================
|
||
// SPY menus for the Skin and Color changing ability
|
||
void() Menu_Spy =
|
||
{
|
||
if (self.is_feigning)
|
||
{
|
||
if (self.undercover_team != 0 && self.undercover_skin != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Stop Feigning \n<EFBFBD>.. Reset Skin and Color \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else if (self.undercover_team != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Stop Feigning \n<EFBFBD>.. Reset Color \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else if (self.undercover_skin != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Stop Feigning \n<EFBFBD>.. Reset Skin \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Stop Feigning \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
}
|
||
else
|
||
{
|
||
if (self.undercover_team != 0 && self.undercover_skin != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Start Feigning \n<EFBFBD>.. Reset Skin and Color \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else if (self.undercover_team != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Start Feigning \n<EFBFBD>.. Reset Color \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else if (self.undercover_skin != 0)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Start Feigning \n<EFBFBD>.. Reset Skin \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Change Skin \n<EFBFBD>.. Change Color \n<EFBFBD>.. Start Feigning \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
}
|
||
};
|
||
|
||
void(float inp) Menu_Spy_Input =
|
||
{
|
||
if (inp == 1 || inp == 2)
|
||
{
|
||
if (self.effects & EF_ANYGLOW)
|
||
{
|
||
sprint(self, PRINT_HIGH, "You can't go undercover while glowing.\n");
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
if (self.is_unabletospy == 1)
|
||
{
|
||
sprint(self, PRINT_HIGH, "You can't go undercover right now.\n");
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (inp == 1)
|
||
{
|
||
Menu_Spy_Skin();
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_SPY_SKIN;
|
||
self.menu_displaytime = 0;
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
Menu_Spy_Color();
|
||
self.menu_count = MENU_REFRESH_RATE;
|
||
self.current_menu = MENU_SPY_COLOR;
|
||
self.menu_displaytime = 0;
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 3)
|
||
{
|
||
TeamFortress_SpyFeignDeath(1); //CH Normal feign
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
Spy_RemoveDisguise(self);
|
||
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 5 && (self.undercover_team != 0 || self.undercover_skin != 0))
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
void() Menu_Spy_Skin =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>:\n\n<EFBFBD>.. Scout \n<EFBFBD>.. Sniper \n<EFBFBD>.. Soldier \n<EFBFBD>.. Demoman \n<EFBFBD>.. Medic \n<EFBFBD>.. Hvwep \n<EFBFBD>.. Pyro \n<EFBFBD>.. Spy \n<EFBFBD>.. Engineer\n\n");
|
||
};
|
||
|
||
void(float inp) Menu_Spy_Skin_Input =
|
||
{
|
||
if (inp < 10 && inp > 0)
|
||
{
|
||
TeamFortress_SpyChangeSkin(inp);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
void() Menu_Spy_Color =
|
||
{
|
||
if (number_of_teams == 0)
|
||
{
|
||
sprint(self, PRINT_HIGH, "No Color changing allowed in deathmatch.\n");
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
|
||
if (number_of_teams == 1)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>:\n\n<EFBFBD>.. Team One \n\n");
|
||
else if (number_of_teams == 2)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>:\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n\n");
|
||
else if (number_of_teams == 3)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>:\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n<EFBFBD>.. Team Three\n\n");
|
||
else // if (number_of_teams == 4)
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>:\n\n<EFBFBD>.. Team One \n<EFBFBD>.. Team Two \n<EFBFBD>.. Team Three\n<EFBFBD>.. Team Four \n\n");
|
||
};
|
||
|
||
void(float inp) Menu_Spy_Color_Input =
|
||
{
|
||
if (inp >= 1 && inp <= number_of_teams)
|
||
{
|
||
TeamFortress_SpyChangeColor(inp);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
//============================================================================
|
||
// ENGINEER menus for the building ability
|
||
//WK Rewritten for better extensibility and less lines of code
|
||
|
||
void() Menu_Engineer =
|
||
{
|
||
local string st = "";
|
||
|
||
st += "\<Action\>: \n\n";
|
||
if (self.has_dispenser)
|
||
st += "\x93\<..\> Destroy Dispenser \n";
|
||
else if (self.ammo_cells >= BUILD_COST_DISPENSER && (self.cutf_items & CUTF_DISPENSER))
|
||
st += "\x93.. Build Dispenser \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_sentry)
|
||
st += "\x94\<..\> Destroy Sentry Gun \n";
|
||
else if (self.ammo_cells >= BUILD_COST_SENTRYGUN && self.cutf_items & CUTF_SENTRYGUN)
|
||
st += "\x94.. Build Sentry Gun \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_tesla)
|
||
st += "\x95\<..\> Destroy Tesla Sentry \n";
|
||
else if (self.ammo_cells >= BUILD_COST_TESLA && self.tf_items & NIT_TESLA)
|
||
st += "\x95.. Build Tesla Sentry \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_camera)
|
||
st += "\x96\<..\> Destroy Security Camera \n";
|
||
else if (self.ammo_cells >= BUILD_COST_CAMERA && self.tf_items & NIT_SECURITY_CAMERA)
|
||
st += "\x96.. Launch Security Camera \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_teleporter < 2 && self.ammo_cells >= BUILD_COST_TELEPORTER && self.tf_items & NIT_TELEPORTER)
|
||
st += "\x97.. Build a Teleporter Pad \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_teleporter == 2)
|
||
st += "\x98\<..\> Destroy Both Teleporter Pads \n";
|
||
else if (self.has_teleporter == 1)
|
||
st += "\x98\<..\> Destroy a Teleporter Pad \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_sensor)
|
||
st += "\x99\<..\> Destroy Motion Sensor \n";
|
||
else if (self.ammo_cells >= BUILD_COST_SENSOR && self.cutf_items & CUTF_SENSOR)
|
||
st += "\x99.. Deploy Motion Sensor \n";
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_fieldgen < 2 && self.ammo_cells >= BUILD_COST_FIELDGEN && self.cutf_items & CUTF_FIELDGEN)
|
||
st += "\x9a.. Build a Field Generator \n";
|
||
#ifdef FIELD_FORCEMODE
|
||
else if (self.has_fieldgen == 2 && self.cutf_items & CUTF_FIELDGEN)
|
||
st += "\x9a.. Force field: " + (GetFieldForcedStatus() ? "\<Closed Mode\> \n" : "\<Intelligent Mode\> \n");
|
||
#endif
|
||
else
|
||
st += "\n";
|
||
|
||
if (self.has_fieldgen == 2)
|
||
st += "\x9b\<..\> Destroy Both Field Generators \n";
|
||
else if (self.has_fieldgen == 1)
|
||
st += "\x9b\<..\> Destroy a Field Generator \n";
|
||
else
|
||
st += "\n";
|
||
|
||
st += "\n\x92.. \<Nothing\> \n";
|
||
|
||
//Finally, we output the menu...
|
||
CenterPrint (self, st);
|
||
|
||
};
|
||
|
||
void(float inp) Menu_Engineer_Input =
|
||
{
|
||
local entity te;
|
||
|
||
if (inp == 1 && self.ammo_cells >= BUILD_COST_DISPENSER && self.has_dispenser == FALSE)
|
||
{
|
||
if (!self.has_dispenser) TeamFortress_Build(BUILD_DISPENSER);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 2 && self.ammo_cells >= BUILD_COST_SENTRYGUN && self.has_sentry == FALSE)
|
||
{
|
||
if (HasFlag(self.team_no) == FALSE) {
|
||
CenterPrint(self, "No building until your team has the flag!\n");
|
||
return;
|
||
}
|
||
|
||
TeamFortress_Build(BUILD_SENTRYGUN);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 3 && self.ammo_cells >= BUILD_COST_TESLA && self.has_tesla == FALSE)
|
||
{
|
||
if (HasFlag(self.team_no) == FALSE) {
|
||
CenterPrint(self, "No building until your team has the flag!\n");
|
||
return;
|
||
}
|
||
|
||
TeamFortress_Build(BUILD_TESLA);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
if (!self.has_camera)
|
||
TeamFortress_Build(BUILD_SECURITY_CAMERA);
|
||
else
|
||
{
|
||
if (self.option < time)
|
||
Find_And_Dmg("building_camera", self, 1);
|
||
else
|
||
{
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
}
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
//CH uses 5 and 6
|
||
else if (inp == 5
|
||
&& (self.has_teleporter == 0 || self.has_teleporter == 1)
|
||
&& self.ammo_cells >= BUILD_COST_TELEPORTER) //ch if have one out, can build
|
||
{
|
||
if (HasFlag(self.team_no) == FALSE) {
|
||
CenterPrint(self, "No building until your team has the flag!\n");
|
||
return;
|
||
}
|
||
|
||
if (self.has_teleporter == 1)
|
||
{
|
||
local float r;
|
||
te = find(NIL, classname, "building_teleporter");
|
||
while (te)
|
||
{
|
||
if (te.real_owner == self)
|
||
{
|
||
r = vlen(te.origin - self.origin);
|
||
if (r > TELEPORTER_RANGE && !(te.num_mines & IMPROVED_FOUR))
|
||
{
|
||
sprint(self, PRINT_HIGH, "Other Teleporter is too far away\n");
|
||
}
|
||
else
|
||
{
|
||
TeamFortress_Build(BUILD_TELEPORTER);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
}
|
||
te = find(te, classname, "building_teleporter");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
TeamFortress_Build(BUILD_TELEPORTER);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
}
|
||
else if (inp == 6 && (self.has_teleporter == 1 || self.has_teleporter == 2)) //ch if have one out. can destroy
|
||
{
|
||
Find_And_Dmg("building_teleporter", self, 1);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 7 && (self.ammo_cells >= BUILD_COST_SENSOR || self.has_sensor) && self.cutf_items & CUTF_SENSOR)
|
||
{
|
||
SBBuildSensor();
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
//CH uses 5 and 6
|
||
else if (inp == 8) //ch if have one out, can build
|
||
{
|
||
if ((self.has_fieldgen == 0 || self.has_fieldgen == 1) && self.ammo_cells >= BUILD_COST_FIELDGEN)
|
||
{
|
||
if (HasFlag(self.team_no) == FALSE) {
|
||
CenterPrint(self, "No building until your team has the flag!\n");
|
||
return;
|
||
}
|
||
|
||
// find if there are other generators too close, if this is our first generator only - nope
|
||
if (infokey(NIL, "fieldtest") != "1")
|
||
{
|
||
local float r, mindist;
|
||
mindist = 3000;
|
||
|
||
te = find(NIL, classname, "building_fieldgen");
|
||
while (te)
|
||
{
|
||
if (te.real_owner != self)
|
||
{
|
||
r = vlen(te.origin - self.origin);
|
||
|
||
if (r < mindist)
|
||
mindist = r;
|
||
}
|
||
te = find(te, classname, "building_fieldgen");
|
||
}
|
||
|
||
/* if (mindist < FIELDGEN_HACKEDRANGE) // * 2
|
||
{
|
||
sprint(self, PRINT_HIGH, "There are interferences with other field generators here!\n");
|
||
}
|
||
else
|
||
{*/
|
||
TeamFortress_Build(BUILD_FIELDGEN);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
// }
|
||
}
|
||
else
|
||
{
|
||
TeamFortress_Build(BUILD_FIELDGEN);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
}
|
||
|
||
#ifdef FIELD_FORCEMODE
|
||
|
||
else if (self.has_fieldgen > 1)
|
||
{
|
||
if (GetFieldForcedStatus())
|
||
{
|
||
SetFieldForcedStatus(FALSE);
|
||
sprint(self,PRINT_HIGH,"You set the force field to Intelligent Mode\n");
|
||
}
|
||
else
|
||
{
|
||
SetFieldForcedStatus(TRUE);
|
||
sprint(self,PRINT_HIGH,"You set the force field to Closed Mode\n");
|
||
}
|
||
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
#endif
|
||
|
||
}
|
||
else if (inp == 9 && (self.has_fieldgen >= 1)) //ch if have one out. can destroy
|
||
{
|
||
Find_And_Dmg("building_fieldgen", self, 1);
|
||
self.has_fieldgen = 0; // FIXME: shouldnt be needed
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
//-----------------------------------------------------------------//
|
||
else if (inp == 1 && self.has_dispenser == TRUE)
|
||
{
|
||
Find_And_Dmg("building_dispenser", self, 1);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 2 && self.has_sentry == TRUE)
|
||
{
|
||
Find_And_Dmg("building_sentrygun", self, 1);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 3 && self.has_tesla == TRUE)
|
||
{
|
||
te = find(NIL, classname, "building_tesla");
|
||
while (te)
|
||
{
|
||
if (te.real_owner == self)
|
||
{
|
||
if (te.tf_items & NIT_SECURITY_CAMERA) {
|
||
sprint(self, PRINT_HIGH, "Can't detonate a rogue tesla. Sorry, it's not that easy.\n");
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
}
|
||
te = find(te, classname, "building_tesla");
|
||
}
|
||
Find_And_Dmg("building_tesla", self, 1);
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
else if (inp == 10) //CH was 4
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
//CH to reduce code.
|
||
void(entity person, string build) Add_Building_Teamkill =
|
||
{
|
||
local string st;
|
||
local float threshold;
|
||
threshold = 0;
|
||
bprint (PRINT_HIGH, person.netname);
|
||
bprint (PRINT_HIGH, " has dismantled a friendly ");
|
||
bprint (PRINT_HIGH, build);
|
||
bprint (PRINT_HIGH, "!\n");
|
||
|
||
st = infokey(NIL, "curse");
|
||
if (st)
|
||
threshold = stof(st);
|
||
person.ff_count = person.ff_count + 2; //Increase their bastard rating
|
||
//Increase the engineers bastard rating so they
|
||
//can't block everyone.
|
||
person.building.real_owner.ff_count = person.building.real_owner.ff_count + 0.5;
|
||
if (threshold >= 1)
|
||
{
|
||
if (person.ff_count >= threshold)
|
||
createBastard(person,threshold);
|
||
if (person.building.real_owner.ff_count >= threshold)
|
||
createBastard(person.building.real_owner,threshold);
|
||
if ((person.ff_count == threshold - 2) || (person.ff_count == threshold - 1.5) || (person.ff_count == threshold - 1) || (person.ff_count == threshold - 0.5))
|
||
{
|
||
sprint (person, PRINT_MEDIUM, "One more dismantling and you will be cursed.\n");
|
||
}
|
||
}
|
||
};
|
||
|
||
//============================================================================
|
||
// ENGINEER menus for fixing buildings
|
||
|
||
void() Menu_EngineerFix_Dispenser =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Put Ammo into Dispenser \n<EFBFBD>.. Put Armor into Dispenser \n<EFBFBD>.. Repair Dispenser \n<EFBFBD>.. Dismantle Dispenser \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
};
|
||
|
||
void(float inp) Menu_EngineerFix_Dispenser_Input =
|
||
{
|
||
local float metalcost;
|
||
local float am;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
local float iI; // is Improved?
|
||
iI=1;
|
||
if (self.building.num_mines & IMPROVED_ONE)
|
||
iI=2;
|
||
|
||
if (inp == 1)
|
||
{
|
||
// shells
|
||
am = (DROP_SHELLS * 2);
|
||
if (am > self.ammo_shells)
|
||
am = self.ammo_shells;
|
||
if (am > (BUILD_DISPENSER_MAX_SHELLS*iI - self.building.ammo_shells))
|
||
am = BUILD_DISPENSER_MAX_SHELLS*iI - self.building.ammo_shells;
|
||
self.ammo_shells = self.ammo_shells - am;
|
||
self.building.ammo_shells = self.building.ammo_shells + am;
|
||
|
||
// nails
|
||
am = (DROP_NAILS * 2);
|
||
if (am > self.ammo_nails)
|
||
am = self.ammo_nails;
|
||
if (am > (BUILD_DISPENSER_MAX_NAILS*iI - self.building.ammo_nails))
|
||
am = BUILD_DISPENSER_MAX_NAILS*iI - self.building.ammo_nails;
|
||
self.ammo_nails = self.ammo_nails - am;
|
||
self.building.ammo_nails = self.building.ammo_nails + am;
|
||
|
||
// rockets
|
||
am = (DROP_ROCKETS * 2);
|
||
if (am > self.ammo_rockets)
|
||
am = self.ammo_rockets;
|
||
if (am > (BUILD_DISPENSER_MAX_ROCKETS*iI - self.building.ammo_rockets))
|
||
am = BUILD_DISPENSER_MAX_ROCKETS*iI - self.building.ammo_rockets;
|
||
self.ammo_rockets = self.ammo_rockets - am;
|
||
self.building.ammo_rockets = self.building.ammo_rockets + am;
|
||
|
||
// cells
|
||
am = (DROP_CELLS * 2);
|
||
if (am > self.ammo_cells)
|
||
am = self.ammo_cells;
|
||
if (am > (BUILD_DISPENSER_MAX_CELLS*iI - self.building.ammo_cells))
|
||
am = BUILD_DISPENSER_MAX_CELLS*iI - self.building.ammo_cells;
|
||
self.ammo_cells = self.ammo_cells - am;
|
||
self.building.ammo_cells = self.building.ammo_cells + am;
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
// armor
|
||
am = (DROP_ARMOR * 2);
|
||
if (am > self.armorvalue)
|
||
am = self.armorvalue;
|
||
if (am > (BUILD_DISPENSER_MAX_ARMOR*iI - self.building.armorvalue))
|
||
am = BUILD_DISPENSER_MAX_ARMOR*iI - self.building.armorvalue;
|
||
self.armorvalue = self.armorvalue - am;
|
||
self.building.armorvalue = self.building.armorvalue + am;
|
||
}
|
||
else if (inp == 3)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 5;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = self.ammo_cells;
|
||
if (!instant_repair && metalcost > BUILD_DISPENSER_REPAIR) // don't allow instant repairs
|
||
metalcost = BUILD_DISPENSER_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 5);
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
if (CheckEnemyDismantle()==FALSE) {ResetMenu(); self.impulse=0; return;}
|
||
|
||
sprint (self, PRINT_HIGH, "You dismantle the Dispenser.\n");
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_DISPENSER / 2.0);
|
||
///////////////////////////
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "dispenser");
|
||
}
|
||
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
self.building.real_owner.has_dispenser = FALSE;
|
||
dremove(self.building);
|
||
|
||
}
|
||
|
||
if (inp >= 1 && inp <= 5)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
self.building = NIL;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
|
||
void() Menu_EngineerFix_SentryGun =
|
||
{
|
||
if (self.building.weapon < 3 && self.ammo_cells >= BUILD_COST_SENTRYGUN)
|
||
{
|
||
if (!(self.tf_items & NIT_TURRET)) // TODO: Action --> OfteN's sentry gun
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Put Ammo into Sentry Gun \n.. Upgrade Sentry Gun \n<EFBFBD>.. Repair Sentry Gun \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Dismantle Sentry Gun \n<EFBFBD>.. Rotate Clockwise \n<EFBFBD>.. Rotate Counter-Clockwise \n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Put Ammo into Sentry Gun \n.. Upgrade Sentry Gun \n<EFBFBD>.. Repair Sentry Gun \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Dismantle Sentry Gun \n<EFBFBD>.. Rotate Clockwise \n<EFBFBD>.. Rotate Counter-Clockwise \n<EFBFBD>.. Create Turret \n");
|
||
}
|
||
else
|
||
{
|
||
if (!(self.tf_items & NIT_TURRET))
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Put Ammo into Sentry Gun \n<EFBFBD>.. Repair Sentry Gun \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Dismantle Sentry Gun \n<EFBFBD>.. Rotate Clockwise \n<EFBFBD>.. Rotate Counter-Clockwise \n");
|
||
else
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Put Ammo into Sentry Gun \n<EFBFBD>.. Repair Sentry Gun \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Dismantle Sentry Gun \n<EFBFBD>.. Rotate Clockwise \n<EFBFBD>.. Rotate Counter-Clockwise \n<EFBFBD>.. Create Turret \n");
|
||
}
|
||
};
|
||
|
||
void(float inp) Menu_EngineerFix_SentryGun_Input =
|
||
{
|
||
local float am, metalcost;
|
||
local string st;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp == 1)
|
||
{
|
||
// shells
|
||
am = (DROP_SHELLS * 2);
|
||
if (am > self.ammo_shells)
|
||
am = self.ammo_shells;
|
||
if (am > (self.building.maxammo_shells - self.building.ammo_shells))
|
||
am = (self.building.maxammo_shells - self.building.ammo_shells);
|
||
self.ammo_shells = self.ammo_shells - am;
|
||
self.building.ammo_shells = self.building.ammo_shells + am;
|
||
|
||
// If it's level 3, put some rockets in too
|
||
// GR But not at the same time as the shells
|
||
if (self.building.weapon == 3 && am == 0)
|
||
{
|
||
am = (DROP_ROCKETS * 2);
|
||
if (am > self.ammo_rockets)
|
||
am = self.ammo_rockets;
|
||
if (am > (self.building.maxammo_rockets - self.building.ammo_rockets))
|
||
am = (self.building.maxammo_rockets - self.building.ammo_rockets);
|
||
self.ammo_rockets = self.ammo_rockets - am;
|
||
self.building.ammo_rockets = self.building.ammo_rockets + am;
|
||
}
|
||
}
|
||
else if (self.building.weapon < 3 && inp == 2 && self.ammo_cells >= BUILD_COST_SENTRYGUN)
|
||
{
|
||
self.ammo_cells = self.ammo_cells - BUILD_COST_SENTRYGUN;
|
||
self.building.weapon = self.building.weapon + 1;
|
||
|
||
local float HPfactor,AMMOfactor;
|
||
if (self.building.num_mines & IMPROVED_THREE)
|
||
HPfactor=2;
|
||
else
|
||
HPfactor=1;
|
||
|
||
if (self.building.num_mines & IMPROVED_ONE)
|
||
AMMOfactor=2;
|
||
else
|
||
AMMOfactor=1;
|
||
|
||
// more health
|
||
//self.building.max_health = self.building.max_health * 1.2;
|
||
//self.building.health = self.building.max_health;
|
||
|
||
// more ammo capability
|
||
//self.building.maxammo_shells = self.building.maxammo_shells * 1.2;
|
||
// Change the skin and frames
|
||
if (self.building.weapon == 2)
|
||
{
|
||
sound (self.building, CHAN_ITEM, "weapons/turrset.wav", 1, ATTN_NORM);
|
||
self.building.think = lvl2_sentry_stand;
|
||
//self.building.skin = 1;
|
||
self.building.max_health = 180 * HPfactor;
|
||
self.building.maxammo_shells = 120 * AMMOfactor;
|
||
}
|
||
else // if (self.building.weapon == 3)
|
||
{
|
||
sound (self.building, CHAN_ITEM, "weapons/turrset.wav", 1, ATTN_NORM);
|
||
self.building.think = lvl3_sentry_stand;
|
||
//self.building.skin = 2;
|
||
self.building.max_health = 220 * HPfactor;
|
||
self.building.maxammo_shells = 144 * AMMOfactor;
|
||
}
|
||
|
||
self.building.health = self.building.max_health;
|
||
|
||
sprint(self, PRINT_HIGH, "You upgrade the Sentry Gun to level ");
|
||
st = ftos(self.building.weapon);
|
||
sprint(self, PRINT_HIGH, st);
|
||
sprint(self, PRINT_HIGH, "\n");
|
||
}
|
||
else if (inp == 3)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 5;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = self.ammo_cells;
|
||
if (!instant_repair && metalcost > BUILD_SENTRYGUN_REPAIR) // disallow instant repairs
|
||
metalcost = BUILD_SENTRYGUN_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 5);
|
||
}
|
||
else if (inp == 5)
|
||
{
|
||
if (CheckEnemyDismantle()==FALSE) return;
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Sentry Gun.\n");
|
||
//CH give .5 of build cost====give 25*level
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_SENTRYGUN / 2.0) + (self.building.weapon * 25);
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "sentry gun");
|
||
}
|
||
self.building.real_owner.has_sentry = FALSE;
|
||
dremove(self.building.trigger_field);
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
dremove(self.building);
|
||
}
|
||
else if (inp == 6) //WK
|
||
{
|
||
sprint(self, PRINT_HIGH, "You rotate it clockwise 45 degrees\n");
|
||
self.building.angles_y = anglemod(self.building.angles_y - 45);
|
||
self.building.angles_y = ((ceil(self.building.angles_y / 10)) * 10); //CH set last int to 0
|
||
self.building.waitmin = anglemod(self.building.angles_y - 50);
|
||
self.building.waitmax = anglemod(self.building.angles_y + 50);
|
||
self.building.heat = 0;
|
||
}
|
||
else if (inp == 7) //WK
|
||
{
|
||
sprint(self, PRINT_HIGH, "You rotate it counter-clockwise 45 degrees\n");
|
||
self.building.angles_y = anglemod(self.building.angles_y + 45);
|
||
self.building.angles_y = ((ceil(self.building.angles_y / 10)) * 10); //CH set last int to 0
|
||
self.building.waitmin = anglemod(self.building.angles_y - 50);
|
||
self.building.waitmax = anglemod(self.building.angles_y + 50);
|
||
self.building.heat = 1;
|
||
}
|
||
//Detachable sentry!
|
||
else if (inp == 8)
|
||
{
|
||
if (self.building.tf_items & NIT_TURRET) {
|
||
sprint(self, PRINT_HIGH, "Gun is already deployed\n");
|
||
}
|
||
else if (!(self.tf_items & NIT_TURRET)) {
|
||
sprint(self, PRINT_HIGH, "You need to purchase the turret upgrade\n");
|
||
}
|
||
else if (self.ammo_cells < BUILD_COST_TURRET)
|
||
{
|
||
sprint (self, PRINT_HIGH, "Creating a turret costs "
|
||
+ ftos (BUILD_COST_TURRET) + " metal\n");
|
||
}
|
||
else {
|
||
self.building.origin_z = self.building.origin_z + 15; //Elevate for the check
|
||
//Make sure the launch area is clear
|
||
if (CheckArea(self.building,self) == FALSE) {
|
||
sprint(self, PRINT_HIGH, "You need a clear area to launch\n");
|
||
self.building.origin_z = self.building.origin_z - 15; //Set back down
|
||
}
|
||
else {
|
||
self.building.origin_z = self.building.origin_z + 25; //Finish liftoff
|
||
sprint(self, PRINT_HIGH, "You launch the sentrygun\n");
|
||
self.ammo_cells = self.ammo_cells - BUILD_COST_TURRET;
|
||
self.building.angles_z = 180;
|
||
setmodel(self.building.trigger_field, "");
|
||
self.building.trigger_field.solid = SOLID_NOT;
|
||
self.building.flags = self.building.flags - (self.building.flags & FL_ONGROUND);
|
||
self.building.movetype = MOVETYPE_FLY;
|
||
self.building.velocity_z = 200;
|
||
setsize (self.building, '-16 -16 -40', '16 16 -10'); //WK -40, -10
|
||
self.building.tf_items = self.building.tf_items | NIT_TURRET;
|
||
}
|
||
}
|
||
}
|
||
if (inp >= 1 && inp <= 8)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
};
|
||
|
||
void() Menu_EngineerFix_Sensor =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Repair Sensor \n\n.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n.. Dismantle \n");
|
||
};
|
||
void(float inp) Menu_EngineerFix_Sensor_Input =
|
||
{
|
||
//*ch
|
||
local float metalcost;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp == 1)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 10;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = self.ammo_cells;
|
||
if (!instant_repair && metalcost > BUILD_SENSOR_REPAIR)
|
||
metalcost = BUILD_SENSOR_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 10);
|
||
}
|
||
else if (inp == 3)
|
||
{
|
||
if (CheckEnemyDismantle() == FALSE) return; //- OfN - ICE avoids enemy dismantle (see often.qc)
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Motion Sensor.\n");
|
||
//CH will give you half of cost + max of 20
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_SENSOR * 0.5) + floor(self.building.health / 40);
|
||
self.building.real_owner.has_sensor = FALSE;
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "motion sensor");
|
||
}
|
||
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
dremove(self.building);
|
||
}
|
||
if (inp >= 1 && inp <= 3)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
};
|
||
|
||
void() Menu_EngineerFix_Camera =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Repair Camera \n\n.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n.. Dismantle \n");
|
||
};
|
||
void(float inp) Menu_EngineerFix_Camera_Input =
|
||
{
|
||
//*ch
|
||
local float metalcost;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp == 1)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 10;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = self.ammo_cells;
|
||
|
||
if (!instant_repair && metalcost > BUILD_CAMERA_REPAIR)
|
||
metalcost = BUILD_CAMERA_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 10);
|
||
}
|
||
else if (inp == 3)
|
||
{
|
||
if (CheckEnemyDismantle() == FALSE) return; //- OfN - ICE avoids enemy dismantle (see often.qc)
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Security Camera.\n");
|
||
//CH will give you half of cost + max of 20
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_CAMERA * 0.5) + floor(self.building.health / 40);
|
||
self.building.real_owner.has_camera = FALSE;
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "security camera");
|
||
}
|
||
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
dremove(self.building);
|
||
}
|
||
if (inp >= 1 && inp <= 3)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
};
|
||
|
||
void() Menu_EngineerFix_Teleporter =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Repair Teleporter \n.. Recharge Teleporter\n\n.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n.. Dismantle \n");
|
||
};
|
||
void(float inp) Menu_EngineerFix_Teleporter_Input =
|
||
{
|
||
//*ch
|
||
local float metalcost;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp == 1)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 5;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = ceil(self.ammo_cells);
|
||
if (!instant_repair && metalcost > BUILD_TELEPORT_REPAIR)
|
||
metalcost = BUILD_TELEPORT_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 5);
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
metalcost = (self.building.maxammo_cells - self.building.ammo_cells);
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = ceil(self.ammo_cells);
|
||
if (!instant_repair && metalcost > BUILD_TELEPORT_RECHARGE)
|
||
metalcost = BUILD_TELEPORT_RECHARGE;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.ammo_cells = self.building.ammo_cells + metalcost;
|
||
if (self.building.ammo_cells > self.building.maxammo_cells)
|
||
self.building.ammo_cells = self.building.maxammo_cells;
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
if (CheckEnemyDismantle() == FALSE) return; //- OfN - ICE avoids enemy dismantle (see often.qc)
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Teleporter Pad.\n");
|
||
//CH will give you half of cost + max of 20
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_TELEPORTER * 0.5) + floor(self.building.health / 15);
|
||
self.building.real_owner.has_teleporter = (self.building.real_owner.has_teleporter - 1);
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "teleporter");
|
||
}
|
||
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
dremove(self.building);
|
||
}
|
||
if (inp >= 1 && inp <= 4)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
};
|
||
|
||
//=========================================================================
|
||
// field generator
|
||
|
||
void() Menu_EngineerFix_FieldGen =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Repair Field Generator \n.. Recharge Field Generator\n\n.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n.. Dismantle \n");
|
||
};
|
||
void(float inp) Menu_EngineerFix_FieldGen_Input =
|
||
{
|
||
local float metalcost;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp == 1)
|
||
{
|
||
metalcost = (self.building.max_health - self.building.health) / 5;
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = ceil(self.ammo_cells);
|
||
if (!instant_repair && metalcost > BUILD_FIELDGEN_REPAIR)
|
||
metalcost = BUILD_FIELDGEN_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.health = self.building.health + (metalcost * 5);
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
metalcost = (self.building.maxammo_cells - self.building.ammo_cells);
|
||
|
||
if (metalcost > self.ammo_cells)
|
||
metalcost = ceil(self.ammo_cells);
|
||
if (!instant_repair && metalcost > BUILD_FIELDGEN_RECHARGE)
|
||
metalcost = BUILD_FIELDGEN_RECHARGE;
|
||
|
||
self.ammo_cells = self.ammo_cells - metalcost;
|
||
self.building.ammo_cells = self.building.ammo_cells + metalcost;
|
||
if (self.building.ammo_cells > self.building.maxammo_cells)
|
||
self.building.ammo_cells = self.building.maxammo_cells;
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
if (CheckEnemyDismantle() == FALSE) return; //- OfN - ICE avoids enemy dismantle (see often.qc)
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Field Generator.\n");
|
||
//CH will give you half of cost + max of 20
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_FIELDGEN * 0.5) + floor(self.building.health / 15);
|
||
self.building.real_owner.has_fieldgen = (self.building.real_owner.has_fieldgen - 1);
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "field generator");
|
||
}
|
||
|
||
self.building.health=0; // - OfN aborts hacks on it
|
||
dremove(self.building);
|
||
}
|
||
if (inp >= 1 && inp <= 4)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
};
|
||
|
||
|
||
//CH
|
||
string(float num) Return_Colored_Num =
|
||
{
|
||
if (num == 0)
|
||
return "<EFBFBD>";
|
||
else if (num == 1)
|
||
return "<EFBFBD>";
|
||
else if (num == 2)
|
||
return "<EFBFBD>";
|
||
else if (num == 3)
|
||
return "<EFBFBD>";
|
||
else if (num == 4)
|
||
return "<EFBFBD>";
|
||
else if (num == 5)
|
||
return "<EFBFBD>";
|
||
else if (num == 6)
|
||
return "<EFBFBD>";
|
||
else if (num == 7)
|
||
return "<EFBFBD>";
|
||
else if (num == 8)
|
||
return "<EFBFBD>";
|
||
else if (num == 9)
|
||
return "<EFBFBD>";
|
||
else
|
||
return "<EFBFBD>"; //Should never happen // OfN - It does when a tesla is in upgrade for frags
|
||
};
|
||
//Upgrades tesla, type 1=volt 2=amps 3=health 4=spy 5=kevlar 6=blast 7=turret 8=improve 9=cloak
|
||
//menu 0=normal 1=misc
|
||
float(float ups, entity person, entity sent, float type, float menu) Check_Tesla_Ups =
|
||
{
|
||
local float upgrades;
|
||
|
||
if (menu == 1)
|
||
upgrades = sent.has_tesla; //misc
|
||
else
|
||
upgrades = sent.has_sentry; //normal
|
||
if (ups > upgrades) {//not enough upgrades
|
||
sprint(person,PRINT_HIGH,"You do not have enough upgrades to improve the tesla\n");
|
||
return FALSE;
|
||
}
|
||
if (type == 4 || type == 5) { //Spy detector and frag to upgrade
|
||
if (person.ammo_cells < (ups / 2) * UPGRADE) {//not enough cells
|
||
sprint(person,PRINT_HIGH,"You need more cells to upgrade the tesla\n");
|
||
return FALSE;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (person.ammo_cells < ups * UPGRADE) {//not enough cells
|
||
sprint(person,PRINT_HIGH,"You need more cells to upgrade the tesla\n");
|
||
return FALSE;
|
||
}
|
||
}
|
||
if (type ==1)
|
||
{
|
||
if (sent.ammo_shells >= 3) {
|
||
sprint(self,PRINT_HIGH,"You can only upgrade voltage 3 times\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_sentry = sent.has_sentry - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==2)
|
||
{
|
||
if (sent.ammo_nails >= 3) {
|
||
sprint(person,PRINT_HIGH,"You can only upgrade amperage 3 times\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_sentry = sent.has_sentry - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==3)
|
||
{
|
||
if (sent.ammo_rockets >= 3) {
|
||
sprint(person,PRINT_HIGH,"You can only upgrade the capacitor 3 times\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_sentry = sent.has_sentry - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==4)
|
||
{
|
||
if (sent.tf_items & NIT_AUTOID) {
|
||
sprint(person,PRINT_HIGH,"You already built a spy detector\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_sentry = sent.has_sentry - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==5)
|
||
{
|
||
if (sent.tf_items & NIT_TELEPORTER) {
|
||
sprint(person,PRINT_HIGH,"You already have the upgrade\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_sentry = sent.has_sentry - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==6)
|
||
{
|
||
if (sent.tf_items & NIT_KEVLAR) {
|
||
sprint(person,PRINT_HIGH,"The Tesla already has Kevlar Armor\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==7)
|
||
{
|
||
if (sent.tf_items & NIT_BLAST) {
|
||
sprint(person,PRINT_HIGH,"The Tesla already has Blast Armor\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==8)
|
||
{
|
||
if (sent.tf_items & NIT_ASBESTOS) {
|
||
sprint(person,PRINT_HIGH,"The Tesla already has Asbestos Armor\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==9)
|
||
{
|
||
if (sent.tf_items & NIT_TURRET) {
|
||
sprint(person,PRINT_HIGH,"The Tesla is already a turret!\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==10)
|
||
{
|
||
if (sent.tf_items & NIT_SCANNER) {
|
||
sprint(person,PRINT_HIGH,"The Tesla already has an improved targeter\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
if (type ==11)
|
||
{
|
||
|
||
//sprint(person,PRINT_HIGH,"Not implemented yet!\n");
|
||
// return FALSE;
|
||
if (sent.tf_items & NIT_TESLA_CLOAKING) {
|
||
sprint(person,PRINT_HIGH,"The Tesla already has a cloaking device\n");
|
||
return FALSE;
|
||
}
|
||
else {
|
||
self.ammo_cells = self.ammo_cells - (ups * UPGRADE);
|
||
sent.has_tesla = sent.has_tesla - ups;
|
||
return TRUE;
|
||
}
|
||
}
|
||
return FALSE; //Should not happen
|
||
|
||
};
|
||
//Cause its used 2x
|
||
void() Menu_EngineerRepair_Tesla =
|
||
{
|
||
local float cost;
|
||
local float maxcells;
|
||
if (self.building.health < self.building.max_health) //CH allow repair with limited cells
|
||
{
|
||
cost = (self.building.max_health - self.building.health) / 2;
|
||
if (cost > self.ammo_cells)
|
||
cost = self.ammo_cells;
|
||
if (!instant_repair && cost > BUILD_TESLA_REPAIR)
|
||
cost = BUILD_TESLA_REPAIR;
|
||
|
||
self.ammo_cells = self.ammo_cells - cost;
|
||
self.building.health = self.building.health + (cost * 2);
|
||
if (self.building.health >= self.building.max_health)
|
||
self.building.health = self.building.max_health;
|
||
} else { // don't allow repair and recharge at the same time
|
||
maxcells = self.building.maxammo_cells;
|
||
|
||
cost = maxcells - self.building.ammo_cells;
|
||
if (cost > self.ammo_cells) cost = self.ammo_cells;
|
||
if (!instant_repair && cost > BUILD_TESLA_RECHARGE) cost = BUILD_TESLA_RECHARGE;
|
||
self.ammo_cells = self.ammo_cells - cost;
|
||
self.building.ammo_cells = self.building.ammo_cells + cost;
|
||
if (self.building.ammo_cells >= maxcells)
|
||
self.building.ammo_cells = maxcells;
|
||
}
|
||
};
|
||
void() Menu_EngineerDismantle_Tesla =
|
||
{
|
||
if (!self.building)
|
||
return;
|
||
|
||
if (self.building.tf_items & NIT_SECURITY_CAMERA) {
|
||
sprint(self, PRINT_HIGH, "You can't dismantle it. It's not that easy!\n");
|
||
return;
|
||
}
|
||
|
||
if (CheckEnemyDismantle() == FALSE) return;
|
||
|
||
sprint(self, PRINT_HIGH, "You dismantle the Tesla Gun.\n");
|
||
//CH give .5 of ammount of build====give 25*health level (0-3)====give .5 of cells
|
||
self.ammo_cells = self.ammo_cells + (BUILD_COST_TESLA / 2.0) + (self.building.ammo_rockets * 25) + (self.building.ammo_cells / 2);
|
||
self.building.real_owner.has_tesla = FALSE;
|
||
|
||
if (Teammate(self.building.real_owner.team_no,self.team_no) && teamplay != 0 && self.building.real_owner != self) { //Boot em if they dismantle too many
|
||
Add_Building_Teamkill (self, "tesla");
|
||
}
|
||
dremove(self.building);
|
||
};
|
||
//CH does random and picks what upgrade to give
|
||
void(entity sent, entity who) Tesla_Add_Rand_Upgrade =
|
||
{
|
||
local float num;
|
||
num = random();
|
||
if (num <= 0.8) //give them a normal upgrade
|
||
{
|
||
sprint(who,PRINT_HIGH,"The tesla got a normal upgrade!\n");
|
||
sent.has_sentry = sent.has_sentry + 1;
|
||
}
|
||
else
|
||
{
|
||
sprint(who,PRINT_HIGH,"The tesla got a misc upgrade!\n");
|
||
sent.has_tesla = sent.has_tesla + 1;
|
||
}
|
||
};
|
||
void() Menu_EngineerFix_Tesla =
|
||
{
|
||
local string l1,l2;
|
||
|
||
l1 = Return_Colored_Num(self.building.has_sentry);
|
||
l2 = "<EFBFBD>.. Upgrade Voltage <20> 1u\n<EFBFBD>.. Upgrade Amperage <20> 1u\n<EFBFBD>.. Upgrade Power Supply <20> 1u\n<EFBFBD>.. Add Spy Detector <20> 4u\n<EFBFBD>.. Upgrades from frags <20> 3u\n<EFBFBD>.. Tinker \n<EFBFBD>.. Repair and Recharge \n<EFBFBD>.. Dismantle \n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Misc Upgrades \n";
|
||
|
||
CenterPrint4(self, "Tesla <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: ",l1, " Upgrades Left\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Normal Tesla Upgrades <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n" ,l2);
|
||
|
||
};
|
||
void(float inp) Menu_EngineerFix_Tesla_Input =
|
||
{
|
||
local float cost = 0;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
if (self.building.real_owner != self && (inp < 7 || inp == 10) ) {
|
||
sprint(self,PRINT_HIGH,"Sorry, only the owner can do that\n");
|
||
return;
|
||
}
|
||
|
||
if (inp == 1) { //Upgrade volt
|
||
if (Check_Tesla_Ups(1, self, self.building, 1, 0))
|
||
{
|
||
self.building.ammo_shells = self.building.ammo_shells + 1;
|
||
self.building.waitmin = (self.building.ammo_shells + 2) * (self.building.ammo_nails + 2); //Ammo consumption
|
||
}
|
||
}
|
||
if (inp == 2) { //Upgrade amperage
|
||
if (Check_Tesla_Ups(1, self, self.building, 2, 0))
|
||
{
|
||
self.building.ammo_nails = self.building.ammo_nails + 1;
|
||
self.building.waitmin = (self.building.ammo_shells + 2) * (self.building.ammo_nails + 2); //Ammo consumption
|
||
}
|
||
}
|
||
if (inp == 3) { //Upgrade power supply
|
||
if (Check_Tesla_Ups(1, self, self.building, 3, 0))
|
||
{
|
||
local float HPfactor,num,AMMOfactor;
|
||
if (self.building.num_mines & IMPROVED_THREE)
|
||
HPfactor=2;
|
||
else
|
||
HPfactor=1;
|
||
|
||
if (self.building.num_mines & IMPROVED_ONE)
|
||
AMMOfactor=2;
|
||
else
|
||
AMMOfactor=1;
|
||
|
||
num=self.building.health/self.building.max_health;
|
||
|
||
self.building.ammo_rockets = self.building.ammo_rockets + 1;
|
||
//Upgrade them //- OfN - teslas start with 150 hp
|
||
if (self.building.ammo_rockets == 1) {
|
||
//self.building.max_health = self.building.max_health + 75; // 225
|
||
self.building.max_health = 225*HPfactor;
|
||
//self.building.health = self.building.health + 75;
|
||
self.building.maxammo_cells = (MAXCELLS0 + ADDCELLS1) * AMMOfactor;
|
||
self.building.ammo_cells = self.building.maxammo_cells;
|
||
}
|
||
else if (self.building.ammo_rockets == 2) {
|
||
//self.building.max_health = self.building.max_health + 100;// 325
|
||
self.building.max_health = 325*HPfactor;// 325
|
||
//self.building.health = self.building.health + 100;
|
||
//self.building.maxammo_cells = self.building.maxammo_cells + ADDCELLS2; //Add
|
||
self.building.maxammo_cells = (MAXCELLS0 + ADDCELLS1 + ADDCELLS2)*AMMOfactor;
|
||
self.building.ammo_cells = self.building.maxammo_cells;
|
||
}
|
||
else if (self.building.ammo_rockets == 3) {
|
||
//self.building.max_health = self.building.max_health + 75; // 400
|
||
self.building.max_health = 400*HPfactor; // 400
|
||
//self.building.health = self.building.health + 75;
|
||
self.building.maxammo_cells = (MAXCELLS0 + ADDCELLS1 + ADDCELLS2 + ADDCELLS3)*AMMOfactor; //Add
|
||
self.building.ammo_cells = self.building.maxammo_cells;
|
||
}
|
||
|
||
self.building.health=self.building.max_health*num;
|
||
}
|
||
}
|
||
if (inp == 4) { //Spy Detector
|
||
if (Check_Tesla_Ups(4, self, self.building, 4, 0))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_AUTOID;
|
||
}
|
||
}
|
||
if (inp == 5) { //CH Get frags for upgrades
|
||
if (Check_Tesla_Ups(3, self, self.building, 5, 0))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_TELEPORTER;
|
||
}
|
||
}
|
||
if (inp == 6){ // Tinker by Cyt0 Remade by CH to fit with new code
|
||
if (self.building.tf_items & NIT_TELEPORTER) //- ofn - workaround to solve the HP/cells increase by tinker combined with the hack
|
||
{
|
||
sprint(self,PRINT_HIGH,"You can't tinker a tesla in upgrade from frags mode!\n");
|
||
}
|
||
else
|
||
{
|
||
DoTinker();
|
||
}
|
||
}
|
||
if (inp == 7) { //Repair and Rearm
|
||
Menu_EngineerRepair_Tesla();
|
||
}
|
||
if (inp == 8) {
|
||
Menu_EngineerDismantle_Tesla();
|
||
}
|
||
// if (inp == 9) {
|
||
// }
|
||
if (inp == 10) {
|
||
self.impulse = 0;
|
||
Menu_EngineerFix_Tesla2();
|
||
self.current_menu = MENU_ENGINEER_FIX_TESLA2;
|
||
}
|
||
|
||
if (inp >= 1 && inp <= 9)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
if (self.ammo_cells < 0) self.ammo_cells = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
}
|
||
};
|
||
void() Menu_EngineerFix_Tesla2 =
|
||
{
|
||
local string l1,l2;
|
||
|
||
l1 = Return_Colored_Num(self.building.has_tesla);
|
||
//l2 = "<22>.. Cloaking Tesla <20> 2u";
|
||
l2 = "<EFBFBD>.. Kevlar Armor <20> 1u\n<EFBFBD>.. Blast Armor <20> 1u\n<EFBFBD>.. Asbestos Armor <20> 1u\n<EFBFBD>.. Make TeslaTurret(tm) <20> 1u\n<EFBFBD>.. Improved Targeting System <20> 1u\n<EFBFBD>.. Cloaking Device <20> 1u\n<EFBFBD>.. Repair and Recharge \n<EFBFBD>.. Dismantle \n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<EFBFBD>.. Normal Upgrades\n";
|
||
//l2 = "<22>.. Kevlar Armor <20> 1u\n<>.. Blast Armor <20> 1u\n<>.. Asbestos Armor <20> 1u\n<>.. Make TeslaTurret(tm) <20> 1u\n<>.. Improved Targeting System <20> 1u\n\n<>.. Repair and Recharge \n<>.. Dismantle \n<>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n<>.. Normal Upgrades\n";
|
||
CenterPrint4(self, "Tesla <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>: ",l1, " Upgrades Left\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Misc Tesla Upgrades <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n" ,l2);
|
||
};
|
||
void(float inp) Menu_EngineerFix_Tesla_Input2 =
|
||
{
|
||
local float cost = 0;
|
||
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
if (inp == 1) { //Kevlar
|
||
if (Check_Tesla_Ups(1, self, self.building, 6, 1))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_KEVLAR;
|
||
self.building.armorclass = self.building.armorclass | AT_SAVESHOT;
|
||
}
|
||
}
|
||
if (inp == 2) { //Blast
|
||
if (Check_Tesla_Ups(1, self, self.building, 7, 1))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_BLAST;
|
||
self.building.armorclass = self.building.armorclass | AT_SAVEEXPLOSION;
|
||
}
|
||
}
|
||
if (inp == 3) { //Blast
|
||
if (Check_Tesla_Ups(1, self, self.building, 8, 1))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_ASBESTOS;
|
||
self.building.armorclass = self.building.armorclass | AT_SAVEFIRE;
|
||
}
|
||
}
|
||
if (inp == 4) { //Tesla Turret(tm)
|
||
if (Check_Tesla_Ups(1, self, self.building, 9, 1))
|
||
{
|
||
if (self.building.tf_items & NIT_TURRET) {
|
||
sprint(self, PRINT_HIGH, "Gun is already deployed\n");
|
||
}
|
||
else {
|
||
//Make sure the launch area is clear
|
||
if (FALSE) {
|
||
//if (CheckArea(self.building,self) == FALSE) {
|
||
sprint(self, PRINT_HIGH, "You need a clear area to launch\n");
|
||
self.building.origin_z = self.building.origin_z - 15; //-15//Set back down
|
||
}
|
||
else {
|
||
//self.building.origin_z = self.building.origin_z + 25; //+ 25 //Finish liftoff
|
||
self.building.origin_z = self.building.origin_z - 34; //often fixes tesla not touchin ceiling//+
|
||
sprint(self, PRINT_HIGH, "You turretize the tesla\n");
|
||
|
||
if (self.building.job == 1 && self.building.tf_items & NIT_TESLA_CLOAKING)
|
||
{
|
||
local entity TSelf, OSelfB;
|
||
OSelfB=self.building;
|
||
TSelf=TeslaClone(OSelfB);
|
||
dremove(OSelfB);
|
||
self.building=TSelf; // NEEDED? teslaclone should have updated this pointer anyway..
|
||
|
||
spawnFOG(self.building.origin);
|
||
sound (self.building, CHAN_MISC, "misc/r_tele4.wav", 1, ATTN_NORM);
|
||
}
|
||
|
||
self.building.angles_z = 180;
|
||
self.building.flags = self.building.flags - (self.building.flags & FL_ONGROUND);
|
||
self.building.movetype = MOVETYPE_FLY;
|
||
self.building.velocity_z = 200;
|
||
setsize (self.building, '-16 -16 10', '16 16 62');
|
||
self.building.tf_items = self.building.tf_items | NIT_TURRET;
|
||
self.building.is_haxxxoring=1; //flag determines if flying and it's used for cloaking teslas, set to 0 when landed
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (inp == 5) { //Improved Targeter
|
||
if (Check_Tesla_Ups(1, self, self.building, 10, 1))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_SCANNER;
|
||
}
|
||
}
|
||
//CH its commented out here and in the centerprint - OfN nomore!
|
||
if (inp == 6) { //Cloaking tesla
|
||
if (Check_Tesla_Ups(1, self, self.building, 11, 1))
|
||
{
|
||
self.building.tf_items = self.building.tf_items | NIT_TESLA_CLOAKING;
|
||
if (self.building.job == 1)
|
||
{
|
||
local entity oself;
|
||
oself=self;
|
||
self=self.building;
|
||
self.job=3; //- OfN - this flag indicates it must skip condition on lose_glow
|
||
Tesla_Lose_Glow();
|
||
self=oself;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (inp == 7) { //Repair and Rearm
|
||
Menu_EngineerRepair_Tesla();
|
||
}
|
||
if (inp == 8) {
|
||
Menu_EngineerDismantle_Tesla();
|
||
}
|
||
// if (inp == 9) {
|
||
// }
|
||
if (inp == 10) {
|
||
self.impulse = 0;
|
||
Menu_EngineerFix_Tesla();
|
||
self.current_menu = MENU_ENGINEER_FIX_TESLA;
|
||
}
|
||
|
||
if (inp >= 1 && inp <= 9)
|
||
{
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
|
||
if (self.ammo_cells < 0) self.ammo_cells = 0;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
}
|
||
};
|
||
|
||
//============================================================================
|
||
// Menu for using buildings
|
||
void() Menu_Dispenser =
|
||
{
|
||
CenterPrint(self, "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n<EFBFBD>.. Withdraw some ammo \n<EFBFBD>.. Withdraw some Armor \n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \n\n");
|
||
};
|
||
|
||
void(float inp) Menu_Dispenser_Input =
|
||
{
|
||
if (self.classname != "player" || !self.building)
|
||
return;
|
||
|
||
local float am, empty;
|
||
|
||
empty = FALSE;
|
||
if (inp == 1)
|
||
{
|
||
if (self.building.ammo_shells == 0 && self.building.ammo_nails == 0 &&
|
||
self.building.ammo_rockets == 0 && self.building.ammo_cells == 0)
|
||
{
|
||
empty = TRUE;
|
||
}
|
||
else
|
||
{
|
||
// shells
|
||
am = self.maxammo_shells - self.ammo_shells;
|
||
if (am > self.building.ammo_shells)
|
||
am = self.building.ammo_shells;
|
||
self.building.ammo_shells = self.building.ammo_shells - am;
|
||
self.ammo_shells = self.ammo_shells + am;
|
||
|
||
// nails
|
||
am = self.maxammo_nails - self.ammo_nails;
|
||
if (am > self.building.ammo_nails)
|
||
am = self.building.ammo_nails;
|
||
self.building.ammo_nails = self.building.ammo_nails - am;
|
||
self.ammo_nails = self.ammo_nails + am;
|
||
|
||
// rockets
|
||
am = self.maxammo_rockets - self.ammo_rockets;
|
||
if (am > self.building.ammo_rockets)
|
||
am = self.building.ammo_rockets;
|
||
self.building.ammo_rockets = self.building.ammo_rockets - am;
|
||
self.ammo_rockets = self.ammo_rockets + am;
|
||
|
||
// cells
|
||
am = self.maxammo_cells - self.ammo_cells;
|
||
if (am > self.building.ammo_cells)
|
||
am = self.building.ammo_cells;
|
||
self.building.ammo_cells = self.building.ammo_cells - am;
|
||
self.ammo_cells = self.ammo_cells + am;
|
||
|
||
// SB gren1s
|
||
local float grenammo;
|
||
/*if (self.tf_items & NIT_AMMO_BANDOLIER)
|
||
grenammo = 5;
|
||
else
|
||
grenammo = 4;*/
|
||
|
||
grenammo = GetMaxGrens(self,1);
|
||
|
||
am = grenammo - self.no_grenades_1;
|
||
if (am*15 > self.building.ammo_rockets)
|
||
am = floor(self.building.ammo_rockets / 15);
|
||
self.building.ammo_rockets = self.building.ammo_rockets - am * 15;
|
||
self.no_grenades_1 = self.no_grenades_1 + am;
|
||
|
||
// SB gren2s
|
||
|
||
grenammo = GetMaxGrens(self,2);
|
||
|
||
am = grenammo - self.no_grenades_2;
|
||
if (am*15 > self.ammo_rockets)
|
||
am = floor(self.ammo_rockets / 15);
|
||
self.building.ammo_rockets = self.building.ammo_rockets - am * 15;
|
||
self.no_grenades_2 = self.no_grenades_2 + am;
|
||
}
|
||
}
|
||
else if (inp == 2)
|
||
{
|
||
if (self.building.is_malfunctioning & SCREWUP_FOUR)
|
||
{
|
||
sprint(self,PRINT_HIGH,"Trapped dispenser, have a nice day!\n");
|
||
TF_T_Damage(self.building, self.building, self.building.martyr_enemy, 500, 0, TF_TD_OTHER);
|
||
return;
|
||
}
|
||
|
||
if (self.building.armorvalue == 0)
|
||
{
|
||
empty = TRUE;
|
||
}
|
||
else
|
||
{
|
||
// armor
|
||
am = self.maxarmor - self.armorvalue;
|
||
if (am > self.building.armorvalue)
|
||
am = self.building.armorvalue;
|
||
|
||
if (self.armortype == 0)
|
||
{
|
||
self.armortype = self.armor_allowed;
|
||
//self.items = self.items | IT_ARMOR1;
|
||
W_SetCurrentAmmo();
|
||
}
|
||
|
||
self.building.armorvalue = self.building.armorvalue - am;
|
||
self.armorvalue = self.armorvalue + am;
|
||
}
|
||
}
|
||
|
||
if (inp >= 1 && inp <= 3)
|
||
{
|
||
if (empty)
|
||
sprint(self, PRINT_HIGH, "The dispenser is empty.\n");
|
||
ResetMenu();
|
||
self.impulse = 0;
|
||
self.building = NIL;
|
||
self.building_wait = time + 0.5;
|
||
|
||
bound_other_ammo(self);
|
||
|
||
if (self.armorvalue == 0)
|
||
{
|
||
self.armortype = 0; // lost all armor
|
||
self.armorclass = 0; // lost special armor
|
||
self.items = self.items & ~(IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3);
|
||
}
|
||
|
||
W_SetCurrentAmmo();
|
||
}
|
||
|
||
// Otherwise, the impulse is passed on
|
||
};
|
||
//----------------------------------------------------------------------
|
||
// Rod May kk@rod.net
|
||
// mstr and mstr2 and eqstr only exist to cut down on a crap load of code.
|
||
//
|
||
string(float v,float m1,float m2,string s1,string s2,string s3,string s4) mstr =
|
||
{
|
||
// return string for matching masks (m1 and m2) on value v.
|
||
// neither match: s1, first only: s2, second only: s3, both: s4
|
||
|
||
if ((v & m1) && (v & m2)) return s4;
|
||
if (v & m1) return s2;
|
||
if (v & m2) return s3;
|
||
return s1;
|
||
};
|
||
string(float v1,float v2,float m1,float m2,string s1,string s2,string s3,string s4) mstr2 =
|
||
{
|
||
// same func as above but with a value for each mask.
|
||
// return string for matching mask m1 on value v1, and m2 on v2.
|
||
|
||
if ((v1 & m1) && (v2 & m2)) return s4;
|
||
if (v1 & m1) return s2;
|
||
if (v2 & m2) return s3;
|
||
return s1;
|
||
};
|
||
string(float v,float v1,float v2,string s1,string s2,string s3) eqstr =
|
||
{
|
||
// return string based on v equals values v1 OR v2
|
||
// neither equal: s1, first only: s2, second only: s3
|
||
|
||
if (v == v1) return s2;
|
||
if (v == v2) return s3;
|
||
return s1;
|
||
};
|
||
//----------------------------------------------------------------------
|
||
//----------------------------------------------------------------------
|
||
//----------------------------------------------------------------------
|
||
//----------------------------------------------------------------------
|
||
//----------------------------------------------------------------------
|
||
//----------------------------------------------------------------------
|
||
|
||
//WK =====================================================================
|
||
// Prints Menu of Primary Weapons Available
|
||
// =====================================================================
|
||
void() Menu_PrimaryWeapon =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
|
||
local string msg_custom;
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.weapons_carried, WEAP_SNIPER_RIFLE, WEAP_ASSAULT_CANNON,
|
||
" .. Sniper Rifle <20> 4000\n .. Assault Cannon <20> 3000\n",
|
||
"* .. Sniper Rifle <20> 4000\n .. Assault Cannon <20> 3000\n",
|
||
" .. Sniper Rifle <20> 4000\n* .. Assault Cannon <20> 3000\n",
|
||
"* .. Sniper Rifle <20> 4000\n* .. Assault Cannon <20> 3000\n");
|
||
|
||
l2 = mstr(self.weapons_carried, WEAP_ROCKET_LAUNCHER, WEAP_INCENDIARY,
|
||
" <20>.. Rocket Launcher <20> 3000\n <20>.. Pyro Toys <20> 3000\n",
|
||
"* <20>.. Rocket Launcher <20> 3000\n <20>.. Pyro Toys <20> 3000\n",
|
||
" <20>.. Rocket Launcher <20> 3000\n* <20>.. Pyro Toys <20> 3000\n",
|
||
"* <20>.. Rocket Launcher <20> 3000\n* <20>.. Pyro Toys <20> 3000\n");
|
||
|
||
l3 = mstr(self.weapons_carried, WEAP_GRENADE_LAUNCHER, WEAP_LIGHTNING,
|
||
" <20>.. Grenade Set <20> 2200\n <20>.. Lightning Gun <20> 2200\n",
|
||
"* <20>.. Grenade Set <20> 2200\n <20>.. Lightning Gun <20> 2200\n",
|
||
" <20>.. Grenade Set <20> 2200\n* <20>.. Lightning Gun <20> 2200\n",
|
||
"* <20>.. Grenade Set <20> 2200\n* <20>.. Lightning Gun <20> 2200\n");
|
||
|
||
l4 = " <20>.. Light Assault <20> 1800\n<EFBFBD>.. \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.weapons_carried & WEAP_LIGHT_ASSAULT)
|
||
l4 = "* <20>.. Light Assault <20> 1800\n<EFBFBD>.. \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.done_custom & CUSTOM_SELLING)
|
||
msg_custom = " dollars left\n\n*CURRENTLY SELLING FRAGS*\nTyping <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> again will waste your cash\n";
|
||
else
|
||
msg_custom = " dollars left\n\nUse the <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> command to start over\nUse the <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> command to sell frags\n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Primary Weapons <11><>\n\n",l1,l2,l3,l4,temp,msg_custom);
|
||
}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
void(float inp) Menu_PrimaryWeapon_Input =
|
||
{
|
||
local string st;
|
||
st = infokey(NIL, "no_spam");
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
//Snipe
|
||
#undef PRICE
|
||
#define PRICE 4000
|
||
if (inp == 1)
|
||
if (self.weapons_carried & WEAP_SNIPER_RIFLE) //Already have it
|
||
{
|
||
PrintRefund(PRICE);
|
||
self.weapons_carried = self.weapons_carried - WEAP_SNIPER_RIFLE;
|
||
#ifndef NO_AUTORIFLE
|
||
self.weapons_carried = self.weapons_carried - WEAP_AUTO_RIFLE;
|
||
#endif
|
||
self.maxammo_shells = self.maxammo_shells - 75;
|
||
}
|
||
else if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.weapons_carried = self.weapons_carried | WEAP_SNIPER_RIFLE | WEAP_AUTO_RIFLE;
|
||
self.maxammo_shells = self.maxammo_shells + 75;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
|
||
if (inp == 2)
|
||
{
|
||
if (st == "on") //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyWeapon(3000,WEAP_ASSAULT_CANNON);
|
||
}
|
||
if (inp == 3)
|
||
{
|
||
BuyWeapon(3000,WEAP_ROCKET_LAUNCHER);
|
||
}
|
||
//IC
|
||
#undef PRICE
|
||
#define PRICE 3000
|
||
if (inp == 4)
|
||
{
|
||
if (self.weapons_carried & WEAP_INCENDIARY) //Already have it
|
||
{
|
||
//Clean up asbestos armor
|
||
if (!(self.tf_items & NIT_ASBESTOS))
|
||
self.money = self.money - 750; //Sync this with asbestos
|
||
self.tf_items = self.tf_items & ~NIT_ASBESTOS;
|
||
|
||
PrintRefund(PRICE);
|
||
self.weapons_carried = self.weapons_carried - WEAP_INCENDIARY;
|
||
self.weapons_carried = self.weapons_carried - WEAP_FLAMETHROWER;
|
||
self.maxammo_cells = self.maxammo_cells - 200;
|
||
self.maxammo_rockets = self.maxammo_rockets - 60;
|
||
}
|
||
else if (self.money >= PRICE)
|
||
{
|
||
self.money = self.money - PRICE;
|
||
self.weapons_carried = self.weapons_carried | WEAP_INCENDIARY | WEAP_FLAMETHROWER;
|
||
//Give em asbestos armor, and a refund if they have it
|
||
if (self.tf_items & NIT_ASBESTOS)
|
||
self.money = self.money + 750; //Sync this with asbestos price
|
||
self.tf_items = self.tf_items | NIT_ASBESTOS;
|
||
|
||
|
||
self.maxammo_cells = self.maxammo_cells + 200;
|
||
self.maxammo_rockets = self.maxammo_rockets + 60;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
//}
|
||
}
|
||
if (inp == 5)
|
||
{
|
||
BuyWeapon(2200,WEAP_GRENADE_LAUNCHER);
|
||
}
|
||
if (inp == 6)
|
||
{
|
||
BuyWeapon(2200,WEAP_LIGHTNING);
|
||
}
|
||
if (inp == 7)
|
||
{
|
||
BuyWeapon(1800,WEAP_LIGHT_ASSAULT);
|
||
}
|
||
// if (inp == 8) {
|
||
// centerprint(self, "No previous menu\n");
|
||
// }
|
||
if (inp == 9)
|
||
{
|
||
Menu_SecondaryWeapon();
|
||
self.current_menu = MENU_SECONDARY_WEAPON;
|
||
}
|
||
if (inp == 10)
|
||
{
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
}
|
||
// Otherwise, the impulse is passed on
|
||
// SB to where, nobody knows
|
||
};
|
||
|
||
|
||
// ====================================================================
|
||
// Prints Menu of Secondary Weapons Available
|
||
// ====================================================================
|
||
void() Menu_SecondaryWeapon =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
/*l1 = mstr2(self.weapons_carried,self.cutf_items, WEAP_DAEDALUS, CUTF_KNIFE,
|
||
" .. Impulse Rifle <20> 1400\n .. Knife <20> 650\n",
|
||
"* .. Impulse Rifle <20> 1400\n .. Knife <20> 650\n",
|
||
" .. Impulse Rifle <20> 1400\n* .. Knife <20> 650\n",
|
||
"* .. Impulse Rifle <20> 1400\n* .. Knife <20> 650\n");*/
|
||
|
||
l1 = mstr2(self.weapons_carried,self.cutf_items, WEAP_SNG, CUTF_KNIFE,
|
||
" .. Super Nailgun <20> 800\n .. Knife <20> 650\n",
|
||
"* .. Super Nailgun <20> 800\n .. Knife <20> 650\n",
|
||
" .. Super Nailgun <20> 800\n* .. Knife <20> 650\n",
|
||
"* .. Super Nailgun <20> 800\n* .. Knife <20> 650\n");
|
||
|
||
|
||
l2 = mstr(self.weapons_carried, WEAP_SUPER_SHOTGUN, WEAP_LASER,
|
||
" <20>.. Double Barrel <20> 575\n <20>.. Rail Gun <20> 500\n",
|
||
"* <20>.. Double Barrel <20> 575\n <20>.. Rail Gun <20> 500\n",
|
||
" <20>.. Double Barrel <20> 575\n* <20>.. Rail Gun <20> 500\n",
|
||
"* <20>.. Double Barrel <20> 575\n* <20>.. Rail Gun <20> 500\n");
|
||
|
||
l3 = mstr(self.weapons_carried, WEAP_NAILGUN, WEAP_TRANQ,
|
||
" <20>.. Nail Gun <20> 400\n <20>.. Tranquilizer <20> 300\n",
|
||
"* <20>.. Nail Gun <20> 400\n <20>.. Tranquilizer <20> 300\n",
|
||
" <20>.. Nail Gun <20> 400\n* <20>.. Tranquilizer <20> 300\n",
|
||
"* <20>.. Nail Gun <20> 400\n* <20>.. Tranquilizer <20> 300\n");
|
||
|
||
l4 = " <20>.. Single Barrel <20> 50\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.weapons_carried & WEAP_SHOTGUN)
|
||
l4 = "* <20>.. Single Barrel <20> 50\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD><EFBFBD> Secondary Weapons <11><>\n\n",l1,l2,l3,l4,temp," dollars left\n");
|
||
}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
void(float inp) Menu_SecondaryWeapon_Input =
|
||
{
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
if (inp == 1) {
|
||
//BuyWeapon(1400, WEAP_DAEDALUS);
|
||
BuyWeapon(800,WEAP_SNG);
|
||
//self.maxammo_
|
||
}
|
||
|
||
//Knife
|
||
#undef PRICE
|
||
#define PRICE 650
|
||
if (inp == 2) {
|
||
if (self.cutf_items & CUTF_KNIFE) //Already have it
|
||
{
|
||
//Clean up knife-less warlocks (sync this with Custom.qc)
|
||
if (self.job & JOB_WARLOCK) { // OfN Fix getting extra money with demon lore
|
||
sprint(self, PRINT_HIGH, "You will need this knife being a warlock!\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
|
||
PrintRefund(PRICE);
|
||
self.cutf_items = self.cutf_items - CUTF_KNIFE;
|
||
}
|
||
else if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.cutf_items = self.cutf_items | CUTF_KNIFE;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
if (inp == 3) {
|
||
BuyWeapon(575,WEAP_SUPER_SHOTGUN);
|
||
}
|
||
if (inp == 4) {
|
||
BuyWeapon(500,WEAP_LASER);
|
||
}
|
||
if (inp == 5) {
|
||
BuyWeapon(400,WEAP_NAILGUN);
|
||
}
|
||
if (inp == 6) {
|
||
BuyWeapon(300,WEAP_TRANQ);
|
||
}
|
||
if (inp == 7) {
|
||
BuyWeapon(50,WEAP_SHOTGUN);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_PrimaryWeapon();
|
||
self.current_menu = MENU_PRIMARY_WEAPON;
|
||
}
|
||
if (inp == 9)
|
||
{
|
||
Menu_MiscWeapon();
|
||
self.current_menu = MENU_MISC_WEAPON;
|
||
}
|
||
if (inp == 10)
|
||
{
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
}
|
||
};
|
||
|
||
|
||
// ====================================================================
|
||
// Prints Menu of Secondary Weapons Available
|
||
// ====================================================================
|
||
void() Menu_MiscWeapon =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
|
||
|
||
l1 = mstr(self.weapons_carried, WEAP_MAUSER, WEAP_AIRF,
|
||
" .. Mauser <20> 2400\n .. Air-Fist <20> 1600\n",
|
||
"* .. Mauser <20> 2400\n .. Air-Fist <20> 1600\n",
|
||
" .. Mauser <20> 2400\n* .. Air-Fist <20> 1600\n",
|
||
"* .. Mauser <20> 2400\n* .. Air-Fist <20> 1600\n");
|
||
|
||
l2 = mstr2(self.weapons_carried, self.weapons_carried, WEAP_DAEDALUS, WEAP_LASERCANNON,
|
||
" <20>.. Impulse Rifle <20> 1500\n <20>.. Laser Cannon <20> 1200\n",
|
||
"* <20>.. Impulse Rifle <20> 1500\n <20>.. Laser Cannon <20> 1200\n",
|
||
" <20>.. Impulse Rifle <20> 1500\n* <20>.. Laser Cannon <20> 1200\n",
|
||
"* <20>.. Impulse Rifle <20> 1500\n* <20>.. Laser Cannon <20> 1200\n");
|
||
|
||
l3="\n\n"; l4="\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
/*l3 = mstr(self.weapons_carried, WEAP_LASER, WEAP_NAILGUN,
|
||
" <20>.. Railgun <20> 500\n <20>.. Nailgun <20> 800\n",
|
||
"* <20>.. Railgun <20> 500\n <20>.. Nailgun <20> 800\n",
|
||
" <20>.. Railgun <20> 500\n* <20>.. Nailgun <20> 800\n",
|
||
"* <20>.. Railgun <20> 500\n* <20>.. Nailgun <20> 800\n");
|
||
|
||
|
||
|
||
l2 = " <20>.. Impulse Rifle <20> 1500\n\n\n\n\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.weapons_carried & WEAP_DAEDALUS)
|
||
l2 = "* <20>.. Impulse Rifle <20> 1500\n\n\n\n\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";*/
|
||
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD><EFBFBD> Misc<73>Extra Weapons <11><>\n\n",l1,l2,l3,l4,temp," dollars left\n");
|
||
}; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
void(float inp) Menu_MiscWeapon_Input =
|
||
{
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
|
||
if (inp == 1) {
|
||
BuyWeapon(2400, WEAP_MAUSER);
|
||
//sprint(self, PRINT_HIGH, "Unfortunately all stocks of this item have been requisitioned to increase the glory of the Queen. God save the Queen!\n");
|
||
}
|
||
if (inp == 2) {
|
||
|
||
BuyWeapon(1600,WEAP_AIRF);
|
||
//sprint(self, PRINT_HIGH, "Unfortunately all stocks of this item have been requisitioned to increase the glory of the Queen. God save the Queen!\n");
|
||
}
|
||
|
||
if (inp == 3) {
|
||
|
||
BuyWeapon(1500,WEAP_DAEDALUS);
|
||
}
|
||
if (inp == 4) {
|
||
if (no_laser)
|
||
{
|
||
sprint(self,PRINT_HIGH,"Laser cannon is disabled, sorry.\n");
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
BuyWeapon(1200,WEAP_LASERCANNON);
|
||
|
||
}/*
|
||
if (inp == 5) {
|
||
BuyWeapon(500,WEAP_LASER);
|
||
}
|
||
if (inp == 6) {
|
||
BuyWeapon(800,WEAP_NAILGUN);
|
||
}
|
||
if (inp == 7) {
|
||
BuyWeapon(300,WEAP_TRANQ);
|
||
}*/
|
||
if (inp == 8) {
|
||
Menu_SecondaryWeapon();
|
||
self.current_menu = MENU_SECONDARY_WEAPON;
|
||
}
|
||
if (inp == 9)
|
||
{
|
||
Menu_Legs();
|
||
self.current_menu = MENU_LEGS;
|
||
}
|
||
if (inp == 10)
|
||
{
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
}
|
||
};
|
||
|
||
// =============================
|
||
// Prints Menu of Legs for Sale
|
||
// =============================
|
||
void() Menu_Legs =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = " .. Cheetah <20> 9000\n .. Cougar <20> 6000\n";
|
||
l2 = " <20>.. White Rhino <20> 3250\n <20>.. Scrub Jay <20> 2500\n";
|
||
l3 = " <20>.. KGB Officer <20> 1250\n <20>.. Black Mamba <20> 500\n";
|
||
l4 = " <20>.. ImperialPenguin <20> 0\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
/*
|
||
650 9000
|
||
420 6000
|
||
330 3250
|
||
310 2500
|
||
290 1250
|
||
270 500
|
||
250 0
|
||
*/
|
||
|
||
if (self.custom_speed == 650 )
|
||
l1 = "* .. Cheetah <20> 9000\n .. Cougar <20> 6000\n";
|
||
else if (self.custom_speed == 420 )
|
||
l1 = " .. Cheetah <20> 9000\n* .. Cougar <20> 6000\n";
|
||
else if (self.custom_speed == 330 )
|
||
l2 = "* <20>.. White Rhino <20> 3250\n <20>.. Scrub Jay <20> 2500\n";
|
||
else if (self.custom_speed == 310 )
|
||
l2 = " <20>.. White Rhino <20> 3250\n* <20>.. Scrub Jay <20> 2500\n";
|
||
else if (self.custom_speed == 290)
|
||
l3 = "* <20>.. KGB Officer <20> 1250\n <20>.. Black Mamba <20> 500\n";
|
||
else if (self.custom_speed == 270)
|
||
l3 = " <20>.. KGB Officer <20> 1250\n* <20>.. Black Mamba <20> 500\n";
|
||
else
|
||
l4 = "* <20>.. ImperialPenguin <20> 0\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD><EFBFBD> Leg Enhancements <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
}; //<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
void(float inp) Menu_Legs_Input =
|
||
{
|
||
|
||
//Second, sell off our current legs
|
||
if (inp < 8) {
|
||
if (self.custom_speed == 650) {
|
||
PrintRefund(9000);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 1) {self.impulse = 0; return;}
|
||
}
|
||
else if (self.custom_speed == 420) {
|
||
PrintRefund(6000);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 2) {self.impulse = 0; return;}
|
||
}
|
||
else if (self.custom_speed == 330) {
|
||
PrintRefund(3250);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 3) {self.impulse = 0; return;}
|
||
}
|
||
else if (self.custom_speed == 310) {
|
||
PrintRefund(2500);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 4) {self.impulse = 0; return;}
|
||
}
|
||
else if (self.custom_speed == 290) {
|
||
PrintRefund(1250);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 5) {self.impulse = 0; return;}
|
||
}
|
||
else if (self.custom_speed == 270) {
|
||
PrintRefund(500);
|
||
self.custom_speed = 250;
|
||
if (self.impulse == 6) {self.impulse = 0; return;}
|
||
}
|
||
}
|
||
|
||
#undef PRICE
|
||
#define PRICE 9000
|
||
if (inp == 1) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 650;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 6000
|
||
if (inp == 2) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 420;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 3250
|
||
if (inp == 3) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 330;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 2500
|
||
if (inp == 4) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 310;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 1250
|
||
if (inp == 5) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 290;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 500
|
||
if (inp == 6) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 270;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 0
|
||
if (inp == 7) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.custom_speed = 250;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_MiscWeapon();
|
||
self.current_menu = MENU_MISC_WEAPON;
|
||
}
|
||
if (inp == 9)
|
||
{
|
||
Menu_Health();
|
||
self.current_menu = MENU_HEALTH;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
// ==========================================
|
||
// Prints Menu of Armor and Health Available
|
||
// ==========================================
|
||
void() Menu_Health =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = eqstr(self.maxarmor, 75, 100,
|
||
" .. 75 Green armor <20> 200\n .. 100 Yellow <20> 700\n",
|
||
"* .. 75 Green armor <20> 200\n .. 100 Yellow <20> 700\n",
|
||
" .. 75 Green armor <20> 200\n* .. 100 Yellow <20> 700\n");
|
||
|
||
l2 = eqstr(self.maxarmor, 150, 200,
|
||
" <20>.. 150 Red <20> 1400\n <20>.. 200 Red <20> 2200\n",
|
||
"* <20>.. 150 Red <20> 1400\n <20>.. 200 Red <20> 2200\n",
|
||
" <20>.. 150 Red <20> 1400\n* <20>.. 200 Red <20> 2200\n");
|
||
|
||
l3 = " <20>.. 300 Red <20> 3600\n";
|
||
|
||
if (self.maxarmor == 300 )
|
||
l3 = "* <20>.. 300 Red <20> 3600\n";
|
||
|
||
l4 = " <20>.. +50 Health <20> 1000\n <20>.. +5 Health <20> 100\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Armor and Health <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
|
||
void(float inp) Menu_Health_Input =
|
||
{
|
||
//Fix multiple armor buy bug
|
||
//WW: Modded to allow to sell armor back
|
||
if (inp >= 1 && inp <= 5 && self.maxarmor > 0) {
|
||
if (self.maxarmor == 75)
|
||
{
|
||
if (inp == 1) {
|
||
inp = 0;
|
||
PrintRefund(200);
|
||
}
|
||
else
|
||
self.money = self.money + 200;
|
||
}
|
||
else if (self.maxarmor == 100)
|
||
{
|
||
if (inp == 2) {
|
||
inp = 0;
|
||
PrintRefund(700);
|
||
}
|
||
else
|
||
self.money = self.money + 700;
|
||
}
|
||
else if (self.maxarmor == 150)
|
||
{
|
||
if (inp == 3) {
|
||
inp = 0;
|
||
PrintRefund(1400);
|
||
}
|
||
else
|
||
self.money = self.money + 1400;
|
||
}
|
||
else if (self.maxarmor == 200)
|
||
{
|
||
if (inp == 4) {
|
||
inp = 0;
|
||
PrintRefund(2200);
|
||
}
|
||
else
|
||
self.money = self.money + 2200;
|
||
}
|
||
else if (self.maxarmor == 300)
|
||
{
|
||
if (inp == 5) {
|
||
inp = 0;
|
||
PrintRefund(3600);
|
||
}
|
||
else
|
||
self.money = self.money + 3600;
|
||
}
|
||
self.armor_allowed = self.armorvalue = self.maxarmor = 0;
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 200
|
||
if (inp == 1) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.maxarmor = 75;
|
||
self.armorvalue = self.maxarmor;
|
||
self.armortype = 0.3; // Green
|
||
self.armor_allowed = 0.3; //Green max
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 700
|
||
if (inp == 2) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.maxarmor = 100;
|
||
self.armorvalue = self.maxarmor;
|
||
self.armortype = 0.6; // Yellow
|
||
self.armor_allowed = 0.6; //Yellow max
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 1400
|
||
if (inp == 3) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.maxarmor = 150;
|
||
self.armorvalue = self.maxarmor;
|
||
self.armortype = 0.8; //Red armor
|
||
self.armor_allowed = 0.8; //Max
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 2200
|
||
if (inp == 4) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.maxarmor = 200;
|
||
self.armorvalue = self.maxarmor;
|
||
self.armortype = 0.8; //Red armor
|
||
self.armor_allowed = 0.8; //Red max
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 3600
|
||
if (inp == 5) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.maxarmor = 300;
|
||
self.armorvalue = self.maxarmor;
|
||
self.armortype = 0.8; //Red armor (used to be 0.9)
|
||
self.armor_allowed = 0.8; //Red max
|
||
PrintMoney();
|
||
W_SetCurrentAmmo ();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 1000
|
||
if (inp == 6) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.max_health = self.max_health + 50;
|
||
self.health = self.max_health;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
{
|
||
// WW: Modded to allow to sell health back
|
||
// Buying #6 with <#7 money resets hp
|
||
if (self.money < 100)
|
||
{
|
||
self.money = self.money + ((self.max_health - 50) / 5) * 100;
|
||
self.max_health = 50;
|
||
self.health = self.max_health;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 100
|
||
if (inp == 7) {
|
||
if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.max_health = self.max_health + 5;
|
||
self.health = self.max_health;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
if (inp == 8)
|
||
{
|
||
Menu_Legs();
|
||
self.current_menu = MENU_LEGS;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Armor();
|
||
self.current_menu = MENU_ARMOR;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
|
||
// ==========================================
|
||
// Prints Menu of Special Armor and Ammo
|
||
// ==========================================
|
||
void() Menu_Armor =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.tf_items, NIT_CERAMIC, NIT_GEL,
|
||
" .. Ceramic Armor <20> 575\n .. Impact Armor <20> 625\n",
|
||
"* .. Ceramic Armor <20> 575\n .. Impact Armor <20> 625\n",
|
||
" .. Ceramic Armor <20> 575\n* .. Impact Armor <20> 625\n",
|
||
"* .. Ceramic Armor <20> 575\n* .. Impact Armor <20> 625\n");
|
||
|
||
l2 = mstr(self.tf_items, NIT_ASBESTOS, NIT_KEVLAR,
|
||
" <20>.. Asbestos Armor <20> 750\n <20>.. Kevlar Armor <20> 1200\n",
|
||
"* <20>.. Asbestos Armor <20> 750\n <20>.. Kevlar Armor <20> 1200\n",
|
||
" <20>.. Asbestos Armor <20> 750\n* <20>.. Kevlar Armor <20> 1200\n",
|
||
"* <20>.. Asbestos Armor <20> 750\n* <20>.. Kevlar Armor <20> 1200\n");
|
||
|
||
l3 = mstr(self.tf_items, NIT_BLAST, NIT_AMMO_BACKPACK,
|
||
" <20>.. Blast Armor <20> 1500\n <20>.. Ammo Backpack <20> 300\n",
|
||
"* <20>.. Blast Armor <20> 1500\n <20>.. Ammo Backpack <20> 300\n",
|
||
" <20>.. Blast Armor <20> 1500\n* <20>.. Ammo Backpack <20> 300\n",
|
||
"* <20>.. Blast Armor <20> 1500\n* <20>.. Ammo Backpack <20> 300\n");
|
||
|
||
l4 = " <20>.. Ammo Bandolier <20> 200\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tf_items & NIT_AMMO_BANDOLIER)
|
||
l4 = "* <20>.. Ammo Bandolier <20> 200\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Special Armor<6F>Ammo <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
|
||
void(float inp) Menu_Armor_Input =
|
||
{
|
||
if (inp == 1) {
|
||
BuyItem(575,NIT_CERAMIC);
|
||
}
|
||
if (inp == 2) {
|
||
BuyItem(625, NIT_GEL);
|
||
}
|
||
if (inp == 3) {
|
||
BuyItem(750,NIT_ASBESTOS);
|
||
}
|
||
if (inp == 4) {
|
||
BuyItem(1200,NIT_KEVLAR);
|
||
}
|
||
if (inp == 5) {
|
||
BuyItem(1500,NIT_BLAST);
|
||
}
|
||
if (inp == 6) {
|
||
BuyItem(300,NIT_AMMO_BACKPACK);
|
||
}
|
||
if (inp == 7) {
|
||
BuyItem(200,NIT_AMMO_BANDOLIER);
|
||
}
|
||
if (inp == 8)
|
||
{
|
||
Menu_Health();
|
||
self.current_menu = MENU_HEALTH;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Special();
|
||
self.current_menu = MENU_SPECIAL;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
|
||
|
||
// ==================================
|
||
// Prints Menu of Specials Available
|
||
// ==================================
|
||
void() Menu_Special =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.tf_items, NIT_SCANNER, NIT_AUTOSCANNER,
|
||
" .. Scanner <20> 650\n .. Auto-Scanner <20> 250\n",
|
||
"* .. Scanner <20> 650\n .. Auto-Scanner <20> 250\n",
|
||
" .. Scanner <20> 650\n* .. Auto-Scanner <20> 250\n",
|
||
"* .. Scanner <20> 650\n* .. Auto-Scanner <20> 250\n");
|
||
|
||
l2 = mstr2(self.cutf_items, self.weapons_carried, CUTF_DETPACK, WEAP_MEDIKIT,
|
||
" <20>.. Detpack <20> 800\n <20>.. Medikit <20> 1550\n",
|
||
"* <20>.. Detpack <20> 800\n <20>.. Medikit <20> 1550\n",
|
||
" <20>.. Detpack <20> 800\n* <20>.. Medikit <20> 1550\n",
|
||
"* <20>.. Detpack <20> 800\n* <20>.. Medikit <20> 1550\n");
|
||
|
||
l3 = mstr2(self.cutf_items, self.tf_items, CUTF_SPY_KIT, NIT_SCUBA,
|
||
" <20>.. Spy Kit <20> 2000\n <20>.. Scuba Gear <20> 1000\n",
|
||
"* <20>.. Spy Kit <20> 2000\n <20>.. Scuba Gear <20> 1000\n",
|
||
" <20>.. Spy Kit <20> 2000\n* <20>.. Scuba Gear <20> 1000\n",
|
||
"* <20>.. Spy Kit <20> 2000\n* <20>.. Scuba Gear <20> 1000\n");
|
||
|
||
l4 = " <20>.. Grapple <20> 3000\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.weapons_carried & WEAP_HOOK)
|
||
l4 = "* <20>.. Grapple <20> 3000\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Special Items <11><>\n\n",l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
|
||
void(float inp) Menu_Special_Input =
|
||
{
|
||
local string st2;
|
||
|
||
//Scanner
|
||
#undef PRICE
|
||
#define PRICE 650
|
||
|
||
//st = infokey(NIL, "no_grapple");
|
||
st2 = infokey(NIL, "no_spam");
|
||
if (inp == 1) {
|
||
if (self.tf_items & NIT_SCANNER)
|
||
{
|
||
//Clean up auto-medic (sync this with Custom.qc)
|
||
if (self.tf_items & NIT_AUTOSCANNER)
|
||
self.money = self.money + 250; //Sync this with price below
|
||
self.tf_items = self.tf_items & ~NIT_AUTOSCANNER;
|
||
|
||
PrintRefund(PRICE);
|
||
self.tf_items = self.tf_items & ~NIT_SCANNER;
|
||
self.tf_items_flags = self.tf_items_flags - (self.tf_items & NIT_SCANNER_ENEMY);
|
||
}
|
||
else if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.tf_items = self.tf_items | NIT_SCANNER;
|
||
self.tf_items_flags = self.tf_items_flags | NIT_SCANNER_ENEMY;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
if (inp == 2) { //Sync this with scanner above
|
||
BuyItem(250,NIT_AUTOSCANNER);
|
||
}
|
||
//Detpack
|
||
#undef PRICE
|
||
#define PRICE 800
|
||
if (inp == 3) {
|
||
if (st2 == "on") {//If admin disable it
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
// self.impulse=0;
|
||
return;
|
||
}
|
||
if (self.cutf_items & CUTF_DETPACK) //Already have it
|
||
{
|
||
PrintRefund(PRICE);
|
||
self.cutf_items = self.cutf_items - CUTF_DETPACK;
|
||
self.maxammo_detpack = self.maxammo_detpack - 1;
|
||
}
|
||
else if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.cutf_items = self.cutf_items | CUTF_DETPACK;
|
||
self.maxammo_detpack = self.maxammo_detpack + 1;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
#undef PRICE
|
||
#define PRICE 1550
|
||
if (inp == 4) {
|
||
if (self.weapons_carried & WEAP_MEDIKIT)
|
||
{
|
||
PrintRefund(PRICE);
|
||
self.weapons_carried = self.weapons_carried - WEAP_MEDIKIT;
|
||
self.maxammo_medikit = self.maxammo_medikit - 80;
|
||
}
|
||
else if (self.money >= PRICE) {
|
||
self.money = self.money - PRICE;
|
||
self.weapons_carried = self.weapons_carried | WEAP_MEDIKIT;
|
||
self.maxammo_medikit = self.maxammo_medikit + 80;
|
||
PrintMoney();
|
||
}
|
||
else
|
||
PrintNotEnoughMoney(PRICE);
|
||
}
|
||
if (inp == 5) {
|
||
BuyCuTF(2000,CUTF_SPY_KIT);
|
||
}
|
||
//Self-Contained Underwater Breathing Apparatus
|
||
if (inp == 6) {
|
||
BuyItem(1000,NIT_SCUBA);
|
||
}
|
||
if (inp == 7) {
|
||
if (no_grapple == 1) //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled the grapple on this map.\n");
|
||
self.impulse = 0;
|
||
return;
|
||
}
|
||
else if (allow_hook) //If map allows it...
|
||
sprint(self,PRINT_HIGH,"You can't sell your grapple on this map!\n");
|
||
else
|
||
BuyWeapon(3000,WEAP_HOOK);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Armor();
|
||
self.current_menu = MENU_ARMOR;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Special2();
|
||
self.current_menu = MENU_SPECIAL2;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
// ============================================//
|
||
// Prints Menu of Specials Available //
|
||
// ============================================//
|
||
void() Menu_Special2 =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.cutf_items, CUTF_JAMMER, CUTF_CYBERAUG,
|
||
" .. Scanner Jammer <20> 1000\n .. CyberAug Unit <20> 800\n",
|
||
"* .. Scanner Jammer <20> 1000\n .. CyberAug Unit <20> 800\n",
|
||
" .. Scanner Jammer <20> 1000\n* .. CyberAug Unit <20> 800\n",
|
||
"* .. Scanner Jammer <20> 1000\n* .. CyberAug Unit <20> 800\n");
|
||
|
||
/*
|
||
l2 = mstr(self.cutf_items, CUTF_SENSOR, CUTF_HOLO,
|
||
" <20>.. Motion sensor <20> 450\n <20>.. Holo device <20> 600\n",
|
||
"* <20>.. Motion sensor <20> 450\n <20>.. Holo device <20> 600\n",
|
||
" <20>.. Motion sensor <20> 450\n* <20>.. Holo device <20> 600\n",
|
||
"* <20>.. Motion sensor <20> 450\n* <20>.. Holo device <20> 600\n");
|
||
*/
|
||
|
||
l2 = mstr(self.cutf_items, CUTF_SENSOR, CUTF_FIELDGEN,
|
||
" <20>.. Motion Sensor <20> 450\n <20>.. Field Generator <20> 1600\n",
|
||
"* <20>.. Motion Sensor <20> 450\n <20>.. Field Generator <20> 1600\n",
|
||
" <20>.. Motion Sensor <20> 450\n* <20>.. Field Generator <20> 1600\n",
|
||
"* <20>.. Motion Sensor <20> 450\n* <20>.. Field Generator <20> 1600\n");
|
||
|
||
l3 = mstr(self.cutf_items, CUTF_FULLARMOUR, CUTF_TOSSABLEDET,
|
||
" <20>.. Full Armour <20> 250\n <20>.. C4 Tossable Det <20> 1200\n",
|
||
"* <20>.. Full Armour <20> 250\n <20>.. C4 Tossable Det <20> 1200\n",
|
||
" <20>.. Full Armour <20> 250\n* <20>.. C4 Tossable Det <20> 1200\n",
|
||
"* <20>.. Full Armour <20> 250\n* <20>.. C4 Tossable Det <20> 1200\n");
|
||
|
||
l4 = " <20>.. Dispenser <20> 600\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.cutf_items & CUTF_DISPENSER)
|
||
l4 = "* <20>.. Dispenser <20> 600\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> More Special Items <11><>\n\n",l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
|
||
void(float inp) Menu_Special2_Input =
|
||
{
|
||
local string st;
|
||
st = infokey(NIL, "no_spam");
|
||
|
||
if (inp == 1)//SB Jammer
|
||
BuyCuTF(1000, CUTF_JAMMER);
|
||
else if (inp == 2)//SB cybernetic augmentation
|
||
{
|
||
if (self.cutf_items & CUTF_CYBERAUG)
|
||
{
|
||
self.maxammo_medikit = self.maxammo_medikit - 80;
|
||
self.maxammo_cells = self.maxammo_cells - 80;
|
||
}
|
||
else
|
||
{
|
||
self.maxammo_medikit = self.maxammo_medikit + 80;
|
||
self.maxammo_cells = self.maxammo_cells + 80;
|
||
}
|
||
BuyCuTF(800,CUTF_CYBERAUG);
|
||
}
|
||
else if (inp == 3)//SB motion sensor
|
||
{
|
||
BuyCuTF(450,CUTF_SENSOR);
|
||
}
|
||
else if (inp == 4)//SB hax0r tool
|
||
{
|
||
BuyCuTF(1600,CUTF_FIELDGEN);
|
||
//BuyCuTF(600,CUTF_HOLO);
|
||
//sprint(self, PRINT_HIGH, "Activate the holograph with the 'holo' command.\n");
|
||
}
|
||
else if (inp == 5)//SB full armour
|
||
{
|
||
BuyCuTF(250,CUTF_FULLARMOUR);
|
||
}
|
||
else if (inp == 6)//SB C4 tossable detpack
|
||
{
|
||
if (no_c4==1)
|
||
{
|
||
sprint(self,PRINT_HIGH,"The C4 is disabled, sorry\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
BuyCuTF(1200,CUTF_TOSSABLEDET);
|
||
sprint(self, PRINT_HIGH, "Type 'throwdet' to throw the detpack.\n");
|
||
}
|
||
}
|
||
else if (inp == 7)
|
||
BuyCuTF(600,CUTF_DISPENSER);
|
||
else if (inp == 8) {
|
||
Menu_Special();
|
||
self.current_menu = MENU_SPECIAL;
|
||
}
|
||
else if (inp == 9) {
|
||
Menu_Gren1();
|
||
self.current_menu = MENU_GREN1;
|
||
}
|
||
else if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
////////////////////////////////////////////////////////////////////////
|
||
string(float v1, float v2, string s1, string s2, string s3, string s4, string s5, string s6) grenstr =
|
||
{
|
||
// Return string based on how values compare to gren1 and gren2
|
||
|
||
if ((self.tp_grenades_1 != v1 && self.tp_grenades_2 != v1) && (self.tp_grenades_1 != v2 && self.tp_grenades_2 != v2)) return s1;
|
||
// If we have one gren1 and no gren2s, return s2
|
||
if ((self.tp_grenades_1 == v1 || self.tp_grenades_2 == v1) && (self.tp_grenades_1 != v2 && self.tp_grenades_2 != v2) && self.tp_grenades_1 != self.tp_grenades_2) return s2;
|
||
// If no gren1 and one gren2, return s3
|
||
if ((self.tp_grenades_1 != v1 && self.tp_grenades_2 != v1) && (self.tp_grenades_1 == v2 || self.tp_grenades_2 == v2) && self.tp_grenades_1 != self.tp_grenades_2) return s3;
|
||
// If one of both, return s4...
|
||
if ((self.tp_grenades_1 == v1 || self.tp_grenades_2 == v1) && (self.tp_grenades_1 == v2 || self.tp_grenades_2 == v2)) return s4;
|
||
// If two gren1s, return s5
|
||
if (self.tp_grenades_1 == v1 && self.tp_grenades_2 == v1) return s5;
|
||
// If two gren2s, return s6
|
||
if (self.tp_grenades_1 == v2 && self.tp_grenades_2 == v2) return s6;
|
||
|
||
return "BUG on grenstr()\n";
|
||
};
|
||
|
||
/*
|
||
0 0
|
||
1 0
|
||
0 1
|
||
1 1
|
||
2 0
|
||
0 2
|
||
*/
|
||
// ====================================
|
||
// Prints Menu of Grenade-1s Available
|
||
// ====================================
|
||
|
||
void() Menu_Gren1 =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = grenstr(GR_TYPE_NORMAL, GR_TYPE_FLAME,
|
||
" .. Normal <20> 500\n .. Flame <20> 750\n",
|
||
"1 .. Normal <20> 500\n .. Flame <20> 750\n",
|
||
" .. Normal <20> 500\n1 .. Flame <20> 750\n",
|
||
"1 .. Normal <20> 500\n1 .. Flame <20> 750\n",
|
||
"2 .. Normal <20> 500\n .. Flame <20> 750\n",
|
||
" .. Normal <20> 500\n2 .. Flame <20> 750\n");
|
||
|
||
l2 = grenstr(GR_TYPE_GAS, GR_TYPE_EMP,
|
||
" <20>.. Gas <20> 1200\n <20>.. EMP <20> 1300\n",
|
||
"1 <20>.. Gas <20> 1200\n <20>.. EMP <20> 1300\n",
|
||
" <20>.. Gas <20> 1200\n1 <20>.. EMP <20> 1300\n",
|
||
"1 <20>.. Gas <20> 1200\n1 <20>.. EMP <20> 1300\n",
|
||
"2 <20>.. Gas <20> 1200\n <20>.. EMP <20> 1300\n",
|
||
" <20>.. Gas <20> 1200\n2 <20>.. EMP <20>131200\n");
|
||
|
||
l3 = grenstr(GR_TYPE_FRAG, GR_TYPE_NAIL,
|
||
" <20>.. Frag <20> 1300\n <20>.. Nail <20> 1400\n",
|
||
"1 <20>.. Frag <20> 1300\n <20>.. Nail <20> 1400\n",
|
||
" <20>.. Frag <20> 1300\n1 <20>.. Nail <20> 1400\n",
|
||
"1 <20>.. Frag <20> 1300\n1 <20>.. Nail <20> 1400\n",
|
||
"2 <20>.. Frag <20> 1300\n <20>.. Nail <20> 1400\n",
|
||
" <20>.. Frag <20> 1300\n2 <20>.. Nail <20> 1400\n");
|
||
|
||
l4 = " <20>.. MIRV <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
if (self.tp_grenades_1 == GR_TYPE_MIRV && self.tp_grenades_2 == GR_TYPE_MIRV)
|
||
l4 = "2 <20>.. MIRV <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
else if (self.tp_grenades_2 == GR_TYPE_MIRV || self.tp_grenades_1 == GR_TYPE_MIRV)
|
||
l4 = "1 <20>.. MIRV <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
//l4 = "\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Grenades <20> Combat <11><>\n\n",l1,l2,l3,l4, temp," dollars left\n");
|
||
|
||
|
||
};
|
||
void(float inp) Menu_Gren1_Input =
|
||
{
|
||
local string st, st2;
|
||
st = infokey(NIL, "no_gasgren");
|
||
st2 = infokey (NIL, "no_spam");
|
||
|
||
if (inp == 1)
|
||
BuyGren(500,GR_TYPE_NORMAL);
|
||
else if (inp == 2)
|
||
BuyGren(750,GR_TYPE_FLAME);
|
||
else if (inp == 3)
|
||
{
|
||
if (st == "on")
|
||
{
|
||
sprint(self, PRINT_HIGH, "The admin has disabled gas grens on this map.\n");
|
||
return;
|
||
}
|
||
if (st2 == "on") //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren(1200,GR_TYPE_GAS);
|
||
}
|
||
else if (inp == 4)
|
||
{
|
||
if (st2 == "on") //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren(1300,GR_TYPE_EMP);
|
||
}
|
||
else if (inp == 5)
|
||
{
|
||
if (st2 == "on") //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren(1300,GR_TYPE_FRAG);
|
||
}
|
||
else if (inp == 6)
|
||
{
|
||
BuyGren(1400,GR_TYPE_NAIL);
|
||
}
|
||
if (inp == 7)
|
||
{
|
||
if (st2 == "on") //If admin disable it
|
||
{
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren(1500,GR_TYPE_MIRV);
|
||
}
|
||
|
||
if (inp == 8)
|
||
{
|
||
Menu_Special2();
|
||
self.current_menu = MENU_SPECIAL2;
|
||
}
|
||
if (inp == 9)
|
||
{
|
||
Menu_Gren2();
|
||
self.current_menu = MENU_GREN2;
|
||
}
|
||
else if (inp == 10)
|
||
DropFromCustomClassGen();
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
|
||
// ====================================
|
||
// Prints Menu of Grenade-2s Available
|
||
// ====================================
|
||
void() Menu_Gren2 =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = grenstr(GR_TYPE_FLARE, GR_TYPE_CALTROP,
|
||
" .. Flare <20> 300\n .. Caltrop <20> 500\n",
|
||
"1 .. Flare <20> 300\n .. Caltrop <20> 500\n",
|
||
" .. Flare <20> 300\n1 .. Caltrop <20> 500\n",
|
||
"1 .. Flare <20> 300\n1 .. Caltrop <20> 500\n",
|
||
"2 .. Flare <20> 300\n .. Caltrop <20> 500\n",
|
||
" .. Flare <20> 300\n2 .. Caltrop <20> 500\n");
|
||
|
||
l2 = grenstr(GR_TYPE_CONCUSSION, GR_TYPE_FLASH,
|
||
" <20>.. Concussion <20> 1000\n <20>.. Flash <20> 1000\n",
|
||
"1 <20>.. Concussion <20> 1000\n <20>.. Flash <20> 1000\n",
|
||
" <20>.. Concussion <20> 1000\n1 <20>.. Flash <20> 1000\n",
|
||
"1 <20>.. Concussion <20> 1000\n1 <20>.. Flash <20> 1000\n",
|
||
"2 <20>.. Concussion <20> 1000\n <20>.. Flash <20> 1000\n",
|
||
" <20>.. Concussion <20> 1000\n2 <20>.. Flash <20> 1000\n");
|
||
|
||
l3 = grenstr(GR_TYPE_ANTIGRAV, GR_TYPE_BIO,
|
||
" <20>.. AntiGrav <20> 1000\n <20>.. Bio-Infection <20> 1450\n",
|
||
"1 <20>.. AntiGrav <20> 1000\n <20>.. Bio-Infection <20> 1450\n",
|
||
" <20>.. AntiGrav <20> 1000\n1 <20>.. Bio-Infection <20> 1450\n",
|
||
"1 <20>.. AntiGrav <20> 1000\n1 <20>.. Bio-Infection <20> 1450\n",
|
||
"2 <20>.. AntiGrav <20> 1000\n <20>.. Bio-Infection <20> 1450\n",
|
||
" <20>.. AntiGrav <20> 1000\n2 <20>.. Bio-Infection <20> 1450\n");
|
||
|
||
//.. Flash <20> 1000
|
||
//.. Krac <20> 1500
|
||
|
||
l4 = " <20>.. Krac <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tp_grenades_1 == GR_TYPE_KRAC && self.tp_grenades_2 == GR_TYPE_KRAC)
|
||
l4 = "2 <20>.. Krac <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
else if (self.tp_grenades_1 == GR_TYPE_KRAC || self.tp_grenades_2 == GR_TYPE_KRAC)
|
||
l4 = "1 <20>.. Krac <20> 1500\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
//l4 = "\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Grenades <20> Utility <11><>\n\n",l1,l2,l3,l4, temp," dollars left\n");
|
||
|
||
};
|
||
void(float inp) Menu_Gren2_Input =
|
||
{
|
||
local string st, st2;
|
||
st = infokey(NIL, "no_antigrav");
|
||
st2 = infokey(NIL, "no_spam");
|
||
|
||
//WK I should have done all the buy menus like this
|
||
//SB I reckon - this one actually looks nice and makes sense
|
||
if (inp == 1)
|
||
{
|
||
BuyGren(300, GR_TYPE_FLARE);
|
||
}
|
||
if (inp == 2)
|
||
{
|
||
if (st2 == "on")
|
||
sprint(self, PRINT_HIGH, "The admin has disabled spam devices on this map.\n");
|
||
else
|
||
BuyGren(500, GR_TYPE_CALTROP);
|
||
}
|
||
if (inp == 3)
|
||
{
|
||
BuyGren(1000, GR_TYPE_CONCUSSION);
|
||
}
|
||
if (inp == 4)
|
||
{
|
||
BuyGren(1000,GR_TYPE_FLASH);
|
||
}
|
||
if (inp == 5)
|
||
{
|
||
if (st == "on")
|
||
sprint(self, PRINT_HIGH, "The admin has disabled anti-grav grens on this map.\n");
|
||
else
|
||
BuyGren(1000, GR_TYPE_ANTIGRAV);
|
||
}
|
||
if (inp == 6)
|
||
{
|
||
BuyGren(1450, GR_TYPE_BIO);
|
||
}
|
||
if (inp == 7)
|
||
{
|
||
BuyGren(1500, GR_TYPE_KRAC);
|
||
}
|
||
else if (inp == 8)
|
||
{
|
||
Menu_Gren1();
|
||
self.current_menu = MENU_GREN1;
|
||
}
|
||
else if (inp == 9)
|
||
{
|
||
Menu_Engineering();
|
||
self.current_menu = MENU_ENGINEERING;
|
||
}
|
||
if (inp == 10)
|
||
{
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
|
||
// ====================================
|
||
// Prints Menu of Grenade-1s Available
|
||
// ====================================
|
||
/*void() Menu_Gren1 =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = eqstr(self.tp_grenades_1, GR_TYPE_NORMAL, GR_TYPE_FLASH,
|
||
" .. Normal <20> 500\n .. Flash <20> 1000\n",
|
||
"* .. Normal <20> 500\n .. Flash <20> 1000\n",
|
||
" .. Normal <20> 500\n* .. Flash <20> 1000\n");
|
||
|
||
l2 = eqstr(self.tp_grenades_1, GR_TYPE_ANTIGRAV, GR_TYPE_EMP,
|
||
" <20>.. AntiGrav <20> 1200\n <20>.. EMP <20> 1200\n",
|
||
"* <20>.. AntiGrav <20> 1200\n <20>.. EMP <20> 1200\n",
|
||
" <20>.. AntiGrav <20> 1200\n* <20>.. EMP <20> 1200\n");
|
||
|
||
if (allow_antigrav==0) {
|
||
l2 = eqstr(self.tp_grenades_1, GR_TYPE_CONCUSSION, GR_TYPE_EMP,
|
||
" <20>.. Concussion <20> 1000\n <20>.. EMP <20> 1200\n",
|
||
"* <20>.. Concussion <20> 1000\n <20>.. EMP <20> 1200\n",
|
||
" <20>.. Concussion <20> 1000\n* <20>.. EMP <20> 1200\n");
|
||
}
|
||
|
||
l3 = eqstr(self.tp_grenades_1, GR_TYPE_FRAG, GR_TYPE_FLAME,
|
||
" <20>.. Frag <20> 1425\n <20>.. Flame <20> 1425\n",
|
||
"* <20>.. Frag <20> 1425\n <20>.. Flame <20> 1425\n",
|
||
" <20>.. Frag <20> 1425\n* <20>.. Flame <20> 1425\n");
|
||
|
||
l4 = " <20>.. Krac <20> 1500\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tp_grenades_1 == GR_TYPE_KRAC)
|
||
l4 = "* <20>.. Krac <20> 1500\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<22><><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<><6E> Grenades - 1st Slot<11><>\n\n",l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
void(float inp) Menu_Gren1_Input =
|
||
{
|
||
local string st2, st3;
|
||
|
||
st2 = infokey(NIL, "no_spam");
|
||
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
//WK I should have done all the buy menus like this
|
||
//SB I reckon - this one actually looks nice and makes sense
|
||
if (inp == 1) {
|
||
BuyGren1(500,GR_TYPE_NORMAL);
|
||
}
|
||
if (inp == 2) {
|
||
BuyGren1(1000,GR_TYPE_FLASH);
|
||
}
|
||
if (inp == 3) {
|
||
if (allow_antigrav == 0)
|
||
//sprint(self,PRINT_HIGH,"The admin has disabled anti-grav grens on this map.\n");
|
||
BuyGren1(1000,GR_TYPE_CONCUSSION);
|
||
else
|
||
BuyGren1(1200,GR_TYPE_ANTIGRAV);
|
||
}
|
||
if (inp == 4) {
|
||
BuyGren1(1200,GR_TYPE_EMP);
|
||
}
|
||
if (inp == 5) {
|
||
if (st2 == "on") {//If admin disable it
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren1(1425,GR_TYPE_FRAG);
|
||
}
|
||
if (inp == 6) {
|
||
BuyGren1(1425,GR_TYPE_FLAME);
|
||
}
|
||
if (inp == 7) {
|
||
BuyGren1(1500,GR_TYPE_KRAC);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Special2();
|
||
self.current_menu = MENU_SPECIAL2;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Gren2();
|
||
self.current_menu = MENU_GREN2;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
}
|
||
};
|
||
|
||
|
||
// ====================================
|
||
// Prints Menu of Grenade-2s Available
|
||
// ====================================
|
||
void() Menu_Gren2 =
|
||
{
|
||
local string temp,st;
|
||
temp = ftos(self.money);
|
||
st = infokey(NIL, "no_flare");
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = eqstr(self.tp_grenades_2, GR_TYPE_FLARE, GR_TYPE_CONCUSSION,
|
||
" .. Flare <20> 400\n .. Concussion <20> 1000\n",
|
||
"* .. Flare <20> 400\n .. Concussion <20> 1000\n",
|
||
" .. Flare <20> 400\n* .. Concussion <20> 1000\n");
|
||
|
||
if (st == "on" || st == "1") {
|
||
|
||
l1 = eqstr(self.tp_grenades_2, GR_TYPE_NORMAL, GR_TYPE_CONCUSSION,
|
||
" .. Normal <20> 500\n .. Concussion <20> 1000\n",
|
||
"* .. Normal <20> 500\n .. Concussion <20> 1000\n",
|
||
" .. Normal <20> 500\n* .. Concussion <20> 1000\n");
|
||
}
|
||
|
||
l2 = eqstr(self.tp_grenades_2, GR_TYPE_GAS, GR_TYPE_EMP,
|
||
" <20>.. Gas <20> 1200\n <20>.. EMP <20> 1200\n",
|
||
"* <20>.. Gas <20> 1200\n <20>.. EMP <20> 1200\n",
|
||
" <20>.. Gas <20> 1200\n* <20>.. EMP <20> 1200\n");
|
||
|
||
l3 = eqstr(self.tp_grenades_2, GR_TYPE_MIRV, GR_TYPE_FLAME,
|
||
" <20>.. MIRV <20> 1200\n <20>.. Flame <20> 1425\n",
|
||
"* <20>.. MIRV <20> 1200\n <20>.. Flame <20> 1425\n",
|
||
" <20>.. MIRV <20> 1200\n* <20>.. Flame <20> 1425\n");
|
||
|
||
l4 = " <20>.. Nail <20> 2000\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tp_grenades_2 == GR_TYPE_NAIL)
|
||
l4 = "* <20>.. Nail <20> 2000\n<>.. <20><><EFBFBD><EFBFBD> \n<>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<22><><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<><6E> Grenades - 2nd Slot<11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
void(float inp) Menu_Gren2_Input =
|
||
{
|
||
local string st, st2,st3;
|
||
st = infokey(NIL, "no_gasgren");
|
||
st2 = infokey (NIL, "no_spam");
|
||
st3 = infokey(NIL, "no_flare");
|
||
if (inp <= 10 && inp >= 1)
|
||
{
|
||
if (inp == 1) {
|
||
if (st3 == "on" || st3 == "1")
|
||
BuyGren2(500,GR_TYPE_NORMAL);
|
||
else
|
||
BuyGren2(400,GR_TYPE_FLARE);
|
||
}
|
||
if (inp == 2) {
|
||
BuyGren2(1000,GR_TYPE_CONCUSSION);
|
||
}
|
||
if (inp == 3) {
|
||
if (st == "on"){
|
||
sprint(self,PRINT_HIGH,"The admin has disabled gas grens on this map.\n");
|
||
return;
|
||
}
|
||
if (st2 == "on") {//If admin disable it
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren2(1200,GR_TYPE_GAS);
|
||
}
|
||
if (inp == 4) {
|
||
BuyGren2(1200,GR_TYPE_EMP);
|
||
}
|
||
if (inp == 5) {
|
||
if (st2 == "on") {//If admin disable it
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren2(1200,GR_TYPE_MIRV);
|
||
}
|
||
if (inp == 6) {
|
||
BuyGren2(1425,GR_TYPE_FLAME);
|
||
}
|
||
if (inp == 7) {
|
||
if (st2 == "on") {//If admin disable it
|
||
sprint(self,PRINT_HIGH,"The admin has disabled spam devices on this map.\n");
|
||
return;
|
||
}
|
||
BuyGren2(2000,GR_TYPE_NAIL);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Gren1();
|
||
self.current_menu = MENU_GREN1;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Engineering();
|
||
self.current_menu = MENU_ENGINEERING;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
}
|
||
};*/
|
||
|
||
|
||
// ====================================
|
||
// Prints Menu of Optional Items Here
|
||
// ====================================
|
||
void() Menu_Engineering =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr2(self.weapons_carried,self.cutf_items,WEAP_SPANNER,CUTF_SENTRYGUN,
|
||
" .. Spanner <20> 1200\n .. Build Sentrygun <20> 1500\n",
|
||
"* .. Spanner <20> 1200\n .. Build Sentrygun <20> 1500\n",
|
||
" .. Spanner <20> 1200\n* .. Build Sentrygun <20> 1500\n",
|
||
"* .. Spanner <20> 1200\n* .. Build Sentrygun <20> 1500\n");
|
||
|
||
l2 = mstr(self.tf_items,NIT_TURRET,NIT_TESLA,
|
||
" <20>.. Turret Upgrade <20> 700\n <20>.. Build Tesla <20> 1350\n",
|
||
"* <20>.. Turret Upgrade <20> 700\n <20>.. Build Tesla <20> 1350\n",
|
||
" <20>.. Turret Upgrade <20> 700\n* <20>.. Build Tesla <20> 1350\n",
|
||
"* <20>.. Turret Upgrade <20> 700\n* <20>.. Build Tesla <20> 1350\n");
|
||
|
||
l3 = mstr(self.tf_items, NIT_TESLA_UPGRADE, NIT_SECURITY_CAMERA,
|
||
" <20>.. Tesla Upgrade <20> 1650\n <20>.. Build Camera <20> 350\n",
|
||
"* <20>.. Tesla Upgrade <20> 1650\n <20>.. Build Camera <20> 350\n",
|
||
" <20>.. Tesla Upgrade <20> 1650\n* <20>.. Build Camera <20> 350\n",
|
||
"* <20>.. Tesla Upgrade <20> 1650\n* <20>.. Build Camera <20> 350\n");
|
||
|
||
l4 = " <20>.. BuildTeleporter <20> 1100\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tf_items & NIT_TELEPORTER)
|
||
l4 = "* <20>.. BuildTeleporter <20> 1100\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Engineering Items <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
void(float inp) Menu_Engineering_Input =
|
||
{
|
||
if (inp == 1) {
|
||
BuyWeapon(1200,WEAP_SPANNER);
|
||
}
|
||
if (inp == 2) {
|
||
BuyCuTF(1500,CUTF_SENTRYGUN);
|
||
}
|
||
if (inp == 3) {
|
||
BuyItem(700,NIT_TURRET);
|
||
}
|
||
if (inp == 4) {
|
||
BuyItem(1350,NIT_TESLA);
|
||
}
|
||
if (inp == 5) {
|
||
BuyItem(1650,NIT_TESLA_UPGRADE);
|
||
}
|
||
if (inp == 6) {
|
||
BuyItem(350,NIT_SECURITY_CAMERA);
|
||
}
|
||
if (inp == 7) {
|
||
BuyItem(1100,NIT_TELEPORTER);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Gren2();
|
||
self.current_menu = MENU_GREN2;
|
||
}
|
||
if (inp == 9) {
|
||
if (custom_mode!=1)
|
||
{
|
||
Menu_Profession();
|
||
self.current_menu = MENU_PROFESSION;
|
||
}
|
||
else
|
||
{
|
||
Menu_Proficiency();
|
||
self.current_menu = MENU_PROFICIENCY;
|
||
}
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
// =====================================
|
||
// Prints Menu of Professions Available
|
||
// =====================================
|
||
void() Menu_Profession =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = eqstr(self.job, JOB_THIEF, JOB_RUNNER,
|
||
" .. Thief <20>Hide<64><65> 950\n .. Runner <20>Sprint<6E><74> 400\n",
|
||
"* .. Thief <20>Hide<64><65> 950\n .. Runner <20>Sprint<6E><74> 400\n",
|
||
" .. Thief <20>Hide<64><65> 950\n* .. Runner <20>Sprint<6E><74> 400\n");
|
||
|
||
l2 = eqstr(self.job, JOB_WARLOCK, JOB_CHAPLAN,
|
||
" <20>.. Warlock <20>Summon<6F><6E> 1350\n <20>.. Chaplan<61>Inspire<72><65> 1200\n",
|
||
"* <20>.. Warlock <20>Summon<6F><6E> 1350\n <20>.. Chaplan<61>Inspire<72><65> 1200\n",
|
||
" <20>.. Warlock <20>Summon<6F><6E> 1350\n* <20>.. Chaplan<61>Inspire<72><65> 1200\n");
|
||
|
||
l3 = eqstr(self.job, JOB_BERSERKER, JOB_GUERILLA,
|
||
" <20>.. Berserker <20>Fury<72><79> 1200\n <20>.. Guerilla <20>Mines<65><73> 1500\n",
|
||
"* <20>.. Berserker <20>Fury<72><79> 1200\n <20>.. Guerilla <20>Mines<65><73> 1500\n",
|
||
" <20>.. Berserker <20>Fury<72><79> 1200\n* <20>.. Guerilla <20>Mines<65><73> 1500\n");
|
||
|
||
l4 = " <20>.. Judoka <20>Disarm<72><6D> 700\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.job == JOB_JUDOKA)
|
||
l4 = "* <20>.. Judoka <20>Disarm<72><6D> 700\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Skilled Profession <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n\nUse <20><><EFBFBD><EFBFBD><EFBFBD> to trigger ability\n");
|
||
|
||
};
|
||
void(float inp) Menu_Profession_Input =
|
||
{
|
||
if (inp == 1) {
|
||
BuyJob( 950,JOB_THIEF);
|
||
}
|
||
if (inp == 2) {
|
||
BuyJob( 400,JOB_RUNNER);
|
||
}
|
||
if (inp == 3) { //Sync this with price in knife
|
||
BuyJob( 1350,JOB_WARLOCK);
|
||
}
|
||
if (inp == 4) {
|
||
if (no_chaplan)
|
||
{
|
||
sprint(self,PRINT_HIGH,"Chaplan is disabled, sorry.\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
|
||
BuyJob(1200,JOB_CHAPLAN);
|
||
}
|
||
if (inp == 5) {
|
||
BuyJob(1200,JOB_BERSERKER);
|
||
}
|
||
if (inp == 6) {
|
||
BuyJob(1500,JOB_GUERILLA);
|
||
}
|
||
if (inp == 7) {
|
||
BuyJob( 700,JOB_JUDOKA);
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Engineering();
|
||
self.current_menu = MENU_ENGINEERING;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Profession2();
|
||
self.current_menu = MENU_PROFESSION2;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
|
||
|
||
// ==================================
|
||
// Prints Second page of Professions
|
||
// ==================================
|
||
void() Menu_Profession2 =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = eqstr(self.job, JOB_ARMY, JOB_HACKER,
|
||
" .. Army <20>Soldier<65><72> 1250\n .. CyberNet <20>Hack<63><6B> 1200\n",
|
||
"* .. Army <20>Soldier<65><72> 1250\n .. CyberNet <20>Hack<63><6B> 1200\n",
|
||
" .. Army <20>Soldier<65><72> 1250\n* .. CyberNet <20>Hack<63><6B> 1200\n");
|
||
|
||
l2 = eqstr(self.job, JOB_MARTYR, JOB_CRUSADER,
|
||
" <20>.. Martyr <20>Suicide<64><65> 1000\n <20>.. Crusader <20>Auras<61><73> 1600\n",
|
||
"* <20>.. Martyr <20>Suicide<64><65> 1000\n <20>.. Crusader <20>Auras<61><73> 1600\n",
|
||
" <20>.. Martyr <20>Suicide<64><65> 1000\n* <20>.. Crusader <20>Auras<61><73> 1600\n");
|
||
|
||
|
||
/*l2 = eqstr(self.job, JOB_MARTYR, JOB_MYSTIC,
|
||
" <20>.. Martyr <20>Suicide<64><65> 1000\n <20>.. Mystic <20>Regen<65><6E> 1000\n",
|
||
"* <20>.. Martyr <20>Suicide<64><65> 1000\n <20>.. Mystic <20>Regen<65><6E> 1000\n",
|
||
" <20>.. Martyr <20>Suicide<64><65> 1000\n* <20>.. Mystic <20>Regen<65><6E> 1000\n");*/
|
||
|
||
/*l3 = eqstr(self.job, JOB_BERSERKER, JOB_GUERILLA,
|
||
" -.. Berserker <20>Fury<72>- 1200\n <20>.. Guerilla <20>Mines<65>- 1500\n",
|
||
"* -.. Berserker <20>Fury<72>- 1200\n <20>.. Guerilla <20>Mines<65>- 1500\n",
|
||
" -.. Berserker <20>Fury<72>- 1200\n* <20>.. Guerilla <20>Mines<65>- 1500\n");*/
|
||
|
||
l4 = "\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
//l3 = "\n\n";
|
||
l3 = "\n\n";
|
||
|
||
/*l2 = " <20>.. Martyr <20>Suicide<64><65> 1000";
|
||
|
||
if (self.job == JOB_MARTYR)
|
||
l2 = "* <20>.. Martyr <20>Suicide<64><65> 1000";*/
|
||
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> More Professions <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n\nUse <20><><EFBFBD><EFBFBD><EFBFBD> to trigger ability\n");
|
||
|
||
};
|
||
void(float inp) Menu_Profession2_Input =
|
||
{
|
||
if (inp == 1) {
|
||
if (no_army==1)
|
||
{
|
||
sprint(self,PRINT_HIGH,"Army job is disabled\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
else
|
||
BuyJob( 1250,JOB_ARMY);
|
||
}
|
||
if (inp == 2) {
|
||
BuyJob( 1200,JOB_HACKER);
|
||
}
|
||
if (inp == 3) {
|
||
BuyJob( 1000,JOB_MARTYR);
|
||
}
|
||
if (inp == 4) {
|
||
BuyJob(1600,JOB_CRUSADER);
|
||
}
|
||
/*
|
||
if (inp == 5) {
|
||
BuyJob(1200,JOB_BERSERKER);
|
||
}
|
||
if (inp == 6) {
|
||
BuyJob(1500,JOB_GUERILLA);
|
||
}
|
||
if (inp == 7) {
|
||
BuyJob( 700,JOB_JUDOKA);
|
||
}*/
|
||
if (inp == 8) {
|
||
Menu_Profession();
|
||
self.current_menu = MENU_PROFESSION;
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Proficiency();
|
||
self.current_menu = MENU_PROFICIENCY;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
|
||
// =====================================
|
||
// Prints Menu of Proficiencies Available
|
||
// =====================================
|
||
void() Menu_Proficiency =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.cutf_items, CUTF_STEALTH, CUTF_HIGHJUMP,
|
||
" .. Stealth <20> 400\n .. Highjump <20> 200\n",
|
||
"* .. Stealth <20> 400\n .. Highjump <20> 200\n",
|
||
" .. Stealth <20> 400\n* .. Highjump <20> 200\n",
|
||
"* .. Stealth <20> 400\n* .. Highjump <20> 200\n");
|
||
|
||
l2 = mstr(self.cutf_items, CUTF_HWGUY, CUTF_EXPBODY,
|
||
" <20>.. Aspect of HWGuy <20> 450\n <20>.. Exp. Body <20> 1200\n",
|
||
"* <20>.. Aspect of HWGuy <20> 450\n <20>.. Exp. Body <20> 1200\n",
|
||
" <20>.. Aspect of HWGuy <20> 450\n* <20>.. Exp. Body <20> 1200\n",
|
||
"* <20>.. Aspect of HWGuy <20> 450\n* <20>.. Exp. Body <20> 1200\n");
|
||
|
||
l3 = mstr(self.cutf_items, CUTF_GYMNAST, CUTF_DEMONLORE,
|
||
" <20>.. Gymnast <20> 450\n <20>.. Demon Lore <20> 300\n",
|
||
"* <20>.. Gymnast <20> 450\n <20>.. Demon Lore <20> 300\n",
|
||
" <20>.. Gymnast <20> 450\n* <20>.. Demon Lore <20> 300\n",
|
||
"* <20>.. Gymnast <20> 450\n* <20>.. Demon Lore <20> 300\n");
|
||
|
||
l4 = " <20>.. Close Combat <20> 600\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.cutf_items & CUTF_CLOSECOMBAT)
|
||
l4 = "* <20>.. Close Combat <20> 600\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Proficiency <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
void(float inp) Menu_Proficiency_Input =
|
||
{
|
||
if (inp == 1) {
|
||
BuyCuTF( 400,CUTF_STEALTH);
|
||
}
|
||
if (inp == 2) {
|
||
BuyCuTF( 200,CUTF_HIGHJUMP);
|
||
}
|
||
if (inp == 3) {
|
||
if (self.cutf_items & CUTF_GYMNAST)
|
||
sprint(self, PRINT_HIGH, "Having Gymnast and Aspect of HWGuy proficiencies is illogical.\n");
|
||
else
|
||
BuyCuTF( 450,CUTF_HWGUY);
|
||
}
|
||
if (inp == 4) {
|
||
BuyCuTF(1200,CUTF_EXPBODY);
|
||
}
|
||
if (inp == 5) {
|
||
if (self.cutf_items & CUTF_HWGUY)
|
||
sprint(self, PRINT_HIGH, "Trust me, you don't want Aspect of HWGuy AND Gymnast.\n");
|
||
else
|
||
BuyCuTF( 450,CUTF_GYMNAST);
|
||
}
|
||
if (inp == 6) {
|
||
BuyCuTF( 300,CUTF_DEMONLORE);
|
||
}
|
||
if (inp == 7) {
|
||
BuyCuTF( 600,CUTF_CLOSECOMBAT);
|
||
}
|
||
if (inp == 8) {
|
||
if (custom_mode!=1)
|
||
{
|
||
Menu_Profession2();
|
||
self.current_menu = MENU_PROFESSION2;
|
||
}
|
||
else
|
||
{
|
||
Menu_Engineering();
|
||
self.current_menu = MENU_ENGINEERING;
|
||
}
|
||
}
|
||
if (inp == 9) {
|
||
Menu_Option();
|
||
self.current_menu = MENU_OPTION;
|
||
}
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
// ====================================
|
||
// Prints Menu of Optional Items Here
|
||
// ====================================
|
||
void() Menu_Option =
|
||
{
|
||
local string temp;
|
||
temp = ftos(self.money);
|
||
local string l1,l2,l3,l4;
|
||
|
||
l1 = mstr(self.tf_items, NIT_AUTOID, NIT_RESPAWN_GUARD,
|
||
" .. Auto-ID <20> 25\n .. Respawn Guard <20> 25\n",
|
||
"* .. Auto-ID <20> 25\n .. Respawn Guard <20> 25\n",
|
||
" .. Auto-ID <20> 25\n* .. Respawn Guard <20> 25\n",
|
||
"* .. Auto-ID <20> 25\n* .. Respawn Guard <20> 25\n");
|
||
|
||
//l2 = mstr2(self.cutf_items,self.tf_items,CUTF_OTR,NIT_HOVER_BOOTS,
|
||
l2 = mstr(self.tf_items,NIT_HOVER_BOOTS, NIT_HOVER_BOOTS_UPGRADE,
|
||
" <20>.. Hover Boots <20> 850\n <20>.. Boot Upgrade <20> 350\n",
|
||
"* <20>.. Hover Boots <20> 850\n <20>.. Boot Upgrade <20> 350\n",
|
||
" <20>.. Hover Boots <20> 850\n* <20>.. Boot Upgrade <20> 350\n",
|
||
"* <20>.. Hover Boots <20> 850\n* <20>.. Boot Upgrade <20> 350\n");
|
||
|
||
l3 = mstr2(self.tf_items, self.cutf_items, NIT_RL_LASER_SIGHT, CUTF_OTR,
|
||
" <20>.. Laser Guided RL <20> 1000\n <20>.. OTR Bullets <20> 1850\n",
|
||
"* <20>.. Laser Guided RL <20> 1000\n <20>.. OTR Bullets <20> 1850\n", //.. Boot Upgrade <20> 350
|
||
" <20>.. Laser Guided RL <20> 1000\n* <20>.. OTR Bullets <20> 1850\n",
|
||
"* <20>.. Laser Guided RL <20> 1000\n* <20>.. OTR Bullets <20> 1850\n");
|
||
|
||
l4 = " <20>.. Cluster Rockets <20> 3250\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
|
||
if (self.tf_items & NIT_CLUSTER_ROCKETS )
|
||
l4 = "* <20>.. Cluster Rockets <20> 3250\n<EFBFBD>.. <20><><EFBFBD><EFBFBD> \n<EFBFBD>.. \n.. <20><><EFBFBD><EFBFBD>! \n";
|
||
centerprint(self, "<EFBFBD><EFBFBD><EFBFBD> C<>s<EFBFBD>o<EFBFBD>i<EFBFBD>e <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <11><>\n<EFBFBD><EFBFBD> Optional Equipment <11><>\n\n", l1,l2,l3,l4, temp," dollars left\n");
|
||
};
|
||
void(float inp) Menu_Option_Input =
|
||
{
|
||
if (inp == 1) {
|
||
BuyItem(25,NIT_AUTOID);
|
||
}
|
||
if (inp == 2) {
|
||
BuyItem(25,NIT_RESPAWN_GUARD);
|
||
}
|
||
if (inp == 6) {
|
||
if (no_otr==1)
|
||
{
|
||
sprint(self,PRINT_HIGH,"OTR bullets are disabled\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
else
|
||
BuyCuTF(1850,CUTF_OTR);
|
||
}
|
||
if (inp == 3) {
|
||
BuyItem(850,NIT_HOVER_BOOTS);
|
||
}
|
||
if (inp == 4) {
|
||
BuyItem(350, NIT_HOVER_BOOTS_UPGRADE); //sync price with buyitem
|
||
}
|
||
if (inp == 5) {
|
||
BuyItem(1000, NIT_RL_LASER_SIGHT); //sync with RL
|
||
}
|
||
if (inp == 7) {
|
||
if (no_clusters==1)
|
||
{
|
||
sprint(self,PRINT_HIGH,"Cluster rockets are disabled\n");
|
||
self.impulse=0;
|
||
return;
|
||
}
|
||
else
|
||
BuyItem(3250, NIT_CLUSTER_ROCKETS); //sync with RL
|
||
}
|
||
if (inp == 8) {
|
||
Menu_Proficiency();
|
||
self.current_menu = MENU_PROFICIENCY;
|
||
}
|
||
// if (inp == 9) {
|
||
// centerprint(self, "No next menu\n");
|
||
// }
|
||
if (inp == 10) {
|
||
DropFromCustomClassGen();
|
||
}
|
||
|
||
self.impulse = 0;
|
||
};
|
||
|
||
// SB - crusader ability menu
|
||
void(entity pl, string s1, string s2, string s3) CenterPrint3;
|
||
|
||
/*
|
||
#define AURA_POWER 1
|
||
#define AURA_RESISTANCE 2
|
||
#define AURA_HASTE 3
|
||
#define AURA_INVIS 4
|
||
*/
|
||
|
||
void(float aur) AddAura;
|
||
void() CrusaderAddInvisibility;
|
||
void() CrusaderMassHeal;
|
||
void() CrusaderMassCure;
|
||
void() CrusaderDispel;
|
||
|
||
void() Menu_Crusader =
|
||
{
|
||
local string str1;
|
||
local float amount;
|
||
|
||
amount = time - self.job_finished;
|
||
if (amount > 60)
|
||
amount = 60;
|
||
|
||
str1 = ftos(floor(amount));
|
||
|
||
if (self.weapons_carried & WEAP_MEDIKIT)
|
||
CenterPrint3(self, " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Aura of Power <20>15 mana<6E>\n.. Aura of Resistance <20>15 mana<6E>\n<EFBFBD>.. Aura of Haste <20>15 mana<6E>\n<EFBFBD>.. Aura of Invisibility <20>45 mana<6E>\n<EFBFBD>.. Dispel Evil <20>30 mana<6E>\n<EFBFBD>.. Mass healing <20>20 mana<6E>\n<EFBFBD>.. Mass cure <20>20 mana<6E>\n<EFBFBD>.. Sing <20> 0 mana<6E>\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ", str1,"\n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
|
||
else
|
||
CenterPrint3(self, " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: \n\n.. Aura of Power <20>15 mana<6E>\n.. Aura of Resistance <20>15 mana<6E>\n<EFBFBD>.. Aura of Haste <20>15 mana<6E>\n<EFBFBD>.. Aura of Invisibility <20>45 mana<6E>\n<EFBFBD>.. Dispel Evil <20>30 mana<6E>\n<EFBFBD>.. Sing <20> 0 mana<6E>\n\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ", str1,"\n\n<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
|
||
self.StatusRefreshTime = time + 1;
|
||
};
|
||
|
||
void(float inp) Menu_Crusader_Input =
|
||
{
|
||
// If you read this, this is how you should be doing menus. HEAR ME?? No? Well I assume you
|
||
// are reading it so that'll have to do.
|
||
|
||
if (inp == 1)
|
||
AddAura(AURA_POWER);
|
||
else if (inp == 2)
|
||
AddAura(AURA_RESISTANCE);
|
||
else if (inp == 3)
|
||
AddAura(AURA_HASTE);
|
||
else if (inp == 4)
|
||
CrusaderAddInvisibility();
|
||
else if (inp == 5)
|
||
CrusaderDispel();
|
||
else if (inp == 6)
|
||
CrusaderMassHeal();
|
||
else if (inp == 7)
|
||
CrusaderMassCure();
|
||
else if (inp == 8)
|
||
sound (self, CHAN_MUSIC, "ambience/orff.wav", 1, ATTN_NORM);
|
||
else if (inp == 10)
|
||
inp = 0;
|
||
else
|
||
return;
|
||
|
||
self.impulse = 0;
|
||
ResetMenu();
|
||
};
|