From d375414217f72b57f70be4b12217f1adb56b266a Mon Sep 17 00:00:00 2001
From: Mario <mario@smbclan.net>
Date: Fri, 27 Nov 2015 23:55:23 +1000
Subject: [PATCH] Add an option to burn the player when they enter lava

---
 balance-nexuiz25.cfg      | 2 ++
 balance-overkill.cfg      | 2 ++
 balance-samual.cfg        | 2 ++
 balance-xdf.cfg           | 2 ++
 balance-xonotic.cfg       | 2 ++
 balance-xpm.cfg           | 2 ++
 qcsrc/server/autocvars.qh | 2 ++
 qcsrc/server/sv_main.qc   | 2 ++
 8 files changed, 16 insertions(+)

diff --git a/balance-nexuiz25.cfg b/balance-nexuiz25.cfg
index 6e18dc092a..3ac47371ee 100644
--- a/balance-nexuiz25.cfg
+++ b/balance-nexuiz25.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/balance-overkill.cfg b/balance-overkill.cfg
index a99d342bab..a691a19183 100644
--- a/balance-overkill.cfg
+++ b/balance-overkill.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/balance-samual.cfg b/balance-samual.cfg
index 379bc207d1..6d7831adac 100644
--- a/balance-samual.cfg
+++ b/balance-samual.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/balance-xdf.cfg b/balance-xdf.cfg
index 07d4c6c723..07b38e830a 100644
--- a/balance-xdf.cfg
+++ b/balance-xdf.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/balance-xonotic.cfg b/balance-xonotic.cfg
index 3bc87d607c..ddc40e288e 100644
--- a/balance-xonotic.cfg
+++ b/balance-xonotic.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/balance-xpm.cfg b/balance-xpm.cfg
index a99044add9..e0aa8b0827 100644
--- a/balance-xpm.cfg
+++ b/balance-xpm.cfg
@@ -182,6 +182,8 @@ set g_balance_contents_damagerate 0.2 // ticrate interval for applying damage wi
 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
+set g_balance_contents_playerdamage_lava_burn 0 // extra burning damage after leaving lava
+set g_balance_contents_playerdamage_lava_burn_time 2.5 // time across which the damage is applied (note: not dps!)
 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
 set g_maxpushtime 8.0 "timeout for kill credit when your damage knocks someone into a death trap"
diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh
index ae36e0cb86..cb48688f62 100644
--- a/qcsrc/server/autocvars.qh
+++ b/qcsrc/server/autocvars.qh
@@ -84,6 +84,8 @@ float autocvar_g_balance_contents_damagerate;
 float autocvar_g_balance_contents_drowndelay;
 int autocvar_g_balance_contents_playerdamage_drowning;
 int autocvar_g_balance_contents_playerdamage_lava;
+int autocvar_g_balance_contents_playerdamage_lava_burn; // 10 is a nice value
+float autocvar_g_balance_contents_playerdamage_lava_burn_time = 2.5; // note: damage is total across this time (not by dps)
 int autocvar_g_balance_contents_playerdamage_slime;
 int autocvar_g_balance_contents_projectiledamage;
 float autocvar_g_balance_damagepush_speedfactor;
diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc
index 0d5fa234f9..b970bdb229 100644
--- a/qcsrc/server/sv_main.qc
+++ b/qcsrc/server/sv_main.qc
@@ -94,6 +94,8 @@ void CreatureFrame ()
 							sound (self, CH_PLAYER_SINGLE, SND_LAVA, VOL_BASE, ATTEN_NORM);
 						}
 						Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_LAVA.m_id, self.origin, '0 0 0');
+						if(autocvar_g_balance_contents_playerdamage_lava_burn)
+							Fire_AddDamage(self, world, autocvar_g_balance_contents_playerdamage_lava_burn * self.waterlevel, autocvar_g_balance_contents_playerdamage_lava_burn_time * self.waterlevel, DEATH_LAVA.m_id);
 					}
 					else if (self.watertype == CONTENT_SLIME)
 					{
-- 
2.39.5