mudlib 可以撰寫模擬的外部函式 (efunction). 所有模擬的外部函式必須定義在一個特殊的檔案中 (此檔案的名稱及目錄位置定義在 config.example 中) (譯按: config.example 為一個示範檔案, 是啟動 driver 程式時必須讀取的 mud 組態檔. 手上有 ES 2 mudlib 的人, 可以在 es2/adm/etc 目錄中找到 config.ES2 這個檔案. 有 MudOS v21c2 原始碼的人, 在 MudOS_v21c2/src 目錄中可以找到 config.example) .
編譯一個物件時, 發現一個函式呼叫 (非 call_other 呼叫) 在物件中沒有定義過, 也不是一個外部函式時, 則驅動程式會尋找模擬外部函式的名單, 看看此函式呼叫是否為模擬外部函式. 如果名單上有此函式, 則驅動程式就以 call_other 的方式呼叫此函式 (定義在模擬外部函式檔案裡面). 請注意, call_other 的傳回結果不需要事先定型 (typecast), 因為編譯器會自動設定其型態.
模擬外部函式有許多用途. 其中一個是修改外部函式的作用 (甚至取消其作用), 卻不需要修改驅動程式 (只需要把模擬外部函式取名為相同的外部函式即可). 假設您想修改 move_object() 外部函式, 您可以定義一個同名的模擬外部函式. 這個也叫做 move_object() 的模擬外部函式可以用來檢查不同的條件限制, 然後再呼叫 efun::move_object(). efun:: 這個前置詞一定要加上去, 驅動程式才知道您想呼叫原來的 move_object() 外部函式, 而不是重覆呼叫一次模擬的move_object(). (請注意, master.c 裡的 valid_override() 可以用來控制 efun:: 到底可以對哪一個模擬外部函式越權 (override). 模擬外部函式也可以加上一些函式, 這些函式也許有許多物件需要呼叫它們, 卻不適合放在一個繼承物件的檔案中.
所有在模擬外部函式檔案中, 宣告為靜態 (static) 的函式, 不能從模擬外部函式檔案以外去呼叫它.