From 7490d258bed49b47110dd9f0236b11994e0f1a12 Mon Sep 17 00:00:00 2001 From: celest Date: Thu, 25 Nov 2004 08:04:42 +0000 Subject: Updated Weapon Repair (~100%) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@359 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/clif.c | 2 +- src/map/pc.c | 33 ++++++++++++++++++++++++++++++++- src/map/pc.h | 1 + src/map/skill.c | 21 +++------------------ 5 files changed, 39 insertions(+), 20 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 8b0719de5..0da92771d 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,6 +8,8 @@ Date Added * Skill Updates: [celest] - Updated guild skills (60%) - updated Weapon Repair and Aura Blade by DracoRPG + - modified Weapon Repair to use Identify's packet, should show a list of + repairable items now 11/23 * Fixed script loading small/large monsters. [Valaris] 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;istatus.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 #include #include @@ -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; @@ -3455,6 +3460,32 @@ int pc_item_identify(struct map_session_data *sd,int idx) return !flag; } +/*========================================== + * 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 @@ -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; istatus.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; -- cgit v1.2.3-70-g09d2