// Virtual treasure compiler #include <mudlib.h> inherit DAEMON; #define DEBUG 1 #ifdef DEBUG #define BUG(x) log_file("t_server", x) #else #define BUG(x) #endif object newobj; int current; string *lines; string extension(); void evaluate(string word, string line); void initialize_new(); object compile_object(string s) { string word; int max; s+=extension(); if (file_size(s)==-1) return 0; newobj=new(OBJECT); lines=explode(read_file(s),"\n"); max=sizeof(lines); for (current=0; current<max; current++) { if (word=lines[current]) sscanf(lines[current],"%s %*s",word); evaluate(word, lines[current]); } return newobj; } string extension() { return ".t"; } void evaluate(string word, string line) { string rest, newid; int amount; string *ids; switch(word) { case "id:": sscanf(line,"id: %s",rest); rest+=" end"; ids=({ }); while(sscanf(rest,"%s %s",newid,rest)) ids+=({ newid }); newobj->set("id", ids); break; case "short:": sscanf(line,"short: %s",newid); newobj->set("short", newid); break; case "value:": sscanf(line,"value: %d",amount); newobj->set_("value", amount); break; case "weight:": sscanf(line,"weight: %d",amount); newobj->set("weight", amount); break; case "long:": current++; for (newid = ""; lines[current] != "**"; current++) newid += lines[current]+"\n"; newobj->set("long", newid); break; } }