diff options
author | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-11-25 08:04:42 +0000 |
---|---|---|
committer | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-11-25 08:04:42 +0000 |
commit | 7490d258bed49b47110dd9f0236b11994e0f1a12 (patch) | |
tree | 561a5de95c48aeb1883b8f30242568ced131a102 /src | |
parent | ca860586cd1019e4fdc7a02cc83d3d936e327a4e (diff) | |
download | hercules-7490d258bed49b47110dd9f0236b11994e0f1a12.tar.gz hercules-7490d258bed49b47110dd9f0236b11994e0f1a12.tar.bz2 hercules-7490d258bed49b47110dd9f0236b11994e0f1a12.tar.xz hercules-7490d258bed49b47110dd9f0236b11994e0f1a12.zip |
Updated Weapon Repair (~100%)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@359 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/clif.c | 2 | ||||
-rw-r--r-- | src/map/pc.c | 33 | ||||
-rw-r--r-- | src/map/pc.h | 1 | ||||
-rw-r--r-- | src/map/skill.c | 21 |
4 files changed, 37 insertions, 20 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 101dbbf7e..0b0064aa9 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5016,7 +5016,7 @@ int clif_item_repair_list(struct map_session_data *sd) fd=sd->fd; - WFIFOW(fd,0)=0x0; + WFIFOW(fd,0)=0x177; // temporarily use same packet as clif_item_identify for(i=c=0;i<MAX_INVENTORY;i++){ if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].attribute==1){ WFIFOW(fd,c*2+4)=i+2; diff --git a/src/map/pc.c b/src/map/pc.c index 892f339a5..2d0f14385 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1,4 +1,4 @@ -// $Id: pc.c 101 2004-11-24 10:52:07 Celestia $ +// $Id: pc.c 101 2004-11-25 4:02:51 PM Celestia $ #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -3442,6 +3442,11 @@ int pc_item_identify(struct map_session_data *sd,int idx) nullpo_retr(0, sd); + // Celest + if (sd->skillid == BS_REPAIRWEAPON) { + return pc_item_repair (sd, idx); + } + if(idx >= 0 && idx < MAX_INVENTORY) { if(sd->status.inventory[idx].nameid > 0 && sd->status.inventory[idx].identify == 0 ){ flag=0; @@ -3456,6 +3461,32 @@ int pc_item_identify(struct map_session_data *sd,int idx) } /*========================================== + * Weapon Repair [Celest] + *------------------------------------------ + */ +int pc_item_repair(struct map_session_data *sd,int idx) +{ + int flag=1; + + nullpo_retr(0, sd); + + if(idx >= 0 && idx < MAX_INVENTORY) { + if(sd->status.inventory[idx].nameid > 0 && sd->status.inventory[idx].attribute == 1 ) { + flag=0; + sd->status.inventory[idx].attribute=0; + //Temporary Weapon Repair code [DracoRPG] + pc_delitem(sd, pc_search_inventory(sd, 999), 1, 0); + clif_equiplist(sd); + clif_produceeffect(sd, 0, sd->status.inventory[idx].nameid); + clif_misceffect(&sd->bl, 3); + clif_displaymessage(sd->fd,"Item has been repaired."); + } + } + + return !flag; +} + +/*========================================== * スティル品公開 *------------------------------------------ */ diff --git a/src/map/pc.h b/src/map/pc.h index a6c5a2b2a..0a7026815 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -86,6 +86,7 @@ int pc_skill(struct map_session_data*,int,int,int); int pc_insert_card(struct map_session_data *sd,int idx_card,int idx_equip); int pc_item_identify(struct map_session_data *sd,int idx); +int pc_item_repair(struct map_session_data *sd,int idx); // [Celest] int pc_steal_item(struct map_session_data *sd,struct block_list *bl); int pc_steal_coin(struct map_session_data *sd,struct block_list *bl); diff --git a/src/map/skill.c b/src/map/skill.c index bc087fbb3..6078f1c0c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1,4 +1,4 @@ -// $Id: skill.c,v 1.8 2004/11/24 10:51:28 Celestia Exp $ +// $Id: skill.c,v 1.8 2004/11/25 4:02:35 PM Celestia Exp $ /* スキル?係 */ #include <stdio.h> @@ -3708,29 +3708,14 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int break; case BS_REPAIRWEAPON: /* 武器修理 */ - if(sd) { //Temporary Weapon Repair code [DracoRPG] + if(sd) { //動作しないのでとりあえずコメントアウト -// clif_item_repair_list(sd); - int i,r=0; if (pc_search_inventory(sd, 999) <= 0 ) { clif_skill_fail(sd,sd->skillid,0,0); map_freeblock_unlock(); return 1; } - for(i=0; i<MAX_INVENTORY; i++) { - if(sd->status.inventory[i].attribute == 1){ - sd->status.inventory[i].attribute = 0; - pc_delitem(sd, pc_search_inventory(sd, 999), 1, 0); - clif_equiplist(sd); - clif_produceeffect(sd, 0, sd->status.inventory[i].nameid); - clif_misceffect(&sd->bl, 3); - clif_displaymessage(sd->fd,"Item has been repaired."); - r++; - break; - } - } - if(!r) - clif_skill_fail(sd,sd->skillid,0,0); + clif_item_repair_list(sd); } break; |