summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-25 08:04:42 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-25 08:04:42 +0000
commit7490d258bed49b47110dd9f0236b11994e0f1a12 (patch)
tree561a5de95c48aeb1883b8f30242568ced131a102 /src
parentca860586cd1019e4fdc7a02cc83d3d936e327a4e (diff)
downloadhercules-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.c2
-rw-r--r--src/map/pc.c33
-rw-r--r--src/map/pc.h1
-rw-r--r--src/map/skill.c21
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;