Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: cl_main.c
- ===================================================================
- --- cl_main.c (revision 11991)
- +++ cl_main.c (working copy)
- @@ -178,6 +178,13 @@
- VectorSet(cl.playercrouchmins, -16, -16, -24);
- VectorSet(cl.playercrouchmaxs, 16, 16, 25);
- }
- + else if (gamemode == GAME_TRANSFUSION)
- + {
- + VectorSet(cl.playerstandmins, -16, -16, -20);
- + VectorSet(cl.playerstandmaxs, 16, 16, 32);
- + VectorSet(cl.playercrouchmins, -16, -16, -20);
- + VectorSet(cl.playercrouchmaxs, 16, 16, -5);
- + }
- else
- {
- VectorSet(cl.playerstandmins, -16, -16, -24);
- Index: common.c
- ===================================================================
- --- common.c (revision 11991)
- +++ common.c (working copy)
- @@ -1178,6 +1178,8 @@
- c = '\n';
- else if (c == 't')
- c = '\t';
- + else
- + c = *--data;
- }
- if (len < (int)sizeof(com_token) - 1)
- com_token[len++] = c;
- Index: console.c
- ===================================================================
- --- console.c (revision 11991)
- +++ console.c (working copy)
- @@ -1680,7 +1680,26 @@
- if (con_notify.integer < 0)
- Cvar_SetValueQuick(&con_notify, 0);
- if (gamemode == GAME_TRANSFUSION)
- - v = 8; // vertical offset
- + {
- + if (cl.gametype == GAME_DEATHMATCH)
- + {
- + int active_players = 0;
- + int i;
- + for (i=0 ; i<cl.maxclients ; i++)
- + {
- + if (cl.scores[i].name[0])
- + {
- + active_players++;
- + }
- + }
- + if (active_players > 4)
- + v = 48;
- + else
- + v = 24;
- + }
- + else
- + v = 0;
- + }
- else
- v = 0;
- Index: darkplaces.ico
- ===================================================================
- Cannot display: file marked as a binary type.
- svn:mime-type = image/x-icon
- Index: menu.c
- ===================================================================
- --- menu.c (revision 11991)
- +++ menu.c (working copy)
- @@ -1044,18 +1044,19 @@
- static void M_Transfusion_Episode_Draw (void)
- {
- - int y;
- + /*int y;
- cachepic_t *p;
- - char vabuf[1024];
- + char vabuf[1024];*/
- M_Background(640, 480);
- - p = Draw_CachePic ("gfx/menu/tb-episodes");
- + M_Print(264, 236, "Coming Soon...");
- + /*p = Draw_CachePic ("gfx/menu/tb-episodes");
- M_DrawPic (640/2 - p->width/2, 40, "gfx/menu/tb-episodes");
- for (y = 0; y < EPISODE_ITEMS; y++){
- M_DrawPic (0, 160 + y * 40, va(vabuf, sizeof(vabuf), "gfx/menu/episode%i", y+1));
- }
- - M_DrawPic (0, 120 + (m_episode_cursor + 1) * 40, va(vabuf, sizeof(vabuf), "gfx/menu/episode%iselected", m_episode_cursor + 1));
- + M_DrawPic (0, 120 + (m_episode_cursor + 1) * 40, va("gfx/menu/episode%iselected", m_episode_cursor + 1));*/
- }
- static void M_Transfusion_Episode_Key (int key, int ascii)
- @@ -1066,7 +1067,7 @@
- M_Menu_Main_f ();
- break;
- - case K_DOWNARROW:
- + /*case K_DOWNARROW:
- S_LocalSound ("sound/misc/menu1.wav");
- m_episode_cursor++;
- if (m_episode_cursor >= EPISODE_ITEMS)
- @@ -1083,7 +1084,7 @@
- case K_ENTER:
- Cbuf_AddText ("deathmatch 0\n");
- m_entersound = true;
- - M_Menu_Transfusion_Skill_f ();
- + M_Menu_Transfusion_Skill_f ();*/
- }
- }
- @@ -2373,14 +2374,15 @@
- static const char *transfusionbindnames[][2] =
- {
- {"", "Movement"}, // Movement commands
- -{"+forward", "walk forward"},
- -{"+back", "backpedal"},
- -{"+left", "turn left"},
- -{"+right", "turn right"},
- -{"+moveleft", "step left"},
- -{"+moveright", "step right"},
- -{"+jump", "jump / swim up"},
- -{"+movedown", "swim down"},
- +{"+forward", "Walk Forward"},
- +{"+back", "Backpedal"},
- +{"+left", "Turn Left"},
- +{"+right", "Turn Right"},
- +{"+moveleft", "Step Left"},
- +{"+moveright", "Step Right"},
- +{"+button5", "Crouch"},
- +{"+jump", "Jump / Swim Up"},
- +{"+movedown", "Swim Down"},
- {"", "Combat"}, // Combat commands
- {"impulse 1", "Pitch Fork"},
- {"impulse 2", "Flare Gun"},
- @@ -2394,28 +2396,29 @@
- {"impulse 8", "Tesla Cannon"},
- {"impulse 9", "Life Leech"},
- {"impulse 10", "Voodoo Doll"},
- -{"impulse 21", "next weapon"},
- -{"impulse 22", "previous weapon"},
- -{"+attack", "attack"},
- -{"+button3", "altfire"},
- +{"impulse 21", "Next Weapon"},
- +{"impulse 22", "Previous Weapon"},
- +{"+attack", "Attack"},
- +{"+button3", "Alt-fire"},
- {"", "Inventory"}, // Inventory commands
- {"impulse 40", "Dr.'s Bag"},
- {"impulse 41", "Crystal Ball"},
- {"impulse 42", "Beast Vision"},
- {"impulse 43", "Jump Boots"},
- -{"impulse 23", "next item"},
- -{"impulse 24", "previous item"},
- -{"impulse 25", "use item"},
- +{"impulse 23", "Next Item"},
- +{"impulse 24", "Previous Item"},
- +{"impulse 25", "Use Item"},
- {"", "Misc"}, // Misc commands
- -{"+button4", "use"},
- -{"impulse 50", "add bot (red)"},
- -{"impulse 51", "add bot (blue)"},
- -{"impulse 52", "kick a bot"},
- -{"impulse 26", "next armor type"},
- -{"impulse 27", "identify player"},
- -{"impulse 55", "voting menu"},
- -{"impulse 56", "observer mode"},
- -{"", "Taunts"}, // Taunts
- +{"+button4", "Use"},
- +{"impulse 50", "Add bot (Red)"},
- +{"impulse 51", "Add bot (Blue)"},
- +{"impulse 52", "Kick a bot"},
- +//{"impulse 26", "Next armor type"},
- +{"impulse 27", "Identify Player"},
- +{"impulse 55", "Voting Menu"},
- +{"impulse 56", "Observer Mode"},
- +{"impulse 70", "Taunt"}
- +/*{"", "Taunts"}, // Taunts
- {"impulse 70", "taunt 0"},
- {"impulse 71", "taunt 1"},
- {"impulse 72", "taunt 2"},
- @@ -2425,7 +2428,7 @@
- {"impulse 76", "taunt 6"},
- {"impulse 77", "taunt 7"},
- {"impulse 78", "taunt 8"},
- -{"impulse 79", "taunt 9"}
- +{"impulse 79", "taunt 9"}*/
- };
- static const char *goodvsbad2bindnames[][2] =
- @@ -3155,10 +3158,10 @@
- static void M_Credits_Draw (void)
- {
- M_Background(640, 480);
- - M_DrawPic (0, 0, "gfx/creditsmiddle");
- + M_DrawPic (180, 66, "gfx/menu/tile2573");//middle
- + //draw scroller here
- M_Print (640/2 - 14/2*8, 236, "Coming soon...");
- - M_DrawPic (0, 0, "gfx/creditstop");
- - M_DrawPic (0, 433, "gfx/creditsbottom");
- + M_DrawPic (0, 0, "gfx/menu/tile2574");//outline
- }
- @@ -3423,7 +3426,7 @@
- if (lanConfig_cursor < 0)
- lanConfig_cursor = NUM_LANCONFIG_CMDS-1;
- // when in start game menu, skip the unused search qw servers item
- - if (StartingGame && lanConfig_cursor == 2)
- + if (StartingGame && lanConfig_cursor >= 2)
- lanConfig_cursor = 1;
- break;
- @@ -3433,8 +3436,8 @@
- if (lanConfig_cursor >= NUM_LANCONFIG_CMDS)
- lanConfig_cursor = 0;
- // when in start game menu, skip the unused search qw servers item
- - if (StartingGame && lanConfig_cursor == 1)
- - lanConfig_cursor = 2;
- + if (StartingGame && lanConfig_cursor >= 2)
- + lanConfig_cursor = 0;
- break;
- case K_ENTER:
- @@ -3707,6 +3710,35 @@
- // Map list for Transfusion
- static level_t transfusionlevels[] =
- {
- + {"bb1", "The Stronghold"},
- + {"bb2", "Winter Wonderland"},
- + {"bb3", "Bodies"},
- + {"bb4", "The Tower"},
- + {"bb5", "Click!"},
- + {"bb7", "Midgard"},
- + {"bb8", "Fun With Heads"},
- + {"bodiesctf", "Bodies CTF"},
- +
- + {"e1m7", "Altar of Stone"},
- + {"e3m7", "The Pit of Cerberus"},
- + {"e4m8", "The Hall of the Epiphany"},
- +
- + {"cpbb03", "Unholy Cathedral"},
- +
- + {"b2a15", "B2 Area 15"},
- + {"b2bodies", "B2 Bodies"},
- + {"b2cabana", "B2 Cabana"},
- + {"b2crypt", "B2 Crypt"},
- + {"b2power", "B2 Power"},
- +
- + {"cabalarena", "Cabal Arena"},
- + {"fragenstein", "Fragenstein"},
- + {"fragm", "Frag'm"},
- + {"qmorbias", "Qmorbias"},
- + {"qe1m7", "Quake 1 e1m7"},
- + {"highnoon", "High Noon"}
- +
- + /*
- {"e1m1", "Cradle to Grave"},
- {"e1m2", "Wrong Side of the Tracks"},
- {"e1m3", "Phantom Express"},
- @@ -3811,10 +3843,18 @@
- {"qdm5", "The Cistern"},
- {"qmorbias", "DM-Morbias"},
- {"simple", "Dead Simple"}
- + */
- };
- static episode_t transfusionepisodes[] =
- {
- + {"BloodBath", 0, 8},
- + {"Blood 1", 8, 3},
- + {"Cryptic Passage", 11, 1},
- + {"Blood 2", 12, 5},
- + {"Custom", 17, 6}
- +
- + /*
- {"The Way of All Flesh", 0, 8},
- {"Even Death May Die", 8, 9},
- {"Farewell to Arms", 17, 8},
- @@ -3826,6 +3866,7 @@
- {"Blood 2", 68, 8},
- {"Transfusion", 76, 9},
- {"Conversions", 85, 9}
- + */
- };
- static level_t goodvsbad2levels[] =
- @@ -3918,7 +3959,7 @@
- static gamelevels_t hipnoticgame = {"Scourge of Armagon", hipnoticlevels, hipnoticepisodes, 6};
- static gamelevels_t roguegame = {"Dissolution of Eternity", roguelevels, rogueepisodes, 4};
- static gamelevels_t nehahragame = {"Nehahra", nehahralevels, nehahraepisodes, 4};
- -static gamelevels_t transfusiongame = {"Transfusion", transfusionlevels, transfusionepisodes, 11};
- +static gamelevels_t transfusiongame = {"Transfusion", transfusionlevels, transfusionepisodes, 5};
- static gamelevels_t goodvsbad2game = {"Good Vs. Bad 2", goodvsbad2levels, goodvsbad2episodes, 1};
- static gamelevels_t battlemechgame = {"Battlemech", battlemechlevels, battlemechepisodes, 1};
- static gamelevels_t openquartzgame = {"OpenQuartz", openquartzlevels, openquartzepisodes, 3};
- Index: prvm_offsets.h
- ===================================================================
- --- prvm_offsets.h (revision 11991)
- +++ prvm_offsets.h (working copy)
- @@ -398,6 +398,22 @@
- PRVM_DECLARE_field(weaponframe)
- PRVM_DECLARE_field(weaponmodel)
- PRVM_DECLARE_field(yaw_speed)
- +PRVM_DECLARE_field(ammo_flare) // Transfusion flare ammo
- +PRVM_DECLARE_field(ammo_tnt_bundle) // Transfusion TNT Bundle
- +PRVM_DECLARE_field(ammo_tnt_remote) // Transfusion Remote Det TNT
- +PRVM_DECLARE_field(ammo_tnt_proxy) // Transfusion Proximity Det TNT
- +PRVM_DECLARE_field(ammo_spray) // Transfusion Hairspray Can
- +PRVM_DECLARE_field(ammo_leech) // Transfusion Life Leech ammo
- +PRVM_DECLARE_field(ammo_voodoo) // Transfusion VooDoo Doll ammo
- +PRVM_DECLARE_field(armor_fire) // Transfusion Fire Armor
- +PRVM_DECLARE_field(armor_body) // Transfusion Body Armor
- +PRVM_DECLARE_field(armor_spirit) // Transfusion Spirit Armor
- +PRVM_DECLARE_field(item_boots) // Transfusion Jump Boots
- +PRVM_DECLARE_field(item_medkit) // Transfusion Medkit
- +PRVM_DECLARE_field(item_beastvision) // Transfusion Beastvision
- +PRVM_DECLARE_field(item_crystalball) // Transfusion Crystal Ball
- +PRVM_DECLARE_field(item_divingsuit) // Transfusion Diving Suit
- +PRVM_DECLARE_field(active_inventory) // Transfusion Active Inventory Item
- PRVM_DECLARE_function(CSQC_ConsoleCommand)
- PRVM_DECLARE_function(CSQC_Ent_Remove)
- PRVM_DECLARE_function(CSQC_Ent_Spawn)
- Index: quakedef.h
- ===================================================================
- --- quakedef.h (revision 11991)
- +++ quakedef.h (working copy)
- @@ -365,7 +365,52 @@
- #define HIT_EMPATHY_SHIELDS (1<<(23+3))
- //===========================================
- +//Transfusion added defines
- +//stats - items requring a full int value
- +//the HUD can show almost all values at once, requiring more stats than just y/n items
- +#define TFN_AMMO_FLARE 30
- +#define TFN_AMMO_SHELLS 6
- +#define TFN_AMMO_BULLETS 7
- +#define TFN_AMMO_NAPALM 8
- +#define TFN_AMMO_TNT_BUNDLE 31
- +#define TFN_AMMO_TNT_REMOTE 32
- +#define TFN_AMMO_TNT_PROXY 33
- +#define TFN_AMMO_SPRAY 34
- +#define TFN_AMMO_TESLA 9
- +#define TFN_AMMO_LEECH 35
- +#define TFN_AMMO_VOODOO 36
- +#define TFN_ITEM_MEDKIT 37
- +#define TFN_ITEM_DIVINGSUIT 38
- +#define TFN_ITEM_CRYSTALBALL 39
- +#define TFN_ITEM_BEASTVISION 40
- +#define TFN_ITEM_BOOTS 41
- +#define TFN_ARMOR_FIRE 42
- +#define TFN_ARMOR_BODY 43
- +#define TFN_ARMOR_SPIRIT 44
- +#define TFN_ACTIVE_INVENTORY 45
- +//items - yes/no items
- +#define TFN_WEAPON_PITCHFORK 1
- +#define TFN_WEAPON_FLARE 2
- +#define TFN_WEAPON_SHOTGUN 4
- +#define TFN_WEAPON_TOMMYGUN 8
- +#define TFN_WEAPON_NAPALM 16
- +#define TFN_WEAPON_TNT_BUNDLE 32
- +#define TFN_WEAPON_TNT_PROXY 64
- +#define TFN_WEAPON_TNT_REMOTE 128
- +#define TFN_WEAPON_HAIRSPRAY 256
- +#define TFN_WEAPON_TESLA 512
- +#define TFN_WEAPON_LIFELEECH 1024
- +#define TFN_WEAPON_VOODOO 2048
- +#define TFN_KEY_SKULL (1<<23)
- +#define TFN_KEY_EYE (1<<24)
- +#define TFN_KEY_FIRE (1<<25)
- +#define TFN_KEY_DAGGER (1<<26)
- +#define TFN_KEY_SPIDER (1<<27)
- +#define TFN_KEY_MOON (1<<28)
- +#define TFN_DEATHMASK 262144
- +//===========================================
- +
- #include "zone.h"
- #include "fs.h"
- #include "common.h"
- Index: sbar.c
- ===================================================================
- --- sbar.c (revision 11991)
- +++ sbar.c (working copy)
- @@ -36,6 +36,14 @@
- cachepic_t *sb_sbar_minimal;
- cachepic_t *sb_sbar_overlay;
- +// only used by TFn
- +cachepic_t *sb_sbar_min_left;
- +cachepic_t *sb_sbar_min_right;
- +cachepic_t *sb_scoreboard;
- +cachepic_t *sb_tfhudnums[6][11];
- +cachepic_t *sb_keys[2][6];
- +cachepic_t *sb_inventory[5];
- +
- // AK changed the bound to 9
- cachepic_t *sb_weapons[7][9]; // 0 is active, 1 is owned, 2-5 are flashes
- cachepic_t *sb_ammo[4];
- @@ -206,6 +214,42 @@
- zymsb_crosshair_left2 = Draw_CachePic_Flags ("gfx/hud/crosshair_left2", CACHEPICFLAG_QUIET);
- zymsb_crosshair_right = Draw_CachePic_Flags ("gfx/hud/crosshair_right", CACHEPICFLAG_QUIET);
- }
- + else if (gamemode == GAME_TRANSFUSION)
- + {
- + for (i = 0;i < 10;i++)
- + {
- + sb_tfhudnums[0][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_sm_dblue/hn_b2-%i",i), CACHEPICFLAG_QUIET); //small dark blue
- + sb_tfhudnums[1][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_sm_lblue/hn_b1-%i",i), CACHEPICFLAG_QUIET); //small light blue
- + sb_tfhudnums[2][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_sm_gray/hn_a-%i",i), CACHEPICFLAG_QUIET); //small white/gray
- + sb_tfhudnums[3][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_med_red/tile225%i",i), CACHEPICFLAG_QUIET); //medium red
- + sb_tfhudnums[4][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_lg_blue/tile224%i",i), CACHEPICFLAG_QUIET); //large blue
- + sb_tfhudnums[5][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/hud/num_lg_red/tile219%i",i), CACHEPICFLAG_QUIET); //large red
- + }
- + sb_sbar = Draw_CachePic_Flags("gfx/hud/tile2200", CACHEPICFLAG_QUIET);
- + sb_sbar_min_left = Draw_CachePic_Flags("gfx/hud/tile2201", CACHEPICFLAG_QUIET);
- + sb_sbar_min_right = Draw_CachePic_Flags("gfx/hud/tile2173", CACHEPICFLAG_QUIET);
- + sb_scoreboard = Draw_CachePic_Flags("gfx/hud/scoreboard", CACHEPICFLAG_QUIET);
- + sb_keys[0][0] = Draw_CachePic_Flags("gfx/hud/keys/tile2220-g", CACHEPICFLAG_QUIET); //skull
- + sb_keys[0][1] = Draw_CachePic_Flags("gfx/hud/keys/tile2221-g", CACHEPICFLAG_QUIET); //eye
- + sb_keys[0][2] = Draw_CachePic_Flags("gfx/hud/keys/tile2222-g", CACHEPICFLAG_QUIET); //fire
- + sb_keys[0][3] = Draw_CachePic_Flags("gfx/hud/keys/tile2223-g", CACHEPICFLAG_QUIET); //dagger
- + sb_keys[0][4] = Draw_CachePic_Flags("gfx/hud/keys/tile2224-g", CACHEPICFLAG_QUIET); //spider
- + sb_keys[0][5] = Draw_CachePic_Flags("gfx/hud/keys/tile2225-g", CACHEPICFLAG_QUIET); //moon
- + sb_keys[1][0] = Draw_CachePic_Flags("gfx/hud/keys/tile2220", CACHEPICFLAG_QUIET);
- + sb_keys[1][1] = Draw_CachePic_Flags("gfx/hud/keys/tile2221", CACHEPICFLAG_QUIET);
- + sb_keys[1][2] = Draw_CachePic_Flags("gfx/hud/keys/tile2222", CACHEPICFLAG_QUIET);
- + sb_keys[1][3] = Draw_CachePic_Flags("gfx/hud/keys/tile2223", CACHEPICFLAG_QUIET);
- + sb_keys[1][4] = Draw_CachePic_Flags("gfx/hud/keys/tile2224", CACHEPICFLAG_QUIET);
- + sb_keys[1][5] = Draw_CachePic_Flags("gfx/hud/keys/tile2225", CACHEPICFLAG_QUIET);
- + sb_armor[0] = Draw_CachePic_Flags("gfx/hud/armorbars/tile2207", CACHEPICFLAG_QUIET);
- + sb_armor[1] = Draw_CachePic_Flags("gfx/hud/armorbars/tile2209", CACHEPICFLAG_QUIET);
- + sb_armor[2] = Draw_CachePic_Flags("gfx/hud/armorbars/tile2208", CACHEPICFLAG_QUIET);
- + sb_inventory[0] = Draw_CachePic_Flags("gfx/hud/inventory/tile2569", CACHEPICFLAG_QUIET); //medkit
- + sb_inventory[1] = Draw_CachePic_Flags("gfx/hud/inventory/tile2564", CACHEPICFLAG_QUIET); //diving suit
- + sb_inventory[2] = Draw_CachePic_Flags("gfx/hud/inventory/tile2566", CACHEPICFLAG_QUIET); //crystal ball
- + sb_inventory[3] = Draw_CachePic_Flags("gfx/hud/inventory/tile2568", CACHEPICFLAG_QUIET); //beast vision
- + sb_inventory[4] = Draw_CachePic_Flags("gfx/hud/inventory/tile2560", CACHEPICFLAG_QUIET); //jump boots
- + }
- else
- {
- sb_disc = Draw_CachePic_Flags ("gfx/disc", CACHEPICFLAG_QUIET);
- @@ -448,14 +492,27 @@
- static void Sbar_DrawNum (int x, int y, int num, int digits, int color)
- {
- char str[32], *ptr;
- - int l, frame;
- + int l, frame, x_length;
- + if (gamemode == GAME_TRANSFUSION)
- + {
- + if (num == 0 && color == 2 )
- + return;
- + if (color > 3) //health and large ammo
- + x_length = 18;
- + else if (color > 2) //smaller red is a medium font
- + x_length = 10;
- + else //small fonts, small ammo, armor
- + x_length = 8;
- + }
- + else
- + x_length = 24;
- l = dpsnprintf(str, sizeof(str), "%i", num);
- ptr = str;
- if (l > digits)
- ptr += (l-digits);
- if (l < digits)
- - x += (digits-l)*24;
- + x += (digits-l)*x_length;
- while (*ptr)
- {
- @@ -464,9 +521,15 @@
- else
- frame = *ptr -'0';
- - Sbar_DrawPic (x, y, sb_nums[color][frame]);
- - x += 24;
- -
- + if (gamemode == GAME_TRANSFUSION)
- + {
- + if (!(color == 4 && !num))
- + Sbar_DrawPic (x, y, sb_tfhudnums[color][frame]);
- + }
- + else
- + Sbar_DrawPic (x, y, sb_nums[color][frame]);
- + x += x_length;
- +
- ptr++;
- }
- }
- @@ -1214,7 +1277,11 @@
- fps_scaley = 12;
- //fps_y = vid_conheight.integer - sb_lines; // yes this may draw over the sbar
- //fps_y = bound(0, fps_y, vid_conheight.integer - fps_strings*fps_scaley);
- - fps_y = vid_conheight.integer - sbar_info_pos.integer - fps_strings*fps_scaley;
- + if (gamemode == GAME_TRANSFUSION)
- + fps_y = 0;
- + else
- + fps_y = vid_conheight.integer - sbar_info_pos.integer - fps_strings*fps_scaley;
- +
- if (soundstring[0])
- {
- fps_x = vid_conwidth.integer - DrawQ_TextWidth(soundstring, 0, fps_scalex, fps_scaley, true, FONT_INFOBAR);
- @@ -1609,6 +1676,92 @@
- DrawQ_Pic(sbar_x + 120 * scale, sbar_y + 120 * scale, zymsb_crosshair_center, 16 * scale, 16 * scale, 1, 1, 1, 1, DRAWFLAG_NORMAL);
- #endif
- }
- + else if (gamemode == GAME_TRANSFUSION)
- + {
- + if (sb_showscores || (cl.stats[STAT_HEALTH] <= 0 && cl_deathscoreboard.integer))
- + Sbar_DrawScoreboard ();
- +
- + //if deathmatch, draw scoreboard
- + if (cl.gametype == GAME_DEATHMATCH)
- + {
- + Sbar_DrawAlphaPic(0,0,sb_scoreboard, sbar_alpha_bg.value);
- + if (scoreboardlines > 4)
- + Sbar_DrawAlphaPic(0,22,sb_scoreboard, sbar_alpha_bg.value);
- + Sbar_MiniDeathmatchOverlay (8, 6);
- + }
- +
- + if (sb_lines > 24) //Large HUD
- + {
- + // sbar
- + Sbar_DrawAlphaPic ((vid_conwidth.integer/2 - 320), (vid_conheight.integer - 113), sb_sbar, sbar_alpha_bg.value);
- + // keys
- + Sbar_DrawPic ((vid_conwidth.integer/2 - 183), (vid_conheight.integer - 67), cl.stats[STAT_ITEMS] & TFN_KEY_SKULL ? sb_keys[1][0] : sb_keys[0][0]);
- + Sbar_DrawPic ((vid_conwidth.integer/2 + 163), (vid_conheight.integer - 67), cl.stats[STAT_ITEMS] & TFN_KEY_EYE ? sb_keys[1][1] : sb_keys[0][1]);
- + Sbar_DrawPic ((vid_conwidth.integer/2 - 183), (vid_conheight.integer - 45), cl.stats[STAT_ITEMS] & TFN_KEY_FIRE ? sb_keys[1][2] : sb_keys[0][2]);
- + Sbar_DrawPic ((vid_conwidth.integer/2 + 163), (vid_conheight.integer - 45), cl.stats[STAT_ITEMS] & TFN_KEY_DAGGER ? sb_keys[1][3] : sb_keys[0][3]);
- + Sbar_DrawPic ((vid_conwidth.integer/2 - 183), (vid_conheight.integer - 23), cl.stats[STAT_ITEMS] & TFN_KEY_SPIDER ? sb_keys[1][4] : sb_keys[0][4]);
- + Sbar_DrawPic ((vid_conwidth.integer/2 + 163), (vid_conheight.integer - 23), cl.stats[STAT_ITEMS] & TFN_KEY_MOON ? sb_keys[1][5] : sb_keys[0][5]);
- + // health
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 157), (vid_conheight.integer - 45), cl.stats[STAT_HEALTH], 3, 5);
- + // armor
- + if (cl.stats[TFN_ARMOR_FIRE] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 - 233), (vid_conheight.integer - 51), sb_armor[0] , (cl.stats[TFN_ARMOR_FIRE] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + if (cl.stats[TFN_ARMOR_BODY] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 - 233), (vid_conheight.integer - 35), sb_armor[1], (cl.stats[TFN_ARMOR_BODY] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + if (cl.stats[TFN_ARMOR_SPIRIT] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 - 233), (vid_conheight.integer - 19), sb_armor[2], (cl.stats[TFN_ARMOR_SPIRIT] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 225), (vid_conheight.integer - 51), cl.stats[TFN_ARMOR_FIRE], 3, 2);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 225), (vid_conheight.integer - 35), cl.stats[TFN_ARMOR_BODY], 3, 2);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 225), (vid_conheight.integer - 19), cl.stats[TFN_ARMOR_SPIRIT], 3, 2);
- + // ammo_big - only thing thats hidden when you're dead
- + if (cl.stats[STAT_HEALTH])
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 103), (vid_conheight.integer - 45), cl.stats[STAT_AMMO], 3, 4);
- + // inventory
- + if (!(cl.stats[TFN_ACTIVE_INVENTORY] == 0 && cl.stats[TFN_ITEM_MEDKIT] == 0))
- + {
- + Sbar_DrawNum ((vid_conwidth.integer - 125), (vid_conheight.integer - 62), cl.stats[TFN_ITEM_MEDKIT + cl.stats[TFN_ACTIVE_INVENTORY]], 3, 3);
- + Sbar_DrawPic ((vid_conwidth.integer - 129), (vid_conheight.integer - 47), sb_inventory[cl.stats[TFN_ACTIVE_INVENTORY]]);
- + }
- +
- + // ammo counts
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 55), (vid_conheight.integer - 41), cl.stats[TFN_AMMO_FLARE], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_FLARE ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 55), (vid_conheight.integer - 29), cl.stats[TFN_AMMO_SHELLS], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_SHOTGUN ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 55), (vid_conheight.integer - 17), cl.stats[TFN_AMMO_BULLETS], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_TOMMYGUN ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 9), (vid_conheight.integer - 41), cl.stats[TFN_AMMO_NAPALM], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_NAPALM ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 9), (vid_conheight.integer - 29), cl.stats[TFN_AMMO_TNT_BUNDLE], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_TNT_BUNDLE ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 250), (vid_conheight.integer - 17), cl.stats[TFN_AMMO_TNT_PROXY], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_TNT_PROXY ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 285), (vid_conheight.integer - 17), cl.stats[TFN_AMMO_TNT_REMOTE], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_TNT_REMOTE ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 - 9), (vid_conheight.integer - 17), cl.stats[TFN_AMMO_SPRAY], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_HAIRSPRAY ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 37), (vid_conheight.integer - 41), cl.stats[TFN_AMMO_TESLA], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_TESLA ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 37), (vid_conheight.integer - 29), cl.stats[TFN_AMMO_LEECH], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_LIFELEECH ? 1:0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 37), (vid_conheight.integer - 17), cl.stats[TFN_AMMO_VOODOO], 3, cl.stats[STAT_ACTIVEWEAPON] == TFN_WEAPON_VOODOO ? 1:0);
- + }
- + else if (sb_lines <= 24 && sb_lines) //Minimized HUD, !sb_lines = completely blank, no HUD
- + {
- + Sbar_DrawAlphaPic (0, (vid_conheight.integer - 52), sb_sbar_min_left, sbar_alpha_bg.value);
- + Sbar_DrawAlphaPic ((vid_conwidth.integer - 145), (vid_conheight.integer - 51), sb_sbar_min_right,sbar_alpha_bg.value);
- + // health
- + Sbar_DrawNum (7, (vid_conheight.integer - 45), cl.stats[STAT_HEALTH], 3, 5);
- + // ammo_big
- + Sbar_DrawNum (75, (vid_conheight.integer - 45), cl.stats[STAT_AMMO], 3, 4);
- + //armor
- + if (cl.stats[TFN_ARMOR_FIRE] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 + 178), (vid_conheight.integer - 48), sb_armor[0], (cl.stats[TFN_ARMOR_FIRE] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + if (cl.stats[TFN_ARMOR_BODY] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 + 178), (vid_conheight.integer - 32), sb_armor[1], (cl.stats[TFN_ARMOR_BODY] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + if (cl.stats[TFN_ARMOR_SPIRIT] >= 5)
- + DrawQ_Pic((vid_conwidth.integer/2 + 178), (vid_conheight.integer - 16), sb_armor[2], (cl.stats[TFN_ARMOR_SPIRIT] / 5 + 2), 14, 1, 1, 1, sbar_alpha_fg.value, 0);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 186), (vid_conheight.integer - 48), cl.stats[TFN_ARMOR_FIRE], 3, 2);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 186), (vid_conheight.integer - 32), cl.stats[TFN_ARMOR_BODY], 3, 2);
- + Sbar_DrawNum ((vid_conwidth.integer/2 + 186), (vid_conheight.integer - 16), cl.stats[TFN_ARMOR_SPIRIT], 3, 2);
- + // inventory
- + if (!(cl.stats[TFN_ACTIVE_INVENTORY] == 0 && cl.stats[TFN_ITEM_MEDKIT] == 0))
- + {
- + Sbar_DrawNum ((vid_conwidth.integer - 40), (vid_conheight.integer - 40), cl.stats[TFN_ITEM_MEDKIT + cl.stats[TFN_ACTIVE_INVENTORY]], 3, 3);
- + Sbar_DrawPic ((vid_conwidth.integer - 88), (vid_conheight.integer - 45), sb_inventory[cl.stats[TFN_ACTIVE_INVENTORY]]);
- + }
- + }
- + }
- else // Quake and others
- {
- sbar_x = (vid_conwidth.integer - 320)/2;
- @@ -1797,6 +1950,17 @@
- else
- DrawQ_String(x, y, va(vabuf, sizeof(vabuf), " spect %c%s", myself ? 13 : ' ', s->name), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, false, FONT_SBAR );
- }
- + else if (gamemode == GAME_TRANSFUSION)
- + {
- + // draw colors behind score
- + c = palette_rgb_pantsscoreboard[(s->colors & 0xf0) >> 4];
- + DrawQ_Fill(x, y+1, 40*FONT_SBAR->width_of[0], 3, c[0] * (1.0f / 255.0f), c[1] * (1.0f / 255.0f), c[2] * (1.0f / 255.0f), sbar_alpha_fg.value, 0);
- + c = palette_rgb_shirtscoreboard[s->colors & 0xf];
- + DrawQ_Fill(x, y+4, 40*FONT_SBAR->width_of[0], 3, c[0] * (1.0f / 255.0f), c[1] * (1.0f / 255.0f), c[2] * (1.0f / 255.0f), sbar_alpha_fg.value, 0);
- + // print the text
- + //DrawQ_String(x, y, va("%c%4i %s", myself ? 13 : ' ', (int) s->frags, s->name), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, true);
- + DrawQ_String(x, y, va(vabuf, sizeof(vabuf), "%5i %c%s", (int) s->frags, myself ? 13 : ' ', s->name), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, false, FONT_SBAR );
- + }
- else
- {
- // draw colors behind score
- @@ -1873,15 +2037,20 @@
- DrawQ_Pic ((vid_conwidth.integer - sb_ranking->width)/2, 8, sb_ranking, 0, 0, 1, 1, 1, 1 * sbar_alpha_fg.value, 0);
- // draw the text
- - y = 40;
- +
- + if (gamemode == GAME_TRANSFUSION)
- + y = 82;
- + else
- + y = 40;
- if (cls.protocol == PROTOCOL_QUAKEWORLD)
- {
- DrawQ_String(xmin, y, va(vabuf, sizeof(vabuf), "ping pl%% time frags team name"), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, false, FONT_SBAR );
- }
- + else if (gamemode == GAME_TRANSFUSION)
- + DrawQ_String(xmin, y, va(vabuf, sizeof(vabuf), "frags name"), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, false, FONT_SBAR );
- else
- - {
- DrawQ_String(xmin, y, va(vabuf, sizeof(vabuf), "ping pl%% frags name"), 0, 8, 8, 1, 1, 1, 1 * sbar_alpha_fg.value, 0, NULL, false, FONT_SBAR );
- - }
- +
- y += 8;
- if (Sbar_IsTeammatch ())
- @@ -1964,6 +2133,37 @@
- if (gamemode == GAME_TRANSFUSION)
- {
- + // decide where to print
- + numlines = 8;
- +
- + // give up if there isn't room
- + if (numlines < 1)
- + return;
- +
- + // scores
- + Sbar_SortFrags ();
- +
- + //find us
- + for (i = 0; i < scoreboardlines; i++)
- + if (fragsort[i] == cl.playerentity - 1)
- + break;
- +
- + // figure out start
- + i -= numlines/2;
- + i = min(i, scoreboardlines - numlines);
- + i = max(i, 0);
- +
- + for (;i < scoreboardlines ;i++)
- + {
- + if (x >= 600)
- + {
- + x = 8;
- + y += 22;
- + if (y > 40)
- + return;
- + }
- + x += 152 + Sbar_PrintScoreboardItem(cl.scores + fragsort[i], x, y);
- + }
- for (;i < range_end && x < vid_conwidth.integer;i++)
- x += 128 + (int)Sbar_PrintScoreboardItem(cl.scores + fragsort[i], x, y);
- }
- Index: sv_main.c
- ===================================================================
- --- sv_main.c (revision 11991)
- +++ sv_main.c (working copy)
- @@ -2062,6 +2062,31 @@
- stats[STAT_ROCKETS] = (int)PRVM_serveredictfloat(ent, ammo_rockets);
- stats[STAT_CELLS] = (int)PRVM_serveredictfloat(ent, ammo_cells);
- stats[STAT_ACTIVEWEAPON] = (int)PRVM_serveredictfloat(ent, weapon);
- +
- + if (gamemode == GAME_TRANSFUSION)
- + {
- + stats[TFN_AMMO_FLARE] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_flare);
- + //stats[TFN_AMMO_SHELLS] = // Done by Quake already
- + //stats[TFN_AMMO_BULLETS] = // Done by Quake already
- + //stats[TFN_AMMO_NAPALM] = // Done by Quake already
- + stats[TFN_AMMO_TNT_BUNDLE] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_tnt_bundle);
- + stats[TFN_AMMO_TNT_REMOTE] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_tnt_remote);
- + stats[TFN_AMMO_TNT_PROXY] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_tnt_proxy);
- + stats[TFN_AMMO_SPRAY] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_spray);
- + //stats[TFN_AMMO_TESLA] = // Done by Quake already
- + stats[TFN_AMMO_LEECH] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_leech);
- + stats[TFN_AMMO_VOODOO] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.ammo_voodoo);
- + stats[TFN_ARMOR_FIRE] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.armor_fire);
- + stats[TFN_ARMOR_BODY] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.armor_body);
- + stats[TFN_ARMOR_SPIRIT] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.armor_spirit);
- + stats[TFN_ITEM_BOOTS] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.item_boots);
- + stats[TFN_ITEM_MEDKIT] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.item_medkit);
- + stats[TFN_ITEM_BEASTVISION] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.item_beastvision);
- + stats[TFN_ITEM_CRYSTALBALL] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.item_crystalball);
- + stats[TFN_ITEM_DIVINGSUIT] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.item_divingsuit);
- + stats[TFN_ACTIVE_INVENTORY] = (int)PRVM_EDICTFIELDFLOAT(ent, prog->fieldoffsets.active_inventory);
- + }
- +
- stats[STAT_VIEWZOOM] = viewzoom;
- stats[STAT_TOTALSECRETS] = (int)PRVM_serverglobalfloat(total_secrets);
- stats[STAT_TOTALMONSTERS] = (int)PRVM_serverglobalfloat(total_monsters);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement