From c0ca5b34a07c0c1fd76a10dec7ef3ecf1543865f Mon Sep 17 00:00:00 2001
From: Samual <samual@xonotic.org>
Date: Sat, 1 Oct 2011 19:09:40 -0400
Subject: [PATCH] Change damagerate to be like ticrate (instead of dividing 1
 by damagerate, just have it be the damagerate value itself... So 0.2 delay is
 5 tics, unlike previously where you supplied 5 and it figured out the delay

---
 balance25.cfg               |  2 +-
 balanceFruit.cfg            |  2 +-
 balanceLeeStricklin.cfg     |  2 +-
 balanceXonotic.cfg          |  2 +-
 balancetZork.cfg            |  5 ++---
 qcsrc/server/sv_main.qc     | 17 +++++++----------
 qcsrc/server/w_minelayer.qc |  2 +-
 7 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/balance25.cfg b/balance25.cfg
index a9df90f34..83eb36e13 100644
--- a/balance25.cfg
+++ b/balance25.cfg
@@ -186,7 +186,7 @@ set g_balance_falldamage_minspeed 1400
 set g_balance_falldamage_factor 0.15
 set g_balance_falldamage_maxdamage 25
 set g_balance_damagepush_speedfactor 0
-set g_balance_contents_damagerate 5 // how many times to apply damage per second (so 5 is 0.2 second delay per impulse of damage)
+set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
diff --git a/balanceFruit.cfg b/balanceFruit.cfg
index 90bf733cc..fac3faa20 100644
--- a/balanceFruit.cfg
+++ b/balanceFruit.cfg
@@ -186,7 +186,7 @@ set g_balance_falldamage_minspeed 800
 set g_balance_falldamage_factor 0.20
 set g_balance_falldamage_maxdamage 15
 set g_balance_damagepush_speedfactor 2.5
-set g_balance_contents_damagerate 5 // how many times to apply damage per second (so 5 is 0.2 second delay per impulse of damage)
+set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg
index 3d015897f..37472921b 100644
--- a/balanceLeeStricklin.cfg
+++ b/balanceLeeStricklin.cfg
@@ -186,7 +186,7 @@ set g_balance_falldamage_minspeed 1400
 set g_balance_falldamage_factor 0.15
 set g_balance_falldamage_maxdamage 25
 set g_balance_damagepush_speedfactor 0
-set g_balance_contents_damagerate 5 // how many times to apply damage per second (so 5 is 0.2 second delay per impulse of damage)
+set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg
index 0ff720650..fe8cfda79 100644
--- a/balanceXonotic.cfg
+++ b/balanceXonotic.cfg
@@ -186,7 +186,7 @@ set g_balance_falldamage_minspeed 900
 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 5 // how many times to apply damage per second (so 5 is 0.2 second delay per impulse of damage)
+set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
 set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
 set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
diff --git a/balancetZork.cfg b/balancetZork.cfg
index e22f1f548..2a262b9ff 100644
--- a/balancetZork.cfg
+++ b/balancetZork.cfg
@@ -186,9 +186,9 @@ set g_balance_falldamage_minspeed 800
 set g_balance_falldamage_factor 0.02 // maxspeed = minspeed + maxdamage / factor = 4550
 set g_balance_falldamage_maxdamage 75
 set g_balance_damagepush_speedfactor 0
-set g_balance_contents_damagerate 5 // how many times to apply damage per second (so 5 is 0.2 second delay per impulse of damage)
+set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage with playerdamage/projectiledamage
 set g_balance_contents_drowndelay 10 // time under water before a player begins drowning
-set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning
+set g_balance_contents_playerdamage_drowning 20 // damage per second for while player is drowning 
 set g_balance_contents_playerdamage_lava 50 // damage per second for while player is inside lava
 set g_balance_contents_playerdamage_slime 30 // damage per second for while player is inside slime
 set g_balance_contents_projectiledamage 10000 // instantly kill projectiles upon touching lava/slime
@@ -203,7 +203,6 @@ set g_balance_powerup_strength_force 3
 set g_balance_powerup_strength_time 30
 set g_balance_powerup_strength_selfdamage 1.5
 set g_balance_powerup_strength_selfforce 1.5
-
 // }}}
 
 // {{{ jetpack/hook
diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc
index 3f8275276..ce5828aff 100644
--- a/qcsrc/server/sv_main.qc
+++ b/qcsrc/server/sv_main.qc
@@ -1,10 +1,7 @@
 void CreatureFrame (void)
 {
-	local entity oldself;
-	local float dm;
-	
-	float damagerate; // where damagerate 5 means 5 hits per second (0.2 delay)
-	damagerate = (1 / bound(1, autocvar_g_balance_contents_damagerate, 100));
+	entity oldself;
+	float dm;
 	
 	oldself = self;
 	for(self = world; (self = findfloat(self, damagedbycontents, TRUE)); )
@@ -36,7 +33,7 @@ void CreatureFrame (void)
 					if (!self.deadflag)
 					if (self.pain_finished < time)
 					{
-						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_drowning * damagerate, DEATH_DROWN, self.origin, '0 0 0');
+						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_drowning * autocvar_g_balance_contents_damagerate, DEATH_DROWN, self.origin, '0 0 0');
 						self.pain_finished = time + 0.5;
 					}
 				}
@@ -44,7 +41,7 @@ void CreatureFrame (void)
 			
 			if (self.dmgtime < time)
 			{
-				self.dmgtime = time + damagerate; 
+				self.dmgtime = time + autocvar_g_balance_contents_damagerate; 
 				
 				if (!projectile)
 				{
@@ -55,7 +52,7 @@ void CreatureFrame (void)
 							self.watersound_finished = time + 0.5;
 							sound (self, CH_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM);
 						}
-						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * damagerate * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0');
+						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0');
 					}
 					else if (self.watertype == CONTENT_SLIME)
 					{
@@ -64,12 +61,12 @@ void CreatureFrame (void)
 							self.watersound_finished = time + 0.5;
 							sound (self, CH_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM);
 						}
-						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_slime * damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
+						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_slime * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
 					}
 				}
 				else if ((self.watertype == CONTENT_LAVA) || (self.watertype == CONTENT_SLIME))
 				{
-					Damage (self, world, world, autocvar_g_balance_contents_projectiledamage * damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
+					Damage (self, world, world, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0');
 				}
 			}
 		}
diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc
index c4b271e25..d7d08dc46 100644
--- a/qcsrc/server/w_minelayer.qc
+++ b/qcsrc/server/w_minelayer.qc
@@ -245,7 +245,7 @@ void W_Mine_Damage (entity inflictor, entity attacker, float damage, float death
 		
 	float is_from_enemy = (inflictor.realowner != self.realowner);
 		
-	if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, is_from_enemy))
+	if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, (is_from_enemy ? 1 : -1)))
 		return; // g_projectiles_damage says to halt
 		
 	self.health = self.health - damage;
-- 
2.39.5