// /adm/daemon/skills_d.c
// from the Nightmare mudlib
// contains code that would be very memory wasteful if in the user object
// created by Descartes of Borg 14 february 1993
mapping init_skills(string cl) {
mapping skills;
if(!skills) skills = ([]);
if(!cl) {
skills["melee"] = ([ "level": 1, "points": 0, "max": 1 ]);
skills["attack"] = ([ "level":0, "points":0, "max":0 ]);
skills["defense"] = ([]);
skills["double wielding"] = ([]);
skills["knife"] = ([]);
skills["blunt"] = ([]);
skills["projectile"] = ([]);
skills["blade"] = ([]);
skills["two handed"] = ([]);
skills["murder"] = ([]);
skills["stealing"] = ([]);
skills["bargaining"] = ([]);
skills["locks"] = ([]);
skills["magic defense"] = ([]);
skills["magic attack"] = ([]);
skills["healing"] = ([]);
skills["faith"] = ([]);
skills["conjuring"] = ([]);
}
else {
switch(cl) {
case "fighter":
skills["melee"] = ([ "level": 1, "points": 0, "max": 100 ]);
skills["attack"] = ([ "level": 5, "points": 0, "max": 100]);
skills["defense"] = ([ "level": 2, "points":0, "max": 90 ]);
skills["double wielding"] = (["level": 0, "points":0, "max":100]);
skills["knife"] = ([ "level": 1, "points":0, "max":70 ]);
skills["blunt"] = (["level": 1, "points":0, "max": 75 ]);
skills["projectile"] = (["level":0, "points":0, "max": 60 ]);
skills["blade"] = (["level":10, "points":0, "max":100 ]);
skills["two handed"] = (["level":1, "points":0, "max":100 ]);
skills["murder"] = (["level":0, "points":0, "max": 10 ]);
skills["stealing"] = (["level":0, "points":0, "max": 10 ]);
skills["bargaining"] = (["level":1, "points":0, "max":100 ]);
skills["locks"] = (["level":0, "points":0, "max":5 ]);
skills["stealth"] = ([ "level":0, "points":0, "max":10 ]);
skills["magic defense"] = (["level":0, "points":0, "max":0 ]);
skills["magic attack"] = (["level":0, "points":0, "max":0 ]);
skills["healing"] = (["level":0, "points":0, "max":0 ]);
skills["faith"] = (["level":0, "points":0, "max":0 ]);
skills["conjuring"] = (["level":0, "points":0, "max":0 ]);
break;
case "kataan":
skills["melee"] = (["level":2, "points":0, "max":50]);
skills["attack"]= (["level":1, "points":0, "max":75]);
skills["defense"]= (["level":1, "points":0, "max":40]);
skills["double wielding"]=(["level":5, "points":0, "max":80]);
skills["knife"]=(["level":0, "points":0, "max":40]);
skills["blunt"]=(["level":0, "points":0, "max":100]);
skills["blade"]=(["level":1, "points":0, "max":60]);
skills["two handed"]=(["level":1, "points":0, "max":100]);
skills["projectile"]=(["level":5, "points":0, "max":110]);
skills["bargaining"]=(["level":1, "points":0, "max":50]);
skills["stealth"]=(["level":1, "points":0, "max":67]);
skills["stealing"]=(["level":0, "points":0, "max":5]);
skills["locks"]=(["level":10, "points":0, "max":83]);
skills["murder"]=(["level":1, "points":0, "max":100]);
skills["magic attack"]=(["level":3, "points":0, "max":50]);
skills["faith"]=(["level":5, "points":0, "max":110]);
skills["healing"]=(["level":2, "points":0, "max":50]);
skills["magic defense"]=(["level":0, "points":0, "max":0]);
skills["conjuring"]=(["level":1, "points":0, "max":32]);
break;
case "rogue":
skills["melee"] = (["level": 1, "points":0, "max": 100 ]);
skills["attack"] = (["level": 1, "points":0, "max": 100 ]);
skills["defense"] = (["level":5, "points":0, "max":100 ]);
skills["double wielding"] = (["level":0, "points":0, "max":10 ]);
skills["knife"] = (["level":10, "points":0, "max": 100 ]);
skills["blunt"] = (["level":2, "points":0, "max":100 ]);
skills["projectile"] = (["level":7, "points":0, "max":100]);
skills["blade"] = (["level":0, "points":0, "max": 40]);
skills["two handed"] = (["level":0, "points":0, "max":75 ]);
skills["murder"] = (["level":3, "points":0, "max":100 ]);
skills["stealth"] = (["level":10, "points":0, "max":100 ]);
skills["stealing"] = (["level":7, "points":0, "max":100 ]);
skills["bargaining"] = (["level":10, "points":0, "max":100 ]);
skills["locks"] = (["level":10, "points":0, "max":100 ]);
skills["magic defense"] = ([ "level": 0, "points":0, "max":0 ]);
skills["magic attack"] = (["level":0, "points":0, "max":0 ]);
skills["healing"] = (["level":0, "points":0, "max":0 ]);
skills["faith"] = (["level":0, "points":0, "max":0 ]);
skills["conjuring"] = (["level":0, "points":0, "max":0 ]);
break;
case "mage":
skills["melee"] = (["level":1, "points":0, "max":50 ]);
skills["attack"] = (["level":0, "points":0, "max": 30 ]);
skills["defense"] = (["level":1, "points":0, "max":60 ]);
skills["double wielding"] = (["level":0, "points":0, "max":10 ]);
skills["knife"] = (["level":1, "points":0, "max":50 ]);
skills["blunt"] = (["level":5, "points":0, "max":90 ]);
skills["projectile"] = (["level":0, "points":0, "max":53 ]);
skills["blade"] = (["level":0, "points":0, "max":20 ]);
skills["two handed"] = (["level":0, "points":0, "max":17 ]);
skills["murder"] = (["level":0, "points":0, "max":5 ]);
skills["stealing"] = (["level":0, "points":0, "max":5 ]);
skills["bargaining"] = (["level":1, "points":0, "max":79 ]);
skills["locks"] = (["level":0, "points":0, "max":28 ]);
skills["magic defense"] = (["level" :1, "points":0, "max":61 ]);
skills["magic attack"] = (["level": 10, "points": 0, "max":100 ]);
skills["healing"] = (["level":0, "points":0, "max":20 ]);
skills["faith"] = (["level":0, "points":0, "max":0 ]);
skills["conjuring"] = (["level":7, "points":0, "max":100 ]);
break;
case "monk":
skills["melee"] = (["level":10, "points":0, "max":100 ]);
skills["attack"] = (["level":1, "points":0, "max":70 ]);
skills["defense"] = (["level":10, "points":0, "max":100]);
skills["double wielding"] = (["level":0, "points":0, "max":0 ]);
skills["knife"] = (["level":0, "points":0, "max":30 ]);
skills["blunt"] = (["level":3, "points":0, "max": 95 ]);
skills["projectile"] = (["level":7, "points":0, "max":100 ]);
skills["blade"] = (["level":0, "points":0, "max":3 ]);
skills["two handed"] = (["level":0, "points":0, "max":0 ]);
skills["murder"] = (["level":0, "points":0, "max":0 ]);
skills["stealing"] = (["level":0, "points":0, "max":0 ]);
skills["bargaining"] = (["level":0, "points":0, "max": 55 ]);
skills["locks"] = (["level":0, "points":0, "max":0 ]);
skills["magic defense"] = (["level":3, "points":0, "max":100 ]);
skills["magic attack"] = (["level":1, "points":0, "max": 25 ]);
skills["healing"] = (["level":0, "points":0, "max": 37 ]);
skills["faith"] = (["level":7, "points":0, "max":100 ]);
skills["conjuring"] = (["level":0, "points":0, "max": 15 ]);
break;
case "cleric":
skills["melee"] = ([ "level": 1, "points":0, "max": 50 ]);
skills["attack"] = ([ "level":0, "points":0, "max": 10 ]);
skills["defense"] = ([ "level":1, "points":0, "max":20 ]);
skills["double wielding"] = (["level":0, "points":0, "max": 1 ]);
skills["knife"] = ([ "level":5, "points":0, "max": 90 ]);
skills["blunt"] = ([ "level":1, "points":0, "max":70 ]);
skills["projectile"] = (["level":0, "points":0, "max": 20]);
skills["blade"] = (["level":0, "points":0, "max":15 ]);
skills["two handed"] = (["level":0, "points":0, "max":1 ]);
skills["murder"] = ([ "level":0, "points":0, "max":0 ]);
skills["stealing"] = ([ "level":0, "points":0, "max":0 ]);
skills["locks"] = (["level":0, "points":0, "max":0 ]);
skills["bargaining"] = ([ "level":0, "points":0, "max": 55 ]);
skills["magic defense"] = ([ "level":0, "points":0, "max": 80 ]);
skills["magic attack"] = ([ "level":0, "points":0, "max": 7 ]);
skills["healing"] = ([ "level":10, "points":0, "max":100 ]);
skills["faith"] = (["level":5, "points":0, "max":90 ]);
skills["conjuring"] = ([ "level":0, "points":0, "max":22 ]);
break;
case "child": init_skills(0);
break;
default: init_skills(0);
}
}
return skills;
}
int training_formula(string cl, int lvl, string skill) {
if(cl == "fighter") {
switch(skill) {
case "melee": case "attack": case "defense": case "double wielding":
case "two handed": case "blade":
return lvl * lvl; break;
case "knife": case "blunt": case "projectile":
return (lvl * lvl * lvl)/2; break;
case "bargaining": case "murder":
case "stealing":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
else if(cl == "cleric") {
switch(skill) {
case "magic defense": case "healing": case "faith":
return lvl * lvl; break;
case "melee": case "defense": case "knife": case "blunt":
case "conjuring":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
else if(cl == "mage") {
switch(skill) {
case "magic attack": case "magic defense": case "conjuring": case "blunt":
return lvl * lvl; break;
case "projectile": case "melee": case "attack": case "knife":
case "bargaining":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
else if(cl == "kataan") {
switch(skill) {
case "projectile": case "stealth": case "attack": case "faith":
return lvl * lvl; break;
case "two handed": case "double wielding": case "murder":
case "locks": case "magic attack":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
else if(cl == "monk") {
switch(skill) {
case "melee": case "defense": case "blunt": case "projectile":
case "bargaining": case "magic defense": case "faith":
return lvl * lvl; break;
case "knife": case "attack": case "conjuring":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
else {
switch(skill) {
case "stealth": case "melee": case "attack": case "defense": case "knife":
case "bargaining": case "murder": case "stealing": case "locks":
return lvl * lvl; break;
case "blunt": case "projectile": case "double wielding":
return lvl * lvl * lvl; break;
default: return lvl * lvl * lvl * lvl; break;
}
}
}
int query_melee_ac(string cl) {
switch(cl) {
case "fighter": return 15; break;
case "monk": return 20; break;
case "kataan": return 11; break;
case "rogue": return 20; break;
case "cleric": return 5; break;
case "mage": return 8; break;
default: return 1;
}
}