diff options
Diffstat (limited to 'game/shared/dod/dod_shareddefs.h')
| -rw-r--r-- | game/shared/dod/dod_shareddefs.h | 691 |
1 files changed, 691 insertions, 0 deletions
diff --git a/game/shared/dod/dod_shareddefs.h b/game/shared/dod/dod_shareddefs.h new file mode 100644 index 0000000..35bae96 --- /dev/null +++ b/game/shared/dod/dod_shareddefs.h @@ -0,0 +1,691 @@ +//========= 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 |