#include <lib.h> int collect_moduli(int mod, int *range){ int ret, neg, big, little, i; ret = 0; if(range[0] > range[1]){ neg = 1; big = range[0]; little = range[1]; } else { big = range[1]; little = range[0]; } for(i = big; i > little; i--){ if(!(i % mod)) ret++; } if(neg){ ret = ret - (ret*2); } return ret; } varargs int ChangeLevel(int i){ mapping skills, stats, moduli = ([]); int current_level, desired_level; object subject = this_object(); current_level = subject->GetLevel(); if(!i || i < 1) desired_level = current_level + 1; else desired_level = i; for(i = 1; i < 5; i++){ moduli[i] = collect_moduli(i, ({ current_level, desired_level }) ); } skills = subject->GetSkillsMap(); stats = subject->GetStatsMap(); foreach(mixed key, mixed val in skills){ if(skills[key]["class"] > 3) skills[key]["class"] = 4; subject->SetSkill(key, skills[key]["level"] + moduli[skills[key]["class"]], skills[key]["class"]); } foreach(mixed key, mixed val in stats){ if(stats[key]["class"] > 3) stats[key]["class"] = 4; subject->SetStat(key, stats[key]["level"] + moduli[stats[key]["class"]], stats[key]["class"]); } subject->SetLevel(desired_level); return 1; }