From 1b66a17574c7be0c130f2452fe602892a90b2427 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Mon, 21 Dec 2009 14:25:56 +0000
Subject: [PATCH] rng.normal and rng.mbonus

git-svn-id: http://svn.net-core.org/repos/t-engine4@136 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/data/font/VeraMoBd.ttf                | Bin 0 -> 49052 bytes
 game/engine/Tiles.lua                      |   2 +-
 game/engine/generator/map/Static.lua       |   1 -
 game/engine/resolvers.lua                  |   9 ++
 game/engine/utils.lua                      |  18 +++
 game/modules/tome/data/general/egos.lua    |   2 +-
 game/modules/tome/data/maps/towns/bree.lua |  11 ++
 src/core_lua.c                             | 126 +++++++++++++++++++++
 8 files changed, 166 insertions(+), 3 deletions(-)
 create mode 100644 game/data/font/VeraMoBd.ttf

diff --git a/game/data/font/VeraMoBd.ttf b/game/data/font/VeraMoBd.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..9be6547ed61cbea68f354fc49651bc3645c822fa
GIT binary patch
literal 49052
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

literal 0
HcmV?d00001

diff --git a/game/engine/Tiles.lua b/game/engine/Tiles.lua
index d6c0b00621..6ae0b953dd 100644
--- a/game/engine/Tiles.lua
+++ b/game/engine/Tiles.lua
@@ -10,7 +10,7 @@ use_images = true
 function _M:init(w, h, fontname, fontsize, texture)
 	self.texture = texture
 	self.w, self.h = w, h
-	self.font = core.display.newFont(fontname or "/data/font/VeraMono.ttf", fontsize or 14)
+	self.font = core.display.newFont(fontname or "/data/font/VeraMoBd.ttf", fontsize or 14)
 	self.repo = {}
 end
 
diff --git a/game/engine/generator/map/Static.lua b/game/engine/generator/map/Static.lua
index 6258ada1d1..55c13a7232 100644
--- a/game/engine/generator/map/Static.lua
+++ b/game/engine/generator/map/Static.lua
@@ -52,7 +52,6 @@ function _M:resolve(typ, c)
 	if type(res) == "function" then
 		return self.grid_list[res()]
 	elseif type(res) == "table" and res.__CLASSNAME then
