Implemented missing skills (#7552)

* Implemented NPC_BLEEDING2
  Copy from NPC_BLEEDING for now except
  * element always Neutral
  * differents rates

* Implemented NPC_HELLJUDGEMENT2
  Copy from NPC_HELLJUDGEMENT except
  * element neutral
  * skills inflicts a random status effect

* Implemented NPC_WIDEFREEZE2
  Copy from NPC_WIDEFREEZE

* Implemented NPC_ICEBREATH2
  Copy from NPC_ICEBREATH except
  * Chance 100% instead of 70%
  * Splash area 4 instead of 3

* Implemented NPC_WIDEBLEEDING2
  Copy from NPC_WIDEBLEEDING

* Implemented NPC_WIDECONFUSE2
  Copy from NPC_WIDECONFUSE

* Implemented NPC_WIDESILENCE2
  Copy from NPC_WIDESILENCE

* Implemented NPC_WIDESTUN2
  Copy from NPC_WIDESTUN

* Implemented NPC_WIDESILENCE2
  Copy from NPC_WIDESILENCE

* Implemented NPC_WIDESLEEP2
  Copy from NPC_WIDESLEEP

* Implemented NPC_WIDECURSE2
  Copy from NPC_WIDECURSE

* Implemented NPC_WIDESTONE2
  Copy from NPC_WIDESTONE

Thanks to @OptimusM, @Lemongrass3110, @aleos89 !
This commit is contained in:
Atemo
2023-01-24 15:06:38 +01:00
committed by GitHub
parent 7e62670882
commit 39559c125b
5 changed files with 331 additions and 1 deletions

View File

@@ -1637,6 +1637,9 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case NPC_BLEEDING:
sc_start(src,bl,SC_BLEEDING,(20*skill_lv),skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case NPC_BLEEDING2:
sc_start(src,bl,SC_BLEEDING,(50+10*skill_lv),skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case NPC_CHANGEUNDEAD:
sc_start(src, bl, SC_CHANGEUNDEAD, (10 * skill_lv), skill_lv, skill_get_time2(skill_id, skill_lv));
break;
@@ -1646,6 +1649,9 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case NPC_ICEBREATH:
sc_start(src,bl,SC_FREEZE,70,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case NPC_ICEBREATH2:
sc_start(src,bl,SC_FREEZE,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case NPC_MENTALBREAKER:
{ //Based on observations by Tharis, Mental Breaker should do SP damage
//equal to Matk*skLevel.
@@ -1775,6 +1781,28 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case NPC_HELLJUDGEMENT:
sc_start(src,bl,SC_CURSE,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case NPC_HELLJUDGEMENT2:
switch(rnd()%6) {
case 0:
sc_start(src,bl,SC_SLEEP,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case 1:
sc_start(src,bl,SC_CONFUSION,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case 2:
sc_start(src,bl,SC_HALLUCINATION,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case 3:
sc_start(src,bl,SC_STUN,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
case 4:
sc_start(src,bl,SC_FEAR,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
default:
sc_start(src,bl,SC_CURSE,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
}
break;
case NPC_CRITICALWOUND:
sc_start(src,bl,SC_CRITICALWOUND,100,skill_lv,skill_get_time2(skill_id,skill_lv));
break;
@@ -5130,6 +5158,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
case HFLI_MOON: //[orn]
case HFLI_SBR44: //[orn]
case NPC_BLEEDING:
case NPC_BLEEDING2:
case NPC_CRITICALWOUND:
case NPC_HELLPOWER:
case RK_SONICWAVE:
@@ -5330,6 +5359,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
case NPC_DARKNESSBREATH:
case NPC_FIREBREATH:
case NPC_ICEBREATH:
case NPC_ICEBREATH2:
case NPC_THUNDERBREATH:
case AG_STORM_CANNON:
case AG_CRIMSON_ARROW:
@@ -5508,6 +5538,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
case NPC_PULSESTRIKE:
case NPC_PULSESTRIKE2:
case NPC_HELLJUDGEMENT:
case NPC_HELLJUDGEMENT2:
case NPC_VAMPIRE_GIFT:
case NPC_MAXPAIN_ATK:
case NPC_JACKFROST:
@@ -8477,6 +8508,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case NC_INFRAREDSCAN:
case NPC_VAMPIRE_GIFT:
case NPC_HELLJUDGEMENT:
case NPC_HELLJUDGEMENT2:
case NPC_PULSESTRIKE:
case LG_MOONSLASHER:
skill_castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
@@ -10445,13 +10477,21 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
break;
}
case NPC_WIDEBLEEDING:
case NPC_WIDEBLEEDING2:
case NPC_WIDECONFUSE:
case NPC_WIDECONFUSE2:
case NPC_WIDECURSE:
case NPC_WIDECURSE2:
case NPC_WIDEFREEZE:
case NPC_WIDEFREEZE2:
case NPC_WIDESLEEP:
case NPC_WIDESLEEP2:
case NPC_WIDESILENCE:
case NPC_WIDESILENCE2:
case NPC_WIDESTONE:
case NPC_WIDESTONE2:
case NPC_WIDESTUN:
case NPC_WIDESTUN2:
case NPC_SLOWCAST:
case NPC_WIDEHELLDIGNITY:
case NPC_WIDEHEALTHFEAR:
@@ -19425,6 +19465,7 @@ int skill_attack_area(struct block_list *bl, va_list ap)
case NPC_DARKNESSBREATH:
case NPC_FIREBREATH:
case NPC_ICEBREATH:
case NPC_ICEBREATH2:
case NPC_THUNDERBREATH:
return (int)skill_attack(atk_type,src,dsrc,bl,skill_id,skill_lv,tick,flag);
default: