Attached Files:
|
wizlab_nikola_all.des [^] (8,564 bytes) 2013-02-20 00:01 [Show Content] [Hide Content]# ADD TO: monsters.txt
========================================
experimental electric golem
An animated figure made completely of electricity, created in some demented
wizard's experiment.
This one appears to be shorter and thinner than normal. Perhaps the wizard in
question never finished it.
%%%%
========================================
# ADD TO: features.txt
========================================
# wizlab: Nikola
A metal floor
This floor is made of riveted plates of bluish-grey metal. Every rivet burns
with Saint Elmo's fire.
{{
if you.res_shock() >= 1 then
return "Sparks skitter around your feet."
else
return "You feel a small shock with every step."
end
}}
%%%%
Faraday cage
The wall here is an mesh of thin iron wires, allowing air to pass through but
stopping electricity. Although it looks far weaker than the rest of the wall,
it's still too strong to break by hand.
A Faraday cage would normally harmlessly ground any electric charge it is
exposed to, protecting whatever is on the other side. However, the sparks
climbing along the wires of this one suggest that it already has so great an
electrical charge that further electricity will bounce off it.
%%%%
========================================
# ADD TO: wizlab.des
========================================
# Nikola's Generator
# threat: ball lightning, minor demons, black draconians, electric golem
# loot: Book of Air or lightning rod, electric-themed gear
# xp: 16000 or so (plus 30000 for 2 diamond obelisks)
# layout: generator with 2 turbines, water, metal walls, iron grates
# colour: cyan walls, lightgrey floor
#
function nikola_spawn_ball_lightning (data, triggerable, triggerer, marker, ev)
if triggerer.type ~= "turn" or triggerer.sub_type ~= "countdown" then
return
end
local gxm, gym = dgn.max_bounds()
local x, y
local valid_pos = false
while not valid_pos do
x = crawl.random_range(1, gxm - 2)
y = crawl.random_range(1, gym - 2)
if not feat.is_solid(x, y) then
valid_pos = true
end
end
local you_x, you_y = you.pos()
if (you_x == x and you_y == y) then return end
if dgn.mons_at(x, y) then return end
if not you.see_cell(x, y) then return end
local mons_name = "generate_awake ball lightning seen " ..
"sum:conjure_ball_lightning dur:1"
if (dgn.create_monster(x, y, mons_name)) then
crawl.mpr("Sparks form into a crackling ball of electricity nearby!",
"warning")
crawl.redraw_view()
end
end
###############################################################################
# Nikola's Generator
#
# This is where Nikola did his infamous experiments on the
# electric golem. Nikola himself has not been here for some
# time, possibly as a result of the accident. He was last seen
# wandering around the dungeon and electrocuting unwary
# adventurers.
#
# As the generator is still running, the power is being dumped
# randomly as ball lightning. The ball lightning only spawns in
# sight of player for speed reasons and because some monsters
# only have rElec++ instead of rElec+++.
#
NAME: wizlab_nikola
ORIENT: encompass
TAGS: no_pool_fixup no_item_gen no_monster_gen no_trap_gen allow_dup
: wizlab_setup(_G, "Nikola's Generator")
LFLOORCOL: lightgrey
LFLOORTILE: floor_iron
TILE: v = dngn_metal_iron
{{
local ball_lightning_marker = TriggerableFunction:new (
{
func="nikola_spawn_ball_lightning",
repeated=true,
props = {
-- Only one ball lighning appears at a time.
single_random_slave="true"
}
}
)
ball_lightning_marker:add_triggerer(DgnTriggerer:new {
type="turn",
delay_min=20,
delay_max=30
})
-- we just need any unique glyph to base this off
lua_marker("A", ball_lightning_marker)
}}
KFEAT: #& = iron_grate
MARKER: & = lua:props_marker{veto_fragmentation="veto", \
veto_disintegrate="veto", \
veto_shatter="veto"}
KPROP: U" = no_rtele_into
KFEAT: " = .
NSUBST: . = 20:0 / *:.
NSUBST: d = 1:d / 1:| / *:e
NSUBST: e = 1:e / 1:f / *:*
NSUBST: w = 3:z / *:w
NSUBST: W = 2:Z / *:W
KFEAT: yz- = w
KFEAT: YZ = W
KMONS: zZ = electric eel
MARKER: - = lua:fog_machine { \
cloud_type = "steam", walk_dist = 3, \
pow_max = 100, pow_min = 10, delay = 20, \
size = 1, start_clouds = 5, excl_rad = 1 }
MONS: statue generate_awake n_rpl n_des name:diamond_obelisk \
hp:10000 col:white tile:mons_diamond_obelisk perm_ench:tornado
MONS: lightning spire
MONS: patrolling electric golem hd:10 name:experimental n_adj
ITEM: lightning rod / book of the sky
# w:30 Blades-quality branded weapons
# w:50 other branded weapons
# w:20 "impossibe" branded weapons
ITEM: quick blade ego:electrocution good_item w:5 /\
double sword ego:electrocution good_item w:5 /\
executioner's axe ego:electrocution good_item w:5 /\
eveningstar ego:electrocution good_item w:5 /\
bardiche ego:electrocution good_item w:5 /\
lajatang ego:electrocution good_item w:5 /\
sabre ego:electrocution good_item /\
scimitar ego:electrocution good_item /\
dire flail ego:electrocution good_item /\
trident ego:electrocution good_item /\
quarterstaff ego:electrocution good_item /\
giant spiked club ego:electrocution good_item w:5 /\
crossbow ego:electrocution good_item w:5 /\
bow ego:electrocution good_item w:5 /\
longbow ego:electrocution good_item w:5
# There is no ego of insulation
ITEM: scroll of blinking / scroll of blinking q:2 /\
scroll of teleportation / scroll of teleportation q:2 /\
any scroll good_item / staff of energy /\
wand of lightning / wand of teleportation
: set_border_fill_type('metal_wall')
: set_random_mon_list("sixfirhy w:4 / iron devil w:2 / " ..
: "vapour w:1 / black draconian w:1")
: set_feature_name("floor", "metal floor")
: set_feature_name("iron_grate", "Faraday cage")
epilogue{{
wizlab_milestone(_G, "Nikola's Generator")
}}
MAP
vvvvvvvvv
vd.d.d.dv
v.......v vvvvv
ve.....ev vyyyv
v...3...v vyyyv
v.......v vyyyv
v.......v vyyyv
v.......v vyyyv
vvvvvvvvvvvvvvv###.###v vyyyv
v.....................v vyyyv
v.2...2...2...2.......vvvvvvvvvvv&&&vvvvvvv
v...............................#www#.....v
v.............................e.#www#.....v
v...............................#www#..<..v
vvvvvvWWvvvvvvvvvvvvvvv##########www#.....v
vyywwwWWwwwwwwwwwwwwwwwwwwwwwwwwwwww#.....v
vvvy#ww#WW##########wwwwwwwwwwwwwwwwww#..A..v
vyyy#yy#...........#w################w#.....v
vyyy#yy#...........#w#..............#w#.....v
vyyy#yy#...........#w#..............#w#.....v
vyy-#yyvvv.........#w#..............#w#.....v
vvvvv#yyyyvvvvv.....vwvvvWWW#####....WWW.....v
vlllly-y###"""vvv...vwvWWW###"""###..WWW.....v
vllllyy##"""""""vvWWvwvWW##"""""""#vvvwvvvv..v
vvvvvv##"""""""""vvWvwvW##"""""""""vvvwwwwv..v
vv"""""""""""#WWWWW#"""""""""""vvww#wv..v
vv"""""""""""#WWWW##"""""""""""vvww#wv..v
v""""""""""""##WWW#"""""""""""""vyy#wv..v
v""""""1""""""#WWW#""""""1""""""vyy#yv""v
v"""""""""""""#WWW#"""""""""""""vyy#y"""v
vv"""""""""""##WWW##"""""""""""vvyy#yY""v
v"""""""""""#WWWWW#"""""""""""vyyy#yYY"v
vv"""""""""##WWWWW##"""""""""##yyy#yYYYv
vv"""""""##WWWWWWW##"""""""##y-yy#yYYYv
vvv"""vvvvvvv&vvvvvvv"""###yylly#-YYYv
vvvvv vyv vvvvvvvvvllvvvvvvv
vyv vllv
vyv vllv
vyv vvvv
vyv
vyv
vyv
vvv
ENDMAP
========================================
|