function script GlobalSkillDebug { function modifySkill { function setSkill { clear; mes l("Enter desired skill level:"); input .@y; skill getarg(0,1), max(0, min(10, .@y)), 0; return; } setnpcdialogtitle l("Skill Debug - Modify Skill"); .@k = getarg(0,1); .@v = getskilllv(.@k); select menuimage("actions/abort", l("Abort")), rif(.@v > 0, menuimage("actions/remove", l("Remove this skill"))), rif(.@v < 10, menuimage("actions/raise", l("Raise this skill"))), rif(.@v > 0, menuimage("actions/lower", l("Lower this skill"))), menuimage("actions/edit", l("Set the level manually")), menuimage("actions/back", l("Return to skill debug menu")); switch (@menu) { case 2: skill .@k, 0, 0; break; case 3: skill .@k, min(10, .@v + 1), 0; break; case 4: skill .@k, max(0, .@v - 1), 0; break; case 5: setSkill .@k; break; } return; } do { clear; setnpcdialogtitle l("Skill Debug"); mes l("This menu allows you to change your skills."); mes ""; mes "---"; // FIXME: maybe get skills from an array or `getskilllist;` <= would need a `getskillinfo()` buildin though mes "NV_BASIC: " + getskilllv(NV_BASIC); mes "---"; mes ""; mes l("Which skill do you wish to change?"); next; menuint "NV_BASIC", NV_BASIC, rif(getarg(0,0), menuimage("actions/back", l("Return to Debug menu"))), -1; switch (@menuret) { case -1: return; } modifySkill @menuret; } while (1); } - script @sdebug 32767,{ end; OnCall: if (!debug && !is_admin()) { end; } GlobalSkillDebug; closedialog; end; OnInit: bindatcmd "sdebug", "@sdebug::OnCall", 99, 99, 1; }