Skip to content
Snippets Groups Projects
Commit 483acb01 authored by dg's avatar dg
Browse files

Fixed the exit of Eruan

Orc necromancers have new powers in Rak'Shor Pride
Orc blood mages have appeared in Rak'Shor Pride


git-svn-id: http://svn.net-core.org/repos/t-engine4@1006 51575b47-30f0-44d4-a5cc-537603b46e54
parent 6c45c9fb
No related branches found
No related tags found
No related merge requests found
......@@ -475,10 +475,10 @@ function _M:setupCommands()
self.player.esp.range = 50
self.player.inc_damage.all = 100000
-- self:changeLevel(15, "high-peak")
self:changeLevel(1, "town-gates-of-morning")
-- self:changeLevel(1, "wilderness-arda-fareast")
-- game.memory_levels["wilderness-arda-fareast-1"] = game.level
-- self.player:grantQuest("orc-pride")
-- self:changeLevel(1, "town-gates-of-morning")
self:changeLevel(1, "wilderness-arda-fareast")
game.memory_levels["wilderness-arda-fareast-1"] = game.level
self.player:grantQuest("orc-pride")
-- self.player:grantQuest("escort-duty")
end
end,
......
......@@ -39,8 +39,8 @@ newEntity{
open_door = true,
autolevel = "warrior",
ai = "dumb_talented_simple", ai_state = { talent_in=3, },
autolevel = "caster",
ai = "dumb_talented_simple", ai_state = { talent_in=1, },
energy = { mod=1 },
stats = { str=20, dex=8, mag=6, con=16 },
}
......@@ -67,6 +67,28 @@ newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
resolvers.talents{
[Talents.T_SUMMON]=1,
-- [Talents.T_]=3,
[Talents.T_SOUL_ROT]=5,
},
}
newEntity{ base = "BASE_NPC_ORC_RAK_SHOR",
name = "orc blood mage", color=colors.CRIMSON,
desc = [[An orc dressed in black robes. He mumbles is a harsh tongue.]],
level_range = {27, nil}, exp_worth = 1,
rarity = 2,
max_life = resolvers.rngavg(110,120), life_rating = 12,
resolvers.equip{
{type="weapon", subtype="staff", autoreq=true},
{type="armor", subtype="cloth", autoreq=true},
},
combat_armor = 0, combat_def = 5,
-- Nullify their cooldowns
talent_cd_reduction={[Talents.T_SOUL_ROT]=2, [Talents.T_BLOOD_GRASP]=4, },
resolvers.talents{
[Talents.T_SOUL_ROT]=5,
[Talents.T_BLOOD_GRASP]=5,
[Talents.T_CURSE_OF_VULNERABILITY]=5,
},
}
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
return {
base = 1000,
angle = { 0, 360 }, anglev = { 2000, 4000 }, anglea = { 200, 600 },
life = { 5, 10 },
size = { 2, 5 }, sizev = {0, 0}, sizea = {0, 0},
r = {80, 200}, rv = {0, 10}, ra = {0, 0},
g = {0, 0}, gv = {0, 0}, ga = {0, 0},
b = {0, 0}, bv = {0, 0}, ba = {0, 0},
a = {255, 255}, av = {0, 0}, aa = {0, 0},
}, function(self)
self.nb = (self.nb or 0) + 1
if self.nb < 4 then
self.ps:emit(100)
end
end
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
return { generator = function()
local radius = 0
local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
local ad = rng.float(0, 360)
local a = math.rad(ad)
local r = rng.float(0, sradius / 6)
local x = r * math.cos(a)
local y = r * math.sin(a)
local bx = math.floor(x / engine.Map.tile_w)
local by = math.floor(y / engine.Map.tile_h)
local static = rng.percent(40)
return {
trail = 1,
life = 6,
size = 3, sizev = 0, sizea = 0,
x = x, xv = 0, xa = 0,
y = y, yv = 0, ya = 0,
dir = a, dirv = 0, dira = 0,
vel = sradius / 2 / 6, velv = 0, vela = 0,
r = rng.range(180, 220)/255, rv = 0, ra = 0,
g = 0, gv = 0, ga = 0,
b = 0, bv = 0, ba = 0,
a = rng.range(80, 220)/255, av = 0, aa = 0,
}
end, },
function(self)
self.ps:emit(30)
end,
30*6
-- ToME - Tales of Middle-Earth
-- Copyright (C) 2009, 2010 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
return { generator = function()
local radius = 0
local sradius = (radius + 0.5) * (engine.Map.tile_w + engine.Map.tile_h) / 2
local ad = rng.float(0, 360)
local a = math.rad(ad)
local r = rng.float(0, sradius / 6)
local x = r * math.cos(a)
local y = r * math.sin(a)
local bx = math.floor(x / engine.Map.tile_w)
local by = math.floor(y / engine.Map.tile_h)
local static = rng.percent(40)
return {
trail = 1,
life = 6,
size = 3, sizev = 0, sizea = 0,
x = x, xv = 0, xa = 0,
y = y, yv = 0, ya = 0,
dir = a, dirv = 0, dira = 0,
vel = sradius / 2 / 6, velv = 0, vela = 0,
r = 0, rv = 0, ra = 0,
g = rng.range(80, 200)/255, gv = 0, ga = 0,
b = 0, bv = 0, ba = 0,
a = rng.range(80, 220)/255, av = 0, aa = 0,
}
end, },
function(self)
self.ps:emit(30)
end,
30*6
......@@ -20,6 +20,7 @@
-- race & classes
newTalentType{ type="technique/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
newTalentType{ no_silence=true, type="spell/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
newTalentType{ no_silence=true, type="corruption/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
newTalentType{ type="wild-gift/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
newTalentType{ type="other/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
newTalentType{ type="undead/other", name = "other", hide = true, description = "Talents of the various entities of the world." }
......@@ -843,3 +844,74 @@ newTalent{
The damage will increase with Willpower and Cunning stats.]]):format(self:combatTalentMindDamage(t, 10, 170))
end,
}
newTalent{
name = "Soul Rot",
type = {"corruption/other", 1},
points = 5,
cooldown = 3,
vim = 10,
range = 20,
proj_speed = 10,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_slime"}}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:projectile(tg, x, y, DamageType.BLIGHT, self:spellCrit(self:combatTalentSpellDamage(t, 20, 250)), {type="slime"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self)
return ([[Projects a bolt of pure blight, doing %0.2f blight damage.
The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 20, 250))
end,
}
newTalent{
name = "Blood Grasp",
type = {"corruption/other", 1},
points = 5,
cooldown = 5,
vim = 20,
range = 20,
proj_speed = 20,
action = function(self, t)
local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_blood"}}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:projectile(tg, x, y, DamageType.DRAINLIFE, {dam=self:spellCrit(self:combatTalentSpellDamage(t, 10, 220)), healfactor=0.5}, {type="blood"})
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self)
return ([[Projects a bolt of corrupted blood doing %0.2f blight damage and healing the caster for half the damage done.
The damage will increase with Magic stat.]]):format(self:combatTalentSpellDamage(t, 10, 220))
end,
}
newTalent{
name = "Curse of Vulnerability",
type = {"corruption/other", 1},
points = 5,
cooldown = 20,
vim = 20,
range = 20,
action = function(self, t)
local tg = {type="hit", range=self:getTalentRange(t), talent=t}
local x, y = self:getTarget(tg)
if not x or not y then return nil end
self:project(tg, x, y, function(tx, ty)
local target = game.level.map(tx, ty, Map.ACTOR)
if not target then return end
if target:checkHit(self:combatSpellpower(), target:combatSpellResist(), 0, 95, 15) then
target:setEffect(target.EFF_CURSE_VULNERABILITY, 10, {power=self:combatTalentSpellDamage(t, 10, 85)})
end
end)
game:playSoundNear(self, "talents/slime")
return true
end,
info = function(self)
return ([[Curses your target,
The resistances will decrease with Magic stat.]]):format(self:combatTalentSpellDamage(t, 10, 85))
end,
}
......@@ -943,3 +943,21 @@ newEffect{
end
end,
}
newEffect{
name = "CURSE_VULNERABILITY",
desc = "Curse of Vulnerability",
type = "curse",
status = "detrimental",
parameters = { power=10 },
on_gain = function(self, err) return "#Target# is cursed.", "+Curse" end,
on_lose = function(self, err) return "#Target# is no longer cursed.", "-Curse" end,
activate = function(self, eff)
eff.tmpid = self:addTemporaryValue("resists", {
all = -eff.power,
})
end,
deactivate = function(self, eff)
self:removeTemporaryValue("resists", eff.tmpid)
end,
}
......@@ -64,7 +64,7 @@ return {
{
[1] = {
generator = { map = {
up = "UP_WILDERNESS",
up = "UP_WILDERNESS_FAR_EAST",
}, },
},
[5] = {
......
......@@ -62,7 +62,7 @@ return {
{
[1] = {
generator = { map = {
up = "UP_WILDERNESS",
up = "UP_WILDERNESS_FAR_EAST",
}, },
},
[2] = {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment