====== 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|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