From 1b105934c03f8fd111e04b1c2a5a77367b144ea3 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sun, 27 Dec 2009 18:03:16 +0000
Subject: [PATCH] activable objects, potion

git-svn-id: http://svn.net-core.org/repos/t-engine4@154 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engine/Actor.lua                         |   9 ++
 game/engine/Entity.lua                        |  19 +--
 game/engine/GameEnergyBased.lua               |  46 ++++++-
 game/engine/Level.lua                         |   2 +
 game/engine/Object.lua                        |  40 ++++++
 game/engine/generator/actor/Random.lua        |   2 +-
 game/engine/interface/ActorAI.lua             |   5 +
 game/engine/interface/ObjectActivable.lua     |  44 +++++++
 game/modules/tome/class/Actor.lua             |   5 -
 game/modules/tome/class/Game.lua              |  14 ++-
 game/modules/tome/class/Object.lua            |  36 +++++-
 game/modules/tome/class/Player.lua            |   7 ++
 .../tome/data/general/npcs/skeleton.lua       |   2 +-
 .../tome/data/general/objects/objects.lua     |   1 +
 .../tome/data/general/objects/potions.lua     | 117 ++++++++++++++++++
 .../data/general/objects/world-artifacts.lua  |  35 ++++--
 ideas/spells.ods                              | Bin 16964 -> 17007 bytes
 17 files changed, 356 insertions(+), 28 deletions(-)
 create mode 100644 game/engine/interface/ObjectActivable.lua
 create mode 100644 game/modules/tome/data/general/objects/potions.lua

diff --git a/game/engine/Actor.lua b/game/engine/Actor.lua
index 9d58fd9030..1a1c6a8621 100644
--- a/game/engine/Actor.lua
+++ b/game/engine/Actor.lua
@@ -27,6 +27,15 @@ function _M:act()
 	return true
 end
 
+--- Gets the actor target
+-- Does nothing, AI redefines it so should a "Player" class
+function _M:getTarget()
+end
+--- Sets the actor target
+-- Does nothing, AI redefines it so should a "Player" class
+function _M:setTarget(target)
+end
+
 --- Moves an actor on the map
 -- *WARNING*: changing x and y properties manualy is *WRONG* and will blow up in your face. Use this method. Always.
 -- @param map the map to move onto
diff --git a/game/engine/Entity.lua b/game/engine/Entity.lua
index 109d2fa685..c2e0418d53 100644
--- a/game/engine/Entity.lua
+++ b/game/engine/Entity.lua
@@ -41,18 +41,19 @@ function _M:init(t, no_default)
 		self[k] = ee
 	end
 
+	if self.color then
+		self.color_r = self.color.r
+		self.color_g = self.color.g
+		self.color_b = self.color.b
+		self.color_br = self.color.br
+		self.color_bg = self.color.bg
+		self.color_bb = self.color.bb
+		self.color = nil
+	end
+
 	if not no_default then
 		self.image = self.image or nil
 		self.display = self.display or '.'
-		if self.color then
-			self.color_r = self.color.r
-			self.color_g = self.color.g
-			self.color_b = self.color.b
-			self.color_br = self.color.br
-			self.color_bg = self.color.bg
-			self.color_bb = self.color.bb
-			self.color = nil
-		end
 		self.color_r = self.color_r or 0
 		self.color_g = self.color_g or 0
 		self.color_b = self.color_b or 0
diff --git a/game/engine/GameEnergyBased.lua b/game/engine/GameEnergyBased.lua
index fdb3563ccc..2a7a3034ec 100644
--- a/game/engine/GameEnergyBased.lua
+++ b/game/engine/GameEnergyBased.lua
@@ -11,8 +11,18 @@ module(..., package.seeall, class.inherit(engine.Game))
 -- @energy_to_act how much energy does an entity need to act
 -- @energy_per_tick how much energy does an entity recieves per game tick. This is multiplied by the entity energy.mod property
 function _M:init(keyhandler, energy_to_act, energy_per_tick)
-	self.energy_to_act, self.energy_per_tick = energy_to_act, energy_per_tick
+	self.energy_to_act, self.energy_per_tick = energy_to_act or 1000, energy_per_tick or 100
 	engine.Game.init(self, keyhandler)
