Skip to content

Commit

Permalink
Job Improvement Project - Super Novice (#4429)
Browse files Browse the repository at this point in the history
  • Loading branch information
aleos89 committed May 7, 2020
1 parent 956f14b commit 931155e
Show file tree
Hide file tree
Showing 12 changed files with 163 additions and 29 deletions.
4 changes: 2 additions & 2 deletions db/job_db2.txt
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion db/re/job_db1.txt
Expand Up @@ -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
Expand Down
25 changes: 25 additions & 0 deletions db/re/skill_db.yml
Expand Up @@ -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
Expand Down
52 changes: 46 additions & 6 deletions db/re/skill_tree.txt
Expand Up @@ -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)
Expand Down Expand Up @@ -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#
Expand Down
11 changes: 11 additions & 0 deletions sql-files/upgrades/upgrade_20200506.sql
@@ -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;
7 changes: 7 additions & 0 deletions src/map/battle.cpp
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions src/map/pc.hpp
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions src/map/script_constants.hpp
Expand Up @@ -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
Expand Down
33 changes: 25 additions & 8 deletions src/map/skill.cpp
Expand Up @@ -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 ((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 (sd && (skill = pc_skillheal_bonus(sd, skill_id)))
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
Expand Down Expand Up @@ -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 )
Expand Down
4 changes: 4 additions & 0 deletions src/map/skill.hpp
Expand Up @@ -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,
Expand Down
47 changes: 37 additions & 10 deletions src/map/status.cpp
Expand Up @@ -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,
Expand Down Expand Up @@ -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) {
Expand All @@ -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.
Expand Down Expand Up @@ -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) {
Expand All @@ -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
Expand Down Expand Up @@ -5572,13 +5584,17 @@ 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) {
if ((pc_checkskill(sd, SU_SV_STEMSPEAR) + pc_checkskill(sd, SU_CN_POWDERING) + pc_checkskill(sd, SU_CN_METEOR) + pc_checkskill(sd, SU_SV_ROOTTWIST) +
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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

3 comments on commit 931155e

@gidzdlcrz
Copy link

@gidzdlcrz gidzdlcrz commented on 931155e May 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using latest pull from git. Im experiencing map error that has to do with pc.c? Invalid skill for 5075 and 5076. It says its not declared in pc.c

image

@reunite-ro
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I saw this error too in some servers

[Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365).

@akiyamamio16
Copy link

@akiyamamio16 akiyamamio16 commented on 931155e May 10, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I saw this error too in some servers

[Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365). [Error]: Skill '5075' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5075 (char_id=365). [Error]: Skill '5077' is undefined! pc.cpp:6149::pc_checkskill [Error]: pc_checkskill: Invalid skill id 5077 (char_id=365).

This error shows on Pre-renewal servers.. because there's no skill from db/pre-re on this.. just simply add them on your pre-re db.

Please sign in to comment.