Skip to content

Commit

Permalink
Update refine atcommand
Browse files Browse the repository at this point in the history
- list of costume and shadow equipments
- refine all equipments option
  • Loading branch information
Emistry committed Jul 13, 2019
1 parent a5eb6ec commit b00db63
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 29 deletions.
31 changes: 23 additions & 8 deletions conf/messages.conf
Expand Up @@ -759,18 +759,18 @@

//995 FREE

// @refine
// @refine - Part 1
996: Please enter a position bitmask and an amount (usage: @refine <equip position> <+/- amount>).
997: %d: Lower Headgear
998: %d: Right Hand
997: %d: Headgear (Low)
998: %d: Hand (Right)
999: %d: Garment
1000: %d: Left Accessory
1000: %d: Accessory (Left)
1001: %d: Body Armor
1002: %d: Left Hand
1002: %d: Hand (Left)
1003: %d: Shoes
1004: %d: Right Accessory
1005: %d: Top Headgear
1006: %d: Mid Headgear
1004: %d: Accessory (Right)
1005: %d: Headgear (Top)
1006: %d: Headgear (Mid)

// @produce
1007: Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>).
Expand Down Expand Up @@ -1575,5 +1575,20 @@
1501: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10, delayed-consumable = 11, cash = 18
1502: %d items are dropped!

// @refine - Part 2
1503: %d: Costume Headgear (Top)
1504: %d: Costume Headgear (Mid)
1505: %d: Costume Headgear (Low)
1506: %d: Costume Garment
1507: %d: Shadow Armor
1508: %d: Shadow Weapon
1509: %d: Shadow Shield
1510: %d: Shadow Shoes
1511: %d: Shadow Accessory (Right)
1512: %d: Shadow Accessory (Left)
1513: %d: Refine All Equip (General)
1514: %d: Refine All Equip (Costume)
1515: %d: Refine All Equip (Shadow)

//Custom translations
import: conf/import/msg_conf.txt
81 changes: 61 additions & 20 deletions src/map/atcommand.c
Expand Up @@ -2232,26 +2232,56 @@ ACMD(refine)
memset(atcmd_output, '\0', sizeof(atcmd_output));

if (!*message || sscanf(message, "%12d %12d", &position, &refine_level) < 2) {
clif->message(fd, msg_fd(fd,996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>).
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,997), EQP_HEAD_LOW); // %d: Lower Headgear
clif->message(fd, msg_fd(fd, 996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>).
#if PACKETVER > 20100707
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1515), -3); // %d: Refine All Equip (Shadow)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,998), EQP_HAND_R); // %d: Right Hand
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1514), -2); // %d: Refine All Equip (Costume)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,999), EQP_GARMENT); // %d: Garment
#endif
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1513), -1); // %d: Refine All Equip (General)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 997), EQP_HEAD_LOW); // %d: Headgear (Low)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 998), EQP_HAND_R); // Hand (Right)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 999), EQP_GARMENT); // %d: Garment
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1000), EQP_ACC_L); // Accessory (Left)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1001), EQP_ARMOR); // %d: Body Armor
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1002), EQP_HAND_L); // Hand (Left)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1003), EQP_SHOES); // %d: Shoes
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1004), EQP_ACC_R); // Accessory (Right)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1005), EQP_HEAD_TOP); // %d: Headgear (Top)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1000), EQP_ACC_L); // %d: Left Accessory
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1006), EQP_HEAD_MID); // %d: Headgear (Mid)
#if PACKETVER > 20100707
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1503), EQP_COSTUME_HEAD_TOP); // %d: Costume Headgear (Top)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1001), EQP_ARMOR); // %d: Body Armor
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1504), EQP_COSTUME_HEAD_MID); // %d: Costume Headgear (Mid)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1002), EQP_HAND_L); // %d: Left Hand
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1505), EQP_COSTUME_HEAD_LOW); // %d: Costume Headgear (Low)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1003), EQP_SHOES); // %d: Shoes
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1506), EQP_COSTUME_GARMENT); // %d: Costume Garment
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1004), EQP_ACC_R); // %d: Right Accessory
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1507), EQP_SHADOW_ARMOR); // %d: Shadow Armor
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1005), EQP_HEAD_TOP); // %d: Top Headgear
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1508), EQP_SHADOW_WEAPON); // %d: Shadow Weapon
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1006), EQP_HEAD_MID); // %d: Mid Headgear
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1509), EQP_SHADOW_SHIELD); // %d: Shadow Shield
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1510), EQP_SHADOW_SHOES); // %d: Shadow Shoes
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1511), EQP_SHADOW_ACC_R); // %d: Shadow Accessory (Right)
clif->message(fd, atcmd_output);
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 1512), EQP_SHADOW_ACC_L); // %d: Shadow Accessory (Left)
clif->message(fd, atcmd_output);
#endif
clif->message(fd, atcmd_output);
return false;
}
Expand All @@ -2263,22 +2293,33 @@ ACMD(refine)
int idx = sd->equip_index[j];
if (idx < 0)
continue;
if(j == EQI_AMMO) continue; /* can't equip ammo */
if(j == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == idx)
if (j == EQI_AMMO)
continue; /* can't equip ammo */
if (j == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == idx)
continue;
if(j == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == idx)
if (j == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == idx)
continue;
if(j == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == idx || sd->equip_index[EQI_HEAD_LOW] == idx))
if (j == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == idx || sd->equip_index[EQI_HEAD_LOW] == idx))
continue;
if (j == EQI_COSTUME_MID && sd->equip_index[EQI_COSTUME_LOW] == idx)
continue;
if (j == EQI_COSTUME_TOP && (sd->equip_index[EQI_COSTUME_MID] == idx || sd->equip_index[EQI_COSTUME_LOW] == idx))
continue;

