User Tools

Site Tools


lua:scripting:examples:vodurbirthdayletters

Place 300 random letters in luai:

loadscript("vodur", "birthday")
for i=1,300 do
  make_letter(getrandomroom():oload(31450))
end
Area:        [   57] Aes Sedai Clan Area
Vnum:        [31450]
Type:        [treasure]
Level:       [    1]
Wear flags:  [take]
Extra flags: [nolocate]
Material:    [unknown]
Condition:   [  100]
Weight:      [    0]
Cost:        [    0]
OPs:         [ 0/ 5]
Short desc:  birthday quest letter
Long desc:
   Birthday quest letter
Notes:
Used for birthday quest, progs will set the actual
name, desc, etc.
OBJPrograms for [31450]:
Number Vnum Trigger Phrase
------ ---- ------- ------
[    0] 31450     put 100
-- birthday.lua
 
local lettervnum=31450
local bname="Vodur"
local bcolor="{m"
 
local qpreward=29
-- try to make word out of obj and all letters in cont
-- return true if doesn't make word or return false
-- and reward qp and destroy the letters
function put_trigger( ch, cont )
    local letters={}
    for i=1,#bname do
        letters[i]=bname:sub(i,i)
    end
 
    local items={ obj }
    for k,v in pairs(cont.contents) do
        if v.vnum==lettervnum then
            table.insert(items, v)
        end
    end
 
    local used={}
    for k,v in pairs(items) do
        local iletter=string.match(v.name, "letter (%a)")
        for i=#letters,1,-1 do
            if iletter==letters[i] then
                table.insert(used, v)
                table.remove(letters,i)
                break
            end
        end
    end
 
    if #letters<1 then
        sendtochar( ch, "The letters merge together to form the word "..bcolor..bname.."{x!"..
        "\n\rAfter an instant it vanishes completely.\n\r")
        ch:reward(ch, "qp", qpreward)
 
        for k,v in pairs(used) do
            v:destroy()
        end
        return false
    end
 
    return true
end
 
function make_letter(l)
    if not(l.vnum == lettervnum) then
        error("wtf")
    end
 
    local letters={}
    for i=1,#bname do
        letters[i]=bname:sub(i,i)
    end
 
    local letter=letters[randnum(1, #letters)]
 
    l.name="letter "..letter
    l.shortdescr="the letter "..bcolor..letter.."{x"
    l.description="It's a letter. Put it in a container with other letters and see what happens!"
end
lua/scripting/examples/vodurbirthdayletters.txt · Last modified: 2014/12/24 05:48 by vodur