/*============================================================================== The Weapons Factory - Global Include File Original code by Gregg Reno ==============================================================================*/ #define WF_VERSION "WF Version 4.2" #define WF_URL "www.captured.com/weaponsfactory" /* ------------------------------- CONSTANTS AND MACROS ------------------------------- */ //id number for WF approved class file #define MOD_ID_WF 3784 #define MOD_ID_OMEGA 4791 #define MOD_ID_Q2TF 1949 //www.planetice.net/q2tf //Damage Values #define DAMAGE_BLASTER 15 #define DAMAGE_SHOTGUN 4 #define DAMAGE_SUPERSHOTGUN 6 #define DAMAGE_MACHINEGUN 8 #define DAMAGE_CHAINGUN 6 #define DAMAGE_HYPERBLASTER 12 #define DAMAGE_ROCKETLAUNCHER 105 #define DAMAGE_GRENADELAUNCHER 120 #define DAMAGE_RAILGUN 80 #define DAMAGE_BFG 200 #define DAMAGE_NEEDLER 3 #define DAMAGE_NAG 5 #define DAMAGE_TELSA 5 #define DAMAGE_LIGHTNING 45 #define DAMAGE_NAILGUN 4 #define DAMAGE_CLUSTERROCKET 45 #define DAMAGE_MAGBOLTED 25 #define DAMAGE_PELLET 110 #define DAMAGE_PULSE 3 #define DAMAGE_SHC 3 #define DAMAGE_FLAREGUN 0 #define DAMAGE_NAPALMMISSLE 6 #define DAMAGE_FLAMETHROWER 15 #define DAMAGE_TRANQUILIZER 5 #define DAMAGE_INFECTEDDART 20 #define DAMAGE_LASERSNIPER 0 #define DAMAGE_ARMORDART 20 #define DAMAGE_SHOTGUNCHOKE 4 #define DAMAGE_SNIPERRIFLE 160 #define DAMAGE_LRPROJECTILE 0 #define DAMAGE_SENTRYKILLER 120 #define DAMAGE_MEGACHAINGUN 5 #define DAMAGE_TRANQUILDART 5 #define DAMAGE_KNIFE 80 #define DAMAGE_AK47 13 #define DAMAGE_PISTOL 35 #define DAMAGE_STINGER 125 #define DAMAGE_DISRUPTOR 30 #define DAMAGE_ETF_RIFLE 10 #define DAMAGE_PLASMA_BEAM 0 #define DAMAGE_ION_RIPPER 30 #define DAMAGE_PHALANX 70 #define DAMAGE_FREEZER 15 //Speed values #define SPEED_BLASTER 1000 #define SPEED_SHOTGUN 10 #define SPEED_SUPERSHOTGUN 10 #define SPEED_MACHINEGUN 10 #define SPEED_CHAINGUN 10 #define SPEED_HYPERBLASTER 10 #define SPEED_ROCKETLAUNCHER 725 #define SPEED_GRENADELAUNCHER 600 #define SPEED_RAILGUN 10 #define SPEED_BFG 400 #define SPEED_NEEDLER 10 #define SPEED_NAG 1000 #define SPEED_TELSA 10 #define SPEED_LIGHTNING 950 #define SPEED_NAILGUN 10 #define SPEED_CLUSTERROCKET 370 #define SPEED_MAGBOLTED 1000 #define SPEED_PELLET 550 #define SPEED_PULSE 10 #define SPEED_SHC 10 #define SPEED_FLAREGUN 850 #define SPEED_NAPALMMISSLE 390 #define SPEED_FLAMETHROWER 400 #define SPEED_TRANQUILIZER 10 #define SPEED_INFECTEDDART 390 #define SPEED_LASERSNIPER 10 #define SPEED_ARMORDART 850 #define SPEED_SHOTGUNCHOKE 10 #define SPEED_SNIPERRIFLE 10 #define SPEED_LRPROJECTILE 10 #define SPEED_SENTRYKILLER 325 #define SPEED_MEGACHAINGUN 10 #define SPEED_TRANQUILDART 10 #define SPEED_KNIFE 10 #define SPEED_AK47 10 #define SPEED_PISTOL 10 #define SPEED_STINGER 800 #define SPEED_DISRUPTOR 1000 #define SPEED_ETF_RIFLE 750 #define SPEED_PLASMA_BEAM 10 #define SPEED_ION_RIPPER 500 #define SPEED_PHALANX 725 #define SPEED_FREEZER 1000 //Grenade damage #define DAMAGE_GRENADE 125 #define DAMAGE_LASERBALL 2 #define DAMAGE_GOODYEAR 80 #define DAMAGE_PROXIMITY 80 #define DAMAGE_FLASH 0 #define DAMAGE_CLUSTER 65 #define DAMAGE_EARTHQUAKE 0 #define DAMAGE_TURRET 37 #define DAMAGE_NAPALM 18 #define DAMAGE_CONCUSSION 0 #define DAMAGE_NARCOTIC 0 #define DAMAGE_PLAGUE 11 #define DAMAGE_MAGNOTRON 80 #define DAMAGE_SHOCK 9 #define DAMAGE_PIPEBOMB 110 #define DAMAGE_SHRAPNEL 15 #define DAMAGE_FLARE 0 #define DAMAGE_SLOW 0 #define DAMAGE_PLAGUETIME 0 #define DAMAGE_LASERCUTTER 5 #define DAMAGE_TESLA 3 #define DAMAGE_GAS 0 #define SPEED_GRENADE 800 #define SPEED_LASERBALL 800 #define SPEED_GOODYEAR 800 #define SPEED_PROXIMITY 800 #define SPEED_FLASH 800 #define SPEED_CLUSTER 800 #define SPEED_EARTHQUAKE 800 #define SPEED_TURRET 800 #define SPEED_NAPALM 800 #define SPEED_CONCUSSION 800 #define SPEED_NARCOTIC 800 #define SPEED_PLAGUE 800 #define SPEED_MAGNOTRON 800 #define SPEED_SHOCK 800 #define SPEED_PIPEBOMB 800 #define SPEED_SHRAPNEL 800 #define SPEED_FLARE 800 #define SPEED_SLOW 800 #define SPEED_PLAGUETIME 800 #define SPEED_LASERCUTTER 800 #define SPEED_TESLA 800 #define SPEED_GAS 800 //Some Max Values #define MAX_ARMOR 400 #define MAX_HEALTH 200 // Grenade types #define GRENADE_TYPE_NONE 0 #define GRENADE_TYPE_NORMAL 1 #define GRENADE_TYPE_LASERBALL 2 #define GRENADE_TYPE_GOODYEAR 3 #define GRENADE_TYPE_PROXIMITY 4 #define GRENADE_TYPE_FLASH 5 #define GRENADE_TYPE_CLUSTER 6 #define GRENADE_TYPE_EARTHQUAKE 7 #define GRENADE_TYPE_TURRET 8 #define GRENADE_TYPE_NAPALM 9 #define GRENADE_TYPE_CONCUSSION 10 #define GRENADE_TYPE_NARCOTIC 11 #define GRENADE_TYPE_PLAGUE 12 #define GRENADE_TYPE_MAGNOTRON 13 #define GRENADE_TYPE_SHOCK 14 #define GRENADE_TYPE_PIPEBOMB 15 #define GRENADE_TYPE_SHRAPNEL 16 #define GRENADE_TYPE_FLARE 17 #define GRENADE_TYPE_SLOW 18 #define GRENADE_TYPE_PLAGUETIME 19 #define GRENADE_TYPE_LASERCUTTER 20 #define GRENADE_TYPE_TESLA 21 #define GRENADE_TYPE_GAS 22 #define GRENADE_TYPE_COUNT 22 //How many grenade types? //Grenade skins & models #define GRMODEL_GRENADE1 "models/objects/grenade/tris.md2" #define GRMODEL_GRENADE2 "models/objects/grenade2/tris.md2" #define GRMODEL_GRENADE3 "models/objects/grenade3/tris.md2" #define GRMODEL_V_GRENADE1 "models/weapons/v_handgr/tris.md2" #define GRMODEL_V_GRENADE2 "models/weapons/v_handgr2/tris.md2" #define GRMODEL_V_GRENADE3 "models/weapons/v_handgr3/tris.md2" #define GRNORMAL_MODEL GRMODEL_GRENADE1 #define GRNORMAL_SKIN 0 #define GRLAUNCHER_MODEL GRMODEL_GRENADE2 #define GRLAUNCHER_SKIN 0 #define GRLASERBALL_MODEL GRMODEL_GRENADE3 #define GRLASERBALL_SKIN 1 #define GRGOODYEAR_MODEL GRMODEL_GRENADE3 #define GRGOODYEAR_SKIN 1 //#define GRGOODYEAR_SKIN 3 #define GRPROXIMITY_MODEL GRMODEL_GRENADE2 #define GRPROXIMITY_SKIN 2 #define GRFLASH_MODEL GRMODEL_GRENADE3 //define GRFLASH_MODEL "models/objects/flashgr/tris.md2" #define GRFLASH_SKIN 4 #define GRCLUSTER_MODEL GRMODEL_GRENADE2 #define GRCLUSTER_SKIN 4 #define GRTURRET_MODEL GRMODEL_GRENADE3 #define GRTURRET_SKIN 2 #define GRNAPALM_MODEL GRMODEL_GRENADE2 #define GRNAPALM_SKIN 6 #define GRCONCUSSION_MODEL GRMODEL_GRENADE3 #define GRCONCUSSION_SKIN 0 #define GRPLAGUE_MODEL GRMODEL_GRENADE2 #define GRPLAGUE_SKIN 1 #define GRMAGNOTRON_MODEL GRMODEL_GRENADE2 #define GRMAGNOTRON_SKIN 0 #define GRSHOCK_MODEL GRMODEL_GRENADE2 #define GRSHOCK_SKIN 3 #define GRPIPEBOMB_MODEL GRMODEL_GRENADE2 #define GRPIPEBOMB_SKIN 7 #define GRSHRAPNEL_MODEL GRMODEL_GRENADE3 #define GRSHRAPNEL_SKIN 5 #define GRFLARE_MODEL GRMODEL_GRENADE2 #define GRFLARE_SKIN 5 #define GRPLAGUETIME_MODEL GRMODEL_GRENADE1 #define GRPLAGUETIME_SKIN 0 #define GRLASERCUTTER_MODEL GRMODEL_GRENADE1 #define GRLASERCUTTER_SKIN 0 //need new skins #define GRTESLA_MODEL GRMODEL_GRENADE3 #define GRTESLA_SKIN 0 //need new skins #define GRGAS_MODEL GRMODEL_GRENADE2 #define GRGAS_SKIN 0 //#define GREARTHQUAKE_MODEL GRMODEL_GRENADE1 //#define GREARTHQUAKE_SKIN 999 //#define GRNARCOTIC_MODEL GRMODEL_GRENADE //#define GRNARCOTIC_SKIN 9999 //#define GRSLOW_MODEL GRMODEL_GRENADE //#define GRSLOW_SKIN //Maximum number of active grenades for each type #define MAX_TYPE_NORMAL 999 #define MAX_TYPE_LASERBALL 1 #define MAX_TYPE_GOODYEAR 4 #define MAX_TYPE_PROXIMITY 4 #define MAX_TYPE_FLASH 999 #define MAX_TYPE_CLUSTER 999 #define MAX_TYPE_EARTHQUAKE 999 #define MAX_TYPE_TURRET 2 #define MAX_TYPE_NAPALM 2 #define MAX_TYPE_CONCUSSION 1 #define MAX_TYPE_NARCOTIC 999 #define MAX_TYPE_PLAGUE 2 #define MAX_TYPE_MAGNOTRON 1 #define MAX_TYPE_SHOCK 2 #define MAX_TYPE_PIPEBOMB 6 #define MAX_TYPE_SHRAPNAL 999 #define MAX_TYPE_FLARE 999 #define MAX_TYPE_SLOW 999 #define MAX_TYPE_PLAGUETIME 999 #define MAX_TYPE_LASERCUTTER 1 #define MAX_TYPE_TESLA 1 #define MAX_TYPE_GAS 2 // proximity grenade #define PROXIMITY_TYPE_GRENADE 1 #define PROXIMITY_TYPE_PIPE 2 // grenade requirements #define LASERBALL_CELLS 18 #define DECOY_CELLS 0 #define EARTHQUAKE_GRENADES 6 #define TURRET_GRENADES 2 #define TURRET_SLUGS 4 //Other #define RESPAWN_PROTECT_TIME 8.0 //Model Types #define CLASS_MODEL_MALE 1 #define CLASS_MODEL_FEMALE 2 #define CLASS_MODEL_CYBORG 3 #define CLASS_MODEL_ANY 4 //use the player's choice // Weapon types #define WEAPON_NONE 0 #define WEAPON_BLASTER 1 #define WEAPON_SHOTGUN 2 #define WEAPON_SUPERSHOTGUN 3 #define WEAPON_MACHINEGUN 4 #define WEAPON_CHAINGUN 5 #define WEAPON_HYPERBLASTER 6 #define WEAPON_ROCKETLAUNCHER 7 #define WEAPON_GRENADELAUNCHER 8 #define WEAPON_RAILGUN 9 #define WEAPON_BFG 10 #define WEAPON_NEEDLER 11 #define WEAPON_NAG 12 #define WEAPON_TELSA 13 #define WEAPON_LIGHTNING 14 #define WEAPON_NAILGUN 15 #define WEAPON_CLUSTERROCKET 16 #define WEAPON_MAGBOLTED 17 #define WEAPON_PELLET 18 #define WEAPON_PULSE 19 #define WEAPON_SHC 20 #define WEAPON_FLAREGUN 21 #define WEAPON_NAPALMMISSLE 22 #define WEAPON_FLAMETHROWER 23 #define WEAPON_TRANQUILIZER 24 #define WEAPON_INFECTEDDART 25 #define WEAPON_LASERSNIPER 26 //unused now #define WEAPON_ARMORDART 27 #define WEAPON_SHOTGUNCHOKE 28 //unused now #define WEAPON_SNIPERRIFLE 29 #define WEAPON_LRPROJECTILE 30 #define WEAPON_SENTRYKILLER 31 #define WEAPON_MEGACHAINGUN 32 #define WEAPON_TRANQUILDART 33 #define WEAPON_KNIFE 34 #define WEAPON_AK47 35 #define WEAPON_PISTOL 36 #define WEAPON_STINGER 37 #define WEAPON_DISRUPTOR 38 #define WEAPON_ETF_RIFLE 39 #define WEAPON_PLASMA_BEAM 40 #define WEAPON_ION_RIPPER 41 #define WEAPON_PHALANX 42 #define WEAPON_FREEZER 43 //acrid3 #define WEAPON_COUNT 43 //How many grenade types? // Player items #define ITEM_NONE 0 #define ITEM_REBREATHER 1 #define ITEM_BODYARMOR 2 #define ITEM_COMBATARMOR 4 #define ITEM_JACKETARMOR 8 #define ITEM_POWERSCREEN 16 #define ITEM_POWERSHIELD 32 #define ITEM_SILENCER 64 //Temporary - use these for new items #define ITEM_t1 128 #define ITEM_t2 256 #define ITEM_t3 512 #define ITEM_t4 1024 #define ITEM_t5 2048 #define ITEM_t6 4096 // Type of ammo player can pick up #define WF_AMMO_CELLS 1 #define WF_AMMO_SHELLS 2 #define WF_AMMO_BULLETS 4 #define WF_AMMO_ROCKETS 8 #define WF_AMMO_SLUGS 16 #define WF_AMMO_GRENADES 32 // Player special abilities #define SPECIAL_NONE 0 #define SPECIAL_JETPACK 1 //1 #define SPECIAL_BIOSENTRY 2 //2 - was binoculars #define SPECIAL_REMOTE_CAMERA 4 //3 #define SPECIAL_ANTIGRAV_BOOTS 8 //4 #define SPECIAL_DISGUISE 16 //5 #define SPECIAL_FEIGN 32 //6 #define SPECIAL_HEALING 64 //7 #define SPECIAL_SENTRY_GUN 128 //8 #define SPECIAL_MISSILE_LAUNCHER 256 //9 #define SPECIAL_MERCENARY 512 //10 - was repair armor #define SPECIAL_ALARMS 1024 //11 #define SPECIAL_KAMIKAZE 2048 //12 #define SPECIAL_LASER_DEFENSE 4096 //13 #define SPECIAL_FLAME_RESISTANCE 8192 //14 #define SPECIAL_TRIPBOMB 16384 //15 #define SPECIAL_CLOAK 32768 //16 #define SPECIAL_SUPPLY_DEPOT 65536 //17 #define SPECIAL_PLASMA_BOMB 131072 //18 #define SPECIAL_GRAPPLE 262144 //19 #define SPECIAL_SNIPING 524288 //20 #define SPECIAL_LASER 1048576 //21 #define SPECIAL_AUTOZOOM 2097152 //22 #define SPECIAL_QUICKAIM 4194304 //23 The new sniper ability //Temporary - use these for new special abilities //#define SPECIAL_t6 4194304 //THESE TWO ARE RESERVED #define SPECIAL_OPTION1 8388608 #define SPECIAL_OPTION2 16777216 #define SPECIAL_COUNT 24 //MAX COUNTS FOR EACH SPECIAL THING #define MAX_SPECIAL_REMOTE_CAMERA 1 #define MAX_SPECIAL_SENTRY_GUN 1 #define MAX_SPECIAL_MISSILE_LAUNCHER 1 #define MAX_SPECIAL_ALARMS 2 #define MAX_SPECIAL_LASER_DEFENSE 1 #define MAX_SPECIAL_TRIPBOMB 2 #define MAX_SPECIAL_QUAKE 2 #define MAX_SPECIAL_SUPPLY_DEPOT 1 #define MAX_SPECIAL_PLASMA_BOMB 1 //Sequential list of special items, rather than bitmask #define ITEM_SPECIAL_REMOTE_CAMERA 1 #define ITEM_SPECIAL_SENTRY_GUN 2 #define ITEM_SPECIAL_MISSILE_LAUNCHER 3 #define ITEM_SPECIAL_ALARMS 4 #define ITEM_SPECIAL_LASER_DEFENSE 5 #define ITEM_SPECIAL_TRIPBOMB 6 #define ITEM_SPECIAL_QUAKE 7 #define ITEM_SPECIAL_SUPPLY_DEPOT 8 #define ITEM_SPECIAL_PLASMA_BOMB 9 #define CLASS_DEF_NAME "WF Standard" //Scanner stuff #define SCANNER_UNIT 32 #define SCANNER_RANGE 100 #define SCANNER_UPDATE_FREQ 1 #define PIC_LEFT "pics/arrowleft.pcx" #define PIC_LEFT_TAG "scanner/arrowleft" #define PIC_RIGHT "pics/arrowright.pcx" #define PIC_RIGHT_TAG "scanner/arrowright" #define PIC_UP "pics/arrowup.pcx" #define PIC_UP_TAG "scanner/arrowup" #define PIC_DOWN "pics/arrowdown.pcx" #define PIC_DOWN_TAG "scanner/arrowdown" #define PIC_SCANNER "pics/scanner/scanner.pcx" #define PIC_SCANNER_TAG "scanner/scanner" #define SAFE_STRCAT(org,add,maxlen) if ((strlen(org) + strlen(add)) < maxlen) strcat(org,add); #define LAYOUT_MAX_LENGTH 1400 //Fast weapons switching #define fastswitch 1 //Cloaking stuff #define CLOAK_ACTIVATE_TIME 1.5 // cloak after 1.5 seconds #define CLOAK_DRAIN 2 // every CLOAK_DRAIN frames, #define CLOAK_AMMO 1 // drain CLOAK_AMMO amount of cells /* ------------------------------- FUNCTION PROTOTYPES ------------------------------- */ // wf_jetpack.c void ApplyThrust (edict_t *ent); // wf_proximity.c void fire_proximity (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, int proximity_type); // wf_laserball.c void fire_laserball (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); // wf_decoy.c void SP_Decoy(edict_t *self); // wf_goodyear.c void fire_goodyear (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); // wf_flash.c void fire_flash (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); // wf_cluster.c void fire_cluster (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); // wf_pipebomb.c void fire_pipebomb (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void Cmd_DetPipes_f (edict_t *ent); // wf_misc.c void Cmd_Grenade_f (edict_t *ent); void Cmd_Grenade1 (edict_t *ent); void Cmd_Grenade2 (edict_t *ent); void Cmd_Grenade3 (edict_t *ent); void Cmd_Thrust_f (edict_t *ent); void Cmd_Homing_f (edict_t *ent); void Cmd_Feign_f (edict_t *ent); void Cmd_Reno_f (edict_t *ent); void Cmd_WFFlags_f (edict_t *ent); qboolean K2_IsProtected(edict_t *ent); void wf_show_grenade_type(edict_t *ent); qboolean wf_IsWeapon(char *classname); void wf_InitPlayerClass(gclient_t *client); void Cmd_DSkin_f (edict_t *ent); void Cmd_ShowClass (edict_t *ent); int wf_GetClassModel(int p_class); void WFPlayer_Die (edict_t *ent); void WFPlayer_ChangeClassTeam (edict_t *ent); // b_turret.c void turret_remove(edict_t *ent); //wf_lasersight.c void LaserSightThink (edict_t *self); void SP_LaserSight(edict_t *self); // wf_scanner.c void Toggle_Scanner (edict_t *ent); void ShowScanner(edict_t *ent,char *layout); void ClearScanner(gclient_t *client); qboolean Pickup_Scanner (edict_t *ent, edict_t *other); // wf_jet.c qboolean Jet_AvoidGround( edict_t *ent ); qboolean Jet_Active( edict_t *ent ); void Jet_BecomeExplosion( edict_t *ent, int damage ); void Jet_ApplyJet( edict_t *ent, usercmd_t *ucmd ); // wf_earthquake.c void fire_earthquake_grenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); //wf_turret.c void grenturret_think2(edict_t *ent); //Prototypes for grenade turret void grenturret_think4(edict_t *ent); //think functions void Cmd_Turret_f(edict_t *ent); void grenturret_think4 (edict_t *ent); void grenturret_think3 (edict_t *ent); void grenturret_think2 (edict_t *ent); void grenturret_think1 (edict_t *ent); void fire_turret_grenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held); //wf_napalm.c void fire_napalm (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); //wf_flame.c void fire_flame (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held); // Map Rotation Support // DEFINES #define MAX_MAPS 32 #define MAX_MAPNAME_LEN 16 #define ML_ROTATE_SEQ 0 #define ML_ROTATE_RANDOM 1 #define ML_ROTATE_NUM_CHOICES 2 // STRUCTURES typedef struct { int nummaps; // number of maps in list char mapnames[MAX_MAPS][MAX_MAPNAME_LEN]; char rotationflag; // set to ML_ROTATE_* int currentmap; // index to current map int votes[MAX_MAPS]; qboolean voteonly[MAX_MAPS]; //True if this map should only be //voted on, but not in rotation qboolean warning_given; // Have we given people a warning to vote? int active; //is map list active? } maplist_t; //Different flame info typedef struct { vec3_t pos1; vec3_t vel1; vec3_t pos2; vec3_t vel2; vec3_t pos3; vec3_t vel3; vec3_t pos4; vec3_t vel4; } Flame_Info; // IP ban list #define MAX_IP_LENGTH 25 //#define MIN_IP_LENGTH 3 #define MIN_IP_LENGTH 1 typedef struct ban_s { char ip[MAX_IP_LENGTH + 1]; // store a banned IP int subnet; // index of last '.' if last IP field // is 0 (i.e. subnet is banned) struct ban_s *next; // pointer to next banned IP } ban_t; #define MAX_MOTD_LINES 3 #define MAX_BANWORDS 25 #define MAX_MOTD_LENGTH 60 #define MAX_BANWORDS_LENGTH 40 #define MAX_GAMEINFO_LENGTH 40 typedef struct { char ref_password[MAX_GAMEINFO_LENGTH]; //password of the ref edict_t *ref_ent; //entity of the ref int game_halted; //set if scoring and damage is halted char motd[MAX_MOTD_LINES][MAX_MOTD_LENGTH+1]; char banwords[MAX_BANWORDS+1][MAX_BANWORDS_LENGTH+1]; char classdef_name[MAX_GAMEINFO_LENGTH+1]; char stdlog_name[MAX_GAMEINFO_LENGTH+1]; int unbalanced_limit; int floodertime; int show_ref_skin; //Set if ref wants to show as different skin char weaponfile_name[MAX_GAMEINFO_LENGTH+1]; int weapon_damage[WEAPON_COUNT + 1]; int weapon_speed[WEAPON_COUNT + 1]; int grenade_damage[GRENADE_TYPE_COUNT + 1]; int grenade_speed[GRENADE_TYPE_COUNT + 1]; int ref_picked_map; } game_info_t; // GLOBALS maplist_t maplist; ban_t *banlist; game_info_t wf_game; // PROTOTYPES //wf_maplist.c int LoadMapList(edict_t *ent, char *filename); void ClearMapList(); void Cmd_Maplist_f (edict_t *ent); void Display_Maplist_Usage(edict_t *ent); void ClearMapVotes() ; int MapMaxVotes(); void VoteForMap(int i); void DumpMapVotes(); void Cmd_Maplist_f (edict_t *ent); void MaplistNextMap(); // g_ctf.c void WFSpecialMenu(edict_t *ent); void WFMapVote(edict_t *ent); // g_main.c void EndDMLevel (void); // remotecam.c void cmd_CameraPlace(edict_t *ent); void cmd_CameraToggle(edict_t *ent); // fileio.c #include "wf_fileio.h" //w_laser.c void cmd_TripBomb(edict_t *self); //wf_ipban.c int IsBanned(char *ip); void ReadBans(); void WriteBans(); void Adm_Ban(char *cmd); void Adm_Unban(char *cmd); void Adm_Bans(char *cmd); void Adm_KickBan(char *cmd); //misc function prototypes void SP_SupplyDepot(edict_t *self); void place_alarm (int number,edict_t *ent); void cmd_PlasmaBomb(edict_t *ent); void cmd_LaserDefense(edict_t *ent); void fire_napalm (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void burn_person(edict_t *target, edict_t *owner, int damage, int mod); void infect_person(edict_t *target, edict_t *owner); void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST, int *pause_frames, int *fire_frames, void (*fire)(edict_t *ent)); void check_dodge (edict_t *self, vec3_t start, vec3_t dir, int speed); void Grenade_Touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf); void Grenade_Die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); void Grenade_Explode (edict_t *ent); void GenericGrenade_Die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); void GenericGrenade_Explode (edict_t *ent); void Rocket_Die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); void NoAmmoWeaponChange (edict_t *ent); void ThrowUpNow(edict_t *self); void TimedNuke_Touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf); void DiseaseGrenade_Explode (edict_t *ent); void fire_concussiongrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_diseasegrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_magnogrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_bulletgrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_flare (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_shockgrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius); void fire_freezer (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int effect);//acrid 3/99 qboolean wf_CanUse(gclient_t *cl, edict_t *ent); void WFRemoveDisguise(edict_t *ent); void fire_laser_grenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held); void lasersight_off (edict_t *ent); void lasersight_on (edict_t *ent); void feign_off (edict_t *ent); void feign_on (edict_t *ent); void Cmd_WFPlayTeam (edict_t *self, char *wavename, int all); void WFOpenClassMenu(edict_t *ent); void stuffcmd(edict_t *e, char *s); void Cmd_ShowPlayers(edict_t *ent); void place_missile (edict_t *ent); void UpgradeMissileTurret(edict_t *self); void Create_All_Bases(); qboolean WFPickup_Flag(edict_t *ent, edict_t *other); char getClassCode (gclient_t *cl); void WFChooseDisguise(edict_t *ent); void WFRemoveDisguise(edict_t *ent); qboolean WFUnbalanced_Teams(edict_t *flag, edict_t *player); void alarm_remove(edict_t *self); void SP_HealingDepot(edict_t *self); void botDebugPrint (char *fmt, ...); #include "m_player.h" #include "dwm.h" #include "q_devels.h" #include "kamikaze.h" extern qboolean is_quad; extern byte is_silenced; //JR Stuff for flames and a max amount of Fire #define MAX_FLAMES 60 int TOTALWORLDFLAMES; //Don't allow players to drop an unlimited number of ammo ents #define MAX_DROPPEDAMMO 30 int TOTALDROPPEDAMMO;