if(position && !(sd->status.inventory[idx].equip & position))
if (position == -3 && !itemdb_is_shadowequip(sd->status.inventory[idx].equip))
continue;
else if (position == -2 && !itemdb_is_costumeequip(sd->status.inventory[idx].equip))
continue;
else if (position == -1 && (itemdb_is_costumeequip(sd->status.inventory[idx].equip) || itemdb_is_shadowequip(sd->status.inventory[idx].equip)))
continue;
else if (position && !(sd->status.inventory[idx].equip & position))
continue;

final_refine = cap_value(sd->status.inventory[idx].refine + refine_level, 0, MAX_REFINE);
if (sd->status.inventory[idx].refine != final_refine) {
sd->status.inventory[idx].refine = final_refine;
current_position = sd->status.inventory[idx].equip;
pc->unequipitem(sd, idx, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
pc->unequipitem(sd, idx, PCUNEQUIPITEM_RECALC | PCUNEQUIPITEM_FORCE);
clif->refine(fd, 0, idx, sd->status.inventory[idx].refine);
clif->delitem(sd, idx, 1, DELITEM_MATERIALCHANGE);
clif->additem(sd, idx, 1, 0);
Expand All @@ -2289,11 +2330,11 @@ ACMD(refine)
}

if (count == 0)
clif->message(fd, msg_fd(fd,166)); // No item has been refined.
clif->message(fd, msg_fd(fd, 166)); // No item has been refined.
else if (count == 1)
clif->message(fd, msg_fd(fd,167)); // 1 item has been refined.
clif->message(fd, msg_fd(fd, 167)); // 1 item has been refined.
else {
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,168), count); // %d items have been refined.
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 168), count); // %d items have been refined.
clif->message(fd, atcmd_output);
}

Expand Down
2 changes: 1 addition & 1 deletion src/map/atcommand.h
Expand Up @@ -41,7 +41,7 @@ struct config_setting_t;
* Defines
**/
#define ATCOMMAND_LENGTH 50
#define MAX_MSG 1503
#define MAX_MSG 1516
#define msg_txt(idx) atcommand->msg(idx)
#define msg_sd(sd,msg_number) atcommand->msgsd((sd),(msg_number))
#define msg_fd(fd,msg_number) atcommand->msgfd((fd),(msg_number))
Expand Down

0 comments on commit b00db63

Please sign in to comment.