ID:2720206
 
(See the best response by Lummox JR.)
Code:
var Event_System/ES = new

Event_System
New()
var list/timers = new
var id, list/l, o
var tick = world.tick_lag
for()
for(id in global.events)
l = global.events[id]
timers[id]++
if(timers[id] >= l[3])
timers[id] = 0
if(l[1]==null)
call(l[2])()
else if(islist(l[1]))
for(o in l[1])
call(o,l[2])()
else
call(l[1],l[2])()
sleep(tick)

var list/events = new

proc/AddEvent(id,object,function_path,timer)
if(object)
global.events[id] = list(object,function_path,timer)
else
global.events[id] = list(null,function_path,timer)
return TRUE

proc/RemoveEvent(id)
global.events -= id

mob/Login()
AddEvent("Hunger",src,/mob/proc/StatusUpdate,30)

mob/proc/StatusUpdate()
world << "Beep!"


Problem description:
Causes the alert for the use of an external dll.



Best response
The problem is the compiler can't figure out if you're doing a .dll call or not in the call(l[1],l[2]) line because it doesn't know what l[1] is.

However I think it'd probably be better for me to change the compiler not to use the .dll instruction for these cases.
In response to Lummox JR
I've also seen this happen whenever I mess with call.
the compiler can't figure out if you're doing a .dll call or not in the call(l[1],l[2]) line because it doesn't know what l[1] is
I suspected that might be the case, but it's kinda hard to buy that explanation when it's solved by not actually giving the compiler any more information:
mob
verb/test()
var/list/stuff = list(src, /mob/proc/Blah)
//call(stuff[1], stuff[2])() // Causes DLL warning

var/a = stuff[1]
var/b = stuff[2]
call(a, b)() // Doesn't cause DLL warning

proc/Blah()
world.log << "[src] blah"