// TMW2 Script // Author: // Jesusalva // Description: // Alchemy System (Player, Guild, NPC) // Notes: // Base for Evol MR // Usage: AlchemySystem ({scope}) // Scopes: CRAFT_NPC, CRAFT_PLAYER, CRAFT_GUILD // If an invalid scope is passed, .knowledge won't be set but will be required // Returns true on success, false on failure function script AlchemySystem { // Set .scope, .knowledge and .success .scope=getarg(0, CRAFT_PLAYER); if (.scope == CRAFT_PLAYER) { copyarray(.knowledge,RECIPES_ALCHEMY,getarraysize(RECIPES_ALCHEMY)); } else if (.scope == CRAFT_GUILD) { copyarray( .knowledge,getd("$RECIPES_ALCHEMY_"+getcharid(2)),getarraysize(getd("$RECIPES_ALCHEMY_"+getcharid(2))) ); } .success=false; setskin "craft2"; .@var$ = requestcraft(2); .@craft = initcraft(.@var$); .@entry = findcraftentry(.@craft, CRAFT_ALCHEMY); if (debug || $@GM_OVERRIDE) mes "found craft entry: " + .@entry; if (debug || $@GM_OVERRIDE) mes "knowledge value: " + .knowledge[.@entry]; if (.@entry < 0) { .success=false; } else { if (.scope == CRAFT_NPC || .knowledge[.@entry]) { if (GSET_FIXED_ALCHEMY) { .@m=limit(1, GSET_FIXED_ALCHEMY, 25); } else { .@max=(is_sponsor() ? 25 : 10); mesc l("How many to brew? (%d-%d)", 1, .@max); input(.@m, 1, .@max); } // Alchemy loop .@i=0; while (.@i < .@m) { .@s=validatecraft(.@craft); // Could not validate (not enough resources) if (!.@s) { mesc l("Not crafting - insufficient materials!"), 1; break; } .@s=usecraft(.@craft); .@i++; // Exploiting?! if (!.@s) break; } .success=true; } else { .success=false; } } deletecraft .@craft; setskin ""; return .success; }