Fix typo in monspeak.txt (slinkies).
Fixed hippogriff plural.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7709 c06c8d41-db1a-0410-9941-cceddc491573
HXIETRYLTZYNJR4QHS5ZN4ZZR76SLRIXTEJQQJGI33XMXHO6MNBAC
2G3DJ33FMKOTNOLH3X5C3NOZSV3PHL5PJTY4CEHAGDKIYAQXFQEAC
LSI55NUVW3PC33MGHLN3BGJ5KL7SJTBWT4JEOTZ7ZGRS2SK4ON7AC
BMIHNM6LWQPA4J4MT3RX6K3DRNGTN2N4OWC24ZMAZZY2K63TVOBAC
DTZBHEI47CBXQLHHPXO422IE2UBAKMY3SL74OXNF7VQXZPYBZEXAC
NDKM3IKI5HBPRYWFTFMLNKGE6ROAGGIZADTUVMAHQGMVQ5TLK3VQC
JYEEOUYQ7ZPKOGWUV7VCORBVSOLF2UCBFBH3TR75RGOSS6PNKYUAC
JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC
3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
PEZFWKRHDHV4UJTPK5XJZ3CGTZ3LPTDYSPTYBENLQ7VRSP7YFSIQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
23I5KJ245D43B6QYWS4TDQYJO2W2PKTDCLFBWPVAFDWS6L7NMGKQC
ASLW3Z5PAVZSWJEMMMVZT226P44EKSAD47QS72JIFJESAI3RPN3AC
MFONX2CQ4V7HA5NSD6P5NDDBXYDSKIOCYUKRZXJ4ZER2OKJWT2HQC
TLO257LZSB6ZO36STDUEWJBO2LETXFKTFGXELA6Y4BZBVAEIIINAC
UNIJHT5L4GDN6L4WM2GQ6TZO3R6SRIHJ7XURBSNC4LF7JMYMWRFAC
H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC
CI2RMLJLIAZMEGNN6LJN6PSHXHLPG7PXFIDYRGFPVMDPJ2R4S4NQC
4VDKJOSBXI4KTWFJT4KWRF6EAQYQEXHJORP3L7RTDJXAYTKQELNAC
ODCYJ4ZQGR2VVBHBEYDB2SEUDEZOAP4GOEW5T5YHXNYFWSIST2HAC
VZKO4ZQNMNGUK6WY7Y4A4TIW2OA6YGREQ6V7NZCWW3DAPSWXKK7AC
KSCU43RIVSEIHTN6BRAKXENI66L3IRDZQHUBT5VS4NJBBCQQPHUQC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
BMHUBADDGIOZRVN4P3O5QKIDUYD4RFWBS7MP5X6LZWAYHUBRVD2QC
NKONHW4JNY6HP2M63MNPM3H64ZWSUNUT5FX2STW4KTS4AMXJXXVQC
X7MFMKQTNZ2IWBFVGS6WQV7NRNKJ3DWQAW2X7IQMFQQXW24AHPZQC
HCPTVT2XQ5HQFOZ7MNGSZYTBA6YSL3RHYQBITQ7NW2ADVMACDKCAC
SM6YRPYZS6LMDQA6X3VAOK2PGMUFKPD7JMWJISOQSMX2CBR4ISPAC
MT3256427VMCV4JUFWCN7ULY4KXSND5ZL5THDKYNWWYOXXR5DLIQC
5DECJIOSMFWX7DMDTGVNPNV6QQP6O34F3XHFHRXGCTJUZMVIXT7QC
NCKCO6W5HW7C6OPJG4EVHKQCDX6AL7S4ACORY45STKQTNPMAJ7IQC
6IHRQWBU55WYBVB7K5HDJSBISE3J3VILUCMQ6WYOBUZ43DLOQ6VQC
BEJPFLSQYOLJETSLYRTROTRPJZEJDROGDX7MLBCWJLMIRZQBLEYQC
IHV7JHD4E67NEGLZEO3FPQGJPJF3IAV6QV5A63FPG4SU2VRFV47QC
RS24ZF3Y47QA2534EHQWZ35O2CI4JUOIVHUPRANCCNLVINSCYFXQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
e.marker([[O = lua:one_way_stair { desc = "A glowing drain",
dst = "sewer",
dstorigin = "in the sewers",
overmap = "glowing drain",
floor = "stone_arch" }]])
local timeout_turns = crawl.random_range(1500, 2000)
local messager =
timed_msg {
visible = true,
-- $F{xxx} will be substituted with the 'entity' property of the timed
-- marker, or with the desc property (if entity is not set).
messages = time_messages(timeout_turns,
"$F{The} is slowly rusting away.",
"$F{The} is rusting away.",
"$F{The} is quickly rusting away.",
"$F{The} is falling apart.")
}
e.lua_marker('O',
timed_marker {
desc = "glowing drain",
entity = 'drain',
dst = "sewer",
dstorigin = "in the sewers",
overmap = "glowing drain",
turns = timeout_turns,
floor = "stone_arch",
msg = messager })
# Use the following line in destination maps after all SUBST's have taken place
# : sewer_colours(_G)
# Note that the function also defines < to be the exit portal.
{{
-- Use the following line in destination maps after all SUBSTs
-- : sewer_colours(_G)
-- Note that the function also defines < to be the exit portal.
: messager = bell_clock_msg { initmsg="You hear a distant snort." }
{{
local messager =
timed_msg {
initmsg = { "You hear a distant snort.",
"Behold! There is an entrance to a minotaur's labyrinth "
.. "on this level. Find the entrance quickly before "
.. "the gate is sealed!" },
finalmsg = "You hear the last, dying ticks of the clock.",
verb = 'ticking',
noisemaker = 'an ancient clock'
}
}}
local function free_space_threshold(max)
local function is_free_space(p)
return dgn.grid(p.x, p.y) == dgn.fnum("floor") and
#dgn.items_at(p.x, p.y) <= max
end
return is_free_space
end
function TimedMessaging.new(pars)
pars = pars or { }
local m = TimedMessaging._new()
m.noisemaker = pars.noisemaker
m.verb = pars.verb
m.finalmsg = pars.finalmsg
m.ranges = pars.ranges
m.initmsg = pars.initmsg or ''
return m
end
if not nocheck then
if not m.messages then
assert(m.noisemaker, "No noisemaker specified")
assert(m.verb, "No verb specified")
end
function TimedMessaging:init(tmarker, cm, verbose)
local lab = dgn.grid(cm:pos()) == dgn.feature_number('enter_labyrinth')
if not self.noisemaker then
self.noisemaker = lab and "an ancient clock" or "a massive bell"
if m.visible and not m.messages then
error("No messages set for timer messager")
end
if not self.finalmsg then
self.finalmsg = lab and "last, dying ticks of the clock"
or "last, dying notes of the bell"
function TimedMessaging:channel()
if not self.sound_channel then
self.sound_channel =
crawl.msgch_num(self.visible and 'default' or 'sound')
if verbose and #self.initmsg > 0 and you.hear_pos(cm:pos()) then
crawl.mpr(self.initmsg, "sound")
if lab then
crawl.mpr("Behold! There is an entrance to a minotaur's labyrinth on this level. Find the entrance quickly before it seals the gate!",
"sound")
else
crawl.mpr("An interdimensional caravan has stopped on this level and set up a bazaar. Hurry and find its entrance before they move on!", "sound")
if verbose and self.initmsg then
self:emit_message(cm, self.initmsg)
end
end
function TimedMessaging:perceptible(cm)
if not cm then
return true
end
if self.visible then
return you.see_grid(cm:pos())
else
return you.hear_pos(cm:pos())
end
end
function TimedMessaging:emit_message(cm, msg)
if not msg or not self:perceptible(cm) then
return
end
if type(msg) == 'table' then
util.foreach(msg,
function (m)
self:emit_message(cm, m)
end)
else
if #msg < 1 then
return
function TimedMessaging:say_message(dur)
self.sound_channel = self.sound_channel or crawl.msgch_num('sound')
if dur <= 0 then
crawl.mpr("You hear the " .. self.finalmsg .. ".", self.sound_channel)
function TimedMessaging:proc_ranges(ranges, dur, fn)
if not ranges then
local tm = TimedMessaging._new()
tm.check = file.unmarshall_number(th)
tm.noisemaker = file.unmarshall_string(th)
tm.verb = file.unmarshall_string(th)
tm.initmsg = file.unmarshall_string(th)
tm.finalmsg = file.unmarshall_string(th)
tm.ranges = lmark.unmarshall_table(th)
return tm
return TimedMessaging:new(lmark.unmarshall_table(th))
end
function timed_msg(pars)
return TimedMessaging:new(pars)
function bell_clock_msg(pars)
return TimedMessaging.new(pars)
-- Accepts pairs of turns and messages used for a timer. For instance
-- timer_interval_messages(500, 'You feel vaguely uneasy.',
-- 250, 'You feel extremely uneasy.',
-- 100, 'You feel a primal terror.')
-- Will produce the first message when the timer has > 500 turns, the
-- second message when the timer has <= 500 turns and >250 turns, and so on.
-- Note that any given interval message will be repeated, usually every 50
-- or 25 turns.
function timer_interval_messages(...)
local breakpoints = util.partition({ ... }, 2)
-- Expand turn breakpoints into tenths of a turn.
util.foreach(breakpoints,
function (brk)
brk[1] = brk[1] * 10
end)
return breakpoints
-- Accepts timer messages as with timer_interval_messages, but with no
-- explicit intervals. Instead, the total turn count is divided by the
-- number of messages to determine intervals.
function time_messages(total_turns, ...)
local messages = { ... }
local n = #messages
-- Each interval is 1.2 * the previous (lower) interval.
local inflate = 1.2
local function power_sum(n)
local sum = 1
for i = 1, n - 1 do
sum = sum + inflate ^ i
end
return sum
end
local base_interval = total_turns / power_sum(n)
local res = { }
for i = 1, n - 1 do
local pow = n - i
total_turns = total_turns - base_interval * inflate ^ pow
table.insert(res, { math.floor(10 * total_turns), messages[i] } )
end
table.insert(res, { 0, messages[n] })
return res
end
local messager = bell_clock_msg { initmsg="You hear coins being counted." }
local messager =
timed_msg {
initmsg = { "You hear coins being counted.",
"An interdimensional caravan has stopped on this level "
.. "and set up a bazaar. Hurry and find its entrance before "
.. "they move on!" },
finalmsg = "You hear the last, dying notes of the bell.",
verb = 'tolling',
noisemaker = 'a massive bell'
}