+
+	self.entities = {}
+	self:loaded()
+end
+
+function _M:loaded()
+	engine.Game.loaded(self)
+
+	-- Setup the entities repository as a weak value table, when the entities are no more used anywhere else they disappear from there too
+	setmetatable(self.entities, {__mode="v"})
 end
 
 --- Gives energy and act if needed
@@ -25,14 +35,44 @@ function _M:tick()
 		local arr = self.level.e_array
 		for i = 1, #arr do
 			e = arr[i]
-			if e then
+			if e and e.act then
 				if e.energy and e.energy.value < self.energy_to_act then
 					e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1)
 				end
-				if e.energy.value >= self.energy_to_act and e.act then
+				if e.energy.value >= self.energy_to_act then
 					e:act(self)
 				end
 			end
 		end
 	end
+
+	local arr = self.entities
+	for i, e in pairs(arr) do
+		e = arr[i]
+		if e and e.act then
+			if e.energy and e.energy.value < self.energy_to_act then
+				e.energy.value = (e.energy.value or 0) + self.energy_per_tick * (e.energy.mod or 1)
+			end
+			if e.energy.value >= self.energy_to_act then
+				e:act(self)
+			end
+		end
+	end
+end
+
+--- Adds an entity to the game
+-- This differs from Level:addEntity in that it's not specific to actors and the entities are not bound to
+-- the current level. Also they are stored in a *WEAK* table, so this wont hold them from garbage
+-- collecting if they are not
+function _M:addEntity(e)
+	if not e.canAct or not e:canAct() then return end
+	if self.entities[e.uid] then error("Entity "..e.uid.." already present in the game") end
+	self.entities[e.uid] = e
+end
+
+--- Removes an entity from the game
+function _M:removeEntity(e)
+	if not e.canAct or not e:canAct() then return end
+	if not self.entities[e.uid] then error("Entity "..e.uid.." not present in the game") end
+	self.entities[e.uid] = nil
 end
diff --git a/game/engine/Level.lua b/game/engine/Level.lua
index d631223a8d..63730141f9 100644
--- a/game/engine/Level.lua
+++ b/game/engine/Level.lua
@@ -26,6 +26,7 @@ function _M:addEntity(e)
 	if self.entities[e.uid] then error("Entity "..e.uid.." already present on the level") end
 	self.entities[e.uid] = e
 	table.insert(self.e_array, e)
+	game:addEntity(e)
 end
 
 --- Removes an entity from the level
@@ -38,6 +39,7 @@ function _M:removeEntity(e)
 			break
 		end
 	end
+	game:removeEntity(e)
 	-- Tells it to delete itself if needed
 	if e.deleteFromMap then e:deleteFromMap(self.map) end
 end
diff --git a/game/engine/Object.lua b/game/engine/Object.lua
index 9bfb78f8ad..4bbedc857f 100644
--- a/game/engine/Object.lua
+++ b/game/engine/Object.lua
@@ -5,9 +5,37 @@ module(..., package.seeall, class.inherit(Entity))
 
 function _M:init(t, no_default)
 	t = t or {}
+
+	self.energy = t.energy or { value=0, mod=1 }
+	self.energy.value = self.energy.value or 0
+	self.energy.mod = self.energy.mod or 0
+
 	Entity.init(self, t, no_default)
 end
 
+--- Resolves the object
+-- This will call the entities resolver and then add to the game entities list
+function _M:resolve(t)
+	engine.Entity.resolve(self, t)
+
+	if not t then
+		-- Auto add all objects to the game, if they can act
+		game:addEntity(self)
+	end
+end
+
+--- Can this object act at all
+-- Most object will want to anwser false, only recharging and stuff needs them
+function _M:canAct()
+	return false
+end
+
+--- Do something when its your turn
+-- For objects this mostly is to recharge them
+-- By default, does nothing at all
+function _M:act()
+end
+
 --- Gets the full name of the object
 function _M:getName()
 	return self.name
@@ -24,3 +52,15 @@ function _M:wornInven()
 	local invens = require "engine.interface.ActorInventory"
 	return invens["INVEN_"..self.slot]
 end
