Updates of getenchantgrade() script command (#6420)

* Updates getenchantgrade() script command adding <equipement slot> as optional argument to retrieve the grade of a specific equipment slot.

Thanks to @Lemongrass3110 and @aleos89 !
This commit is contained in:
Atemo 2021-12-26 16:09:00 +01:00 committed by GitHub
parent 8646fbb84c
commit 543e658aae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 7 deletions

View File

@ -3108,12 +3108,17 @@ If <type> is false the command only returns the count of unidentified items.
--------------------------------------- ---------------------------------------
*getenchantgrade() *getenchantgrade({<equipment slot>,<char_id>})
This function will return the enchantgrade of the equipment from which the This function will return the enchantgrade of the equipment from which the
function is called. function is called or the specified equipment slot. If nothing is
equipped there, it returns -1.
This function is intended for use in item scripts. Valid equipment slots are:
EQI_COMPOUND_ON - Item slot that calls this script (In context of item script) (default)
For a list of others equipment slots see 'getequipid'.
--------------------------------------- ---------------------------------------
// //

View File

@ -25458,15 +25458,32 @@ BUILDIN_FUNC(refineui){
BUILDIN_FUNC(getenchantgrade){ BUILDIN_FUNC(getenchantgrade){
struct map_session_data *sd; struct map_session_data *sd;
if( !script_rid2sd( sd ) ){ if (!script_charid2sd(3, sd)) {
script_pushint(st,-1);
return SCRIPT_CMD_FAILURE; return SCRIPT_CMD_FAILURE;
} }
if( current_equip_item_index == -1 ){ int index, position;
if (script_hasdata(st, 2))
position = script_getnum(st, 2);
else
position = EQI_COMPOUND_ON;
if (position == EQI_COMPOUND_ON)
index = current_equip_item_index;
else if (equip_index_check(position))
index = pc_checkequip(sd, equip_bitmask[position]);
else {
ShowError( "buildin_getenchantgrade: Unknown equip index '%d'\n", position );
script_pushint(st,-1);
return SCRIPT_CMD_FAILURE; return SCRIPT_CMD_FAILURE;
} }
script_pushint( st, sd->inventory.u.items_inventory[current_equip_item_index].enchantgrade ); if (index < 0 || index >= MAX_INVENTORY || sd->inventory.u.items_inventory[index].nameid == 0)
script_pushint(st, -1);
else
script_pushint(st, sd->inventory.u.items_inventory[index].enchantgrade);
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -26194,7 +26211,7 @@ struct script_function buildin_func[] = {
BUILDIN_DEF2(rentalcountitem, "rentalcountitem2", "viiiiiii?"), BUILDIN_DEF2(rentalcountitem, "rentalcountitem2", "viiiiiii?"),
BUILDIN_DEF2(rentalcountitem, "rentalcountitem3", "viiiiiiirrr?"), BUILDIN_DEF2(rentalcountitem, "rentalcountitem3", "viiiiiiirrr?"),
BUILDIN_DEF(getenchantgrade, ""), BUILDIN_DEF(getenchantgrade, "??"),
BUILDIN_DEF(mob_setidleevent, "is"), BUILDIN_DEF(mob_setidleevent, "is"),