-		print("res", res.display)
 		return res
 	elseif type(res) == "table" then
 		return self.grid_list[res[rng.range(1, #res)]]
diff --git a/game/engine/resolvers.lua b/game/engine/resolvers.lua
index f2b3fb2881..d1dfce2951 100644
--- a/game/engine/resolvers.lua
+++ b/game/engine/resolvers.lua
@@ -9,6 +9,15 @@ function resolvers.calc.rngrange(t)
 	return rng.range(t[1], t[2])
 end
 
+--- Average random
+function resolvers.rngavg(x, y)
+	return {__resolver="rngavg", x, y}
+end
+function resolvers.calc.rngavg(t)
+	return rng.avg(t[1], t[2])
+end
+
+--- Random around level
 function resolvers.rngavg(x, y)
 	return {__resolver="rngavg", x, y}
 end
diff --git a/game/engine/utils.lua b/game/engine/utils.lua
index 6e417da37b..d7b4c2f1bf 100644
--- a/game/engine/utils.lua
+++ b/game/engine/utils.lua
@@ -267,3 +267,21 @@ function util.showMainMenu()
 	game = Menu.new()
 	game:run()
 end
+
+function rng.mbonus(max, level, max_level)
+	if level > max_level - 1 then level = max_level - 1 end
+
+	local bonus = (max * level) / max_level
+	local extra = (max * level) % max_level
+	if rng.range(0, max_level - 1) < extra then bonus = bonus + 1 end
+
+	local stand = max / 4
+	extra = max % 4
+	if rng.range(0, 3) < extra then stand = stand + 1 end
+
+	local val = rng.normal(bonus, stand)
+	if val < 0 then val = 0 end
+	if val > max then val = max end
+
+	return val
+end
diff --git a/game/modules/tome/data/general/egos.lua b/game/modules/tome/data/general/egos.lua
index 4cd5045285..26bb20e48c 100644
--- a/game/modules/tome/data/general/egos.lua
+++ b/game/modules/tome/data/general/egos.lua
@@ -11,6 +11,6 @@ newEntity{
 	level_range = {1, 10},
 	rarity = 3,
 	wielder = {
-		hit = 4,
+		combat_atk = 4,
 	},
 }
diff --git a/game/modules/tome/data/maps/towns/bree.lua b/game/modules/tome/data/maps/towns/bree.lua
index b5ebbcf9d5..164b26dfd7 100644
--- a/game/modules/tome/data/maps/towns/bree.lua
+++ b/game/modules/tome/data/maps/towns/bree.lua
@@ -1,4 +1,15 @@
+quickEntity('S', {name='brick roof top', display='#', color=colors.RED, block_move=true, block_sight=true})
+quickEntity('s', {name='brick roof', display='#', color=colors.RED, block_move=true, block_sight=true})
+quickEntity('t', {name='brick roof chimney', display='#', color=colors.LIGHT_RED, block_move=true, block_sight=true})
+quickEntity('#', {name='wall', display='#', color=colors.WHITE, block_move=true, block_sight=true})
+quickEntity('C', {name='dark pit', display='#', color=colors.LIGHT_DARK, block_move=true, block_sight=true})
+quickEntity('T', {name='tree', display='#', color=colors.LIGHT_GREEN, block_move=true, block_sight=true})
 quickEntity(' ', {name='forest', display='#', color=colors.GREEN, block_move=true, block_sight=true})
+quickEntity('V', {name='river', display='~', color=colors.BLUE, block_move=true,})
+quickEntity('O', {name='cooblestone road', display='.', color=colors.WHITE})
+quickEntity('.', {name='road', display='.', color=colors.WHITE})
+quickEntity(',', {name='dirt', display='.', color=colors.LIGHT_UMBER})
+quickEntity('-', {name='grass', display='.', color=colors.LIGHT_GREEN})
 
 startx = 131
 starty = 33
diff --git a/src/core_lua.c b/src/core_lua.c
index 632a948d39..acd3325f8d 100644
--- a/src/core_lua.c
+++ b/src/core_lua.c
@@ -755,6 +755,131 @@ static int rng_percent(lua_State *L)
 	return 1;
 }
 
+/*
+ * The number of entries in the "randnor_table"
+ */
+#define RANDNOR_NUM	256
+
+/*
+ * The standard deviation of the "randnor_table"
+ */
+#define RANDNOR_STD	64
+
+/*
+ * The normal distribution table for the "randnor()" function (below)
+ */
+static int randnor_table[RANDNOR_NUM] =
+{
+	206, 613, 1022, 1430, 1838, 2245, 2652, 3058,
+	3463, 3867, 4271, 4673, 5075, 5475, 5874, 6271,
+	6667, 7061, 7454, 7845, 8234, 8621, 9006, 9389,
+	9770, 10148, 10524, 10898, 11269, 11638, 12004, 12367,
+	12727, 13085, 13440, 13792, 14140, 14486, 14828, 15168,
+	15504, 15836, 16166, 16492, 16814, 17133, 17449, 17761,
+	18069, 18374, 18675, 18972, 19266, 19556, 19842, 20124,
+	20403, 20678, 20949, 21216, 21479, 21738, 21994, 22245,
+
+	22493, 22737, 22977, 23213, 23446, 23674, 23899, 24120,
+	24336, 24550, 24759, 24965, 25166, 25365, 25559, 25750,
+	25937, 26120, 26300, 26476, 26649, 26818, 26983, 27146,
+	27304, 27460, 27612, 27760, 27906, 28048, 28187, 28323,
+	28455, 28585, 28711, 28835, 28955, 29073, 29188, 29299,
+	29409, 29515, 29619, 29720, 29818, 29914, 30007, 30098,
+	30186, 30272, 30356, 30437, 30516, 30593, 30668, 30740,
+	30810, 30879, 30945, 31010, 31072, 31133, 31192, 31249,
+
+	31304, 31358, 31410, 31460, 31509, 31556, 31601, 31646,
+	31688, 31730, 31770, 31808, 31846, 31882, 31917, 31950,
+	31983, 32014, 32044, 32074, 32102, 32129, 32155, 32180,
+	32205, 32228, 32251, 32273, 32294, 32314, 32333, 32352,
+	32370, 32387, 32404, 32420, 32435, 32450, 32464, 32477,
+	32490, 32503, 32515, 32526, 32537, 32548, 32558, 32568,
+	32577, 32586, 32595, 32603, 32611, 32618, 32625, 32632,
+	32639, 32645, 32651, 32657, 32662, 32667, 32672, 32677,
+
+	32682, 32686, 32690, 32694, 32698, 32702, 32705, 32708,
+	32711, 32714, 32717, 32720, 32722, 32725, 32727, 32729,
+	32731, 32733, 32735, 32737, 32739, 32740, 32742, 32743,
+	32745, 32746, 32747, 32748, 32749, 32750, 32751, 32752,
+	32753, 32754, 32755, 32756, 32757, 32757, 32758, 32758,
+	32759, 32760, 32760, 32761, 32761, 32761, 32762, 32762,
+	32763, 32763, 32763, 32764, 32764, 32764, 32764, 32765,
+	32765, 32765, 32765, 32766, 32766, 32766, 32766, 32767,
+};
+
+
+/*
+ * Generate a random integer number of NORMAL distribution
+ *
+ * The table above is used to generate a psuedo-normal distribution,
+ * in a manner which is much faster than calling a transcendental
+ * function to calculate a true normal distribution.
+ *
+ * Basically, entry 64*N in the table above represents the number of
+ * times out of 32767 that a random variable with normal distribution
+ * will fall within N standard deviations of the mean.  That is, about
+ * 68 percent of the time for N=1 and 95 percent of the time for N=2.
+ *
+ * The table above contains a "faked" final entry which allows us to
+ * pretend that all values in a normal distribution are strictly less
+ * than four standard deviations away from the mean.  This results in
+ * "conservative" distribution of approximately 1/32768 values.
+ *
+ * Note that the binary search takes up to 16 quick iterations.
+ */
+static int rng_normal(lua_State *L)
+{
+	int mean = luaL_checknumber(L, 1);
+	int stand = luaL_checknumber(L, 2);
+	int tmp;
+	int offset;
+
+	int low = 0;
+	int high = RANDNOR_NUM;
+
+	/* Paranoia */
+	if (stand < 1)
+	{
+		lua_pushnumber(L, mean);
+		return 1;
+	}
+
+	/* Roll for probability */
+	tmp = (int)rand_div(32768);
+
+	/* Binary Search */
+	while (low < high)
+	{
+		long mid = (low + high) >> 1;
+
+		/* Move right if forced */
+		if (randnor_table[mid] < tmp)
+		{
+			low = mid + 1;
+		}
+
+		/* Move left otherwise */
+		else
+		{
+			high = mid;
+		}
+	}
+
+	/* Convert the index into an offset */
+	offset = (long)stand * (long)low / RANDNOR_STD;
+
+	/* One half should be negative */
+	if (rand_div(100) < 50)
+	{
+		lua_pushnumber(L, mean - offset);
+		return 1;
+	}
+
+	/* One half should be positive */
+	lua_pushnumber(L, mean + offset);
+	return 1;
+}
+
 static const struct luaL_reg rnglib[] =
 {
 	{"__call", rng_call},
@@ -764,6 +889,7 @@ static const struct luaL_reg rnglib[] =
 	{"seed", rng_seed},
 	{"chance", rng_chance},
 	{"percent", rng_percent},
+	{"normal", rng_normal},
 	{NULL, NULL},
 };
 
-- 
GitLab