set g_balance_falldamage_factor 0.20
set g_balance_falldamage_maxdamage 40
set g_balance_damagepush_speedfactor 2.5
-set g_balance_contents_damagerate 10
+set g_balance_contents_damagerate 5
set g_balance_contents_playerdamage_drowning 20
set g_balance_contents_playerdamage_lava 50
set g_balance_contents_playerdamage_slime 30
-set g_balance_contents_projectiledamage 40
+set g_balance_contents_projectiledamage 100
// }}}
// {{{ powerups
set g_balance_grenadelauncher_primary_refire 0.8
set g_balance_grenadelauncher_primary_animtime 0.3
set g_balance_grenadelauncher_primary_ammo 2
-set g_balance_grenadelauncher_primary_health 10
+set g_balance_grenadelauncher_primary_health 15
set g_balance_grenadelauncher_primary_damageforcescale 0
set g_balance_grenadelauncher_primary_remote_minbouncecnt 0
float autocvar_g_balance_hagar_secondary_load_hold;
float autocvar_g_balance_hagar_secondary_load_releasedeath;
float autocvar_g_balance_hagar_secondary_load_abort;
+float autocvar_g_balance_hagar_secondary_load_linkexplode;
float autocvar_g_balance_hagar_secondary_ammo;
float autocvar_g_balance_hagar_secondary_damage;
float autocvar_g_balance_hagar_secondary_edgedamage;
-
void CreatureFrame (void)
{
local entity oldself;
float vehic = (self.vehicle_flags & VHF_ISVEHICLE);
float projectile = (self.projectiledeathtype);
- if (self.waterlevel)
+ //if(projectile)
+ // print("waterlevel: ", ftos((self.watertype <= CONTENT_WATER && self.waterlevel > 0)), ". \n");
+
+ if (self.watertype <= CONTENT_WATER && self.waterlevel > 0) // workaround a retarded bug made by id software :P (yes, it's that old of a bug)
{
if (!(self.flags & FL_INWATER))
{
self.flags |= FL_INWATER;
self.dmgtime = 0;
- te_customflash(self.origin, 40, 2, '50 1 1');
+ //te_customflash(self.origin, 200, 20, '50 0.1 0.1');
}
if(!vehic && !projectile) // vehicles and projectiles don't drown
// play leave water sound
self.flags &~= FL_INWATER;
self.dmgtime = 0;
+ //te_customflash(self.origin, 200, 20, '0.1 0.1 50');
}
self.air_finished = time + 12;
self.dmg = 2;
if (self.health <= 0)
return;
self.health = self.health - damage;
+
+ print(strcat("grenade health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n"));
+
if (self.health <= 0)
- {
- W_PrepareExplosionByDamage(attacker, self.think);
- }
+ W_PrepareExplosionByDamage(attacker, self.use);
}
void W_Grenade_Think1 (void)
gren.health = autocvar_g_balance_grenadelauncher_secondary_health;
gren.damageforcescale = autocvar_g_balance_grenadelauncher_secondary_damageforcescale;
gren.event_damage = W_Grenade_Damage;
+ gren.damagedbycontents = TRUE;
W_SETUPPROJECTILEVELOCITY_UP(gren, g_balance_grenadelauncher_secondary);
gren.angles = vectoangles (gren.velocity);
{
if (self.health <= 0)
return;
+
+ if ((attacker.realowner == self.realowner) && !autocvar_g_balance_hagar_secondary_load_linkexplode)
+ return;
+
self.health = self.health - damage;
self.angles = vectoangles(self.velocity);
+
+ print(strcat("hagar rocket health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n"));
+
if (self.health <= 0)
W_PrepareExplosionByDamage(attacker, self.think);
}
return;
self.health = self.health - damage;
self.angles = vectoangles(self.velocity);
+
+ print(strcat("mine health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n"));
+
if (self.health <= 0)
W_PrepareExplosionByDamage(attacker, W_Mine_Explode);
}
mine.damageforcescale = autocvar_g_balance_minelayer_damageforcescale;
mine.health = autocvar_g_balance_minelayer_health;
mine.event_damage = W_Mine_Damage;
+ mine.damagedbycontents = TRUE;
mine.movetype = MOVETYPE_TOSS;
PROJECTILE_MAKETRIGGER(mine);
return;
self.health = self.health - damage;
self.angles = vectoangles(self.velocity);
+
+ print(strcat("rocket health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n"));
+
if (self.health <= 0)
W_PrepareExplosionByDamage(attacker, W_Rocket_Explode);
}
else
self.health = self.health - damage;
+ print(strcat("seeker missile health ", ftos(self.health), " after ", ftos(damage), " damage... (at time: ", ftos(time), ")\n"));
+
if (self.health <= 0)
W_PrepareExplosionByDamage(attacker, Seeker_Missile_Explode);
}