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

Four new random undead uniques

git-svn-id: http://svn.net-core.org/repos/t-engine4@5000 51575b47-30f0-44d4-a5cc-537603b46e54
parent eb3c8e55
No related branches found
No related tags found
No related merge requests found
......@@ -959,6 +959,7 @@ newDamageType{
projector = function(src, x, y, type, dam, tmp)
local target = game.level.map(x, y, Map.ACTOR)
tmp = tmp or {}
if _G.type(dam) ~= "table" then dam = {dam=dam, dist=3} end
if target and not tmp[target] then
tmp[target] = true
DamageType:get(DamageType.PHYSICAL).projector(src, x, y, DamageType.PHYSICAL, dam.dam)
......
......@@ -125,3 +125,41 @@ newEntity{ base = "BASE_NPC_BONE_GIANT",
},
resolvers.sustains_at_birth(),
}
--Heavy Sentinel, flaming bone giant.
newEntity{ base = "BASE_NPC_BONE_GIANT", define_as = "HEAVY_SENTINEL",
name = "Heavy Sentinel", color=colors.ORANGE, unique=true,
desc = [[A towering creature, made from the bones of countless bodies. An aura of flame bellows from within its chest.]],
resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/undead_giant_runed_bone_giant.png", display_h=2, display_y=-1}}},
level_range = {45, nil}, exp_worth = 2,
rarity = 50,
rank = 3.5,
ai = "tactical",
size=5,
max_life = resolvers.rngavg(110,125),
combat_armor = 20, combat_def = 35,
life_rating = 24,
melee_project = {[DamageType.FIRE]=resolvers.mbonus(15, 25)},
on_melee_hit = {[DamageType.FIRE]=resolvers.mbonus(15, 5)},
autolevel = "warriormage",
resists = {all = 10, [DamageType.FIRE]=100, [DamageType.COLD]=-75},
resolvers.talents{
[Talents.T_BONE_ARMOUR]={base=5, every=10, max=7},
[Talents.T_STUN]={base=3, every=10, max=5},
[Talents.T_SKELETON_REASSEMBLE]=5,
[Talents.T_ARCANE_POWER]={base=2, every=3, max = 10},
[Talents.T_FLAME]={base=4, every=4, max = 10},
[Talents.T_FLAMESHOCK]={base=3, every=6, max = 10},
[Talents.T_MANAFLOW]={base=5, every=5, max = 10},
[Talents.T_INFERNO]={base=2, every=4, max = 8},
[Talents.T_BURNING_WAKE]={base=1, every=4, max = 5},
[Talents.T_WILDFIRE]={base=1, every=7, max=4},
[Talents.T_GOLEM_MOLTEN_SKIN]={base=2, every=6, max=6},
[Talents.T_CLEANSING_FLAMES]={base=2, every=6, max = 6},
[Talents.T_ARCANE_COMBAT]=4,
[Talents.T_SPELLCRAFT]={base=3, every=7, max=8},
[Talents.T_FIERY_HANDS]={base=3, every=7, max=8},
},
resolvers.sustains_at_birth(),
resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
}
......@@ -148,3 +148,61 @@ newEntity{ base = "BASE_NPC_GHOST",
[Talents.T_CURSE_OF_IMPOTENCE]={base=5, every=6, max=8},
},
}
--Glacial Legion, icy fused soul. Leaves trails that freeze any who try to pass over them.
newEntity{ base = "BASE_NPC_GHOST", define_as = "GLACIAL_LEGION",
name = "Glacial Legion", color=colors.BLUE, image="npc/banshee.png", unique=true,
desc = [[A massive, shifting, ethereal form floats in the air around an orb of frozen blood. Vapor pools on the floor beneath it.]],
level_range = {45, nil}, exp_worth = 2,
rarity = 50,
size_category=5,
rank = 3.5,
max_life = resolvers.rngavg(75,90), life_rating = 16,
autolevel = "caster",
ai = "tactical", ai_state = { talent_in=1, },
ai_tactic = resolvers.tactic"ranged",
resists = {all = -10, [DamageType.FIRE] = -100, [DamageType.LIGHT] = 30, [DamageType.COLD] = 100},
combat_armor = 0, combat_def = resolvers.mbonus(10, 10),
--stealth = resolvers.mbonus(40, 10),
combat = { dam=5, atk=5, apr=100, dammod={str=0.5, mag=0.5} },
melee_project = {[DamageType.COLD]=resolvers.mbonus(15, 25)},
on_melee_hit = {[DamageType.COLD]=resolvers.mbonus(15, 5)},
on_move = function(self)
local DamageType = require "engine.DamageType"
local duration = 7
local radius = 0
local dam = 25
-- Add a lasting map effect
game.level.map:addEffect(self,
self.x, self.y, duration,
engine.DamageType.ICE, 25,
radius,
5, nil,
engine.Entity.new{alpha=100, display='', color_br=30, color_bg=60, color_bb=200},
function(e)
e.radius = e.radius
return true
end,
false
)
end,
resolvers.talents{
[Talents.T_PHASE_DOOR]=5,
[Talents.T_FREEZE]={base=5, every=4, max=10},
[Talents.T_ICE_STORM]={base=3, every=6, max=8},
[Talents.T_ICE_SHARDS]={base=4, every=5, max=9},
[Talents.T_ARCANE_POWER]={base=3, every=3, max = 11},
[Talents.T_SHATTER]={base=3, every=6, max=8},
[Talents.T_UTTERCOLD]={base=1, every=7, max = 4},
[Talents.T_FROZEN_GROUND]={base=2, every=6, max = 6},
[Talents.T_CHILL_OF_THE_TOMB]={base=5, every=5, max=10},
[Talents.T_SPELLCRAFT]={base=3, every=7, max=8},
[Talents.T_MANAFLOW]={base=5, every=4, max = 12},
[Talents.T_FROST_HANDS]={base=3, every=7, max=8},
},
resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
}
......@@ -133,6 +133,68 @@ newEntity{ base = "BASE_NPC_GHOUL", define_as = "RISEN_CORPSE",
[Talents.T_STUN]={base=3, every=9, max=7},
[Talents.T_BITE_POISON]={base=3, every=9, max=7},
[Talents.T_ROTTING_DISEASE]={base=4, every=9, max=7},
},
},
}
--Rotting Titan, undead mass of flesh and stone. Regenerates quickly, moves slow, and hits hard.
newEntity{ base = "BASE_NPC_GHOUL", define_as = "ROTTING_TITAN",
name = "Rotting Titan", color={128,64,0}, unique=true, image="npc/undead_ghoul_ghoul.png",
desc = [[This gigantic mass of flesh and stone moves slowly, the ground rumbling with each step it takes. Its body seems to constantly pulsate and reform. Massive stones at the end of each limb form massive blunt weapons.]],
level_range = {45, nil}, exp_worth = 2,
rarity = 25,
max_life = resolvers.rngavg(150,200), life_rating = 34,
combat_armor = 40, combat_def = 10,
ai_state = { talent_in=2, ai_pause=20 },
movement_speed = 0.8,
size_category=5,
rank = 3.5,
life_regen=5,
max_stamina=1000,
stamina_regen=20,
ai = "tactical",
ai_tactic = resolvers.tactic"melee",
autolevel="warriormage",
can_pass = {pass_wall=70}, --So AI knows to try and pass walls.
stats = { str=17, dex=12, mag=12, con=14 },
resists = {all = 20, [DamageType.PHYSICAL]=15, [DamageType.ARCANE]=-50, [DamageType.FIRE]=-20},
combat = { dam=resolvers.levelup(50, 1, 1.4), atk=resolvers.levelup(8, 1, 1), apr=4, dammod={str=0.6}, damtype=engine.DamageType.PHYSKNOCKBACK, },
on_move = function(self)
if not force then
self:project({type="ball", range=0, selffire=false, radius=1}, self.x, self.y, engine.DamageType.DIG, 1)
if rng.percent(20) then
game.logSeen(self, "The ground shakes as %s steps!", self.name:capitalize())
local tg = {type="ball", range=0, selffire=false, radius=3, no_restrict=true}
local DamageType = require "engine.DamageType"
self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=24, dist=1})
self:doQuake(tg, self.x, self.y)
end
end
end,
knockback_immune=1,
resolvers.talents{
[Talents.T_STUN]={base=3, every=9, max=7},
[Talents.T_BITE_POISON]={base=3, every=9, max=7},
[Talents.T_SKELETON_REASSEMBLE]=4,
[Talents.T_ROTTING_DISEASE]={base=4, every=9, max=9},
[Talents.T_DECREPITUDE_DISEASE]={base=3, every=9, max=9},
[Talents.T_WEAKNESS_DISEASE]={base=3, every=9, max=9},
[Talents.T_KNOCKBACK]={base=3, every=9, max=9},
[Talents.T_STRIKE]={base=4, every=5, max = 12},
[Talents.T_INNER_POWER]={base=4, every=5, max = 10},
[Talents.T_EARTHEN_MISSILES]={base=5, every=5, max = 10},
[Talents.T_CRYSTALLINE_FOCUS]={base=1, every=7, max = 4},
[Talents.T_EARTHQUAKE]={base=2, every=5, max = 6},
[Talents.T_ONSLAUGHT]={base=2, every=5, max = 6},
[Talents.T_BATTLE_CALL]={base=2, every=5, max = 6},
},
resolvers.sustains_at_birth(),
resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
}
......@@ -204,4 +204,4 @@ newEntity{ base = "BASE_NPC_LICH",
[Talents.T_SHADOW_MAGES]=5,
[Talents.T_SHADOW_WARRIORS]=5,
},
}
\ No newline at end of file
}
......@@ -164,3 +164,45 @@ newEntity{ base = "BASE_NPC_VAMPIRE",
end
end,
}
-- Arch Zephyr, Vampiric Storm Lord. Wields a bow and lightning magic with equal effectiveness, and moves quickly.
newEntity{ base = "BASE_NPC_VAMPIRE", unique=true, define_as="ARCH_ZEPHYR",
name = "Arch Zephyr", color=colors.BLUE, image = "npc/vampire_lord.png",
desc=[[The robes of this ancient vampire billow with intense winds. Bolts of lightning arc along its body. In its hand it holds a bow, electricity streaking across it.]],
level_range = {45, nil}, exp_worth = 1,
rarity = 25,
autolevel="warriormage",
stats = { str=12, dex=25, mag=12, con=12 },
max_life = resolvers.rngavg(100,120), life_rating=24,
combat_armor = 15, combat_def = 15,
rank = 3.5,
mana_regen=5,
movement_speed=1.5,
ai = "tactical", ai_state = { talent_in=4, },
resolvers.equip{ {type="weapon", subtype="longbow", autoreq=true}, {type="ammo", subtype="arrow", autoreq=true} },
resists = { [DamageType.LIGHTNING] = 100, [DamageType.PHYSICAL] = -20, [DamageType.LIGHT] = 30, },
resolvers.talents{
[Talents.T_LIGHTNING]={base=4, every=4, max=10},
[Talents.T_CHAIN_LIGHTNING]={base=3, every=5, max=7},
[Talents.T_BLUR_SIGHT]=8,
[Talents.T_PHANTASMAL_SHIELD]=8,
[Talents.T_FEATHER_WIND]={base=3, every=4, max=10},
[Talents.T_THUNDERSTORM]={base=3, every=6, max=8},
[Talents.T_NOVA]={base=3, every=6, max=8},
[Talents.T_SHOCK]={base=3, every=6, max=8},
[Talents.T_TEMPEST]={base=1, every=7, max=4},
[Talents.T_HURRICANE]={base=1, every=7, max=4},
[Talents.T_SHOOT]=1, -- If possible, add talent that lets it temporarily fire lightning instead of arrows.
[Talents.T_RELOAD]=1,
[Talents.T_BOW_MASTERY]={base=6, every=5},
[Talents.T_DUAL_ARROWS]={base=3, every=6, max=8},
[Talents.T_PINNING_SHOT]={base=2, every=6, max=4},
[Talents.T_CRIPPLING_SHOT]={base=2, every=6, max=7},
[Talents.T_STEADY_SHOT]={base=4, every=5, max=10},
},
resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
}
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