Weapons should now respect skill variables for deciding their damage.

This commit is contained in:
Marco Cawthorne 2023-04-15 15:17:02 -07:00
parent d0e762788e
commit 4aa8152084
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
8 changed files with 96 additions and 6 deletions

View File

@ -93,7 +93,7 @@ void
w_grenadelauncher_shootnade(player pl)
{
static void Grenade_Explode(void) {
float dmg = Skill_GetValue("plr_grenadelauncher_dmg", 100);
float dmg = Skill_GetValue("plr_grenadelauncher", 120);
FX_Explosion(self.origin);
Damage_Radius(self.origin, self.owner, dmg, dmg * 2.5f, TRUE, WEAPON_GRENADELAUNCHER);
sound(self, CHAN_WEAPON, sprintf("weapons/explode%d.wav", floor(random() * 2) + 3), 1, ATTN_NORM);

View File

@ -118,7 +118,7 @@ w_lightning_primary(player pl)
multicast(startPos, MULTICAST_PHS);
if (trace_ent.takedamage) {
Damage_Apply(trace_ent, pl, Skill_GetValue("plr_crowbar", 10), WEAPON_CROWBAR, DMG_BLUNT);
Damage_Apply(trace_ent, pl, Skill_GetValue("plr_lightning", 30), WEAPON_LIGHTNING, DMG_BLUNT);
/* throw players into the air */
if (trace_ent.classname == "player") {

View File

@ -101,6 +101,19 @@ w_nailgun_primary(player pl)
#else
{
static void nail_touch(void) {
if (trace_ent.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
}
if (trace_ent.takedamage) {
Damage_Apply(trace_ent, self.owner, Skill_GetValue("plr_nailgun", 9), WEAPON_NAILGUN, DMG_BLUNT);
} else {
makevectors(self.angles);
DecalGroups_Place("Impact.Shot", trace_endpos + (v_forward * -2));
}
remove(self);
}

View File

@ -105,9 +105,17 @@ w_rocketlauncher_primary(player pl)
#ifdef SERVER
static void Rocket_Touch(void) {
float dmg = Skill_GetValue("plr_rocketlauncher_dmg", 100);
float radiusDamage = Skill_GetValue("plr_rocketlauncher", 120);
float baseDamage = Skill_GetValue("plr_rocketlauncher_impact", 100);
float randomDamage = random() * Skill_GetValue("plr_rocketlauncher_impact_rand", 20);
if (other != self.owner)
if (other.health > 0 && other.takedamage != DAMAGE_NO) {
Damage_Apply(other, self.owner, baseDamage + randomDamage, WEAPON_ROCKETLAUNCHER, DMG_BLUNT);
}
FX_Explosion(self.origin);
Damage_Radius(self.origin, self.owner, dmg, dmg * 2.5f, TRUE, WEAPON_ROCKETLAUNCHER);
Damage_Radius(self.origin, self.owner, radiusDamage, radiusDamage * 2.5f, TRUE, WEAPON_ROCKETLAUNCHER);
sound(self, CHAN_WEAPON, sprintf("weapons/explode%d.wav", floor(random() * 2) + 3), 1, ATTN_NORM);
remove(self);
}

View File

@ -129,7 +129,7 @@ w_shotgun_primary(player pl)
#ifdef SERVER
/* Singleplayer is more accurate */
TraceAttack_FireBulletsWithDecal(6, pl.origin + pl.view_ofs, Skill_GetValue("plr_shotgun_dmg", 4), [0.1,0.1], WEAPON_SHOTGUN, "Impact.BigShot");
TraceAttack_FireBulletsWithDecal(6, pl.origin + pl.view_ofs, Skill_GetValue("plr_shotgun", 4), [0.1,0.1], WEAPON_SHOTGUN, "Impact.BigShot");
Sound_Play(pl, CHAN_WEAPON, "weapon_shotgun.shoot");
#else
//View_AddEvent(w_shotgun_ejectshell, 0.25f);

View File

@ -105,6 +105,19 @@ w_supernailgun_primary(player pl)
#else
{
static void nail_touch(void) {
if (trace_ent.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
}
if (trace_ent.takedamage) {
Damage_Apply(trace_ent, self.owner, Skill_GetValue("plr_supernailgun", 18), WEAPON_SUPERNAILGUN, DMG_BLUNT);
} else {
makevectors(self.angles);
DecalGroups_Place("Impact.Shot", trace_endpos + (v_forward * -2));
}
remove(self);
}

View File

@ -147,7 +147,7 @@ w_supershotgun_primary(player pl)
#ifdef CLIENT
View_AddEvent(w_supershotgun_ejectshell, 0.0f);
#else
TraceAttack_FireBulletsWithDecal(14, pl.origin + pl.view_ofs, Skill_GetValue("plr_supershotgun_dmg", 4), [0.14,0.08], WEAPON_SUPERSHOTGUN, "Impact.BigShot");
TraceAttack_FireBulletsWithDecal(14, pl.origin + pl.view_ofs, Skill_GetValue("plr_supershotgun", 4), [0.14,0.08], WEAPON_SUPERSHOTGUN, "Impact.BigShot");
Sound_Play(pl, CHAN_WEAPON, "weapon_supershotgun.shoot");
#endif

View File

@ -0,0 +1,56 @@
set sk_plr_crowbar1 "20"
set sk_plr_crowbar2 "20"
set sk_plr_crowbar3 "20"
set sk_plr_shotgun1 "4"
set sk_plr_shotgun2 "4"
set sk_plr_shotgun3 "4"
set sk_plr_supershotgun1 "4"
set sk_plr_supershotgun2 "4"
set sk_plr_supershotgun3 "4"
set sk_plr_nailgun1 "9"
set sk_plr_nailgun2 "9"
set sk_plr_nailgun3 "9"
set sk_plr_supernailgun1 "18"
set sk_plr_supernailgun2 "18"
set sk_plr_supernailgun3 "18"
set sk_plr_grenadelauncher1 "120"
set sk_plr_grenadelauncher2 "120"
set sk_plr_grenadelauncher3 "120"
// radius
set sk_plr_rocketlauncher1 "120"
set sk_plr_rocketlauncher2 "120"
set sk_plr_rocketlauncher3 "120"
// direct hit base damage
set sk_plr_rocketlauncher_impact1 "100"
set sk_plr_rocketlauncher_impact2 "100"
set sk_plr_rocketlauncher_impact3 "100"
// direct hit random damage
set sk_plr_rocketlauncher_impact_rand1 "20"
set sk_plr_rocketlauncher_impact_rand2 "20"
set sk_plr_rocketlauncher_impact_rand3 "20"
set sk_plr_lightning1 "30"
set sk_plr_lightning2 "30"
set sk_plr_lightning3 "30"
set sk_battery1 "15"
set sk_battery2 "15"
set sk_battery3 "10"
set sk_healthcharger1 "50"
set sk_healthcharger2 "40"
set sk_healthcharger3 "25"
set sk_healthkit1 "15"
set sk_healthkit2 "15"
set sk_healthkit3 "10"
set sk_suitcharger1 "75"
set sk_suitcharger2 "50"
set sk_suitcharger3 "35"