From d3b83eca33e89e7fef24daea1c54769b73ca2e0c Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 20 Oct 2010 14:11:02 +0000
Subject: [PATCH] Added a copy_add field to player descriptors Class life
 rating now adds to race life rating instead of overriding it

git-svn-id: http://svn.net-core.org/repos/t-engine4@1572 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engines/default/engine/Birther.lua            | 10 ++++++++++
 game/modules/tome/data/birth/classes/afflicted.lua |  4 +++-
 game/modules/tome/data/birth/classes/archer.lua    |  1 -
 game/modules/tome/data/birth/classes/corrupted.lua |  4 +++-
 game/modules/tome/data/birth/classes/divine.lua    |  4 +++-
 game/modules/tome/data/birth/classes/mage.lua      |  5 -----
 game/modules/tome/data/birth/classes/rogue.lua     |  1 -
 game/modules/tome/data/birth/classes/tutorial.lua  |  4 +++-
 game/modules/tome/data/birth/classes/warrior.lua   |  5 +++--
 game/modules/tome/data/birth/classes/wilder.lua    |  5 +++--
 10 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/game/engines/default/engine/Birther.lua b/game/engines/default/engine/Birther.lua
index bddeefae19..983eab50a7 100644
--- a/game/engines/default/engine/Birther.lua
+++ b/game/engines/default/engine/Birther.lua
@@ -274,6 +274,16 @@ function _M:apply()
 			-- Copy normal data
 			table.merge(self.actor, copy, true)
 		end
+		if d.copy_add then
+			local copy = table.clone(d.copy_add, true)
+			-- Append array part
+			while #copy > 0 do
+				local f = table.remove(copy)
+				table.insert(self.actor, f)
+			end
+			-- Copy normal data
+			table.mergeAdd(self.actor, copy, true)
+		end
 		-- Change stats
 		if d.stats then
 			for stat, inc in pairs(d.stats) do
diff --git a/game/modules/tome/data/birth/classes/afflicted.lua b/game/modules/tome/data/birth/classes/afflicted.lua
index 555cd5fd4b..37baca4907 100644
--- a/game/modules/tome/data/birth/classes/afflicted.lua
+++ b/game/modules/tome/data/birth/classes/afflicted.lua
@@ -68,10 +68,12 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 110,
-		life_rating = 12,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="battleaxe", name="iron battleaxe", autoreq=true},
 			{type="armor", subtype="light", name="rough leather armour", autoreq=true}
 		},
 	},
+	copy_add = {
+		life_rating = 2,
+	},
 }
diff --git a/game/modules/tome/data/birth/classes/archer.lua b/game/modules/tome/data/birth/classes/archer.lua
index e46358ccb6..2f45c5c91d 100644
--- a/game/modules/tome/data/birth/classes/archer.lua
+++ b/game/modules/tome/data/birth/classes/archer.lua
@@ -34,7 +34,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 110,
-		life_rating = 10,
 	},
 }
 
diff --git a/game/modules/tome/data/birth/classes/corrupted.lua b/game/modules/tome/data/birth/classes/corrupted.lua
index 3fa165dba4..95fb76f262 100644
--- a/game/modules/tome/data/birth/classes/corrupted.lua
+++ b/game/modules/tome/data/birth/classes/corrupted.lua
@@ -33,7 +33,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 120,
-		life_rating = 12,
 	},
 }
 
@@ -73,6 +72,9 @@ newBirthDescriptor{
 			{type="armor", subtype="heavy", name="iron mail armour", autoreq=true}
 		},
 	},
+	copy_add = {
+		life_rating = 2,
+	},
 }
 
 newBirthDescriptor{
diff --git a/game/modules/tome/data/birth/classes/divine.lua b/game/modules/tome/data/birth/classes/divine.lua
index cbe9689df1..1590f445f2 100644
--- a/game/modules/tome/data/birth/classes/divine.lua
+++ b/game/modules/tome/data/birth/classes/divine.lua
@@ -72,13 +72,15 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 110,
-		life_rating = 12,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="mace", name="iron mace", autoreq=true},
 			{type="armor", subtype="shield", name="iron shield", autoreq=true},
 			{type="armor", subtype="heavy", name="iron mail armour", autoreq=true},
 		},
 	},
