summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authormalufett <malufett.eat.my.binaries@gmail.com>2014-02-11 01:26:29 +0800
committermalufett <malufett.eat.my.binaries@gmail.com>2014-02-11 01:26:29 +0800
commit1e1b4a6a9286348192e6dcf22b816c01bc6f57b0 (patch)
treee6329664358e054d499b174858ace0a64ad7f9ac /src/map
parent537e621b81b8fdd8763342703083c1abcfb3cc3a (diff)
parentafb013850baddb26a4600b60c0ee713fb9d05784 (diff)
downloadhercules-1e1b4a6a9286348192e6dcf22b816c01bc6f57b0.tar.gz
hercules-1e1b4a6a9286348192e6dcf22b816c01bc6f57b0.tar.bz2
hercules-1e1b4a6a9286348192e6dcf22b816c01bc6f57b0.tar.xz
hercules-1e1b4a6a9286348192e6dcf22b816c01bc6f57b0.zip
Merge branch 'master' of https://github.com/HerculesWS/Hercules
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c2
-rw-r--r--src/map/battle.c48
-rw-r--r--src/map/script.c13
3 files changed, 33 insertions, 30 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 6177fad23..2849ada0b 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -64,7 +64,7 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
if( *name == atcommand->at_symbol || *name == atcommand->char_symbol )
name++; // for backwards compatibility
- ARR_FIND( 0, atcommand->binding_count, i, strcmp(atcommand->binding[i]->command, name) == 0 );
+ ARR_FIND( 0, atcommand->binding_count, i, strcmpi(atcommand->binding[i]->command, name) == 0 );
return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL;
}
diff --git a/src/map/battle.c b/src/map/battle.c
index 687db1b95..1a04aeff9 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3411,36 +3411,36 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
ad.damage = battle->calc_cardfix(BF_MAGIC, src, target, nk, s_ele, 0, ad.damage, 0, ad.flag);
#endif
if(sd) {
- uint16 skill;
+ uint16 rskill;/* redirect skill */
//Damage bonuses
if ((i = pc->skillatk_bonus(sd, skill_id)))
ad.damage += ad.damage*i/100;
switch(skill_id){
case WL_CHAINLIGHTNING_ATK:
- skill = WL_CHAINLIGHTNING;
+ rskill = WL_CHAINLIGHTNING;
break;
case AB_DUPLELIGHT_MAGIC:
- skill = AB_DUPLELIGHT;
+ rskill = AB_DUPLELIGHT;
break;
case WL_TETRAVORTEX_FIRE:
case WL_TETRAVORTEX_WATER:
case WL_TETRAVORTEX_WIND:
case WL_TETRAVORTEX_GROUND:
- skill = WL_TETRAVORTEX;
+ rskill = WL_TETRAVORTEX;
break;
case WL_SUMMON_ATK_FIRE:
case WL_SUMMON_ATK_WIND:
case WL_SUMMON_ATK_WATER:
case WL_SUMMON_ATK_GROUND:
- skill = WL_RELEASE;
+ rskill = WL_RELEASE;
break;
case WM_REVERBERATION_MAGIC:
- skill = WM_REVERBERATION;
+ rskill = WM_REVERBERATION;
break;
default:
- skill = skill_id;
+ rskill = skill_id;
}
- if( (i = battle->adjust_skill_damage(src->m,skill)) )
+ if( (i = battle->adjust_skill_damage(src->m,rskill)) )
MATK_RATE(i);
//Ignore Defense?
@@ -3877,15 +3877,15 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
#endif
md.damage = battle->calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag);
if(skill_id){
- uint16 skill;
+ uint16 rskill;/* redirect skill id */
switch(skill_id){
case GN_HELLS_PLANT_ATK:
- skill = GN_HELLS_PLANT;
+ rskill = GN_HELLS_PLANT;
break;
default:
- skill = skill_id;
+ rskill = skill_id;
}
- if (sd && (i = pc->skillatk_bonus(sd, skill)))
+ if (sd && (i = pc->skillatk_bonus(sd, rskill)))
md.damage += md.damage*i/100;
}
if( (i = battle->adjust_skill_damage(src->m,skill_id)) )
@@ -4734,40 +4734,40 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
break;
}
if( skill_id ){
- uint16 skill;
+ uint16 rskill;/* redirect skill id */
switch(skill_id){
case AB_DUPLELIGHT_MELEE:
- skill = AB_DUPLELIGHT;
+ rskill = AB_DUPLELIGHT;
break;
case LG_OVERBRAND_BRANDISH:
case LG_OVERBRAND_PLUSATK:
- skill = LG_OVERBRAND;
+ rskill = LG_OVERBRAND;
break;
case WM_SEVERE_RAINSTORM_MELEE:
- skill = WM_SEVERE_RAINSTORM;
+ rskill = WM_SEVERE_RAINSTORM;
break;
case WM_REVERBERATION_MELEE:
- skill = WM_REVERBERATION;
+ rskill = WM_REVERBERATION;
break;
case GN_CRAZYWEED_ATK:
- skill = GN_CRAZYWEED;
+ rskill = GN_CRAZYWEED;
break;
case GN_SLINGITEM_RANGEMELEEATK:
- skill = GN_SLINGITEM;
+ rskill = GN_SLINGITEM;
break;
case RL_R_TRIP_PLUSATK:
- skill = RL_R_TRIP;
+ rskill = RL_R_TRIP;
break;
case RL_B_FLICKER_ATK:
- skill = RL_FLICKER;
+ rskill = RL_FLICKER;
break;
case RL_GLITTERING_GREED_ATK:
- skill = RL_GLITTERING_GREED;
+ rskill = RL_GLITTERING_GREED;
break;
default:
- skill = skill_id;
+ rskill = skill_id;
}
- if( (i = battle->adjust_skill_damage(src->m,skill)) )
+ if( (i = battle->adjust_skill_damage(src->m,rskill)) )
ATK_RATE(i);
}
diff --git a/src/map/script.c b/src/map/script.c
index 4fb4e7224..7ca6a7ddd 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -7666,9 +7666,8 @@ BUILDIN(getequippercentrefinery) {
/*==========================================
* Refine +1 item at pos and log and display refine
*------------------------------------------*/
-BUILDIN(successrefitem)
-{
- int i=-1,num,ep;
+BUILDIN(successrefitem) {
+ int i = -1 , num, ep, up = 1;
TBL_PC *sd;
num = script_getnum(st,2);
@@ -7676,6 +7675,9 @@ BUILDIN(successrefitem)
if( sd == NULL )
return true;
+ if( script_hasdata(st, 3) )
+ up = script_getnum(st, 3);
+
if (num > 0 && num <= ARRAYLENGTH(script->equip))
i=pc->checkequip(sd,script->equip[num-1]);
if(i >= 0) {
@@ -7687,7 +7689,8 @@ BUILDIN(successrefitem)
if (sd->status.inventory[i].refine >= MAX_REFINE)
return true;
- sd->status.inventory[i].refine++;
+ sd->status.inventory[i].refine += up;
+ sd->status.inventory[i].refine = cap_value( sd->status.inventory[i].refine, 0, MAX_REFINE);
pc->unequipitem(sd,i,2); // status calc will happen in pc->equipitem() below
clif->refine(sd->fd,0,i,sd->status.inventory[i].refine);
@@ -18580,7 +18583,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getequiprefinerycnt,"i"),
BUILDIN_DEF(getequipweaponlv,"i"),
BUILDIN_DEF(getequippercentrefinery,"i"),
- BUILDIN_DEF(successrefitem,"i"),
+ BUILDIN_DEF(successrefitem,"i?"),
BUILDIN_DEF(failedrefitem,"i"),
BUILDIN_DEF(downrefitem,"i?"),
BUILDIN_DEF(statusup,"i"),