Hi, how can i make this script work only with accessories and make items as requirements to upgrade
edit: Also how to remove all the choices and make a fix option.
Example: npc will only add VAR_STRAMOUNT in accessory
//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2017 Hercules Dev Team
//= Copyright (C) 2017 Smokexyz
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program. If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Option Master (Item Options NPC @see db/item_options.conf)
//================= Description ===========================================
//= Select from a list of your equipments, one to enhance with up to 5 options.
//= A list of the first 10 options are provided in this npc.
//================= Current Version =======================================
//= 1.0
//=========================================================================
prontera,153,180,4 script Option Master 4_DOG01,{
callsub(StartTalking);
end;
OnInit:
/**
* General Configuration
*/
/* Chance of the enhancement process to fail. (0 - 99 in percent) */
.chance_of_failure = 10;
/* Delete the item on failure? (true/false) */
.delete_on_failure = true;
/* Required amount of zeny for a try. */
.zeny_requirement = 100;
/* Minimum amount of the bonus value.
* For negative effects or certain bonuses that require negative values
* Maximum possible value is -INT16_MAX)
*/
.minimum_bonus_amount = -100; // usually used with delay bonus options, although not provided in the script.
/* Maximum amount of the bonus value.
* Maximum possible value is INT16_MAX */
.maximum_bonus_amount = 100;
/* Disable selection of bonus value (true/false) */
.enable_random_bonus = false;
/* Item Option Descriptions */
setarray(.options$[0], "Max HP", "Max SP", "STR", "AGI", "VIT", "INT", "DEX", "LUK");
/* Item Option Constants */
setarray(.option_constants[0], VAR_MAXHPAMOUNT, VAR_MAXSPAMOUNT, VAR_STRAMOUNT, VAR_AGIAMOUNT, VAR_VITAMOUNT, VAR_INTAMOUNT, VAR_DEXAMOUNT, VAR_LUKAMOUNT);
end;
StartTalking:
.@name$ = _("[ ^990099Option Master^000000 ]");
disable_items();
mes(.@name$);
mesf("Hey there %s", strcharinfo(PC_NAME));
mes("There's a new-found method of adding options to an equipment that I have been working on.");
next();
if (.enable_random_bonus) {
mes(.@name$);
mes("Equipment bonuses are added randomly per slot!");
mes("So if you wind up with a low amount of bonus, don't hesitate to override the slot.");
next();
}
mes(.@name$);
mes("Would you like me to add extra stats to your equipment?");
next();
if (select("Of course!", "Meh, not right now.") == 2) {
mes(.@name$);
mes("Alright then, catch you later.");
close();
}
// Build the Menu.
setarray(.@position$[1], "Head", "Body", "Left Hand", "Right Hand", "Robe", "Shoes", "Accessory 1", "Accessory 2", "Head 2", "Head 3");
.@menu$ = "";
for (.@i = 1; .@i <= 10; ++.@i)
.@menu$ += ((getequipisequiped(.@i)) ? getequipname(.@i) : .@position$[.@i] + "-[Not equipped]") + ":";
// Select the part.
.@equip_index = select(.@menu$);
// Check if it's worn.
if (!getequipisequiped(.@equip_index)) {
mes(.@name$);
mes("Brah, your item ain't equipped.");
close();
// Check if it allows options
} else if (!getequipisenableopt(.@equip_index)) {
mes(.@name$);
mes("Brah, this equip can't have options.");
close();
// Check if equipment is identified.
} else if (!getequipisidentify(.@equip_index)) {
mes(.@name$);
mes("Brah, this equip ain't identified.");
close();
}
// Present a list of currently infused options.
do {
.@menu$ = "";
.@used = false;
// Build the menu of current options.
for (.@i = 1; .@i <= MAX_ITEM_OPTIONS; ++.@i) {
// call getequipoption(<equip_index>, <type>, <slot>);
// if the return is <0, it's a script error.
// if the return is 0, the slot is empty.
// if the return is >0, the slot is unavailable.
.@opt = getequipoption(.@equip_index, .@i, IT_OPT_INDEX);
if (.@opt > 0)
.@menu$ += (.@i) + ") " + .options$[.@opt - 1] + ":";
else
.@menu$ += (.@i) + ") ^999999Empty^000000" + ":";
}
// Option Slot is the actual option slot 0-MAX_ITEM_OPTIONS (@see mmo.h)
.@option_slot = select(.@menu$);
// Check for used slot and request user action if found.
if (getequipoption(.@equip_index, .@option_slot, IT_OPT_INDEX) > 0) {
mes(.@name$);
mes("This slot is already used up!");
if (select("^990000Override the slot.^000000", "Choose again.") == 2)
.@used = true;
next();
}
} while (.@used); // loop if the slot is not to be overridden
// Present a list of available bonuses.
mes(.@name$);
mes("Which of the following item bonuses would you like to add to this item?");
next();
// Build the Options!
.@menu$ = "";
for (.@i = 0; .@i < getarraysize(.options$); ++.@i)
.@menu$ += (.@i + 1) + ") " + .options$[.@i] + ":";
do {
// Select the options!
.@option_variable = select(.@menu$);
next();
mes(.@name$);
mesf("You chose ^009900%s^000000!", .options$[.@option_variable - 1]);
mes("Are you sure?");
next();
} while (select("Fo Shizzle.", "I'ma re-evaluate, brah.") == 2);
// Select a bonus or randomise.
if (.enable_random_bonus) {
.@value = rand(.maximum_bonus_amount);
} else {
do {
mes(.@name$);
mesf("Please input the bonus amount of ^009900%s^000000 you want to add!", .options$[.@option_variable - 1]);
mesf("(Min: %d, Max: %d)", .minimum_bonus_amount, .maximum_bonus_amount);
.@ok = input(.@value, .minimum_bonus_amount, .maximum_bonus_amount);
next();
} while (.@ok);
}
// If there's a chance of failure, inform the user.
if (.chance_of_failure) {
mes(.@name$);
mes("Alright so,");
mes("I'll have you know...");
mesf("There's a ^990000%d%% chance of failure^000000.", .chance_of_failure);
mes("Because, well... I didn't go to school.");
next();
mes(.@name$);
if (.delete_on_failure) {
mes("If I fail, your item will break and it ^990000will be destroyed^000000!");
}
mes("Are you still ready to go forward with this?");
next();
if (select("Fo shizzle.", "Hells naw, go back to school.") == 2) {
mes(.@name$);
mes("Geez, you don't have to be so harsh about it.");
close();
}
next();
}
// If there's a Zeny Requirement, perform the usual.
if (.zeny_requirement > 0) {
mes(.@name$);
mesf("You also have to pay %dZ.", .zeny_requirement);
next();
if (select("Of course!", "No way!") == 2) {
mes(.@name$);
mes("Well, see you around then...");
close();
}
if (Zeny < .zeny_requirement) {
mes(.@name$);
mes("You don't have enough Zeny!");
close();
}
Zeny -= .zeny_requirement;
}
// Check if there's a chance of failure, set and roll the dice.
if (.chance_of_failure && rand(100) <= .chance_of_failure) {
mes(.@name$);
mes("^990000I failed!^000000");
mes("Guess I should go back to school.");
// Delete the item if flagged.
if (.delete_on_failure)
failedrefitem(.@equip_index); // Simulate failed refinement of the item and delete.
} else {
// Set the Item Option bonuses in the slot see db/item_options.conf for more info.
setequipoption(.@equip_index, .@option_slot, .option_constants[.@option_variable - 1], .@value);
mes(.@name$);
mes("^009900Praise Jesus^000000");
mes("I have added an option to your item.");
mes("My skills are flawless!");
}
next();
mes(.@name$);
mes("See you around!");
close();
}
Hi, how can i make this script work only with accessories and make items as requirements to upgrade
edit: Also how to remove all the choices and make a fix option.
Example: npc will only add VAR_STRAMOUNT in accessory
Share this post
Link to post
Share on other sites