83 lines
1.8 KiB
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;
|