ID:2444347
 
var list/db
// Functions
proc/db_get(s) {var list/l = splittext(s,"."); switch(l.len){if(1){return global.db[l[1]]};if(2){return global.db[l[1]][l[2]]};if(3){return global.db[l[1]][l[2]][l[3]]};if(4){return global.db[l[1]][l[2]][l[3]][l[4]]};if(5){return global.db[l[1]][l[2]][l[3]][l[4]][l[5]]};if(6){return global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]]};if(7){return global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]]};if(8){return global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]][l[8]]};if(9){return global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]][l[8]][l[9]]}}}
proc/db_set(s,v=list()) {var list/l = splittext(s,"."); switch(l.len){if(1){global.db[l[1]] = v};if(2){global.db[l[1]][l[2]] = v};if(3){global.db[l[1]][l[2]][l[3]] = v};if(4){global.db[l[1]][l[2]][l[3]][l[4]] = v};if(5){global.db[l[1]][l[2]][l[3]][l[4]][l[5]] = v};if(6){global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]] = v};if(7){global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]] = v};if(8){global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]][l[8]] = v};if(9){global.db[l[1]][l[2]][l[3]][l[4]][l[5]][l[6]][l[7]][l[8]][l[9]] = v}}}
proc/db_gen(A,B) {if(!A||!B){return list()};var/a = db_get(A), b = db_get(B), c, d, e, f, id;for(c in a){for(d in b){id = "[d] [c]"; e = a[c]; f = b[d]; db_set(A, db_get(A) + list("[id]" = db_com(e,f)))}};return db_get(A)}
proc/db_com(list/a,list/b) {var j,list/n = new;for(j in a){if(j in n){n[j] += a[j]}; else n[j] = a[j]};for(j in b){if(j in n){n[j] += b[j]}; else n[j] = b[j]};return n}
// Modify The Database Below
proc/InitializeDatabase()
db = new

/* Items */
db_set("item", list("weapon","armor"))
db_set("item.weapon", list("types","list"))
db_set("item.weapon.types", list(
"Dagger" = list("DMG"=3, "ACC"=90, "CRI"=10),
"Sword" = list("DMG"=5, "ACC"=70, "CRI"=5),
"Axe" = list("DMG"=8, "ACC"=55, "CRI"=10),
))
db_set("item.weapon.list", db_get("item.weapon.types"))

/* Enchantments */
db_set("item.enchantments", list(
"Powerful" = list("DMG"=5),
"Accurate" = list("ACC"=10),
"Deadly" = list("CRI"=10),
"Sharp" = list("BLD"=5),
))
db_set("item.weapon.list", db_gen("item.weapon.list", "item.enchantments"))
To use/Demo

world/fps=30

#define DEBUG_MODE TRUE

mob/Login()
var T = world.timeofday
world << "Loading."
global.InitializeDatabase()
world << "Finished Loading in [(world.timeofday-T)*0.1] seconds."

// Debugging
if(DEBUG_MODE)
var ID, list/l = global.db_get("item.weapon.list")
world << "__Weapons__"
for(ID in l)
S = db_get("item.weapon.list.[ID]")
world << " [ID] - [db_get("item.weapon.list.[ID]"):len]"
for(. in S)
world << " [.] = [S[.]]"
world << "__eof__"

/*
Non-commented/non-debug version

mob/Login()
global.InitializeDatabase()

*/
WIP - 5270 items generated.

proc/InitializeDatabase()
db = new

/* Items */
// --- core ---
db_set("item", list("weapon","armor"))

