File: lm_items.lua

package info (click to toggle)
crawl 2%3A0.33.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 95,264 kB
  • sloc: cpp: 358,145; ansic: 27,203; javascript: 9,491; python: 8,359; perl: 3,327; java: 2,667; xml: 2,191; makefile: 1,830; sh: 611; objc: 250; cs: 15; sed: 9; lisp: 3
file content (29 lines) | stat: -rw-r--r-- 972 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
crawl_require('dlua/lm_trig.lua')

function dgn.activate_item_decay(data, triggerable, trigger, marker, ev)
  local items = dgn.items_at(marker:pos())
  for _, item in ipairs(items) do
    dgn.item_property_remove(item, CORPSE_NEVER_DECAYS)
  end
end

function dgn.delayed_decay_extra(e, key, itemdesc, more_items)
  -- Add never_decay to each sub-part of the itemdef
  local def = "never_decay " .. itemdesc:gsub("([,/])", "%1 never_decay ")
  if more_items then
    def = def .. ", " .. more_items
  end
  e.kitem(key .. " = " .. def)
  -- [ds] Use an anonymous function so that we create a new
  -- triggerable for each square instead of reusing one across all
  -- squares.
  e.lua_marker(key,
               function ()
                 return function_in_los("dgn.activate_item_decay", nil,
                                        false, nil)
               end)
end

function dgn.delayed_decay(e, key, itemdesc)
  dgn.delayed_decay_extra(e, key, itemdesc, nil)
end