+
+--- Do we have enough energy
+function _M:enoughEnergy(val)
+	val = val or game.energy_to_act
+	return self.energy.value >= val
+end
+
+--- Use some energy
+function _M:useEnergy(val)
+	val = val or game.energy_to_act
+	self.energy.value = self.energy.value - val
+end
diff --git a/game/engine/generator/actor/Random.lua b/game/engine/generator/actor/Random.lua
index f9d2e2b107..9f11140c6a 100644
--- a/game/engine/generator/actor/Random.lua
+++ b/game/engine/generator/actor/Random.lua
@@ -41,7 +41,7 @@ function _M:generate()
 		end
 	end
 
---	if self.level.level <= self.zone.max_level then return end
+	if self.level.level <= self.zone.max_level then return end
 
 	if self.guardian then
 		local m = self.zone:makeEntityByName(self.level, "actor", self.guardian)
diff --git a/game/engine/interface/ActorAI.lua b/game/engine/interface/ActorAI.lua
index bfcea37f31..61bdc4eb12 100644
--- a/game/engine/interface/ActorAI.lua
+++ b/game/engine/interface/ActorAI.lua
@@ -98,3 +98,8 @@ end
 function _M:getTarget(typ)
 	return self.ai_target.actor.x, self.ai_target.actor.y, self.ai_target.actor
 end
+
+--- Sets the current target
+function _M:setTarget(target)
+	self.ai_target.actor = target
+end
diff --git a/game/engine/interface/ObjectActivable.lua b/game/engine/interface/ObjectActivable.lua
new file mode 100644
index 0000000000..855bbe9816
--- /dev/null
+++ b/game/engine/interface/ObjectActivable.lua
@@ -0,0 +1,44 @@
+require "engine.class"
+
+--- Handles activable objects, much more simple than actor's resource
+module(..., package.seeall, class.make)
+
+function _M:init(t)
+	if t.max_power then
+		self.power = t.max_power
+		self.max_power = t.max_power
+		self.power_regen = t.power_regen or 0
+	end
+end
+
+--- Regen resources, shout be called in your actor's act() method
+function _M:regenPower()
+	self.power = util.bound(self.power + self.power_regen, 0, self.max_power)
+end
+
+function _M:canUse()
+	if self.use_simple or self.use_power then
+		return true
+	end
+end
+
+function _M:getUseDesc()
+	if self.use_power then
+		return ("It can be used to %s, costing %d power out of %d/%d."):format(self.use_power.name, self.use_power.power, self.power, self.max_power)
+	elseif self.use_simple then
+		return ("It can be used to %s."):format(self.use_simple.name)
+	end
+end
+
+function _M:useObject(who)
+	if self.use_power then
+		if self.power >= self.use_power.power then
+			local ret, no_power = self.use_power.use(self, who)
+			if not no_power then self.power = self.power - self.use_power.power end
+			return ret
+		end
+	elseif self.use_simple then
+		local ret = self.use_simple.use(self, who)
+		return ret
+	end
+end
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index eeb97b2882..8a869acda2 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -190,11 +190,6 @@ function _M:attack(target)
 	self:bumpInto(target)
 end
 
---- Tries to get a target from the user
-function _M:getTarget()
-	return self.target.x, self.target.y
-end
-
 --- Called before a talent is used
 -- Check the actor can cast it
 -- @param ab the talent (not the id, the table)
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 585b27f3f6..86357131ce 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -93,7 +93,7 @@ function _M:loaded()
 end
 
 function _M:save()
