server-master/scripts/lib/MapNpc.lua

83 lines
1.8 KiB
Lua

local UUID = require ('UUID')
local Position = require ('Position')
local MapNpc = {}
function MapNpc.CreateNpcWithVnum(vnum)
local mapNpc =
{
Id = UUID.Generate(),
Vnum = vnum,
Position = Position.At(0, 0),
CanMove = true,
IsProtectedNpc = false,
FollowPlayer = false,
Events = {},
Direction = 2,
HpMultiplier = nil,
MpMultiplier = nil,
CustomLevel = nil
}
function mapNpc.At(x, y)
mapNpc.Position = Position.At(x, y)
return mapNpc
end
function mapNpc.Facing(dir)
mapNpc.Direction = dir
return mapNpc
end
function mapNpc.WithCustomLevel(level)
mapNpc.CustomLevel = level
return mapNpc
end
function mapNpc.WithDisabledMovement()
mapNpc.CanMove = false
return mapNpc
end
function mapNpc.WithMustProtectAura()
mapNpc.IsProtectedNpc = true
return mapNpc
end
function mapNpc.WithFollowPlayer()
mapNpc.FollowPlayer = true
return mapNpc
end
function mapNpc.WithHpMultiplier(hpMultiplier)
mapNpc.HpMultiplier = hpMultiplier
return mapNpc
end
function mapNpc.WithMpMultiplier(mpMultiplier)
mapNpc.MpMultiplier = mpMultiplier
return mapNpc
end
function mapNpc.WithHpMpMultiplier(multiplier)
mapNpc.HpMultiplier = multiplier
mapNpc.MpMultiplier = multiplier
return mapNpc
end
local function AddEvent(trigger, event)
local events = mapNpc.Events[trigger];
if (events == nil) then
events = {}
mapNpc.Events[trigger] = events
end
table.insert(events, event)
return mapNpc
end
return mapNpc
end
return MapNpc;