summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 3865b55a0..fff7902d9 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5906,7 +5906,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case BS_REPAIRWEAPON:
if(sd && dstsd)
- clif_item_repair_list(sd,dstsd);
+ clif_item_repair_list(sd,dstsd,skilllv);
break;
case MC_IDENTIFY:
@@ -13725,45 +13725,51 @@ void skill_brandishspear(struct block_list* src, struct block_list* bl, int skil
/*==========================================
* Weapon Repair [Celest/DracoRPG]
*------------------------------------------*/
-void skill_repairweapon (struct map_session_data *sd, int idx)
-{
+void skill_repairweapon (struct map_session_data *sd, int idx) {
int material;
int materials[4] = { 1002, 998, 999, 756 };
struct item *item;
struct map_session_data *target_sd;
nullpo_retv(sd);
- target_sd = map_id2sd(sd->menuskill_val);
- if (!target_sd) //Failed....
+
+ if ( !( target_sd = map_id2sd(sd->menuskill_val) ) ) //Failed....
return;
- if(idx==0xFFFF) // No item selected ('Cancel' clicked)
+
+ if( idx == 0xFFFF ) // No item selected ('Cancel' clicked)
return;
- if(idx < 0 || idx >= MAX_INVENTORY)
+ if( idx < 0 || idx >= MAX_INVENTORY )
return; //Invalid index??
item = &target_sd->status.inventory[idx];
- if(item->nameid <= 0 || item->attribute == 0)
+ if( item->nameid <= 0 || item->attribute == 0 )
return; //Again invalid item....
- if(sd!=target_sd && !battle_check_range(&sd->bl,&target_sd->bl,skill_get_range2(&sd->bl, sd->menuskill_id,pc_checkskill(sd, sd->menuskill_id)))){
+ if( sd != target_sd && !battle_check_range(&sd->bl,&target_sd->bl, skill_get_range2(&sd->bl, sd->menuskill_id,sd->menuskill_val2) ) ){
clif_item_repaireffect(sd,idx,1);
return;
}
- if ( target_sd->inventory_data[idx]->type == IT_WEAPON)
- material = materials [itemdb_wlv(item->nameid)-1]; // Lv1/2/3/4 weapons consume 1 Iron Ore/Iron/Steel/Rough Oridecon
+ if ( target_sd->inventory_data[idx]->type == IT_WEAPON )
+ material = materials [ target_sd->inventory_data[idx]->wlv - 1 ]; // Lv1/2/3/4 weapons consume 1 Iron Ore/Iron/Steel/Rough Oridecon
else
material = materials [2]; // Armors consume 1 Steel
- if (pc_search_inventory(sd,material) < 0 ) {
+ if ( pc_search_inventory(sd,material) < 0 ) {
clif_skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0);
return;
}
+
clif_skill_nodamage(&sd->bl,&target_sd->bl,sd->menuskill_id,1,1);
- item->attribute=0;
+
+ item->attribute = 0;/* clear broken state */
+
clif_equiplist(target_sd);
+
pc_delitem(sd,pc_search_inventory(sd,material),1,0,0,LOG_TYPE_CONSUME);
+
clif_item_repaireffect(sd,idx,0);
- if(sd!=target_sd)
+
+ if( sd != target_sd )
clif_item_repaireffect(target_sd,idx,0);
}