+	copy_add = {
+		life_rating = 2,
+	},
 }
 
 newBirthDescriptor{
diff --git a/game/modules/tome/data/birth/classes/mage.lua b/game/modules/tome/data/birth/classes/mage.lua
index 56dc016d70..a49655d880 100644
--- a/game/modules/tome/data/birth/classes/mage.lua
+++ b/game/modules/tome/data/birth/classes/mage.lua
@@ -83,7 +83,6 @@ newBirthDescriptor{
 		-- All mages are of angolwen faction
 		faction = "angolwen",
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="cloth", name="linen robe", autoreq=true},
@@ -129,7 +128,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="cloth", name="linen robe", autoreq=true}
@@ -196,7 +194,6 @@ newBirthDescriptor{
 		-- All mages are of angolwen faction
 		faction = "angolwen",
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="cloth", name="linen robe", autoreq=true},
@@ -246,7 +243,6 @@ newBirthDescriptor{
 		-- All mages are of angolwen faction
 		faction = "angolwen",
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="cloth", name="linen robe", autoreq=true},
@@ -297,7 +293,6 @@ newBirthDescriptor{
 		-- All mages are of angolwen faction
 		faction = "angolwen",
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="cloth", name="linen robe", autoreq=true},
diff --git a/game/modules/tome/data/birth/classes/rogue.lua b/game/modules/tome/data/birth/classes/rogue.lua
index 94699aeccb..6de0374fe5 100644
--- a/game/modules/tome/data/birth/classes/rogue.lua
+++ b/game/modules/tome/data/birth/classes/rogue.lua
@@ -34,7 +34,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 100,
-		life_rating = 10,
 		equipment = resolvers.equip{ id=true,
 			{type="weapon", subtype="dagger", name="iron dagger", autoreq=true},
 			{type="weapon", subtype="dagger", name="iron dagger", autoreq=true},
diff --git a/game/modules/tome/data/birth/classes/tutorial.lua b/game/modules/tome/data/birth/classes/tutorial.lua
index 586b0d266f..be9104ef65 100644
--- a/game/modules/tome/data/birth/classes/tutorial.lua
+++ b/game/modules/tome/data/birth/classes/tutorial.lua
@@ -33,11 +33,13 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 100,
-		life_rating = 12,
 		mana_regen = 0.2,
 		life_regen = 1,
 		mana_rating = 7,
 	},
+	copy_add = {
+		life_rating = 2,
+	},
 }
 
 newBirthDescriptor{
diff --git a/game/modules/tome/data/birth/classes/warrior.lua b/game/modules/tome/data/birth/classes/warrior.lua
index 76023a94bc..ece81ff78b 100644
--- a/game/modules/tome/data/birth/classes/warrior.lua
+++ b/game/modules/tome/data/birth/classes/warrior.lua
@@ -35,7 +35,9 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 120,
-		life_rating = 12,
+	},
+	copy_add = {
+		life_rating = 2,
 	},
 }
 
@@ -157,7 +159,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 100,
-		life_rating = 9,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="greatsword", name="iron greatsword", autoreq=true},
 			{type="armor", subtype="light", name="rough leather armour", autoreq=true},
diff --git a/game/modules/tome/data/birth/classes/wilder.lua b/game/modules/tome/data/birth/classes/wilder.lua
index 3f4901926c..d02b4ad47a 100644
--- a/game/modules/tome/data/birth/classes/wilder.lua
+++ b/game/modules/tome/data/birth/classes/wilder.lua
@@ -68,7 +68,6 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 90,
-		life_rating = 10,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="staff", name="elm staff", autoreq=true},
 			{type="armor", subtype="light", name="rough leather armour", autoreq=true}
@@ -109,10 +108,12 @@ newBirthDescriptor{
 	},
 	copy = {
 		max_life = 110,
-		life_rating = 12,
 		resolvers.equip{ id=true,
 			{type="weapon", subtype="battleaxe", name="iron battleaxe", autoreq=true},
 			{type="armor", subtype="light", name="rough leather armour", autoreq=true}
 		},
 	},
+	copy_add = {
+		life_rating = 2,
+	},
 }
-- 
GitLab