Job Improvement Project - Super Novice (#4429)
* Fixes #4427. * kRO Changelog: http://ro.gnjoy.com/news/notice/View.asp?BBSMode=10001&seq=7081 Thanks to @Rytech2!
This commit is contained in:
parent
956f14bbfd
commit
931155ee33
@ -280,9 +280,9 @@
|
||||
// Baby Mechanic (Mado)
|
||||
4112,6,1,0,0,1,0,6,2,5,4,0,0,4,6,0,0,2,0,3,3,4,5,0,0,3,6,0,0,3,0,1,1,3,6,0,0,4,4,0,0,0,3,3,1,1,0,0,5,2,0,6,1,5,0,4,3,2,0,5,1
|
||||
// Super Novice (Expanded)
|
||||
4190,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0
|
||||
4190,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,4,5,0
|
||||
// Super Baby (Expanded)
|
||||
4191,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0
|
||||
4191,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,0,3,0,4,5,0,6,0,1,2,4,5,0
|
||||
// Kagerou
|
||||
4211,5,0,4,0,2,3,0,1,6,0,5,1,2,0,4,6,3,0,1,5,2,0,6,3,4,0,5,0,2,0,1,4,0,5,4,0,3,5,1,0,2,4,1,0,5,6,2,1,0,5
|
||||
// Oboro
|
||||
|
@ -262,7 +262,7 @@
|
||||
// Baby Mechanic (Mado)
|
||||
4112, 30000,90 ,500 ,400 ,40 ,60 ,65 ,200 ,200 ,200 ,45 ,48 ,48 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,6
|
||||
// Super Novice (Expanded)
|
||||
4190, 20000,0 ,500 ,100 ,40 ,55 ,57 ,200 ,200 ,200 ,50 ,200 ,50 ,55 ,65 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,65 ,10
|
||||
4190, 20000,0 ,5000 ,500 ,40 ,55 ,57 ,200 ,200 ,200 ,50 ,200 ,50 ,55 ,65 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,65 ,10
|
||||
// Super Baby (Expanded)
|
||||
4191, 20000,0 ,500 ,100 ,40 ,55 ,57 ,200 ,200 ,200 ,50 ,200 ,50 ,55 ,65 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,65 ,10
|
||||
// Kagerou
|
||||
|
@ -33561,6 +33561,31 @@ Body:
|
||||
FixedCastTime: 2000
|
||||
Requires:
|
||||
SpCost: 70
|
||||
- Id: 5075
|
||||
Name: NV_BREAKTHROUGH
|
||||
Description: Break Through
|
||||
MaxLevel: 5
|
||||
- Id: 5076
|
||||
Name: NV_HELPANGEL
|
||||
Description: Help Angel
|
||||
MaxLevel: 1
|
||||
TargetType: Self
|
||||
DamageFlags:
|
||||
NoDamage: true
|
||||
Splash: true
|
||||
Hit: Single
|
||||
HitCount: 1
|
||||
SplashArea: 7
|
||||
CastCancel: true
|
||||
AfterCastActDelay: 500
|
||||
Duration1: 20000
|
||||
Cooldown: 300000
|
||||
Requires:
|
||||
SpCost: 1
|
||||
- Id: 5077
|
||||
Name: NV_TRANSCENDENCE
|
||||
Description: Transcendence
|
||||
MaxLevel: 5
|
||||
- Id: 8001
|
||||
Name: HLIF_HEAL
|
||||
Description: Healing Touch
|
||||
|
@ -5455,34 +5455,54 @@
|
||||
4190,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
|
||||
4190,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
|
||||
4190,66,5,0,0,0,0,0,0,0,0,0,0 //PR_IMPOSITIO#Impositio Manus#
|
||||
4190,68,5,31,1,66,3,0,0,0,0,0,0 //PR_ASPERSIO#Aspersio#
|
||||
4190,70,10,28,1,0,0,0,0,0,0,0,0 //PR_SANCTUARY#Sanctuary#
|
||||
4190,72,1,0,0,0,0,0,0,0,0,0,0 //PR_STRECOVERY#Status Recovery#
|
||||
4190,74,5,0,0,0,0,0,0,0,0,0,0 //PR_MAGNIFICAT#Magnificat#
|
||||
4190,75,5,70,7,0,0,0,0,0,0,0,0 //PR_GLORIA#Gloria#
|
||||
4190,80,10,18,1,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#Fire Pillar#
|
||||
4190,81,10,20,1,10,1,0,0,0,0,0,0 //WZ_SIGHTRASHER#Sightrasher#
|
||||
4190,83,10,81,2,21,1,0,0,0,0,0,0 //WZ_METEOR#Meteor Storm#
|
||||
4190,84,10,11,1,20,1,0,0,0,0,0,0 //WZ_JUPITEL#Jupiter Thunder#
|
||||
4190,85,10,21,1,84,5,0,0,0,0,0,0 //WZ_VERMILION#Lord of Vermilion#
|
||||
4190,86,5,14,1,20,1,0,0,0,0,0,0 //WZ_WATERBALL#Water Ball#
|
||||
4190,87,10,16,1,15,1,0,0,0,0,0,0 //WZ_ICEWALL#Ice Wall#
|
||||
4190,88,10,87,1,0,0,0,0,0,0,0,0 //WZ_FROSTNOVA#Frost Nova#
|
||||
4190,89,10,15,1,84,3,0,0,0,0,0,0 //WZ_STORMGUST#Storm Gust#
|
||||
4190,90,5,16,1,0,0,0,0,0,0,0,0 //WZ_EARTHSPIKE#Earth Spike#
|
||||
4190,91,5,90,3,0,0,0,0,0,0,0,0 //WZ_HEAVENDRIVE#Heaven's Drive#
|
||||
4190,92,5,91,1,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#Quagmire#
|
||||
4190,93,1,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#Sense#
|
||||
4190,105,1,0,0,0,0,0,0,0,0,0,0 //BS_HILTBINDING#Hilt Binding#
|
||||
4190,107,10,105,1,0,0,0,0,0,0,0,0 //BS_WEAPONRESEARCH#Weaponry Research#
|
||||
4190,108,1,107,1,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#Weapon Repair#
|
||||
4190,115,5,0,0,0,0,0,0,0,0,0,0 //HT_SKIDTRAP#Skid Trap#
|
||||
4190,119,5,120,1,0,0,0,0,0,0,0,0 //HT_SANDMAN#Sandman#
|
||||
4190,120,5,115,1,0,0,0,0,0,0,0,0 //HT_FLASHER#Flasher#
|
||||
4190,121,5,120,1,0,0,0,0,0,0,0,0 //HT_FREEZINGTRAP#Freezing Trap#
|
||||
4190,116,5,0,0,0,0,0,0,0,0,0,0 //HT_LANDMINE#Land Mine#
|
||||
4190,126,10,0,0,0,0,0,0,0,0,0,0 //HT_BEASTBANE#Beast Bane#
|
||||
4190,138,10,52,1,0,0,0,0,0,0,0,0 //AS_ENCHANTPOISON#Enchant Poison#
|
||||
4190,139,10,138,3,0,0,0,0,0,0,0,0 //AS_POISONREACT#Poison React#
|
||||
4190,140,10,138,5,0,0,0,0,0,0,0,0 //AS_VENOMDUST#Venom Dust#
|
||||
4190,141,10,139,5,140,5,0,0,0,0,0,0 //AS_SPLASHER#Venom Splasher#
|
||||
4190,210,10,50,1,0,0,0,0,0,0,0,0 //RG_SNATCHER#Gank#
|
||||
4190,211,10,210,4,0,0,0,0,0,0,0,0 //RG_STEALCOIN#Mug#
|
||||
4190,212,10,211,4,0,0,0,0,0,0,0,0 //RG_BACKSTAP#Back Stab#
|
||||
4190,213,5,51,1,0,0,0,0,0,0,0,0 //RG_TUNNELDRIVE#Stalk#
|
||||
4190,214,5,212,2,213,2,0,0,0,0,0,0 //RG_RAID#Sightless Raid#
|
||||
4190,226,10,0,0,0,0,0,0,0,0,0,0 //AM_AXEMASTERY#Axe Mastery#
|
||||
4190,248,10,0,0,0,0,0,0,0,0,0,0 //CR_TRUST#Faith#
|
||||
4190,249,10,0,0,0,0,0,0,0,0,0,0 //CR_AUTOGUARD#Guard#
|
||||
4190,250,5,249,5,0,0,0,0,0,0,0,0 //CR_SHIELDCHARGE#Smite#
|
||||
4190,251,5,250,3,0,0,0,0,0,0,0,0 //CR_SHIELDBOOMERANG#Shield Boomerang#
|
||||
4190,253,10,248,7,0,0,0,0,0,0,0,0 //CR_HOLYCROSS#Holy Cross#
|
||||
4190,259,10,23,10,22,10,0,0,0,0,0,0 //MO_IRONHAND#Iron Fists#
|
||||
4190,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
|
||||
4190,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
|
||||
4190,270,5,262,1,0,0,0,0,0,0,0,0 //MO_EXPLOSIONSPIRITS#Fury#
|
||||
4190,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
|
||||
4190,401,1,261,5,262,1,270,5,0,0,0,0 //CH_SOULCOLLECT#Hyper Spirit Sphere#
|
||||
4190,5075,5,0,0,0,0,0,0,0,0,0,0 //NV_BREAKTHROUGH#Break Through#
|
||||
4190,5076,1,0,0,0,0,0,0,0,0,0,0 //NV_HELPANGEL#Help Angel#
|
||||
4190,5077,5,0,0,0,0,0,0,0,0,0,0 //NV_TRANSCENDENCE#Transcendence#
|
||||
4190,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
|
||||
4190,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
|
||||
//Super Baby (Expanded)
|
||||
@ -5540,34 +5560,54 @@
|
||||
4191,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
|
||||
4191,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
|
||||
4191,66,5,0,0,0,0,0,0,0,0,0,0 //PR_IMPOSITIO#Impositio Manus#
|
||||
4191,68,5,31,1,66,3,0,0,0,0,0,0 //PR_ASPERSIO#Aspersio#
|
||||
4191,70,10,28,1,0,0,0,0,0,0,0,0 //PR_SANCTUARY#Sanctuary#
|
||||
4191,72,1,0,0,0,0,0,0,0,0,0,0 //PR_STRECOVERY#Status Recovery#
|
||||
4191,74,5,0,0,0,0,0,0,0,0,0,0 //PR_MAGNIFICAT#Magnificat#
|
||||
4191,75,5,70,7,0,0,0,0,0,0,0,0 //PR_GLORIA#Gloria#
|
||||
4191,80,10,18,1,0,0,0,0,0,0,0,0 //WZ_FIREPILLAR#Fire Pillar#
|
||||
4191,81,10,20,1,10,1,0,0,0,0,0,0 //WZ_SIGHTRASHER#Sightrasher#
|
||||
4191,83,10,81,2,21,1,0,0,0,0,0,0 //WZ_METEOR#Meteor Storm#
|
||||
4191,84,10,11,1,20,1,0,0,0,0,0,0 //WZ_JUPITEL#Jupiter Thunder#
|
||||
4191,85,10,21,1,84,5,0,0,0,0,0,0 //WZ_VERMILION#Lord of Vermilion#
|
||||
4191,86,5,14,1,20,1,0,0,0,0,0,0 //WZ_WATERBALL#Water Ball#
|
||||
4191,87,10,16,1,15,1,0,0,0,0,0,0 //WZ_ICEWALL#Ice Wall#
|
||||
4191,88,10,87,1,0,0,0,0,0,0,0,0 //WZ_FROSTNOVA#Frost Nova#
|
||||
4191,89,10,15,1,84,3,0,0,0,0,0,0 //WZ_STORMGUST#Storm Gust#
|
||||
4191,90,5,16,1,0,0,0,0,0,0,0,0 //WZ_EARTHSPIKE#Earth Spike#
|
||||
4191,91,5,90,3,0,0,0,0,0,0,0,0 //WZ_HEAVENDRIVE#Heaven's Drive#
|
||||
4191,92,5,91,1,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#Quagmire#
|
||||
4191,93,1,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#Sense#
|
||||
4191,105,1,0,0,0,0,0,0,0,0,0,0 //BS_HILTBINDING#Hilt Binding#
|
||||
4191,107,10,105,1,0,0,0,0,0,0,0,0 //BS_WEAPONRESEARCH#Weaponry Research#
|
||||
4191,108,1,107,1,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#Weapon Repair#
|
||||
4191,115,5,0,0,0,0,0,0,0,0,0,0 //HT_SKIDTRAP#Skid Trap#
|
||||
4191,119,5,120,1,0,0,0,0,0,0,0,0 //HT_SANDMAN#Sandman#
|
||||
4191,120,5,115,1,0,0,0,0,0,0,0,0 //HT_FLASHER#Flasher#
|
||||
4191,121,5,120,1,0,0,0,0,0,0,0,0 //HT_FREEZINGTRAP#Freezing Trap#
|
||||
4191,116,5,0,0,0,0,0,0,0,0,0,0 //HT_LANDMINE#Land Mine#
|
||||
4191,126,10,0,0,0,0,0,0,0,0,0,0 //HT_BEASTBANE#Beast Bane#
|
||||
4191,138,10,52,1,0,0,0,0,0,0,0,0 //AS_ENCHANTPOISON#Enchant Poison#
|
||||
4191,139,10,138,3,0,0,0,0,0,0,0,0 //AS_POISONREACT#Poison React#
|
||||
4191,140,10,138,5,0,0,0,0,0,0,0,0 //AS_VENOMDUST#Venom Dust#
|
||||
4191,141,10,139,5,140,5,0,0,0,0,0,0 //AS_SPLASHER#Venom Splasher#
|
||||
4191,210,10,50,1,0,0,0,0,0,0,0,0 //RG_SNATCHER#Gank#
|
||||
4191,211,10,210,4,0,0,0,0,0,0,0,0 //RG_STEALCOIN#Mug#
|
||||
4191,212,10,211,4,0,0,0,0,0,0,0,0 //RG_BACKSTAP#Back Stab#
|
||||
4191,213,5,51,1,0,0,0,0,0,0,0,0 //RG_TUNNELDRIVE#Stalk#
|
||||
4191,214,5,212,2,213,2,0,0,0,0,0,0 //RG_RAID#Sightless Raid#
|
||||
4191,226,10,0,0,0,0,0,0,0,0,0,0 //AM_AXEMASTERY#Axe Mastery#
|
||||
4191,248,10,0,0,0,0,0,0,0,0,0,0 //CR_TRUST#Faith#
|
||||
4191,249,10,0,0,0,0,0,0,0,0,0,0 //CR_AUTOGUARD#Guard#
|
||||
4191,250,5,249,5,0,0,0,0,0,0,0,0 //CR_SHIELDCHARGE#Smite#
|
||||
4191,251,5,250,3,0,0,0,0,0,0,0,0 //CR_SHIELDBOOMERANG#Shield Boomerang#
|
||||
4191,253,10,248,7,0,0,0,0,0,0,0,0 //CR_HOLYCROSS#Holy Cross#
|
||||
4191,259,10,23,10,22,10,0,0,0,0,0,0 //MO_IRONHAND#Iron Fists#
|
||||
4191,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
|
||||
4191,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
|
||||
4191,270,5,262,1,0,0,0,0,0,0,0,0 //MO_EXPLOSIONSPIRITS#Fury#
|
||||
4191,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
|
||||
4191,401,1,261,5,262,1,270,5,0,0,0,0 //CH_SOULCOLLECT#Hyper Spirit Sphere#
|
||||
4191,5075,5,0,0,0,0,0,0,0,0,0,0 //NV_BREAKTHROUGH#Break Through#
|
||||
4191,5076,1,0,0,0,0,0,0,0,0,0,0 //NV_HELPANGEL#Help Angel#
|
||||
4191,5077,5,0,0,0,0,0,0,0,0,0,0 //NV_TRANSCENDENCE#Transcendence#
|
||||
4191,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
|
||||
4191,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
|
||||
4191,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
|
||||
|
11
sql-files/upgrades/upgrade_20200506.sql
Normal file
11
sql-files/upgrades/upgrade_20200506.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- HT_SANDMAN
|
||||
UPDATE `char` c, `skill` s SET `c`.skill_point = `c`.skill_point + `s`.lv WHERE (`c`.class = 4190 OR `c`.class = 4191) AND `s`.id = 119 AND `c`.char_id = `s`.char_id;
|
||||
DELETE FROM `skill` USING `skill`, `char` WHERE (`char`.class = 4190 OR `char`.class = 4191) AND `skill`.id = 119 AND `char`.char_id = `skill`.char_id;
|
||||
|
||||
-- HT_FLASHER
|
||||
UPDATE `char` c, `skill` s SET `c`.skill_point = `c`.skill_point + `s`.lv WHERE (`c`.class = 4190 OR `c`.class = 4191) AND `s`.id = 120 AND `c`.char_id = `s`.char_id;
|
||||
DELETE FROM `skill` USING `skill`, `char` WHERE (`char`.class = 4190 OR `char`.class = 4191) AND `skill`.id = 120 AND `char`.char_id = `skill`.char_id;
|
||||
|
||||
-- HT_FREEZINGTRAP
|
||||
UPDATE `char` c, `skill` s SET `c`.skill_point = `c`.skill_point + `s`.lv WHERE (`c`.class = 4190 OR `c`.class = 4191) AND `s`.id = 121 AND `c`.char_id = `s`.char_id;
|
||||
DELETE FROM `skill` USING `skill`, `char` WHERE (`char`.class = 4190 OR `char`.class = 4191) AND `skill`.id = 121 AND `char`.char_id = `skill`.char_id;
|
@ -3112,6 +3112,13 @@ static void battle_calc_attack_masteries(struct Damage* wd, struct block_list *s
|
||||
#endif
|
||||
}
|
||||
|
||||
if (skill_id == NV_BREAKTHROUGH) {
|
||||
ATK_ADD(wd->damage, wd->damage2, 15 * skill_lv + (skill_lv > 4 ? 25 : 0));
|
||||
#ifdef RENEWAL
|
||||
ATK_ADD(wd->masteryAtk, wd->masteryAtk2, 15 * skill_lv + (skill_lv > 4 ? 25 : 0));
|
||||
#endif
|
||||
}
|
||||
|
||||
switch(skill_id) {
|
||||
case RA_WUGDASH:
|
||||
case RA_WUGSTRIKE:
|
||||
|
@ -57,8 +57,8 @@ enum sc_type : int16;
|
||||
#define ACHIEVEMENTLEVEL "AchievementLevel"
|
||||
|
||||
//Update this max as necessary. 55 is the value needed for Super Baby currently
|
||||
//Raised to 85 since Expanded Super Baby needs it.
|
||||
#define MAX_SKILL_TREE 85
|
||||
//Raised to 105 since Expanded Super Baby needs it.
|
||||
#define MAX_SKILL_TREE 105
|
||||
//Total number of classes (for data storage)
|
||||
#define CLASS_COUNT (JOB_MAX - JOB_NOVICE_HIGH + JOB_MAX_BASIC)
|
||||
|
||||
|
@ -1578,6 +1578,7 @@
|
||||
export_constant(SC_HELLS_PLANT);
|
||||
export_constant(SC_INCREASE_MAXHP);
|
||||
export_constant(SC_INCREASE_MAXSP);
|
||||
export_constant(SC_HELPANGEL);
|
||||
#ifdef RENEWAL
|
||||
export_constant(SC_EXTREMITYFIST2);
|
||||
#endif
|
||||
|
@ -595,27 +595,43 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk
|
||||
if( (!heal || (target && target->type == BL_MER)) && skill_id != NPC_EVILLAND )
|
||||
hp >>= 1;
|
||||
|
||||
if (sd && ((skill = pc_checkskill(sd, SU_POWEROFSEA)) > 0)) {
|
||||
if (sd) {
|
||||
if (pc_checkskill(sd, SU_POWEROFSEA) > 0) {
|
||||
#ifdef RENEWAL
|
||||
hp_bonus += 10;
|
||||
hp_bonus += 10;
|
||||
#else
|
||||
hp += hp * 10 / 100;
|
||||
hp += hp * 10 / 100;
|
||||
#endif
|
||||
|
||||
if (pc_checkskill(sd, SU_TUNABELLY) == 5 && pc_checkskill(sd, SU_TUNAPARTY) == 5 && pc_checkskill(sd, SU_BUNCHOFSHRIMP) == 5 && pc_checkskill(sd, SU_FRESHSHRIMP) == 5)
|
||||
if (pc_checkskill(sd, SU_TUNABELLY) == 5 && pc_checkskill(sd, SU_TUNAPARTY) == 5 && pc_checkskill(sd, SU_BUNCHOFSHRIMP) == 5 && pc_checkskill(sd, SU_FRESHSHRIMP) == 5)
|
||||
#ifdef RENEWAL
|
||||
hp_bonus += 20;
|
||||
hp_bonus += 20;
|
||||
#else
|
||||
hp += hp * 20 / 100;
|
||||
hp += hp * 20 / 100;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (sd && (skill = pc_skillheal_bonus(sd, skill_id)))
|
||||
if ((skill = pc_checkskill(sd, NV_BREAKTHROUGH)) > 0)
|
||||
#ifdef RENEWAL
|
||||
hp_bonus += 2;
|
||||
#else
|
||||
hp += hp * skill * 2 / 100;
|
||||
#endif
|
||||
|
||||
if ((skill = pc_checkskill(sd, NV_TRANSCENDENCE)) > 0)
|
||||
#ifdef RENEWAL
|
||||
hp_bonus += 3;
|
||||
#else
|
||||
hp += hp * skill * 3 / 100;
|
||||
#endif
|
||||
|
||||
if (skill = pc_skillheal_bonus(sd, skill_id))
|
||||
#ifdef RENEWAL
|
||||
hp_bonus += skill;
|
||||
#else
|
||||
hp += hp * skill / 100;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (tsd && (skill = pc_skillheal2_bonus(tsd, skill_id)))
|
||||
#ifdef RENEWAL
|
||||
@ -7690,6 +7706,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case CASH_INCAGI:
|
||||
case CASH_ASSUMPTIO:
|
||||
case WM_FRIGG_SONG:
|
||||
case NV_HELPANGEL:
|
||||
if( sd == NULL || sd->status.party_id == 0 || (flag & 1) )
|
||||
clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
|
||||
else if( sd )
|
||||
|
@ -1957,6 +1957,10 @@ enum e_skill {
|
||||
|
||||
AB_VITUPERATUM = 5072,
|
||||
AB_CONVENIO,
|
||||
ALL_LIGHTNING_STORM,
|
||||
NV_BREAKTHROUGH,
|
||||
NV_HELPANGEL,
|
||||
NV_TRANSCENDENCE,
|
||||
|
||||
HLIF_HEAL = 8001,
|
||||
HLIF_AVOID,
|
||||
|
@ -1099,6 +1099,10 @@ void initChangeTables(void)
|
||||
set_sc( SP_SOULREAPER , SC_SOULREAPER , EFST_SOULREAPER , SCB_NONE );
|
||||
set_sc( SP_SOULCOLLECT , SC_SOULCOLLECT , EFST_SOULCOLLECT , SCB_NONE );
|
||||
|
||||
#ifdef RENEWAL
|
||||
set_sc( NV_HELPANGEL , SC_HELPANGEL , EFST_HELPANGEL , SCB_NONE );
|
||||
#endif
|
||||
|
||||
/* Storing the target job rather than simply SC_SPIRIT simplifies code later on */
|
||||
SkillStatusChangeTable[skill_get_index(SL_ALCHEMIST)] = (sc_type)MAPID_ALCHEMIST,
|
||||
SkillStatusChangeTable[skill_get_index(SL_MONK)] = (sc_type)MAPID_MONK,
|
||||
@ -3299,11 +3303,11 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
|
||||
//Only for BL_PC
|
||||
if (bl->type == BL_PC) {
|
||||
struct map_session_data *sd = map_id2sd(bl->id);
|
||||
uint8 i;
|
||||
uint16 skill_lv;
|
||||
|
||||
bonus += sd->bonus.hp;
|
||||
if ((i = pc_checkskill(sd,CR_TRUST)) > 0)
|
||||
bonus += i * 200;
|
||||
if ((skill_lv = pc_checkskill(sd,CR_TRUST)) > 0)
|
||||
bonus += skill_lv * 200;
|
||||
if (pc_checkskill(sd,SU_SPRITEMABLE) > 0)
|
||||
bonus += 1000;
|
||||
if (pc_checkskill(sd, SU_POWEROFSEA) > 0) {
|
||||
@ -3312,6 +3316,10 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
|
||||
pc_checkskill(sd, SU_GROOMING) + pc_checkskill(sd, SU_PURRING) + pc_checkskill(sd, SU_SHRIMPARTY)) > 19)
|
||||
bonus += 2000;
|
||||
}
|
||||
if ((skill_lv = pc_checkskill(sd, NV_BREAKTHROUGH)) > 0)
|
||||
bonus += 350 * skill_lv + (skill_lv > 4 ? 250 : 0);
|
||||
if ((skill_lv = pc_checkskill(sd, NV_TRANSCENDENCE)) > 0)
|
||||
bonus += 350 * skill_lv + (skill_lv > 4 ? 250 : 0);
|
||||
#ifndef HP_SP_TABLES
|
||||
if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->status.base_level >= 99)
|
||||
bonus += 2000; // Supernovice lvl99 hp bonus.
|
||||
@ -3467,15 +3475,15 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
|
||||
//Only for BL_PC
|
||||
if (bl->type == BL_PC) {
|
||||
struct map_session_data *sd = map_id2sd(bl->id);
|
||||
uint8 i;
|
||||
uint16 skill_lv;
|
||||
|
||||
bonus += sd->bonus.sp;
|
||||
if ((i = pc_checkskill(sd,SL_KAINA)) > 0)
|
||||
bonus += 30 * i;
|
||||
if ((i = pc_checkskill(sd,RA_RESEARCHTRAP)) > 0)
|
||||
bonus += 200 + 20 * i;
|
||||
if ((i = pc_checkskill(sd,WM_LESSON)) > 0)
|
||||
bonus += 30 * i;
|
||||
if ((skill_lv = pc_checkskill(sd,SL_KAINA)) > 0)
|
||||
bonus += 30 * skill_lv;
|
||||
if ((skill_lv = pc_checkskill(sd,RA_RESEARCHTRAP)) > 0)
|
||||
bonus += 200 + 20 * skill_lv;
|
||||
if ((skill_lv = pc_checkskill(sd,WM_LESSON)) > 0)
|
||||
bonus += 30 * skill_lv;
|
||||
if (pc_checkskill(sd,SU_SPRITEMABLE) > 0)
|
||||
bonus += 100;
|
||||
if (pc_checkskill(sd, SU_POWEROFSEA) > 0) {
|
||||
@ -3484,6 +3492,10 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
|
||||
pc_checkskill(sd, SU_GROOMING) + pc_checkskill(sd, SU_PURRING) + pc_checkskill(sd, SU_SHRIMPARTY)) > 19)
|
||||
bonus += 200;
|
||||
}
|
||||
if ((skill_lv = pc_checkskill(sd, NV_BREAKTHROUGH)) > 0)
|
||||
bonus += 30 * skill_lv + (skill_lv > 4 ? 50 : 0);
|
||||
if ((skill_lv = pc_checkskill(sd, NV_TRANSCENDENCE)) > 0)
|
||||
bonus += 30 * skill_lv + (skill_lv > 4 ? 50 : 0);
|
||||
}
|
||||
|
||||
//Bonus by SC
|
||||
@ -5572,6 +5584,8 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
|
||||
|
||||
// Any +MATK you get from skills and cards, including cards in weapon, is added here.
|
||||
if (sd) {
|
||||
uint16 skill_lv;
|
||||
|
||||
if (sd->bonus.ematk > 0)
|
||||
status->matk_min += sd->bonus.ematk;
|
||||
if (pc_checkskill(sd, SU_POWEROFLAND) > 0) {
|
||||
@ -5579,6 +5593,8 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
|
||||
pc_checkskill(sd, SU_CHATTERING) + pc_checkskill(sd, SU_MEOWMEOW) + pc_checkskill(sd, SU_NYANGGRASS)) > 19)
|
||||
status->matk_min += status->matk_min * 20 / 100;
|
||||
}
|
||||
if ((skill_lv = pc_checkskill(sd, NV_TRANSCENDENCE)) > 0)
|
||||
status->matk_min += 15 * skill_lv + (skill_lv > 4 ? 25 : 0);
|
||||
}
|
||||
|
||||
status->matk_min = status_calc_ematk(bl, sc, status->matk_min);
|
||||
@ -11958,6 +11974,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
val1 = 15; // Heal Power rate bonus
|
||||
val2 = 30; // SP Recovery rate bonus
|
||||
break;
|
||||
case SC_HELPANGEL:
|
||||
tick_time = 1000;
|
||||
val4 = tick / tick_time;
|
||||
break;
|
||||
|
||||
case SC_SUNSTANCE:
|
||||
val2 = 2 + val1; // ATK Increase
|
||||
@ -14657,6 +14677,13 @@ TIMER_FUNC(status_change_timer){
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case SC_HELPANGEL:
|
||||
if (--(sce->val4) >= 0) {
|
||||
status_heal(bl, 1000, 350, 2);
|
||||
sc_timer_next(1000 + tick);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// If status has an interval and there is at least 100ms remaining time, wait for next interval
|
||||
|
@ -924,6 +924,8 @@ enum sc_type : int16 {
|
||||
SC_INCREASE_MAXHP, // EFST_ATKER_ASPD
|
||||
SC_INCREASE_MAXSP, // EFST_ATKER_MOVESPEED
|
||||
|
||||
SC_HELPANGEL,
|
||||
|
||||
#ifdef RENEWAL
|
||||
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user