* Corrected skill Charge Attack as described in bugreport:67
- cast time is between 100% and 300% (+ infinite waiting fixed) - damage is also between 100% and 300% (doesn't increase past range 9) - added knockback that's equal to the distance to target - no longer causes teleportation on WoE grounds - if target runs behind an obstacle, the skill will still teleport you, but will not perform the attack or do knockback - this should be official behavior, so enjoy the weirdness! git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11256 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
f7025735b0
commit
3503fc5de1
@ -4,6 +4,14 @@ 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.
|
||||
|
||||
2007/09/21
|
||||
* Corrected skill Charge Attack as described in bugreport:67 [ultramage]
|
||||
- cast time is between 100% and 300% (+ infinite waiting fixed)
|
||||
- damage is also between 100% and 300% (doesn't increase past range 9)
|
||||
- added knockback that's equal to the distance to target
|
||||
- no longer causes teleportation on WoE grounds
|
||||
- if target runs behind an obstacle, the skill will still teleport you,
|
||||
but will not perform the attack or do knockback
|
||||
- this should be official behavior, so enjoy the weirdness!
|
||||
* Makefile deleting .svn in save folder.
|
||||
* Limited the number of packets parsed per cycle to 3.
|
||||
* Fixed sql login throwing an out-of-place debug message and escaping too
|
||||
|
@ -1546,7 +1546,11 @@ static struct Damage battle_calc_weapon_attack(
|
||||
skillratio += 100*(skill_lv-1);
|
||||
break;
|
||||
case KN_CHARGEATK:
|
||||
skillratio += 100*((wflag-1)/3); //+100% every 3 cells.of distance
|
||||
{
|
||||
int k = (wflag-1)/3; //+100% every 3 cells of distance
|
||||
if( k > 2 ) k = 2; // ...but hard-limited to 300%.
|
||||
skillratio += 100 * k;
|
||||
}
|
||||
break;
|
||||
case HT_PHANTASMIC:
|
||||
skillratio += 50;
|
||||
|
@ -2799,10 +2799,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
if (bl->prev == NULL)
|
||||
return 1;
|
||||
|
||||
if (src->type == BL_PC)
|
||||
sd = (struct map_session_data *)src;
|
||||
if (bl->type == BL_PC)
|
||||
tsd = (struct map_session_data *)bl;
|
||||
BL_CAST(BL_PC, src, sd);
|
||||
BL_CAST(BL_PC, bl, tsd);
|
||||
|
||||
if (status_isdead(bl))
|
||||
return 1;
|
||||
@ -2942,10 +2940,27 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
|
||||
break;
|
||||
|
||||
case KN_CHARGEATK:
|
||||
flag = distance_bl(src, bl);
|
||||
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
|
||||
if (unit_movepos(src, bl->x, bl->y, 1, 1))
|
||||
clif_slide(src,bl->x,bl->y);
|
||||
{
|
||||
bool path = path_search_long(NULL, src->m, src->x, src->y, bl->x, bl->y);
|
||||
unsigned int dist = distance_bl(src, bl);
|
||||
unsigned int dir = map_calc_dir(bl, src->x, src->y);
|
||||
|
||||
// teleport to target (if not on WoE grounds)
|
||||
if( !map_flag_gvg(src->m) && unit_movepos(src, bl->x, bl->y, 0, 1) )
|
||||
clif_slide(src, bl->x, bl->y);
|
||||
|
||||
// cause damage and knockback if the path to target was a straight one
|
||||
if( path )
|
||||
{
|
||||
skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, dist);
|
||||
skill_blown(src, bl, dist, dir, 0);
|
||||
//HACK: since knockback officially defaults to the left, the client also turns to the left... therefore,
|
||||
// make the caster look in the direction of the target
|
||||
unit_setdir(src, (dir+4)%8);
|
||||
clif_changed_dir(src, AREA);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case TK_JUMPKICK:
|
||||
|
@ -987,8 +987,11 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int
|
||||
casttime = 0;
|
||||
break;
|
||||
case KN_CHARGEATK:
|
||||
//Taken from jA: Casttime is increased by dist/3*100%
|
||||
casttime+= casttime * (distance_bl(src,target)-1)/3;
|
||||
{
|
||||
unsigned int k = (distance_bl(src,target)-1)/3; //+100% every 3 cells of distance
|
||||
if( k > 2 ) k = 2; // ...but hard-limited to 300%.
|
||||
casttime += casttime * k;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user