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

Sometimes the Heart of the Gloom has been purified from the corruption, only...

Sometimes the Heart of the Gloom has been purified from the corruption, only to fall pray to a powerful solipsist


git-svn-id: http://svn.net-core.org/repos/t-engine4@6676 51575b47-30f0-44d4-a5cc-537603b46e54
parent 48858b9d
No related branches found
No related tags found
No related merge requests found
Showing with 190 additions and 23 deletions
......@@ -637,6 +637,30 @@ cavewall = { method="walls", type="cavewall", forbid={}, use_type=true, extended
default4={add_displays={{image="terrain/cave/cave_ver_edge_left_01.png", display_x=-1}}, min=1, max=1},
default6={add_displays={{image="terrain/cave/cave_ver_edge_right_01.png", display_x=1}}, min=1, max=1},
},
bonewall = { method="walls", type="bonewall", forbid={}, use_type=true, extended=true,
default8={add_displays={{image="terrain/bone/bonewall_8_1.png", display_y=-1, z=16}}, min=1, max=1},
default8p={add_displays={{image="terrain/bone/bone_V3_pillar_top_0%d.png", display_y=-1, z=16}}, min=1, max=4},
default7={add_displays={{image="terrain/bone/bone_V3_inner_7_01.png", display_y=-1, z=16}}, min=1, max=1},
default9={add_displays={{image="terrain/bone/bone_V3_inner_9_01.png", display_y=-1, z=16}}, min=1, max=1},
default7i={add_displays={{image="terrain/bone/bone_V3_3_01.png", display_y=-1, z=16}}, min=1, max=1},
default8i={add_displays={{image="terrain/bone/bonewall_8h_1.png", display_y=-1, z=16}}, min=1, max=1},
default9i={add_displays={{image="terrain/bone/bone_V3_1_01.png", display_y=-1, z=16}}, min=1, max=1},
default73i={add_displays={{image="terrain/bone/bonewall_91d_1.png", display_y=-1, z=16}}, min=1, max=1},
default91i={add_displays={{image="terrain/bone/bonewall_73d_1.png", display_y=-1, z=16}}, min=1, max=1},
default2={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_8_0%d.png"}}, min=1, max=8},
default2p={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_pillar_bottom_0%d.png"}}, min=1, max=3},
default1={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_inner_1_01.png"}}, min=1, max=1},
default3={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_inner_3_01.png"}}, min=1, max=1},
default1i={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_7_01.png"}}, min=1, max=1},
default2i={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bonewall_2h_1.png"}}, min=1, max=1},
default3i={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bone_V3_9_01.png"}}, min=1, max=1},
default19i={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bonewall_19d_1.png"}}, min=1, max=1},
default37i={image="terrain/bone/bone_floor_1_01.png", add_mos={{image="terrain/bone/bonewall_37d_1.png"}}, min=1, max=1},
default4={add_displays={{image="terrain/bone/bone_ver_edge_left_01.png", display_x=-1}}, min=1, max=1},
default6={add_displays={{image="terrain/bone/bone_ver_edge_right_01.png", display_x=1}}, min=1, max=1},
},
rift = { method="walls", type="riftwall", forbid={}, use_type=true, extended=true,
default8={add_displays={{image="terrain/rift/riftwall_8_1.png", display_y=-1, z=16}}, min=1, max=1},
default8p={add_displays={{image="terrain/rift/rift_V3_pillar_top_01.png", display_y=-1, z=16}}, min=1, max=1},
......
......@@ -906,6 +906,7 @@ function _M:getTextualDesc(compare_with)
compare_fields(w, compare_with, field, "silence_immune", "%+d%%", "Silence immunity: ", 100)
compare_fields(w, compare_with, field, "disarm_immune", "%+d%%", "Disarm immunity: ", 100)
compare_fields(w, compare_with, field, "confusion_immune", "%+d%%", "Confusion immunity: ", 100)
compare_fields(w, compare_with, field, "sleep_immune", "%+d%%", "Sleep immunity: ", 100)
compare_fields(w, compare_with, field, "pin_immune", "%+d%%", "Pinning immunity: ", 100)
compare_fields(w, compare_with, field, "stun_immune", "%+d%%", "Stun/Freeze immunity: ", 100)
......
......@@ -1895,3 +1895,25 @@ newEntity{ base = "BASE_GLOVES", define_as = "VARSHA_CLAW",
max_power = 24, power_regen = 1,
use_talent = { id = Talents.T_FIRE_BREATH, level = 2, power = 24 },
}
newEntity{ base = "BASE_TOOL_MISC", define_as = "EYE_OF_THE_DREAMING_ONE",
power_source = {psionic=true},
unique=true, rarity=240,
name = "Eye of the Dreaming One",
unided_name = "translucent sphere",
color = colors.YELLOW,
level_range = {1, 10},
image = "npc/seed_of_dreams.png",
desc = [[This ethereal eye stares eternally, as if seeing things that do not truly exist.]],
cost = 320,
material_level = 1,
wielder = {
resists={[DamageType.MIND] = 8},
inc_damage={[DamageType.MIND] = 10},
sleep_immune=1,
combat_mindresist = 10,
inc_stats = {[Stats.STAT_WIL] = 4,},
},
max_power = 25, power_regen = 1,
use_talent = { id = Talents.T_SLEEP, level = 3, power = 20 },
}
-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012, 2013 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
base_size = 32
local toggle = false
return { generator = function()
local ad = rng.range(0, 360)
local a = math.rad(ad)
local dir = -math.rad(ad)
local r = rng.range(10, 32 * radius)
local dirchance = rng.chance(2)
return {
trail = 1,
life = 30,
size = 15, sizev = -0.3, sizea = 0,
x = r * math.cos(a), xv = 0, xa = 0,
y = r * math.sin(a), yv = 0, ya = 0,
dir = dir, dirv = 0, dira = 0,
vel = dirchance and 0.32 or -0.2, velv = 0, vela = dirchance and -0.01 or 0.01,
r = 0, rv = 0, ra = 0,
g = rng.float(0.7, 1), gv = 0, ga = 0,
b = rng.float(0.7, 1), bv = 0, ba = 0,
a = rng.range(40, 80) / 255, av = 0, aa = 0,
}
end, },
function(self)
self.ps:emit(1)
end,
400
game/modules/tome/data/gfx/shockbolt/npc/seed_of_dreams.png

8.63 KiB

......@@ -29,9 +29,10 @@ subGenerator{
}
local floor = data.floor or data.sublevel.floor
local wall = data.wall or data.sublevel.wall or "HARDWALL"
-- defineTile section
defineTile("#", "HARDWALL")
defineTile("#", wall)
defineTile("o", floor, nil, {entity_mod=function(e) e.make_escort = nil return e end, random_filter={type='humanoid', subtype='orc', special=function(e) return e.pride == data.sublevel.pride end}})
quickEntity("g", 'o')
defineTile(".", floor)
......
......@@ -32,7 +32,11 @@ desc = function(self, who)
desc[#desc+1] = "#SLATE#* You must explore Norgos' Lair.#WHITE#"
end
if self:isCompleted("heart-gloom") then
desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Heart of the Gloom and slain the Withering Thing.#WHITE#"
if self:isCompleted("heart-gloom-purified") then
desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Heart of the Gloom and slain the Dreaming One.#WHITE#"
else
desc[#desc+1] = "#LIGHT_GREEN#* You have explored the Heart of the Gloom and slain the Withering Thing.#WHITE#"
end
else
desc[#desc+1] = "#SLATE#* You must explore the Heart of the Gloom.#WHITE#"
end
......
......@@ -19,23 +19,40 @@
local Talents = require("engine.interface.ActorTalents")
local gloomify = function(add, mult)
add = add or 0
mult = mult or 1
return function(e)
if e.rarity then
local list = {"T_GLOOM", "T_AGONY", "T_REPROACH", "T_DARK_TENDRILS", "T_BLINDSIDE"}
e[#e+1] = resolvers.talents{[ Talents[rng.table(list)] ] = {base=1, every=5, max=6}}
e.rarity = math.ceil(e.rarity * mult + add)
e.name = rng.table{"gloomy ", "deformed ", "sick "}..e.name
local alter
if not currentZone.is_purified then
alter = function(add, mult)
add = add or 0
mult = mult or 1
return function(e)
if e.rarity then
local list = {"T_GLOOM", "T_AGONY", "T_REPROACH", "T_DARK_TENDRILS", "T_BLINDSIDE"}
e[#e+1] = resolvers.talents{[ Talents[rng.table(list)] ] = {base=1, every=5, max=6}}
e.rarity = math.ceil(e.rarity * mult + add)
e.name = rng.table{"gloomy ", "deformed ", "sick "}..e.name
end
end
end
else
alter = function(add, mult)
add = add or 0
mult = mult or 1
return function(e)
if e.rarity then
local list = {"T_PYROKINESIS", "T_DREAM_CRUSHER", "T_FORGE_SHIELD", "T_SOLIPSISM", "T_DREAM_WALK"}
e[#e+1] = resolvers.talents{[ Talents[rng.table(list)] ] = {base=1, every=5, max=6}}
e.rarity = math.ceil(e.rarity * mult + add)
e.name = rng.table{"dreaming ", "slumbering ", "dozing "}..e.name
end
end
end
end
load("/data/general/npcs/rodent.lua", gloomify(0))
load("/data/general/npcs/bear.lua", gloomify(3))
load("/data/general/npcs/canine.lua", gloomify(1))
load("/data/general/npcs/plant.lua", gloomify(0))
load("/data/general/npcs/rodent.lua", alter(0))
load("/data/general/npcs/bear.lua", alter(3))
load("/data/general/npcs/canine.lua", alter(1))
load("/data/general/npcs/plant.lua", alter(0))
--load("/data/general/npcs/all.lua", rarity(4, 35))
......@@ -76,3 +93,45 @@ newEntity{ base="BASE_NPC_CANINE", define_as = "WITHERING_THING",
game.player:resolveSource():setQuestStatus("start-thaloren", engine.Quest.COMPLETED, "heart-gloom")
end,
}
newEntity{ define_as = "DREAMING_ONE",
type = "horror", subtype = "eldritch",
display = "h",
unique = true,
name = "The Dreaming One", tint=colors.PURPLE,
color=colors.VIOLET, image = "npc/seed_of_dreams.png",
desc = [[This strange globe of blue light seems to be alive and asleep. Nothing about it moves yet you can feel the crushing power of its dreams assaulting your mind.]],
killer_message = "and corrupted into a pile of writhing worms",
level_range = {7, nil}, exp_worth = 2,
max_life = 70, life_rating = 10, fixed_rating = true,
stats = { str=10, dex=10, cun=20, wil=25, con=10 },
rank = 4,
tier1 = true,
size_category = 2,
infravision = 10,
instakill_immune = 1,
never_move = 1,
combat = { dammod={wil=0.6, cun=0.4}, damtype=DamageType.MIND, dam=resolvers.levelup(8, 1, 0.9), atk=15, apr=3 },
body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
resolvers.drops{chance=100, nb=1, {defined="EYE_OF_THE_DREAMING_ONE", random_art_replace={chance=75}} },
resolvers.drops{chance=100, nb=3, {tome_drops="boss"} },
resolvers.talents{
[Talents.T_SOLIPSISM]=3,
[Talents.T_FORGE_SHIELD]={base=2, every=4, max=6},
[Talents.T_DISTORTION_BOLT]={base=1, every=4, max=6},
[Talents.T_MINDHOOK]={base=4, every=4, max=6},
},
resolvers.sustains_at_birth(),
autolevel = "wildcaster",
ai = "tactical", ai_state = { talent_in=1 },
on_die = function(self, who)
game.player:resolveSource():setQuestStatus("start-thaloren", engine.Quest.COMPLETED, "heart-gloom")
game.player:resolveSource():setQuestStatus("start-thaloren", engine.Quest.COMPLETED, "heart-gloom-purified")
end,
}
......@@ -17,6 +17,9 @@
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
local layout = game.state:alternateZone(short_name, {"PURIFIED", 2})
local is_purified = layout == "PURIFIED"
return {
name = "Heart of the Gloom",
level_range = {1, 5},
......@@ -32,6 +35,7 @@ return {
persistent = "zone",
ambient_music = "Taking flight.ogg",
max_material_level = 2,
is_purified = is_purified,
generator = {
map = {
class = "engine.generator.map.Octopus",
......@@ -52,7 +56,7 @@ return {
class = "mod.class.generator.actor.Random",
nb_npc = {20, 30},
filters = { {max_ood=2}, },
guardian = "WITHERING_THING",
guardian = is_purified and "DREAMING_ONE" or "WITHERING_THING",
},
object = {
class = "engine.generator.object.Random",
......@@ -74,7 +78,7 @@ return {
post_process = function(level)
local Map = require "engine.Map"
level.foreground_particle = require("engine.Particles").new("fullgloom", 1, {radius=(Map.viewport.mwidth + Map.viewport.mheight) / 2})
level.foreground_particle = require("engine.Particles").new(is_purified and "fulldream" or "fullgloom", 1, {radius=(Map.viewport.mwidth + Map.viewport.mheight) / 2})
end,
foreground = function(level, x, y, nb_keyframes)
......
......@@ -19,4 +19,5 @@
load("/data/general/grids/basic.lua")
load("/data/general/grids/sand.lua")
load("/data/general/grids/bone.lua")
load("/data/general/grids/water.lua")
......@@ -38,18 +38,19 @@ return {
map = "zones/prides",
up = "SAND_UP6",
down = "SAND_DOWN4",
floor = "SAND",
floor = "BONEFLOOR",
wall = "HARDBONEWALL",
sublevel = {
class = "engine.generator.map.Town",
pride = "rak-shor",
building_chance = 70,
max_building_w = 8, max_building_h = 8,
edge_entrances = {6,4},
floor = "FLOOR",
external_floor = "SAND",
wall = "WALL",
up = "SAND",
down = "SAND",
floor = "BONEFLOOR",
external_floor = "BONEFLOOR",
wall = "BONEWALL",
up = "BONEFLOOR",
down = "BONEFLOOR",
door = "DOOR",
nb_rooms = {0,0,0,1},
......
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