source-engine/game/shared/dod/dod_shareddefs.h
2022-04-16 12:05:19 +03:00

692 lines
18 KiB
C

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef DOD_SHAREDDEFS_H
#define DOD_SHAREDDEFS_H
#ifdef _WIN32
#pragma once
#endif
#include "dod_playeranimstate.h"
#define DOD_PLAYER_VIEW_OFFSET Vector( 0, 0, 54 )
// DOD Team IDs.
#define TEAM_ALLIES 2
#define TEAM_AXIS 3
#define TEAM_MAXCOUNT 4 // update this if we ever add teams (unlikely)
enum SubTeam
{
SUBTEAM_NORMAL = 0,
SUBTEAM_PARA,
SUBTEAM_ALT_NATION,
NUM_SUBTEAMS
};
#define MAX_CONTROL_POINTS 8
#define MAX_CONTROL_POINT_GROUPS 8
#define DEATH_CAM_TIME 5.0f
#define MAX_WAVE_RESPAWN_TIME 20.0f
#define DOD_BOMB_TIMER_LENGTH 20
#define DOD_BOMB_DEFUSE_TIME 3.0f
#define DOD_BOMB_PLANT_TIME 2.0f
#define DOD_BOMB_PLANT_RADIUS 80
#define DOD_BOMB_DEFUSE_MAXDIST 96.0f
enum
{
CAP_EVENT_NONE,
CAP_EVENT_BOMB,
CAP_EVENT_FLAG,
CAP_EVENT_TIMER_EXPIRE
};
enum
{
WINPANEL_TOP3_NONE,
WINPANEL_TOP3_BOMBERS,
WINPANEL_TOP3_CAPPERS,
WINPANEL_TOP3_DEFENDERS,
WINPANEL_TOP3_KILLERS
};
//--------------
// DoD Specific damage flags
//--------------
// careful when reusing HL2 DMG_ flags, some of them cancel out the damage, eg if they are in DMG_TIMEBASED
#define DMG_STUN (DMG_PARALYZE) //(1<<15)
#define DMG_MACHINEGUN (DMG_LASTGENERICFLAG<<1) //(1<<30)
#define DMG_BOMB (DMG_LASTGENERICFLAG<<2) //(1<<31)
//END OF THE EXTENDABLE LIST!! Start reusing HL2 specific flags
#define MELEE_DMG_SECONDARYATTACK (1<<0)
#define MELEE_DMG_FIST (1<<1)
#define MELEE_DMG_EDGE (1<<2)
#define MELEE_DMG_STRONGATTACK (1<<3)
#define SANDBAG_NOT_TOUCHING 0
#define SANDBAG_TOUCHING 1
#define SANDBAG_TOUCHING_ALIGNED 2
#define SANDBAG_DEPLOYED 3
#define PRONE_DEPLOY_HEIGHT -1
#define STANDING_DEPLOY_HEIGHT 58
#define CROUCHING_DEPLOY_HEIGHT 28
#define TIME_TO_DEPLOY 0.3
#define MIN_DEPLOY_PITCH 45
#define MAX_DEPLOY_PITCH -60
#define VEC_DUCK_MOVING_HULL_MIN Vector(-16, -16, 0 )
#define VEC_DUCK_MOVING_HULL_MAX Vector( 16, 16, 55 )
#define VEC_PRONE_HULL_MIN DODGameRules()->GetDODViewVectors()->m_vProneHullMin
#define VEC_PRONE_HULL_MAX DODGameRules()->GetDODViewVectors()->m_vProneHullMax // MUST be shorter than duck hull for deploy check
#define VEC_PRONE_HULL_MIN_SCALED( player ) ( DODGameRules()->GetDODViewVectors()->m_vProneHullMin * player->GetModelScale() )
#define VEC_PRONE_HULL_MAX_SCALED( player ) ( DODGameRules()->GetDODViewVectors()->m_vProneHullMax * player->GetModelScale() )
#define VEC_PRONE_HELPER_HULL_MIN Vector(-48, -48, 0 )
#define VEC_PRONE_HELPER_HULL_MAX Vector( 48, 48, 24 )
#define GRENADE_FUSE_LENGTH 5.0
#define RIFLEGRENADE_FUSE_LENGTH 3.5
#define CONTENTS_PRONE_HELPER 0x80000000
#define PASS_OUT_CHANGE_TIME 1.5
#define PASS_OUT_GET_UP_TIME 1.5
// DOD-specific viewport panels
#define PANEL_TEAM "team"
#define PANEL_CLASS_ALLIES "class_us"
#define PANEL_CLASS_AXIS "class_ger"
#define PANEL_BACKGROUND "background"
#define COLOR_DOD_GREEN Color(77, 121, 66, 255) // Color(76, 102, 76, 255)
#define COLOR_DOD_RED Color(255, 64, 64, 255)
#define DOD_HUD_HEALTH_IMAGE_LENGTH 64
// The various states the player can be in during the join game process.
enum DODPlayerState
{
// Happily running around in the game.
// This state can jump to a bunch of other states like STATE_PICKINGCLASS or STATE_DEATH_ANIM.
STATE_ACTIVE=0,
// This is the state you're in when you first enter the server.
// It's switching between intro cameras every few seconds, and there's a level info
// screen up.
STATE_WELCOME, // Show the level intro screen.
// During these states, you can either be a new player waiting to join, or
// you can be a live player in the game who wants to change teams.
// Either way, you can't move while choosing team or class (or while any menu is up).
STATE_PICKINGTEAM, // Choosing team.
STATE_PICKINGCLASS, // Choosing class.
STATE_DEATH_ANIM, // Playing death anim, waiting for that to finish.
STATE_DEATH_OBSERVING, // Done playing death anim. Waiting for keypress to go into observer mode.
STATE_OBSERVER_MODE, // Noclipping around, watching players, etc.
NUM_PLAYER_STATES
};
enum DODRoundState
{
// initialize the game, create teams
STATE_INIT=0,
//Before players have joined the game. Periodically checks to see if enough players are ready
//to start a game. Also reverts to this when there are no active players
STATE_PREGAME,
//The game is about to start, wait a bit and spawn everyone
STATE_STARTGAME,
//All players are respawned, frozen in place
STATE_PREROUND,
//Round is on, playing normally
STATE_RND_RUNNING,
//Someone has won the round
STATE_ALLIES_WIN,
STATE_AXIS_WIN,
//Noone has won, manually restart the game, reset scores
STATE_RESTART,
//Game is over, showing the scoreboard etc
STATE_GAME_OVER,
NUM_ROUND_STATES
};
#define PLAYERCLASS_RANDOM -2
#define PLAYERCLASS_UNDEFINED -1
#define DOD_PLAYERMODEL_AXIS_RIFLEMAN "models/player/german_rifleman.mdl"
#define DOD_PLAYERMODEL_AXIS_ASSAULT "models/player/german_assault.mdl"
#define DOD_PLAYERMODEL_AXIS_SUPPORT "models/player/german_support.mdl"
#define DOD_PLAYERMODEL_AXIS_SNIPER "models/player/german_sniper.mdl"
#define DOD_PLAYERMODEL_AXIS_MG "models/player/german_mg.mdl"
#define DOD_PLAYERMODEL_AXIS_ROCKET "models/player/german_rocket.mdl"
#define DOD_PLAYERMODEL_US_RIFLEMAN "models/player/american_rifleman.mdl"
#define DOD_PLAYERMODEL_US_ASSAULT "models/player/american_assault.mdl"
#define DOD_PLAYERMODEL_US_SUPPORT "models/player/american_support.mdl"
#define DOD_PLAYERMODEL_US_SNIPER "models/player/american_sniper.mdl"
#define DOD_PLAYERMODEL_US_MG "models/player/american_mg.mdl"
#define DOD_PLAYERMODEL_US_ROCKET "models/player/american_rocket.mdl"
typedef struct DodClassInfo_s
{
char selectcmd[32];
char classname[128];
char modelname[128];
int team; //which team. 0 == allies, 1 == axis
int primarywpn;
int secondarywpn;
int meleewpn;
int numgrenades;
int armskin; //what skin does this class show in grenades / knives
int headgroup; //bodygroups
int helmetgroup;
int geargroup;
int bodygroup;
int hairgroup; //what helmet group to switch to when the helmet comes off
} DodClassInfo_t;
extern DodClassInfo_t g_ClassInfo[]; //a structure to hold all of the classes
extern DodClassInfo_t g_ParaClassInfo[];
// Voice Commands
typedef struct DodVoiceCommand_s
{
const char *pszCommandName; // console command that will produce the voice command
const char *pszSoundName; // name of sound to play
PlayerAnimEvent_t iHandSignal; //index into the hand signal array
const char *pszAlliedSubtitle; // subtitles for each nationality
const char *pszAxisSubtitle;
const char *pszBritishSubtitle;
} DodVoiceCommand_t;
extern DodVoiceCommand_t g_VoiceCommands[];
// Hand Signals
typedef struct DodHandSignal_s
{
const char *pszCommandName; // console command that will produce the voice command
PlayerAnimEvent_t iHandSignal; //index into the hand signal array
const char *pszSubtitle; // subtitles for each nationality
} DodHandSignal_t;
extern DodHandSignal_t g_HandSignals[];
#define ARM_SKIN_UNDEFINED 0
enum
{
HEAD_GROUP_0 = 0,
HEAD_GROUP_1,
HEAD_GROUP_2,
HEAD_GROUP_3,
HEAD_GROUP_4,
HEAD_GROUP_5,
HEAD_GROUP_6,
};
enum
{
HELMET_GROUP_0 = 0,
HELMET_GROUP_1,
HELMET_GROUP_2,
HELMET_GROUP_3,
HELMET_GROUP_4,
HELMET_GROUP_5,
HELMET_GROUP_6,
HELMET_GROUP_7,
};
enum
{
BODY_GROUP_0 = 0,
BODY_GROUP_1,
BODY_GROUP_2,
BODY_GROUP_3,
BODY_GROUP_4,
BODY_GROUP_5,
};
enum
{
GEAR_GROUP_0 = 0,
GEAR_GROUP_1,
GEAR_GROUP_2,
GEAR_GROUP_3,
GEAR_GROUP_4,
GEAR_GROUP_5,
GEAR_GROUP_6,
};
enum
{
BODYGROUP_BODY = 0,
BODYGROUP_HELMET,
BODYGROUP_HEAD,
BODYGROUP_GEAR,
BODYGROUP_JUMPGEAR
};
enum
{
BODYGROUP_HEAD1 = 0,
BODYGROUP_HEAD2,
BODYGROUP_HEAD3,
BODYGROUP_HEAD4,
BODYGROUP_HEAD5,
BODYGROUP_HEAD6,
BODYGROUP_HEAD7
};
//helmet groups
#define BODYGROUP_HELMET_ON 0
#define BODYGROUP_ALLIES_HELMET_HELMET1 0
#define BODYGROUP_ALLIES_HELMET_HELMET2 1
#define BODYGROUP_ALLIES_HELMET_OFF 2
#define BODYGROUP_AXIS_HAIR0 1
#define BODYGROUP_AXIS_HAIR1 2
#define BODYGROUP_AXIS_HAIR2 3
#define BODYGROUP_AXIS_HAIR3 4
#define BODYGROUP_AXIS_HAIR4 5
#define BODYGROUP_AXIS_HAIR5 6
#define BODYGROUP_AXIS_HAIR6 7
//battle gear groups
#define BODYGROUP_TOMMYGEAR 0
#define BODYGROUP_SPRINGGEAR 1
#define BODYGROUP_GARANDGEAR 2
#define BODYGROUP_MGGEAR 3
#define BODYGROUP_BARGEAR 4
#define BODYGROUP_CARBGEAR 5
#define BODYGROUP_GREASEGUNGEAR 6
//jump gear
#define BODYGROUP_JUMPGEAR_OFF 0
#define BODYGROUP_JUMPGEAR_ON 1
enum
{
HELMET_ALLIES = 0,
HELMET_AXIS,
NUM_HELMETS
};
extern const char *m_pszHelmetModels[NUM_HELMETS];
//Materials
/*
#define CHAR_TEX_CONCRETE 'C' // texture types
#define CHAR_TEX_METAL 'M'
#define CHAR_TEX_DIRT 'D'
#define CHAR_TEX_GRATE 'G'
#define CHAR_TEX_TILE 'T'
#define CHAR_TEX_WOOD 'W'
#define CHAR_TEX_GLASS 'Y'
#define CHAR_TEX_FLESH 'F'
#define CHAR_TEX_WATER 'S'
#define CHAR_TEX_ROCK 'R'
#define CHAR_TEX_SAND 'A'
#define CHAR_TEX_GRAVEL 'L'
#define CHAR_TEX_STUCCO 'Z'
#define CHAR_TEX_BRICK 'B'
#define CHAR_TEX_SNOW 'N'
#define CHAR_TEX_HEAVYMETAL 'H'
#define CHAR_TEX_LEAVES 'E'
#define CHAR_TEX_SKY 'K'
#define CHAR_TEX_GRASS 'P'
*/
#define WPN_SLOT_PRIMARY 0
#define WPN_SLOT_SECONDARY 1
#define WPN_SLOT_MELEE 2
#define WPN_SLOT_GRENADES 3
#define WPN_SLOT_BOMB 4
#define SLEEVE_AXIS 0
#define SLEEVE_ALLIES 1
#define VM_BODYGROUP_GUN 0
#define VM_BODYGROUP_SLEEVE 1
#define PLAYER_SPEED_FROZEN 1
#define PLAYER_SPEED_PRONE 50
#define PLAYER_SPEED_PRONE_ZOOMED 30
#define PLAYER_SPEED_PRONE_BAZOOKA_DEPLOYED 30
#define PLAYER_SPEED_ZOOMED 42
#define PLAYER_SPEED_BAZOOKA_DEPLOYED 50
#define PLAYER_SPEED_NORMAL 600.0f
#define PLAYER_SPEED_SLOWED 120
#define PLAYER_SPEED_RUN 220
#define PLAYER_SPEED_SPRINT 330
#define PUSHAWAY_THINK_INTERVAL (1.0f / 20.0f)
#define VEC_PRONE_VIEW Vector(0,0,10)
#define VEC_PRONE_VIEW_SCALED( player ) ( Vector(0,0,10) * player->GetModelScale() )
#define TIME_TO_PRONE 1.2f // should be 1.5!
#define INITIAL_SPRINT_STAMINA_PENALTY 15
#define LOW_STAMINA_THRESHOLD 35
// changed to 80% of goldsrc values, gives the same end result
#define ZOOM_SWAY_PRONE 0.1
#define ZOOM_SWAY_DUCKING 0.2
#define ZOOM_SWAY_STANDING 0.5
#define ZOOM_SWAY_MOVING_PENALTY 0.4
extern const char * s_WeaponAliasInfo[];
enum
{
//Dod hint messages
HINT_FRIEND_SEEN = 0, // #Hint_spotted_a_friend
HINT_ENEMY_SEEN, // #Hint_spotted_an_enemy
HINT_FRIEND_INJURED, // #Hint_try_not_to_injure_teammates
HINT_FRIEND_KILLED, // #Hint_careful_around_teammates
HINT_ENEMY_KILLED, // #Hint_killing_enemies_is_good
HINT_IN_AREA_CAP, // #Hint_touched_area_capture
HINT_FLAG_TOUCH, // #Hint_touched_control_point
HINT_OBJECT_PICKUP, // #Hint_picked_up_object
HINT_MG_FIRE_UNDEPLOYED, // #Hint_mgs_fire_better_deployed
HINT_SANDBAG_AREA, // #Hint_sandbag_area_touch
HINT_BAZOOKA_PICKUP, // #Hint_rocket_weapon_pickup
HINT_AMMO_EXHAUSTED, // #Hint_out_of_ammo
HINT_PRONE, // #Hint_prone
HINT_LOW_STAMINA, // #Hint_low_stamina
HINT_OBJECT_REQUIRED, // #Hint_area_requires_object
HINT_PLAYER_KILLED_WAVETIME, // #Hint_player_killed_wavetime
HINT_WEAPON_OVERHEAT, // #Hint_mg_overheat
HINT_SHOULDER_WEAPON, // #game_shoulder_rpg
HINT_PICK_UP_WEAPON, // #Hint_pick_up_weapon
HINT_PICK_UP_GRENADE, // #Hint_pick_up_grenade
HINT_DEATHCAM, // #Hint_death_cam
HINT_CLASSMENU, // #Hint_class_menu
HINT_USE_MELEE, // #Hint_use_2e_melee
HINT_USE_ZOOM, // #Hint_use_zoom
HINT_USE_IRON_SIGHTS, // #Hint_use_iron_sights
HINT_USE_SEMI_AUTO, // #Hint_use_semi_auto
HINT_USE_SPRINT, // #Hint_use_sprint
HINT_USE_DEPLOY, // #Hint_use_deploy
HINT_USE_PRIME, // #Hint_use_prime
HINT_MG_DEPLOY_USAGE, // #Hint_mg_deploy_usage
HINT_MG_DEPLOY_TO_RELOAD, // #Dod_mg_reload
HINT_GARAND_RELOAD, // #Hint_garand_reload
HINT_TURN_OFF_HINTS, // #Hint_turn_off_hints
HINT_NEED_BOMB, // #Hint_need_bomb_to_plant
HINT_BOMB_PLANTED, // #Hint_bomb_planted
HINT_DEFUSE_BOMB, // #Hint_defuse_bomb
HINT_BOMB_TARGET, // #Hint_bomb_target
HINT_BOMB_PICKUP, // #Hint_bomb_pickup
HINT_BOMB_DEFUSE_ONGROUND, // #Hint_bomb_defuse_onground
HINT_BOMB_PLANT_MAP, // #Hint_bomb_plant_map
HINT_BOMB_FIRST_SELECT, // #Hint_bomb_first_select
NUM_HINTS
};
extern const char *g_pszHintMessages[];
// HINT_xxx bits to clear when the round restarts
#define HINT_MASK_SPAWN_CLEAR ( 1 << HINT_FRIEND_KILLED )
// criteria for when a weapon model wants to use an alt model
#define ALTWPN_CRITERIA_NONE 0
#define ALTWPN_CRITERIA_FIRING (1 << 0)
#define ALTWPN_CRITERIA_RELOADING (1 << 1)
#define ALTWPN_CRITERIA_DEPLOYED (1 << 2)
#define ALTWPN_CRITERIA_DEPLOYED_RELOAD (1 << 3)
#define ALTWPN_CRITERIA_PRONE (1 << 4) // player is prone
#define ALTWPN_CRITERIA_PRONE_DEPLOYED_RELOAD (1 << 5) // player should use special alt model when prone deployed reloading
// eject brass shells
#define EJECTBRASS_PISTOL 0
#define EJECTBRASS_RIFLE 1
#define EJECTBRASS_MG 2
#define EJECTBRASS_MG_2 3 // ?
#define EJECTBRASS_GARANDCLIP 4
extern const char *pszTeamAlliesClasses[];
extern const char *pszTeamAxisClasses[];
enum
{
DOD_COLLISIONGROUP_SHELLS = LAST_SHARED_COLLISION_GROUP,
DOD_COLLISIONGROUP_BLOCKERWALL,
};
enum
{
PROGRESS_BAR_BANDAGER = 0,
PROGRESS_BAR_BANDAGEE,
PROGRESS_BAR_CAP, // done by objective resource
NUM_PROGRESS_BAR_TYPES
};
// used for the corner cut panels in the HUD
enum
{
DOD_CORNERCUT_PANEL_BOTTOMRIGHT = 0,
DOD_CORNERCUT_PANEL_BOTTOMLEFT,
DOD_CORNERCUT_PANEL_TOPRIGHT,
DOD_CORNERCUT_PANEL_TOPLEFT,
};
enum ViewAnimationType {
VIEW_ANIM_LINEAR_Z_ONLY,
VIEW_ANIM_SPLINE_Z_ONLY,
VIEW_ANIM_EXPONENTIAL_Z_ONLY,
};
enum BombTargetState
{
// invisible, not active
BOMB_TARGET_INACTIVE=0,
// visible, accepts planting +use
BOMB_TARGET_ACTIVE,
// visible, accepts disarm +use, counts down to explosion
// if disarmed, returns to BOMB_TARGET_ACTIVE
// if explodes, returns to BOMB_TARGET_INACTIVE
BOMB_TARGET_ARMED,
NUM_BOMB_TARGET_STATES
};
extern const char *pszWinPanelCategoryHeaders[];
enum
{
// Season 1
ACHIEVEMENT_DOD_THROW_BACK_GREN = 0,
ACHIEVEMENT_DOD_CONSECUTIVE_HEADSHOTS,
ACHIEVEMENT_DOD_MG_POSITION_STREAK,
ACHIEVEMENT_DOD_WIN_KNIFE_FIGHT,
ACHIEVEMENT_DOD_PLAY_CUSTOM_MAPS,
ACHIEVEMENT_DOD_KILLS_WITH_GRENADE,
ACHIEVEMENT_DOD_LONG_RANGE_ROCKET,
ACHIEVEMENT_DOD_END_ROUND_KILLS,
ACHIEVEMENT_DOD_CAP_LAST_FLAG,
ACHIEVEMENT_DOD_USE_ENEMY_WEAPONS,
ACHIEVEMENT_DOD_KILL_DOMINATING_MG,
ACHIEVEMENT_DOD_COLMAR_DEFENSE,
ACHIEVEMENT_DOD_BLOCK_CAPTURES,
ACHIEVEMENT_DOD_JAGD_OVERTIME_CAP,
ACHIEVEMENT_DOD_WEAPON_MASTERY,
// grinds
ACHIEVEMENT_DOD_KILLS_AS_ALLIES,
ACHIEVEMENT_DOD_KILLS_AS_AXIS,
ACHIEVEMENT_DOD_KILLS_AS_RIFLEMAN,
ACHIEVEMENT_DOD_KILLS_AS_ASSAULT,
ACHIEVEMENT_DOD_KILLS_AS_SUPPORT,
ACHIEVEMENT_DOD_KILLS_AS_SNIPER,
ACHIEVEMENT_DOD_KILLS_AS_MG,
ACHIEVEMENT_DOD_KILLS_AS_BAZOOKAGUY,
ACHIEVEMENT_DOD_KILLS_WITH_GARAND,
ACHIEVEMENT_DOD_KILLS_WITH_THOMPSON,
ACHIEVEMENT_DOD_KILLS_WITH_BAR,
ACHIEVEMENT_DOD_KILLS_WITH_SPRING,
ACHIEVEMENT_DOD_KILLS_WITH_30CAL,
ACHIEVEMENT_DOD_KILLS_WITH_BAZOOKA,
ACHIEVEMENT_DOD_KILLS_WITH_K98,
ACHIEVEMENT_DOD_KILLS_WITH_MP40,
ACHIEVEMENT_DOD_KILLS_WITH_MP44,
ACHIEVEMENT_DOD_KILLS_WITH_K98SCOPED,
ACHIEVEMENT_DOD_KILLS_WITH_MG42,
ACHIEVEMENT_DOD_KILLS_WITH_PSCHRECK,
ACHIEVEMENT_DOD_KILLS_WITH_COLT,
ACHIEVEMENT_DOD_KILLS_WITH_P38,
ACHIEVEMENT_DOD_KILLS_WITH_C96,
ACHIEVEMENT_DOD_KILLS_WITH_M1CARBINE,
ACHIEVEMENT_DOD_KILLS_WITH_AMERKNIFE,
ACHIEVEMENT_DOD_KILLS_WITH_SPADE,
ACHIEVEMENT_DOD_KILLS_WITH_PUNCH,
ACHIEVEMENT_DOD_KILLS_WITH_FRAG_US,
ACHIEVEMENT_DOD_KILLS_WITH_FRAG_GER,
ACHIEVEMENT_DOD_KILLS_WITH_RIFLEGREN_US,
ACHIEVEMENT_DOD_KILLS_WITH_RIFLEGREN_GER,
ACHIEVEMENT_DOD_CAPTURE_GRIND,
ACHIEVEMENT_DOD_BLOCK_CAPTURES_GRIND,
ACHIEVEMENT_DOD_ROUNDS_WON_GRIND,
ACHIEVEMENT_DOD_BOMBS_PLANTED_GRIND,
ACHIEVEMENT_DOD_BOMBS_DEFUSED_GRIND,
ACHIEVEMENT_DOD_ALL_PACK_1,
ACHIEVEMENT_DOD_BEAT_THE_HEAT,
// Winter 2011
ACHIEVEMENT_DOD_COLLECT_HOLIDAY_GIFTS,
NUM_DOD_ACHIEVEMENTS
};
#define ACHIEVEMENT_NUM_CONSECUTIVE_HEADSHOTS 5
#define ACHIEVEMENT_MG_STREAK_IS_DOMINATING 8
#define ACHIEVEMENT_NUM_ENEMY_WPN_KILLS 5
#define ACHIEVEMENT_LONG_RANGE_ROCKET_DIST 1200
// other magic numbers exist inside the achievements themselves in achievements_dod.cpp
enum
{
DOD_MUZZLEFLASH_PISTOL = 0,
DOD_MUZZLEFLASH_AUTO,
DOD_MUZZLEFLASH_RIFLE,
DOD_MUZZLEFLASH_MG,
DOD_MUZZLEFLASH_ROCKET,
DOD_MUZZLEFLASH_MG42
};
#define DOD_KILLS_DOMINATION 4
// Death notice flags
#define DOD_DEATHFLAG_DOMINATION 0x0001 // killer is dominating victim
#define DOD_DEATHFLAG_REVENGE 0x0002 // killer got revenge on victim
enum
{
ACHIEVEMENT_AWARDS_NONE = 0,
ACHIEVEMENT_AWARDS_RIFLEMAN,
ACHIEVEMENT_AWARDS_ASSAULT,
ACHIEVEMENT_AWARDS_SUPPORT,
ACHIEVEMENT_AWARDS_SNIPER,
ACHIEVEMENT_AWARDS_MG,
ACHIEVEMENT_AWARDS_ROCKET,
ACHIEVEMENT_AWARDS_ALL_PACK_1,
NUM_ACHIEVEMENT_AWARDS
};
extern const char *g_pszAchievementAwards[NUM_ACHIEVEMENT_AWARDS];
extern const char *g_pszAchievementAwardMaterials_Allies[NUM_ACHIEVEMENT_AWARDS];
extern const char *g_pszAchievementAwardMaterials_Axis[NUM_ACHIEVEMENT_AWARDS];
enum DODStatType_t
{
DODSTAT_PLAYTIME = 0,
DODSTAT_ROUNDSWON,
DODSTAT_ROUNDSLOST,
DODSTAT_KILLS,
DODSTAT_DEATHS,
DODSTAT_CAPTURES,
DODSTAT_BLOCKS,
DODSTAT_BOMBSPLANTED,
DODSTAT_BOMBSDEFUSED,
DODSTAT_DOMINATIONS,
DODSTAT_REVENGES,
DODSTAT_SHOTS_HIT,
DODSTAT_SHOTS_FIRED,
DODSTAT_HEADSHOTS,
DODSTAT_MAX
};
#define DODSTAT_FIRST DODSTAT_PLAYTIME
typedef struct
{
int m_iStat[DODSTAT_MAX];
bool m_bDirty[DODSTAT_MAX];
} dod_stat_accumulator_t;
#define NUM_DOD_PLAYERCLASSES 6
#endif // DOD_SHAREDDEFS_H