- Bowling bash now always hits twice regardless of situation.

- Added an underflow check to prevent sending to the client negative mdef2 value (for Frenzy'ed characters)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8934 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-10-04 21:05:44 +00:00
parent b76cd0b67f
commit 0bae404bb9
4 changed files with 19 additions and 12 deletions

View File

@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/10/04 2006/10/04
* Bowling bash now always hits twice regardless of situation. [Skotlex]
* Added an underflow check to prevent sending to the client negative mdef2
value (for Frenzy'ed characters) [Skotlex]
* Modified pc_jobchange so that it automatically removes * Modified pc_jobchange so that it automatically removes
peco/falcon/cart/homun if the new job you are changing to does not possess peco/falcon/cart/homun if the new job you are changing to does not possess
the required skill for them. [Skotlex] the required skill for them. [Skotlex]

View File

@ -1328,8 +1328,7 @@ static struct Damage battle_calc_weapon_attack(
break; break;
} }
case KN_BOWLINGBASH: case KN_BOWLINGBASH:
//When mflag, this is a no-splash attack, damage gets a bonus of 100% at lv 10. skillratio+= 40*skill_lv;
skillratio+= (wflag?50:40)*skill_lv;
break; break;
case KN_AUTOCOUNTER: case KN_AUTOCOUNTER:
case LK_SPIRALPIERCE: case LK_SPIRALPIERCE:

View File

@ -2708,7 +2708,11 @@ int clif_updatestatus(struct map_session_data *sd,int type)
WFIFOL(fd,4)=sd->battle_status.def2; WFIFOL(fd,4)=sd->battle_status.def2;
break; break;
case SP_MDEF2: case SP_MDEF2:
WFIFOL(fd,4)=sd->battle_status.mdef2 - (sd->battle_status.vit>>1); //negative check (in case you have something like Berserk active)
len = sd->battle_status.mdef2 - (sd->battle_status.vit>>1);
if (len < 0) len = 0;
WFIFOL(fd,4)= len;
len = 8;
break; break;
case SP_CRITICAL: case SP_CRITICAL:
WFIFOL(fd,4)=sd->battle_status.cri/10; WFIFOL(fd,4)=sd->battle_status.cri/10;
@ -3033,7 +3037,10 @@ int clif_initialstatus(struct map_session_data *sd)
WBUFW(buf,24) = sd->battle_status.def; // def WBUFW(buf,24) = sd->battle_status.def; // def
WBUFW(buf,26) = sd->battle_status.def2; WBUFW(buf,26) = sd->battle_status.def2;
WBUFW(buf,28) = sd->battle_status.mdef; // mdef WBUFW(buf,28) = sd->battle_status.mdef; // mdef
WBUFW(buf,30) = sd->battle_status.mdef2 - (sd->battle_status.vit>>1); fd = sd->battle_status.mdef2 - (sd->battle_status.vit>>1);
if (fd < 0) fd = 0; //Negative check for Frenzy'ed characters.
WBUFW(buf,30) = fd;
fd = sd->fd;
WBUFW(buf,32) = sd->battle_status.hit; WBUFW(buf,32) = sd->battle_status.hit;
WBUFW(buf,34) = sd->battle_status.flee; WBUFW(buf,34) = sd->battle_status.flee;
WBUFW(buf,36) = sd->battle_status.flee2/10; WBUFW(buf,36) = sd->battle_status.flee2/10;

View File

@ -2936,7 +2936,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if(flag&1){ if(flag&1){
if(bl->id==skill_area_temp[1]) if(bl->id==skill_area_temp[1])
break; break;
//Splash damage is always two hits for 500% //two hits for 500%
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,SD_ANIMATION); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,SD_ANIMATION);
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,SD_ANIMATION); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,SD_ANIMATION);
} else { } else {
@ -2953,19 +2953,17 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if(skill_area_temp[0]>1) break; if(skill_area_temp[0]>1) break;
} }
clif_blown(bl); //Update target pos. clif_blown(bl); //Update target pos.
if (i==c) { //No targets found. Single attack for 600% if (i!=c) { //Splash
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,1);
} else {
skill_area_temp[1]=bl->id; skill_area_temp[1]=bl->id;
map_foreachinrange(skill_area_sub,bl, map_foreachinrange(skill_area_sub,bl,
skill_get_splash(skillid, skilllv),BL_CHAR, skill_get_splash(skillid, skilllv),BL_CHAR,
src,skillid,skilllv,tick, flag|BCT_ENEMY|1, src,skillid,skilllv,tick, flag|BCT_ENEMY|1,
skill_castend_damage_id); skill_castend_damage_id);
}
//Weirdo dual-hit property, two attacks for 500% //Weirdo dual-hit property, two attacks for 500%
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,0); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,0);
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,0); skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,0);
} }
}
break; break;
case KN_SPEARSTAB: case KN_SPEARSTAB: