Fixed a few Ranger-related skills (bugreport:5272)
- Added check to not allow attacks when mounted on a Warg - Added check to only allow a certain amount of skills when mounted on a Warg - Updated Warg Bite's chance rate of immobilization and duration - Updated Arrowstorm and Aimed Bolt's skill ratio damage git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15663 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
7fad147092
commit
7a6949a30f
@ -1995,11 +1995,11 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
|
||||
**/
|
||||
case RA_ARROWSTORM:
|
||||
skillratio += 100 + 50 * skill_lv;
|
||||
if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus.
|
||||
if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) / 100); // Base level bonus.
|
||||
break;
|
||||
case RA_AIMEDBOLT:
|
||||
skillratio += 400 + 50 * skill_lv;
|
||||
if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) - 100) / 200; // Base level bonus.
|
||||
skillratio += 500 + 50 * skill_lv;
|
||||
if( status_get_lv(src) > 100 ) skillratio += skillratio * (status_get_lv(src) / 100); // Base level bonus.
|
||||
if( tsc && (tsc->data[SC_BITE] || tsc->data[SC_ANKLE] || tsc->data[SC_ELECTRICSHOCKER]) )
|
||||
wd.div_ = tstatus->size + 2 + rnd()%2;
|
||||
break;
|
||||
|
@ -1142,8 +1142,12 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
|
||||
* Ranger
|
||||
**/
|
||||
case RA_WUGBITE:
|
||||
sc_start(bl, SC_BITE, 70, skilllv, skill_get_time(skillid, skilllv) + (sd ? pc_checkskill(sd,RA_TOOTHOFWUG) * 1000 : 0)); // Need official chance.
|
||||
break;
|
||||
{
|
||||
int chance = (50+10*skilllv)-(sstatus->agi/4) + (sd ? pc_checkskill(sd,RA_TOOTHOFWUG)*2 : 0);
|
||||
if(chance < 50) chance = 50;
|
||||
sc_start(bl, SC_BITE, chance, skilllv, (skilllv + (sd ? pc_checkskill(sd,RA_TOOTHOFWUG)/2 : 0)) * 1000);
|
||||
break;
|
||||
}
|
||||
case RA_SENSITIVEKEEN:
|
||||
if( rnd()%100 < 8 * skilllv )
|
||||
skill_castend_damage_id(src, bl, RA_WUGBITE, sd ? pc_checkskill(sd, RA_WUGBITE):skilllv, tick, SD_ANIMATION);
|
||||
@ -10984,6 +10988,22 @@ int skill_check_condition_castbegin(struct map_session_data* sd, short skill, sh
|
||||
//Can only update state when weapon/arrow info is checked.
|
||||
sd->state.arrow_atk = require.ammo?1:0;
|
||||
|
||||
// Check the skills that can be used while mounted on a warg
|
||||
if( pc_isridingwug(sd) )
|
||||
{
|
||||
switch( skill )
|
||||
{
|
||||
case HT_SKIDTRAP: case HT_LANDMINE: case HT_ANKLESNARE: case HT_SHOCKWAVE:
|
||||
case HT_SANDMAN: case HT_FLASHER: case HT_FREEZINGTRAP: case HT_BLASTMINE:
|
||||
case HT_CLAYMORETRAP: case HT_SPRINGTRAP: case RA_DETONATOR: case RA_CLUSTERBOMB:
|
||||
case RA_WUGDASH: case RA_WUGRIDER:
|
||||
break;
|
||||
default:
|
||||
clif_skill_fail(sd,skill,USESKILL_FAIL_LEVEL,0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// perform skill-specific checks (and actions)
|
||||
switch( skill )
|
||||
{
|
||||
|
@ -1496,8 +1496,8 @@ int unit_attack(struct block_list *src,int target_id,int continuous)
|
||||
npc_click(sd,(TBL_NPC*)target); // submitted by leinsirk10 [Celest]
|
||||
return 0;
|
||||
}
|
||||
if( pc_is90overweight(sd) )
|
||||
{ // overweight - stop attacking
|
||||
if( pc_is90overweight(sd) || pc_isridingwug(sd) )
|
||||
{ // overweight or mounted on warg - stop attacking
|
||||
unit_stop_attack(src);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user