77 lines
1.7 KiB
C
77 lines
1.7 KiB
C
/* /daemon/spells.c
|
|
* From Dead Souls LPMud
|
|
* created by Descartes of Borg 961027
|
|
* Version: @(#) spells.c 1.2@(#)
|
|
* Last modified: 96/10/28
|
|
*/
|
|
|
|
#include <lib.h>
|
|
#include <dirs.h>
|
|
|
|
inherit LIB_DAEMON;
|
|
|
|
private mapping Spells = ([]);
|
|
private mapping Prayers = ([]);
|
|
|
|
void eventReloadSpells();
|
|
|
|
static void create() {
|
|
daemon::create();
|
|
SetNoClean(1);
|
|
eventReloadSpells();
|
|
}
|
|
|
|
void eventReloadSpells() {
|
|
string array spells, prayers;
|
|
|
|
Spells = ([]);
|
|
spells = get_dir(DIR_SPELLS "/*.c");
|
|
prayers = get_dir(DIR_PRAYERS "/*.c");
|
|
foreach(string element in (prayers + spells)) {
|
|
string spell, where;
|
|
int err;
|
|
object ob;
|
|
where = DIR_PRAYERS "/" + element;
|
|
if(!file_exists(where)) where = DIR_SPELLS "/" + element;
|
|
ob = find_object(where);
|
|
|
|
if( ob ) {
|
|
ob->eventDestruct();
|
|
}
|
|
err = catch(ob = load_object(where));
|
|
if(ob){
|
|
spell = ob->GetSpell();
|
|
if( spell ) {
|
|
if(member_array(element,spells) != -1)
|
|
Spells[spell] = ob;
|
|
else if(member_array(element,prayers) != -1)
|
|
Prayers[spell] = ob;
|
|
}
|
|
}
|
|
else debug("Error loading: "+identify(where));
|
|
}
|
|
}
|
|
|
|
object GetSpell(string spell) {
|
|
if( !Spells[spell] ) {
|
|
eventReloadSpells();
|
|
}
|
|
if(Prayers[spell]) return Prayers[spell];
|
|
else return Spells[spell];
|
|
}
|
|
|
|
mapping GetSpells(){
|
|
return (Spells + ([]));
|
|
}
|
|
|
|
object GetPrayer(string prayer) {
|
|
if( !Prayers[prayer] ) {
|
|
eventReloadSpells();
|
|
}
|
|
return Prayers[prayer];
|
|
}
|
|
|
|
mapping GetPrayers(){
|
|
return (Prayers + ([]));
|
|
}
|