User Tools

Site Tools


lua:scripting:examples:olcscripts

OLC scripts

Edit all wands and staffs to have 50/50 charges

do
 
for _,area in pairs(getarealist()) do
    for _,op in pairs(area.objprotos) do
        if op.otype=="wand" or op.otype=="wand" then
            if not(op.chargesleft==50) or not(op.chargestotal==50) then
                mdo("oedit "..op.vnum)
                olc("v1 50")
                olc("v2 50")
                olc("done")
            end
        end
    end
end
 
end

Shop wands/staffs have 50/50 charges, otherwise set to -1/50

-1 makes the # of charges randomize then item pops.

do
 
    local cnter=0
    local reset_check = {}
    for _,area in pairs(getarealist()) do
        for _,room in pairs(area.rooms) do
            local shop=false
            for i,reset in ipairs(room.resets) do
                clearloopcount()
                local cmd=reset.command
 
                if cmd == "M" then
 
                    if getmobproto(reset.arg1).shop then
                        shop=true
 
                    else
                        shop=false
 
                    end
                elseif cmd == "G" then
 
                    if shop==true then
                        reset_check[reset.arg1]=true
                    elseif reset_check[reset.arg1]==nil then
                        reset_check[reset.arg1]=false
                    end
                end
            end
        end
    end
 
    for _,area in pairs(getarealist()) do
        for _,op in pairs(area.objprotos) do
            if op.otype=="wand" or op.otype=="staff" then
                local chargesleft_target
                local chargestotal_target
                if reset_check[op.vnum]==true then
                    chargesleft_target=50
                    chargestotal_target=50
                else
                    chargesleft_target=-1
                    chargestotal_target=50
                end
 
                if not(op.chargesleft==chargesleft_target) or not(op.chargestotal==chargestotal_target) then
                    mdo("oedit "..op.vnum)
                    olc("v1 "..chargestotal_target)
                    olc("v2 "..chargesleft_target)
                    olc("done")
                end
            end
        end
    end
 
end

Surreal reset culling

http://aarchonmud.com/forum/viewtopic.php?f=25&t=242

do
local area=getroom(2031).area
 
for _,room in pairs(area.rooms) do
    local edited=false
    clearloopcount()
    local finished
    while not finished do
        finished=true
        local num_resets=#room.resets
 
        for i,reset in ipairs(room.resets) do
            if reset.command=="M" then
                goto(room.vnum)
                local rmax=reset.arg4
                local amax=reset.arg2
                local mvnum=reset.arg1
 
                if amax>25 then
                    local newmax=25
                    rmax=math.min(rmax,newmax)
                    --local newmax=math.max(20, amax/2)
                        --newmax=math.min(amax, 50)
                    edited=true
                    mdo("reset "..i.." delete")
                    mdo("reset "..num_resets.." mob "..mvnum.." "..newmax.." "..rmax)
                    finished=false
                    break
                end
            end
        end
    end
    if edited then mdo('reset') end
end
 
end

Burnproof flag removal / Nonmetal Weapon adjust

function anti_burnproof()
    local count = 0
    for _,area in pairs(getarealist()) do
        if not area:flag("clone") then
            for _,op in pairs(area.objprotos) do
                if op:extra("burnproof") and (op.otype == "armor" or op.otype == "weapon") then
                    -- adjust damage using olc
                    mdo("oedit " .. op.vnum)
                    olc("extra burnproof")
                    olc("done")
                    count = count + 1
                end
            end
        end
    end
    sendtochar(mob, "Removed burnproof flag from " .. count .. " items.\n")
end
 
function nonmetal_weapons()
    local count = 0
    for _,area in pairs(getarealist()) do
        if not area:flag("clone") then
            for _,op in pairs(area.objprotos) do
                if op:extra("nonmetal") and op.otype == "weapon" and op.level>= 1 and op.level <= 100 then
                    -- remove burnproof flag using olc
                    mdo("oedit " .. op.vnum)
                    olc("adjust")
                    olc("done")
                    count = count + 1
                end
            end
        end
    end
    sendtochar(mob, "Adjusted damage for " .. count .. " nonmetal weapons.\n")
end

Reduce wealth of shops over 100%

do
 
local cnt = 0
 
for _,area in pairs(getarealist()) do
    for _,mp in pairs(area.mobprotos) do
        if mp.shop and mp.wealthpcnt> 100 then
            mdo("medit "..mp.vnum)
            olc("wealth 100")
            olc('done')
            cnt = cnt + 1
 
        end
    end
end
local msg = "Updated wealth on "..cnt.." mobs via lua script"
log(msg, 'secure')
end
lua/scripting/examples/olcscripts.txt · Last modified: 2016/10/02 03:26 by vodur