diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 8abb155c9948ddd9e28270eb00612dd4524cf378..5c2bbe8804340a6a9691096e40e23421ec6180f6 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -77,6 +77,8 @@ function _M:init(t, no_default) self.unused_talents = self.unused_talents or 0 self.unused_talents_types = self.unused_talents_types or 0 + t.lite = t.lite or 0 + t.size_category = t.size_category or 3 t.rank = t.rank or 2 diff --git a/game/modules/tome/class/NPC.lua b/game/modules/tome/class/NPC.lua index 71d4c364da0bc7621a57eb8b84bde9d69521680f..6c082baf045ae15438776457abe13ab276c77aeb 100644 --- a/game/modules/tome/class/NPC.lua +++ b/game/modules/tome/class/NPC.lua @@ -34,6 +34,10 @@ function _M:act() if not mod.class.Actor.act(self) then return end -- Compute FOV, if needed +-- if self.lite > 0 then +-- print("lite", self.name, self.lite) +-- self:computeFOV(self.lite, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y) end, true, true) +-- end self:computeFOV(self.sight or 20) -- Let the AI think .... beware of Shub ! diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index 3f9c8a76b8accce025328e1032eca72c2c5762fe..54353ddd19f5040c7bb7569788dba3eefe8d4476 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -159,7 +159,7 @@ function _M:playerFOV() self:computeFOV(self.sight or 20, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:apply(x, y, math.max((20 - math.sqrt(sqdist)) / 14, 0.6)) end, true, false, true) - if self.lite == 0 then game.level.map:applyLite(self.x, self.y) + if self.lite <= 0 then game.level.map:applyLite(self.x, self.y) else self:computeFOV(self.lite, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y) end, true, true, true) end end @@ -526,6 +526,17 @@ function _M:useOrbPortal(portal) if portal.message then game.logPlayer(self, portal.message) end end +--- Tell us when we are targetted +function _M:on_targeted(act) + if self:attr("invisible") or self:attr("stealth") then + if self:canSee(act) and game.level.map.seens(act.x, act.y) then + game.logPlayer(self, "#LIGHT_RED#%s has seen you!", act.name:capitalize()) + else + game.logPlayer(self, "#LIGHT_RED#Something has seen you!") + end + end +end + ------ Quest Events function _M:on_quest_grant(quest) game.logPlayer(self, "#LIGHT_GREEN#Accepted quest '%s'! #WHITE#(Press CTRL+Q to see the quest log)", quest.name) diff --git a/game/modules/tome/data/general/npcs/ant.lua b/game/modules/tome/data/general/npcs/ant.lua index a6b681dc497334430d2d6fd3c90f7c80de56e354..b576f225892783ad5baa3ff26c63d0c2f8904e3f 100644 --- a/game/modules/tome/data/general/npcs/ant.lua +++ b/game/modules/tome/data/general/npcs/ant.lua @@ -32,6 +32,7 @@ newEntity{ energy = { mod=1 }, combat_armor = 1, combat_def = 1, combat = { dam=5, atk=15, apr=7, dammod={str=0.6} }, + infravision = 20, max_life = resolvers.rngavg(10,20), rank = 1, size_category = 1, diff --git a/game/modules/tome/data/general/npcs/aquatic_critter.lua b/game/modules/tome/data/general/npcs/aquatic_critter.lua index 59935e0e575ac11e2c7e5f1a1bfbb88d885694fb..fd7438ade4395888d6fa173de99fafc3269c4940 100644 --- a/game/modules/tome/data/general/npcs/aquatic_critter.lua +++ b/game/modules/tome/data/general/npcs/aquatic_critter.lua @@ -33,6 +33,7 @@ newEntity{ combat_armor = 1, combat_def = 1, combat = { dam=5, atk=15, apr=7, dammod={str=0.6} }, max_life = resolvers.rngavg(10,20), life_rating = 6, + infravision = 20, rank = 1, size_category = 2, can_breath={water=1}, diff --git a/game/modules/tome/data/general/npcs/aquatic_demon.lua b/game/modules/tome/data/general/npcs/aquatic_demon.lua index 69fc005bc2e6075c07a7db2c0f88773df5eafab3..43f9d9e37ca44a6ea55f5b24e0049c86cde59a57 100644 --- a/game/modules/tome/data/general/npcs/aquatic_demon.lua +++ b/game/modules/tome/data/general/npcs/aquatic_demon.lua @@ -33,6 +33,7 @@ newEntity{ combat_armor = 1, combat_def = 1, combat = { dam=5, atk=15, apr=7, dammod={str=0.6} }, max_life = resolvers.rngavg(100,120), + infravision = 20, open_door = true, rank = 2, size_category = 3, diff --git a/game/modules/tome/data/general/npcs/bear.lua b/game/modules/tome/data/general/npcs/bear.lua index 1b7db8a2fec8b479deef53eda2af33580962a4c6..89725410df2719dae7d4edca1cff6565abff2c6e 100644 --- a/game/modules/tome/data/general/npcs/bear.lua +++ b/game/modules/tome/data/general/npcs/bear.lua @@ -33,6 +33,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=5, }, energy = { mod=0.9 }, stats = { str=18, dex=13, mag=5, con=15 }, + infravision = 20, rank = 2, size_category = 4, diff --git a/game/modules/tome/data/general/npcs/canine.lua b/game/modules/tome/data/general/npcs/canine.lua index fc3aea58f38a2fec65ee2f297544b5cc296cd15d..3705a11f71ae0f17ded224d595a3585a285333a9 100644 --- a/game/modules/tome/data/general/npcs/canine.lua +++ b/game/modules/tome/data/general/npcs/canine.lua @@ -30,6 +30,7 @@ newEntity{ max_stamina = 150, rank = 1, size_category = 2, + infravision = 20, autolevel = "warrior", ai = "dumb_talented_simple", ai_state = { talent_in=2, }, diff --git a/game/modules/tome/data/general/npcs/ghoul.lua b/game/modules/tome/data/general/npcs/ghoul.lua index fd07dba3bdd76953ee8bd60352ff133fd8400888..adad1c530906720a093121f048edff19a0eea0ba 100644 --- a/game/modules/tome/data/general/npcs/ghoul.lua +++ b/game/modules/tome/data/general/npcs/ghoul.lua @@ -34,6 +34,7 @@ newEntity{ stats = { str=14, dex=12, mag=10, con=12 }, rank = 2, size_category = 3, + infravision = 20, resolvers.tmasteries{ ["technique/other"]=1, }, diff --git a/game/modules/tome/data/general/npcs/jelly.lua b/game/modules/tome/data/general/npcs/jelly.lua index 43fe6efaa6eaff58225d3ba123b8d591554d249b..f1a605e7b1be0fa850a75b6b1c84754c82e7befb 100644 --- a/game/modules/tome/data/general/npcs/jelly.lua +++ b/game/modules/tome/data/general/npcs/jelly.lua @@ -35,6 +35,7 @@ newEntity{ never_move = 1, rank = 2, size_category = 3, + infravision = 20, drops = resolvers.drops{chance=60, nb=1, {type="money"} }, diff --git a/game/modules/tome/data/general/npcs/minotaur.lua b/game/modules/tome/data/general/npcs/minotaur.lua index 17ef1ca51d8ea062f4382ae56bbc896286c9075f..329fa575a70e2ccb50d4cf2d9d2d8ec282208b40 100644 --- a/game/modules/tome/data/general/npcs/minotaur.lua +++ b/game/modules/tome/data/general/npcs/minotaur.lua @@ -30,6 +30,8 @@ newEntity{ resolvers.drops{chance=20, nb=1, {} }, resolvers.drops{chance=40, nb=1, {type="money"} }, + infravision = 20, + lite = 2, max_stamina = 100, life_rating = 13, max_life = resolvers.rngavg(100,120), diff --git a/game/modules/tome/data/general/npcs/molds.lua b/game/modules/tome/data/general/npcs/molds.lua index 5df5934d59103f5c612deb12184ac042e0ff4942..129fb5c46627154283805476c5e873093b95ed22 100644 --- a/game/modules/tome/data/general/npcs/molds.lua +++ b/game/modules/tome/data/general/npcs/molds.lua @@ -29,6 +29,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=1, }, stats = { str=10, dex=15, mag=3, con=3 }, energy = { mod=0.5 }, + infravision = 20, combat_armor = 1, combat_def = 1, never_move = 1, fear_immune = 1, diff --git a/game/modules/tome/data/general/npcs/mummy.lua b/game/modules/tome/data/general/npcs/mummy.lua index 25d44e74ab4bbc69e298ed5125afc05a9f2ebf39..c3b55e931eca36cf81ce9ca03fc9070a5d15deed 100644 --- a/game/modules/tome/data/general/npcs/mummy.lua +++ b/game/modules/tome/data/general/npcs/mummy.lua @@ -31,6 +31,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=2, }, energy = { mod=0.8 }, stats = { str=14, dex=12, mag=10, con=12 }, + infravision = 20, rank = 2, size_category = 3, diff --git a/game/modules/tome/data/general/npcs/ooze.lua b/game/modules/tome/data/general/npcs/ooze.lua index 666a75ecbda406a2f2b9f1ff541ddb47d4299890..ab6798b26356059fc6745af97587828beee45fe9 100644 --- a/game/modules/tome/data/general/npcs/ooze.lua +++ b/game/modules/tome/data/general/npcs/ooze.lua @@ -34,6 +34,7 @@ newEntity{ combat_armor = 1, combat_def = 1, rank = 1, size_category = 3, + infravision = 20, resolvers.drops{chance=90, nb=1, {} }, resolvers.drops{chance=60, nb=1, {type="money"} }, diff --git a/game/modules/tome/data/general/npcs/orc.lua b/game/modules/tome/data/general/npcs/orc.lua index 311714327cd01c91e67a4ca0b8821d06b7422d9c..5c69118bdc19c0d1d823163516a7094d1a9b56f2 100644 --- a/game/modules/tome/data/general/npcs/orc.lua +++ b/game/modules/tome/data/general/npcs/orc.lua @@ -30,6 +30,8 @@ newEntity{ body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 }, resolvers.drops{chance=20, nb=1, {} }, resolvers.drops{chance=10, nb=1, {type="money"} }, + infravision = 20, + lite = 2, life_rating = 11, rank = 2, diff --git a/game/modules/tome/data/general/npcs/plant.lua b/game/modules/tome/data/general/npcs/plant.lua index ce67cb5b9631645b9bc11939c7d5223a59084093..cab14d82ef8f3118511f2bd8eb3eda0a5ff6a238 100644 --- a/game/modules/tome/data/general/npcs/plant.lua +++ b/game/modules/tome/data/general/npcs/plant.lua @@ -31,6 +31,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=3, }, stats = { str=10, dex=10, mag=3, con=10 }, energy = { mod=1 }, + infravision = 20, combat_armor = 1, combat_def = 1, rank = 1, size_category = 1, diff --git a/game/modules/tome/data/general/npcs/rodent.lua b/game/modules/tome/data/general/npcs/rodent.lua index 2e1be6e551c7f752f1bfb4eb9775ac091dd23cb6..74d99a431bc395a59923d2d6b61212a122ca0270 100644 --- a/game/modules/tome/data/general/npcs/rodent.lua +++ b/game/modules/tome/data/general/npcs/rodent.lua @@ -25,6 +25,7 @@ newEntity{ --rodent base display = "r", color=colors.WHITE, can_multiply = 2, body = { INVEN = 10 }, + infravision = 20, autolevel = "warrior", ai = "dumb_talented_simple", ai_state = { talent_in=3, }, diff --git a/game/modules/tome/data/general/npcs/sandworm.lua b/game/modules/tome/data/general/npcs/sandworm.lua index ef43accc8c6e3d247f17e15581920e556c5788f5..c00c59d5fa7d131f4f5783647d00413d58ab9f56 100644 --- a/game/modules/tome/data/general/npcs/sandworm.lua +++ b/game/modules/tome/data/general/npcs/sandworm.lua @@ -26,6 +26,7 @@ newEntity{ level_range = {15, 50}, body = { INVEN = 10 }, + infravision = 20, max_life = 40, life_rating = 5, max_stamina = 85, max_mana = 85, diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua index 58ed27472590ca146151a200ee21f48a257b53a7..40af0815847803c81913f19d64b67dce10c13931 100644 --- a/game/modules/tome/data/general/npcs/skeleton.lua +++ b/game/modules/tome/data/general/npcs/skeleton.lua @@ -29,6 +29,7 @@ newEntity{ body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 }, resolvers.drops{chance=20, nb=1, {} }, resolvers.drops{chance=60, nb=1, {type="money"} }, + infravision = 20, rank = 2, size_category = 3, diff --git a/game/modules/tome/data/general/npcs/snake.lua b/game/modules/tome/data/general/npcs/snake.lua index fd69b80ffe8d129a59952fcb85d103d1a6b949c1..744fd2d80ebd858b28570b8f52c2e7d8244c1bc7 100644 --- a/game/modules/tome/data/general/npcs/snake.lua +++ b/game/modules/tome/data/general/npcs/snake.lua @@ -25,6 +25,7 @@ newEntity{ display = "J", color=colors.WHITE, body = { INVEN = 10 }, + infravision = 20, max_stamina = 110, rank = 2, size_category = 2, diff --git a/game/modules/tome/data/general/npcs/spider.lua b/game/modules/tome/data/general/npcs/spider.lua index 92288948300e726d50ba70bcc62dc30951e65769..080b421174d4f2e435bb6d5025f33c288f88e28e 100644 --- a/game/modules/tome/data/general/npcs/spider.lua +++ b/game/modules/tome/data/general/npcs/spider.lua @@ -29,6 +29,7 @@ newEntity{ body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 }, + infravision = 20, size_category = 2, rank = 1, diff --git a/game/modules/tome/data/general/npcs/sunwall-town.lua b/game/modules/tome/data/general/npcs/sunwall-town.lua index 1e57a17ec9bb1b70b70aae476c4abb774d87957e..13d1c1b45244fb1fd08359328124172c311d78a6 100644 --- a/game/modules/tome/data/general/npcs/sunwall-town.lua +++ b/game/modules/tome/data/general/npcs/sunwall-town.lua @@ -29,6 +29,7 @@ newEntity{ body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 }, resolvers.drops{chance=20, nb=1, {} }, + lite = 3, life_rating = 10, rank = 2, diff --git a/game/modules/tome/data/general/npcs/swarm.lua b/game/modules/tome/data/general/npcs/swarm.lua index 893e6c63720fc2c481d14c46397c9b56a29de6a8..a2fcf64996239dc0768798017c6ae1b85a534fdd 100644 --- a/game/modules/tome/data/general/npcs/swarm.lua +++ b/game/modules/tome/data/general/npcs/swarm.lua @@ -32,6 +32,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=1, }, stats = { str=1, dex=20, mag=3, con=1 }, energy = { mod=2 }, + infravision = 20, combat_armor = 1, combat_def = 10, rank = 1, size_category = 1, diff --git a/game/modules/tome/data/general/npcs/thieve.lua b/game/modules/tome/data/general/npcs/thieve.lua index df524ab95a0a9eff8e17a4467ba2f55e8dea9c90..d5f72d58c4aee4bb01beb6eb3d4705ba9362779e 100644 --- a/game/modules/tome/data/general/npcs/thieve.lua +++ b/game/modules/tome/data/general/npcs/thieve.lua @@ -34,6 +34,7 @@ newEntity{ {type="armor", subtype="light", autoreq=true} }, resolvers.drops{chance=100, nb=2, {type="money"} }, + infravision = 10, max_stamina = 100, rank = 2, diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua index 4d7180d9336363410e6abe4379dc5f232d5f2029..1e25974f5562f82826f09b4108d7430c2749baae 100644 --- a/game/modules/tome/data/general/npcs/troll.lua +++ b/game/modules/tome/data/general/npcs/troll.lua @@ -30,6 +30,7 @@ newEntity{ resolvers.drops{chance=20, nb=1, {} }, resolvers.drops{chance=60, nb=1, {type="money"} }, + infravision = 20, life_rating = 15, life_regen = 2, max_stamina = 90, diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua index 5731066dbd85b877d64201650c0228d0840dc36c..ac6c642fabc3bd454f18af2215584767192086f8 100644 --- a/game/modules/tome/data/general/npcs/vampire.lua +++ b/game/modules/tome/data/general/npcs/vampire.lua @@ -51,6 +51,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=9, }, energy = { mod=1 }, stats = { str=12, dex=12, mag=12, con=12 }, + infravision = 20, life_regen = 3, size_category = 3, rank = 2, diff --git a/game/modules/tome/data/general/npcs/vermin.lua b/game/modules/tome/data/general/npcs/vermin.lua index 1e752d52573cdebb635673e924a9ae725d9ad95a..462957e35decdb17b0ecac6ad98a0229f1d75ffc 100644 --- a/game/modules/tome/data/general/npcs/vermin.lua +++ b/game/modules/tome/data/general/npcs/vermin.lua @@ -31,6 +31,7 @@ newEntity{ energy = { mod=0.9 }, stats = { str=10, dex=15, mag=3, con=3 }, combat_armor = 1, combat_def = 1, + infravision = 20, rank = 1, size_category = 1, } diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua index b382a8169c41011bef102b1f0ec732390c37d941..38450aef4d5582ad8348ab6001765bc20e6ec09b 100644 --- a/game/modules/tome/data/general/npcs/wight.lua +++ b/game/modules/tome/data/general/npcs/wight.lua @@ -42,6 +42,7 @@ newEntity{ ai = "dumb_talented_simple", ai_state = { talent_in=4, }, energy = { mod=1 }, stats = { str=11, dex=11, mag=15, con=12 }, + infravision = 20, rank = 2, size_category = 3, diff --git a/game/modules/tome/data/general/objects/egos/rings.lua b/game/modules/tome/data/general/objects/egos/rings.lua index 4861f64b522ccca5647ce57e68bd0947f6aa51c0..7d24cbe72da57ae2e6f38134433be94780d8e50c 100644 --- a/game/modules/tome/data/general/objects/egos/rings.lua +++ b/game/modules/tome/data/general/objects/egos/rings.lua @@ -32,6 +32,8 @@ newEntity{ newEntity{ name = " of invisibility", + desc = [[Allows the wearer to become invisible to normal sight +Beware, you should take off your light, otherwise you will still be easily spotted.]], level_range = {30, 40}, rarity = 4, cost = 16, diff --git a/game/modules/tome/data/talents/cunning/stealth.lua b/game/modules/tome/data/talents/cunning/stealth.lua index f81966b34611a6b1d9b6ba87f5ef398fd8286693..1e915ab8bf7eed5c5f7491f869feb0cf56ed6f4b 100644 --- a/game/modules/tome/data/talents/cunning/stealth.lua +++ b/game/modules/tome/data/talents/cunning/stealth.lua @@ -43,14 +43,14 @@ newTalent{ local res = { stealth = self:addTemporaryValue("stealth", self:getCun(10) * self:getTalentLevel(t)), --- lite = self:addTemporaryValue("lite", -100), + lite = self:addTemporaryValue("lite", -1000), } game.level.map:updateMap(self.x, self.y) return res end, deactivate = function(self, t, p) self:removeTemporaryValue("stealth", p.stealth) --- self:removeTemporaryValue("lite", p.lite) + self:removeTemporaryValue("lite", p.lite) game.level.map:updateMap(self.x, self.y) return true end, diff --git a/game/modules/tome/data/talents/spells/phantasm.lua b/game/modules/tome/data/talents/spells/phantasm.lua index 5a6e0dc2e9ee257de61c2d7702094fb47e80508d..7164e6504b76b808bb14a3c65ce48124086e7019 100644 --- a/game/modules/tome/data/talents/spells/phantasm.lua +++ b/game/modules/tome/data/talents/spells/phantasm.lua @@ -127,6 +127,7 @@ newTalent{ end, info = function(self, t) return ([[The caster fades from sight, granting %d bonus to invisibility. + Beware, you should take off your light, otherwise you will still be easily spotted. This powerful spell constantly drains your mana while active. The bonus will increase with the Magic stat]]):format(4 + self:combatSpellpower(0.04) * self:getTalentLevel(t)) end,