git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7710 c06c8d41-db1a-0410-9941-cceddc491573
MIEL6624D3DFQIB54Q57IT7XTTCSC4R4V4HTJYHBQMUA3Y55D7EQC
6ZC7ZP7NRSPWKSHMZYTLRVUDMOQ4HQMCM7GDQXNCZZMRSLN7O53QC
HXIETRYLTZYNJR4QHS5ZN4ZZR76SLRIXTEJQQJGI33XMXHO6MNBAC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
FLVIXF5HNN2EV5S2BVDR5YV3TRPQAZDAMQRVRIT2KWWUYOIFYJ3AC
RISMOCQM6BKK4XSIRKYLOBB2UPDYJNDAL6OGIIR5GGNZQAK5YSZAC
H3552BCIAVBLKAYKE4DHFLBLFW5RGRMYBMRRYHYEB5IPIJRUVU5QC
NKONHW4JNY6HP2M63MNPM3H64ZWSUNUT5FX2STW4KTS4AMXJXXVQC
7Y5HSDFKA5TPLS2TWTRFMQVX6UXUDHXU5MUMXQSDFAIY4THQ3BIQC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
return string.gsub(msg, "$F%{(%w+)%}",
function (desc)
return crawl.grammar(entity, desc)
local msg_a = string.gsub(msg, "$F%{(%w+)%}",
function (desc)
return crawl.grammar(entity, desc)
end)
return string.gsub(msg_a, "$F",
function ()
return crawl.grammar(entity, 'a')
if not self.ranges and not self.visible then
self.ranges = { { 5000, 'stately ' }, { 4000, '' },
{ 2500, 'brisk ' }, { 1500, 'urgent ' },
{ 0, 'frantic ' } }
if not self.range_adjectives then
local function sqr(x)
return x * x
end
self.range_adjectives = {
{ sqr(30), '$F, a long way away' },
{ sqr(15), 'distant' },
{ sqr(7), '$F nearby' },
{ 0, '$F' }
}
end
end
end
function TimedMessaging:player_distance2(cm)
local cx, cy = cm:pos()
local x, y = you.pos()
local dx, dy = cx - x, cy - y
return dx * dx + dy * dy
end
function TimedMessaging:choose_range_adjective(distance)
for _, dadj in ipairs(self.range_adjectives) do
if distance >= dadj[1] then
return dadj[2]
end
end
function TimedMessaging:range_adjective(cm, thing)
local adj = self:choose_range_adjective(self:player_distance2(cm))
if string.find(adj, '$F') then
return util.expand_entity(self.noisemaker, adj)
else
return crawl.article_a(#adj == 0 and self.noisemaker
or adj .. ' ' .. self.noisemaker)