-	return class.save(self, {w=true, h=true, zone=true, player=true, level=true,
+	return class.save(self, {w=true, h=true, zone=true, player=true, level=true, entities=true,
 		energy_to_act=true, energy_per_tick=true, turn=true, paused=true, save_name=true,
 	}, true)
 end
@@ -345,6 +345,18 @@ function _M:setupCommands()
 			end)
 		end,
 
+		-- Use item
+		_u = function()
+			self.player:showInventory(nil, self.player:getInven(self.player.INVEN_INVEN), nil, function(o, item)
+				local ret = o:use(self.player)
+				if ret and ret == "destroy" then
+					self.player:removeObject(self.player:getInven(self.player.INVEN_INVEN), item)
+					game.log("You have no more "..o:getName())
+				end
+			end)
+		end,
+
+
 		[{"_g","shift"}] = function()
 			local none = true
 			if self.player.unused_stats > 0 then
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index fa16ba7c78..09d9e74568 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -1,14 +1,45 @@
 require "engine.class"
 require "engine.Object"
+require "engine.interface.ObjectActivable"
 
 local Stats = require("engine.interface.ActorStats")
 
-module(..., package.seeall, class.inherit(engine.Object))
+module(..., package.seeall, class.inherit(engine.Object, engine.interface.ObjectActivable))
 
 function _M:init(t, no_default)
 	engine.Object.init(self, t, no_default)
+	engine.interface.ObjectActivable.init(self, t)
 end
 
+--- Can this object act at all
+-- Most object will want to anwser false, only recharging and stuff needs them
+function _M:canAct()
+	if self.power_regen then return true end
+	return false
+end
+
+--- Do something when its your turn
+-- For objects this mostly is to recharge them
+-- By default, does nothing at all
+function _M:act()
+	self:regenPower()
+	self:useEnergy()
+end
+
+--- Use the object (quaff, read, ...)
+function _M:use(who, typ)
+	local types = {}
+	if self:canUse() then types[#types+1] = "use" end
+
+	if not typ and #types == 1 then typ = types[1] end
+
+	if typ == "use" then
+		who:useEnergy()
+		return self:useObject(who)
+	end
+end
+
+--- Returns a tooltip for the object
 function _M:tooltip()
 	return self:getDesc()
 end
@@ -46,5 +77,8 @@ function _M:getDesc()
 
 	if w.lite then desc[#desc+1] = ("Light radius %d"):format(w.lite) end
 
+	local use_desc = self:getUseDesc()
+	if use_desc then desc[#desc+1] = use_desc end
+
 	return table.concat(desc, "\n")
 end
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index e0750caddb..501934a713 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -117,6 +117,13 @@ function _M:getTarget(typ)
 	return game.target.target.x, game.target.target.y, game.level.map(game.target.target.x, game.target.target.y, Map.ACTOR)
 end
 
+--- Sets the current target
+function _M:setTarget(target)
+	game.target.target.entity = target
+	game.target.target.x = target.x
+	game.target.target.y = target.y
+end
+
 --- Quick way to check if the player can see the target
 function _M:canSee(entity)
 	if entity.x and entity.y and game.level.map.seens(entity.x, entity.y) then return true end
diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua
index 60f2d3e8c3..30aede7a9f 100644
--- a/game/modules/tome/data/general/npcs/skeleton.lua
+++ b/game/modules/tome/data/general/npcs/skeleton.lua
@@ -9,7 +9,7 @@ newEntity{
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	equipment = resolvers.equip{ {type="weapon", subtype="longsword"} },
-	drops = resolvers.drops{chance=20, nb=1, {} },
+	drops = resolvers.drops{chance=200, nb=10, {} },
 
 	autolevel = "warrior",
 	ai = "dumb_talented_simple", ai_state = { talent_in=3, },
diff --git a/game/modules/tome/data/general/objects/objects.lua b/game/modules/tome/data/general/objects/objects.lua
index 15187c6776..b853cad399 100644
--- a/game/modules/tome/data/general/objects/objects.lua
+++ b/game/modules/tome/data/general/objects/objects.lua
@@ -1,3 +1,4 @@
+load("/data/general/objects/potions.lua")
 load("/data/general/objects/staves.lua")
 load("/data/general/objects/swords.lua")
 load("/data/general/objects/shields.lua")
diff --git a/game/modules/tome/data/general/objects/potions.lua b/game/modules/tome/data/general/objects/potions.lua
new file mode 100644
index 0000000000..e04960379a
--- /dev/null
+++ b/game/modules/tome/data/general/objects/potions.lua
@@ -0,0 +1,117 @@
+newEntity{
+	define_as = "BASE_POTION",
+	type = "potion", subtype="potion",
+	display = "!", color=colors.WHITE,
+	encumber = 0.2,
+	desc = [[Magical potions can have wildly different effects, from healing to killing you, beware! Most of them function better with a high Magic score]],
+}
+
+-------------------------------------------------------
+-- Healing & Curing
+-------------------------------------------------------
+newEntity{ base = "BASE_POTION",
+	name = "potion of lesser healing",
+	color = colors.LIGHT_RED,
+	level_range = {1, 20},
+	rarity = 3,
+
+	use_simple = { name="heal some life", use = function(self, who)
+		who:heal(40 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of healing",
+	color = colors.LIGHT_RED,
+	level_range = {15, 35},
+	rarity = 4,
+
+	use_simple = { name="heal a good part of your life", use = function(self, who)
+		who:heal(140 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of greater healing",
+	color = colors.LIGHT_RED,
+	level_range = {30, 50},
+	rarity = 5,
+
+	use_simple = { name="heal a lot", use = function(self, who)
+		who:heal(240 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of full healing",
+	color = colors.LIGHT_RED,
+	level_range = {45, 50},
+	rarity = 14,
+
+	use_simple = { name="fully heal", use = function(self, who)
+		who:heal(1000000)
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+-------------------------------------------------------
+-- Mana
+-------------------------------------------------------
+newEntity{ base = "BASE_POTION",
+	name = "potion of lesser mana",
+	color = colors.LIGHT_BLUE,
+	level_range = {1, 20},
+	rarity = 3,
+
+	use_simple = { name="restore some mana", use = function(self, who)
+		who:incMana(40 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of mana",
+	color = colors.LIGHT_BLUE,
+	level_range = {15, 35},
+	rarity = 4,
+
+	use_simple = { name="restore a good part of your mana", use = function(self, who)
+		who:incMana(140 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of greater mana",
+	color = colors.LIGHT_BLUE,
+	level_range = {30, 50},
+	rarity = 5,
+
+	use_simple = { name="restore a lot of mana", use = function(self, who)
+		who:incMana(240 + who:getMag())
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
+
+newEntity{ base = "BASE_POTION",
+	name = "potion of full mana",
+	color = colors.LIGHT_BLUE,
+	level_range = {45, 50},
+	rarity = 14,
+
+	use_simple = { name="fully restore mana", use = function(self, who)
+		who:incMana(1000000)
+		game.logSeen(who, "%s quaffs a %s!", who.name:capitalize(), self:getName())
+		return "destroy"
+	end}
+}
diff --git a/game/modules/tome/data/general/objects/world-artifacts.lua b/game/modules/tome/data/general/objects/world-artifacts.lua
index 04c91407e8..5430eb8d01 100644
--- a/game/modules/tome/data/general/objects/world-artifacts.lua
+++ b/game/modules/tome/data/general/objects/world-artifacts.lua
@@ -34,7 +34,7 @@ newEntity{
 	desc = [[A small crystal phial, with the light of Earendil's Star contained inside. Its light is imperishable, and near it darkness cannot endure.]],
 
 	wielder = {
-		lite = 3,
+		lite = 4,
 	},
 }
 
@@ -63,12 +63,33 @@ newEntity{
 	level_range = {1, 10},
 	display = '"', color=colors.VIOLET,
 	encumber = 1,
-	rarity = 100,
+	rarity = 1,
 	desc = [[A crystal clear stone hangs on the chain. It displays images of your surroundings, but somehow they seem closer.]],
 
-	use = function(self, o)
-		game.logSeen(self, "%s uses the Shifting Amulet and blinks away!", self.name:capitalize())
-		self:teleportRandom(self.x, self.y, 10)
-		self:useEnergy()
-	end,
+	max_power = 15, power_regen = 1,
+	use_power = { name = "blink away", power = 5,
+		use = function(self, who)
+			game.logSeen(who, "%s uses the Shifting Amulet and blinks away!", who.name:capitalize())
+			who:teleportRandom(who.x, who.y, 10)
+		end
+	},
+}
+
+newEntity{
+	unique = true,
+	type = "potion", subtype="potion",
+	name = "Ever Refilling Potion of Healing",
+	level_range = {35, 40},
+	display = '!', color=colors.VIOLET,
+	encumber = 0.4,
+	rarity = 80,
+	desc = [[Bottle containing healing magic. But the more you drink from it, the more it refills!]],
+
+	max_power = 40, power_regen = 1,
+	use_power = { name = "blink away", power = 30,
+		use = function(self, who)
+			who:heal(150 + who:getMag())
+			game.logSeen("%s quaffs an %s!", who.name:capitalize(), self:getName())
+		end
+	},
 }
diff --git a/ideas/spells.ods b/ideas/spells.ods
index 991558f5e8c5886bcdc9daa6f3d6876aa016f51e..16ab542ab4a4cb524afc045aaad8154bc87433f2 100644
GIT binary patch
delta 8503
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

delta 8571
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

-- 
GitLab