mirror of
https://github.com/nzp-team/quakec.git
synced 2025-02-20 18:52:36 +00:00
SERVER: Add barebones Ballistic Knife definitions
This commit is contained in:
parent
94455b938e
commit
56567d7e30
3 changed files with 159 additions and 15 deletions
|
@ -69,7 +69,7 @@ void() W_PlayTakeOut =
|
|||
|
||||
void() W_AimIn =
|
||||
{
|
||||
if (self.weapon == W_TESLA || self.weapon == W_DG3)
|
||||
if (WepDef_DoesNotADS(self.weapon))
|
||||
return;
|
||||
|
||||
if (IsDualWeapon(self.weapon) ||
|
||||
|
@ -77,7 +77,6 @@ void() W_AimIn =
|
|||
self.knife_delay > time ||
|
||||
self.sprinting ||
|
||||
self.new_anim_stop ||
|
||||
self.weapon == W_BK ||
|
||||
self.semiknife == true) {
|
||||
return;
|
||||
}
|
||||
|
@ -785,7 +784,7 @@ void() LungeKnifeHit =
|
|||
makevectors (self.v_angle);
|
||||
source = self.origin + self.view_ofs;
|
||||
|
||||
if (self.weapon == W_BK)
|
||||
if (self.weapon == W_BK || self.weapon == W_KRAUS)
|
||||
traceline (source, source + v_forward*80*1.2, 0, self); // naievil -- added some extra length
|
||||
else
|
||||
traceline (source, source + v_forward*74*1.2, 0, self); // naievil -- ^^
|
||||
|
@ -806,14 +805,8 @@ void() LungeKnifeHit =
|
|||
}
|
||||
sound (self, CHAN_WEAPON, "sounds/weapons/knife/knife_hitbod.wav", 1, ATTN_NORM);
|
||||
|
||||
if (self.bowie && self.weapon == W_BK)
|
||||
f_damage = 1200;
|
||||
else if (self.bowie)
|
||||
f_damage = 1000;
|
||||
else if (self.weapon == W_BK)
|
||||
f_damage = 500;
|
||||
else
|
||||
f_damage = 150;
|
||||
// Calculate melee damage
|
||||
f_damage = WepDefp_CalculateMeleeDamage(self.weapon, self.bowie);
|
||||
|
||||
if (trace_ent.classname == "ai_zombie_head")
|
||||
{
|
||||
|
@ -1271,7 +1264,7 @@ void () W_Knife =
|
|||
sound (self, CHAN_WEAPON, "sounds/weapons/knife/knife.wav", 1, ATTN_NORM);
|
||||
makevectors (self.v_angle);
|
||||
source = self.origin + self.view_ofs;
|
||||
if (self.weapon == W_BK)
|
||||
if (self.weapon == W_BK || self.weapon == W_KRAUS)
|
||||
traceline (source, source + v_forward*80*1.2, 0, self);
|
||||
else
|
||||
traceline (source, source + v_forward*74*1.2, 0, self);
|
||||
|
@ -1306,7 +1299,7 @@ void () W_Knife =
|
|||
|
||||
if (r > 40 && hit)//lunge
|
||||
{
|
||||
if (self.weapon == W_BK)
|
||||
if (self.weapon == W_BK || self.weapon == W_KRAUS)
|
||||
{
|
||||
Set_W_Frame (14, 24, 1.4, 0, KNIFE, SUB_Null, "models/weapons/bk/v_bk.mdl", false, S_RIGHT);
|
||||
self.fire_delay = time + 1.5;
|
||||
|
@ -1331,7 +1324,7 @@ void () W_Knife =
|
|||
}
|
||||
else
|
||||
{
|
||||
if (self.weapon == W_BK)//slash
|
||||
if (self.weapon == W_BK || self.weapon == W_KRAUS)//slash
|
||||
{
|
||||
Set_W_Frame (8, 13, 0, 0.4, KNIFE, SUB_Null, "models/weapons/bk/v_bk.mdl", false, S_RIGHT);
|
||||
self.fire_delay = time + 0.5;
|
||||
|
|
|
@ -125,7 +125,7 @@ const float EVENT_SONGPLAY = 41;
|
|||
#define W_LONGINUS 50 //panzer
|
||||
#define W_PENETRATOR 51 //ptrs
|
||||
#define W_WIDOW 52 //bar
|
||||
//#define W_KRAUS 53 //ballistic
|
||||
#define W_KRAUS 53 //ballistic
|
||||
#define W_MP5K 54
|
||||
#define W_M14 55
|
||||
|
||||
|
|
|
@ -52,6 +52,8 @@ string(float wep) GetWeaponName =
|
|||
return "The Widow Maker";
|
||||
case W_BK:
|
||||
return "Ballistic Knife";
|
||||
case W_KRAUS:
|
||||
return "The Krauss Refibrillator";
|
||||
case W_BROWNING:
|
||||
return "Browning M1919";
|
||||
case W_ACCELERATOR:
|
||||
|
@ -560,6 +562,16 @@ float(float wep, float type) getWeaponMultiplier =
|
|||
case LIMBS_X: return 1;
|
||||
}
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
switch (type)
|
||||
{
|
||||
case HEAD_X: return 2;
|
||||
case UPPER_TORSO_X: return 1;
|
||||
case LOWER_TORSO_X: return 1;
|
||||
case LIMBS_X: return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -669,6 +681,9 @@ float(float wep) getWeaponMag =
|
|||
return 3;
|
||||
case W_DG3:
|
||||
return 6;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -778,6 +793,10 @@ float(float wep) getWeaponAmmo =
|
|||
return 15;
|
||||
case W_DG3:
|
||||
return 32;
|
||||
case W_BK:
|
||||
return 4;
|
||||
case W_KRAUS:
|
||||
return 9;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -879,6 +898,10 @@ float(float wep) getWeaponDamage =
|
|||
return 100;
|
||||
case W_SAMURAI:
|
||||
return 200;
|
||||
case W_BK:
|
||||
return 500;
|
||||
case W_KRAUS:
|
||||
return 1000;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1410,6 +1433,17 @@ float(float wep, float delaytype) getWeaponDelay =
|
|||
else if (delaytype == TAKEOUT)
|
||||
return 0.9;
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
if (delaytype == RELOAD)
|
||||
return 0.75;
|
||||
else if (delaytype == FIRE)
|
||||
return 0.8;
|
||||
else if (delaytype == PUTOUT)
|
||||
return 0.4;
|
||||
else if (delaytype == TAKEOUT)
|
||||
return 0.4;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1453,6 +1487,8 @@ float GetWeaponWalkSpeed(float perks, float weapon)
|
|||
case W_DG3:
|
||||
case W_MP5K:
|
||||
case W_KOLLIDER:
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
speed_multiplier = SPEED_MULTIPLIER_STANDARD;
|
||||
break;
|
||||
case W_357:
|
||||
|
@ -2565,6 +2601,42 @@ float(float wep, float frametype, optional float z) GetFrame =
|
|||
return 16;
|
||||
}
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
switch (frametype)
|
||||
{
|
||||
case FIRE_START:
|
||||
return 28;
|
||||
case FIRE_END:
|
||||
return 32;
|
||||
case RELOAD_START:
|
||||
return 33;
|
||||
case RELOAD_END:
|
||||
return 46;
|
||||
case SPRINT_IN_START:
|
||||
return 51;
|
||||
case SPRINT_IN_END:
|
||||
return 53;
|
||||
case SPRINT_START:
|
||||
return 54;
|
||||
case SPRINT_END:
|
||||
return 61;
|
||||
case SPRINT_OUT_START:
|
||||
return 62;
|
||||
case SPRINT_OUT_END:
|
||||
return 64;
|
||||
case TAKE_OUT_START:
|
||||
return 4;
|
||||
case TAKE_OUT_END:
|
||||
return 6;
|
||||
case PUT_OUT_START:
|
||||
return 47;
|
||||
case PUT_OUT_END:
|
||||
return 50;
|
||||
case RELOAD_CANCEL:
|
||||
return 41;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -2755,6 +2827,7 @@ string(float wep, float gorvmodel) GetWeaponModel =
|
|||
else
|
||||
return ("models/weapons/tesla/v_tesla.mdl");
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
if (gorvmodel)
|
||||
return ("models/weapons/bk/g_bk.mdl");
|
||||
else
|
||||
|
@ -2864,6 +2937,9 @@ string(float wep) GetWeaponSound =
|
|||
case W_TESLA:
|
||||
case W_DG3:
|
||||
return "sounds/weapons/tesla/shoot.wav";
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
return "sounds/weapons/ballknife/shoot.wav";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
@ -2922,6 +2998,7 @@ float(float wep) IsPapWeapon = {
|
|||
case W_DG3:
|
||||
case W_PULVERIZER:
|
||||
case W_FIW:
|
||||
case W_KRAUS:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
|
@ -3007,6 +3084,8 @@ float(float wep) EqualNonPapWeapon =
|
|||
return W_TESLA;
|
||||
case W_FIW:
|
||||
return W_M2;
|
||||
case W_KRAUS:
|
||||
return W_BK;
|
||||
default:
|
||||
return wep;
|
||||
}
|
||||
|
@ -3069,6 +3148,8 @@ float(float wep) EqualPapWeapon =
|
|||
return W_M14;
|
||||
case W_M2:
|
||||
return W_FIW;
|
||||
case W_BK:
|
||||
return W_KRAUS;
|
||||
default:
|
||||
return wep;
|
||||
}
|
||||
|
@ -3404,6 +3485,12 @@ void (float wep, float anim_style, float dualwep, float curweaponframe) PlayWeap
|
|||
sound (self ,5, "sounds/weapons/tesla/clipoff.wav", 1, ATTN_NORM);
|
||||
else if (curweaponframe == 51)
|
||||
sound (self ,5, "sounds/weapons/tesla/switchon.wav", 1, ATTN_NORM);
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
if (curweaponframe == 41)
|
||||
sound(self, 5, "sounds/weapons/ballknife/insert.wav", 1, ATTN_NORM);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3610,6 +3697,11 @@ void(float weptype) precache_extra =
|
|||
precache_sound("sounds/weapons/tesla/switchon.wav");
|
||||
precache_sound("sounds/weapons/tesla/shoot.wav");
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
precache_sound("sounds/weapons/ballknife/shoot.wav");
|
||||
precache_sound("sounds/weapons/ballknife/insert.wav");
|
||||
break;
|
||||
case W_GRENADE:
|
||||
precache_model("models/props/grenade_bag.mdl");
|
||||
break;
|
||||
|
@ -3721,6 +3813,9 @@ float(float wep) getWeaponRecoilReturn =
|
|||
case W_TESLA:
|
||||
case W_DG3:
|
||||
return 1813;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
return 460;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -3735,6 +3830,8 @@ float(float weapon, float stance) CrossHairWeapon =
|
|||
case W_BIATCH:
|
||||
case W_357:
|
||||
case W_KILLU:
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
crosshair_spread = 22;
|
||||
break;
|
||||
case W_PTRS:
|
||||
|
@ -3851,6 +3948,8 @@ float(float weapon, float stance) CrossHairMaxSpread =
|
|||
case W_PORTER:
|
||||
case W_TYPE:
|
||||
case W_SAMURAI:
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
crosshair_spread = 48;
|
||||
break;
|
||||
case W_PTRS:
|
||||
|
@ -4143,6 +4242,10 @@ vector(float wep) GetWeaponRecoil =
|
|||
case W_DG3:
|
||||
kick_change = '74 74 85';
|
||||
break;
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
kick_change = '3 3 3';
|
||||
break;
|
||||
}
|
||||
total_recoil = kick_change_x + kick_change_y + kick_change_z;
|
||||
|
||||
|
@ -4409,6 +4512,54 @@ float(float wep) GetWeaponZoomAmount =
|
|||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// WepDef_CalculateMeleeDamage(weapon, has_bowie)
|
||||
// Returns the amount of melee damage the Player can
|
||||
// do given their weapon and Bowie Knife status.
|
||||
//
|
||||
float(float weapon, float has_bowie) WepDefp_CalculateMeleeDamage =
|
||||
{
|
||||
switch(weapon) {
|
||||
case W_BK:
|
||||
if (has_bowie)
|
||||
return 1000;
|
||||
return 500;
|
||||
break;
|
||||
case W_KRAUS:
|
||||
if (has_bowie)
|
||||
return 1500;
|
||||
return 1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (has_bowie)
|
||||
return 1000;
|
||||
|
||||
return 150;
|
||||
}
|
||||
|
||||
//
|
||||
// WepDef_DoesNotADS(weapon)
|
||||
// Returns true if the weapon should not be allowed
|
||||
// to aim down the sight.
|
||||
//
|
||||
float(float weapon) WepDef_DoesNotADS =
|
||||
{
|
||||
switch(weapon) {
|
||||
case W_TESLA:
|
||||
case W_DG3:
|
||||
case W_BK:
|
||||
case W_KRAUS:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// WepDef_OnlyOneAllowed(weapon)
|
||||
// Returns true if server is only allowed to distribute
|
||||
|
|
Loading…
Reference in a new issue