/* Weapons & Armor */
db_set("item.weapon", list("types","list"))
db_set("item.armor", list("types","list"))
// --- types ---
db_set("item.weapon.types", list(
"Crossbow" = list("ACC"=90, "CRI"=0),
"Heavy Crossbow" = list("ACC"=80, "CRI"=5),
"Shortbow" = list("ACC"=90, "CRI"=0),
"Longbow" = list("ACC"=80, "CRI"=5),
"GreatBow" = list("ACC"=70, "CRI"=10),
"Dagger" = list("DMG"=1, "ACC"=80, "CRI"=5),
"Whip" = list("DMG"=2, "ACC"=60, "CRI"=10),
"Sword" = list("DMG"=2, "ACC"=70, "CRI"=5),
"Scimitar" = list("DMG"=2, "ACC"=80, "CRI"=0),
"Spear" = list("DMG"=2, "ACC"=80, "CRI"=0),
"Rapier" = list("DMG"=3, "ACC"=70, "CRI"=0),
"Axe" = list("DMG"=3, "ACC"=60, "CRI"=5),
"Club" = list("DMG"=3, "ACC"=50, "CRI"=10),
"Flail" = list("DMG"=3, "ACC"=50, "CRI"=10),
"Lance" = list("DMG"=3, "ACC"=70, "CRI"=0),
"Halberd" = list("DMG"=3, "ACC"=60, "CRI"=5),
"Mace" = list("DMG"=3, "ACC"=50, "CRI"=10),
"Greataxe" = list("DMG"=3, "ACC"=40, "CRI"=15),
"Scythe" = list("DMG"=4, "ACC"=60, "CRI"=0),
"Greatsword" = list("DMG"=4, "ACC"=50, "CRI"=5),
))
db_set("item.armor.types", list(
"Ring" = list( "Slot"="Finger"),
"Amulet" = list( "Slot"="Neck"),
"Boots" = list("ARM"=1, "Slot"="Feet"),
"Gloves" = list("ARM"=1, "Slot"="Hands"),
"Cloak" = list("ARM"=1, "Slot"="Torso"),
"Helmet" = list("ARM"=2, "Slot"="Head"),
"Chainmail" = list("ARM"=3, "Slot"="Torso"),
"Scalemail" = list("ARM"=3, "Slot"="Torso"),
"Shield" = list("ARM"=4, "Slot"="Offhand"),
"Breastplate" = list("ARM"=4, "Slot"="Torso"),
"Platebody" = list("ARM"=5, "Slot"="Torso"),
))
// --- update ---
db_set("item.weapon.list", db_get("item.weapon.types"))
db_set("item.armor.list", db_get("item.armor.types"))

/* Enchantments */
// --- types ---
db_set("item.enchantments", list(
"Precise" = list("Critical"=3),
"Lucky" = list("Critical"=3),
"Jagged" = list("Critical"=3),
"Spiked" = list("Critical"=3),
"Angry" = list("Critical"=3),
"Hasty" = list("Critical"=3),
"Quick" = list("Critical"=3),
"Wild" = list("Critical"=3),
"Violent" = list("Critical"=3),
"Nimble" = list("Critical"=3),
"Agile" = list("Critical"=3),
"Deadly" = list("Critical"=3),
"Massive" = list("Critical"=3),
"Dangerous" = list("Critical"=3),
"Savage" = list("Critical"=3),
"Sharp" = list("Critical"=3),
"Quick" = list("Critical"=3),
"Wild" = list("Critical"=3),
"Violent" = list("Critical"=3),
"Nimble" = list("Critical"=3),
"Agile" = list("Critical"=3),
"Deadly" = list("Critical"=3),
))
db_set("item.elements", list(
"Wind" = list("BLD"=10),
"Water" = list("BLD"=10),
"Earth" = list("BLD"=10),
"Fire" = list("BLD"=10),
"Lightning" = list("BLD"=10),
"Ice" = list("BLD"=10),
"Lava" = list("BLD"=10),
"Holy" = list("BLD"=10),
"Void" = list("BLD"=10),
))
// --- update ---
db_set("item.weapon.list", db_gen("item.weapon.list", "item.elements"))
db_set("item.weapon.list", db_gen("item.weapon.list", "item.enchantments"))
db_set("item.armor.list", db_gen("item.armor.list", "item.elements"))
db_set("item.armor.list", db_gen("item.armor.list", "item.enchantments"))
O:

else        {parent_type = /obj;    New(){world << ":D"}}
static {parent_type = /obj; New(){world << "D:"}}
global {parent_type = /obj; New(){world << ":3"}}
tmp {parent_type = /obj; New(){world << "3:"}}
sleep {parent_type = /obj; New(){world << ":O"}}
tmp/sleep/global/else/static {parent_type = /obj; New(){world << "Ono"}}

mob/Login()
new/else
new/static
new/global
new/tmp
new/sleep
new/tmp/sleep/global/else/static