Skip to content

Commit

Permalink
Skill DB clean ups
Browse files Browse the repository at this point in the history
* Changed skill_db array to better memory allocation.
* Reduced MAX_SKILL_LEVEL from 100 to 10 (part of Hercules HerculesWS/Hercules@0f4a50d), also has changes on skill_get checks for skill level that more than 10.
* Reduced MAX_SKILL from 5020 to 1200 (actually only 1109 skills are used).
* Added macros for checking Homunculus, Guild, Mercenary, & Elemental skill ranges.
* Added skill check & index validation when player logged in and when @reloadskilldb.
* Corrected `enum e_skill_flag` order for SKILL_FLAG_REPLACED_LV_0's sake.
* Merged 'addtoskill' script command just as alias of 'skill' script command.
* Fixed #277
* Changed 'skill' script command flag to constant value

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>

NOTE:
* Decreased memory usage by map-server reduced up to 50 MB.
* Decreased memory for each player because of mmo_charstatus::skill[] only has 1200 array, before is 5020.
* Please use skill_get_index() for accessing sd->status.skill[] or skill_db[], don't reckless use skill_id as array index.
* Please import upgrade_20150211_skillset.sql

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
  • Loading branch information
cydh committed Feb 12, 2015
1 parent 12a0b05 commit 9d3d342
Show file tree
Hide file tree
Showing 70 changed files with 1,489 additions and 1,196 deletions.
5 changes: 5 additions & 0 deletions db/const.txt
Expand Up @@ -4644,5 +4644,10 @@ BSF_REM_ON_MADOGEAR 0x080
BSF_REM_ON_DAMAGED 0x100
BSF_PERMANENT 0x200

SKILL_PERM 0
SKILL_TEMP 1
SKILL_TEMPLEVEL 2
SKILL_PERM_GRANT 3

false 0
true 1
19 changes: 12 additions & 7 deletions db/pre-re/skill_db.txt
Expand Up @@ -504,7 +504,7 @@
357,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, LK_CONCENTRATION,Concentration
358,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_TENSIONRELAX,Relax
359,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_BERSERK,Frenzy
//360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_FURY,Fury
360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_FURY,Fury

//****
// High Priest
Expand Down Expand Up @@ -553,10 +553,10 @@
//****
// Whitesmith
384,0,0,4,0,0x1,0,10,1,yes,0,0,0,weapon,0,0x4000, WS_MELTDOWN,Shattering Strike
//385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATECOIN,Create Coins
//386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATENUGGET,Create Nuggets
385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATECOIN,Create Coins
386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATENUGGET,Create Nuggets
387,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x4000, WS_CARTBOOST,Cart Boost
//388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, WS_SYSTEMCREATE,Auto Attack System
388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, WS_SYSTEMCREATE,Auto Attack System

//****
// Stalker
Expand Down Expand Up @@ -768,6 +768,11 @@
543,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, NJ_NEN,Soul
544,-5,6,1,0,0x40,0,10,1,no,0,0,0,weapon,0,0x0, NJ_ISSEN,Final Strike

572,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_DEATHKNIGHT,SL_DEATHKNIGHT
573,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_COLLECTOR,SL_COLLECTOR
574,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_NINJA,SL_NINJA
575,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_GUNNER,SL_GUNNER

//****
// Additional NPC Skills (Episode 11.3)
653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0,0x0, NPC_EARTHQUAKE,Earthquake
Expand Down Expand Up @@ -818,12 +823,12 @@
689,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x1000, CASH_BLESSING,Party Blessing
690,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x1000, CASH_INCAGI,Party Increase AGI
691,0,6,4,0,0x3,-1,5,1,yes,0,0x2,0,magic,0,0x0, CASH_ASSUMPTIO,Party Assumptio
//692,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_CATCRY,Cat Cry
692,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_CATCRY,Cat Cry
693,0,6,4,0,0x3,-1,1,1,yes,0,0x2,0,magic,0,0x0, ALL_PARTYFLEE,Party Flee
//694,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_ANGEL_PROTECT,Angel's Protection
//695,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_DREAM_SUMMERNIGHT,Summer Night Dream
695,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_DREAM_SUMMERNIGHT,Summer Night Dream
//696,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, NPC_CHANGEUNDEAD2,Change Undead
//697,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0, ALL_REVERSEORCISH,Reverse Orcish
697,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0, ALL_REVERSEORCISH,Reverse Orcish
698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,0x0, ALL_WEWISH,Christmas Carol
//699,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_SONKRAN,ALL_SONKRAN

Expand Down
19 changes: 12 additions & 7 deletions db/re/skill_db.txt
Expand Up @@ -504,7 +504,7 @@
357,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0, LK_CONCENTRATION,Concentration
358,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_TENSIONRELAX,Relax
359,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_BERSERK,Frenzy
//360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_FURY,Fury
360,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, LK_FURY,Fury

//****
// High Priest
Expand Down Expand Up @@ -553,10 +553,10 @@
//****
// Whitesmith
384,0,0,4,0,0x1,0,10,1,yes,0,0,0,weapon,0,0x4000, WS_MELTDOWN,Shattering Strike
//385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATECOIN,Create Coins
//386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATENUGGET,Create Nuggets
385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATECOIN,Create Coins
386,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0, WS_CREATENUGGET,Create Nuggets
387,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x4000, WS_CARTBOOST,Cart Boost
//388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, WS_SYSTEMCREATE,Auto Attack System
388,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, WS_SYSTEMCREATE,Auto Attack System

//****
// Stalker
Expand Down Expand Up @@ -768,6 +768,11 @@
543,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, NJ_NEN,Soul
544,-5,8,1,0,0x40,0,10,1,no,0,0,0,misc,0,0x0, NJ_ISSEN,Final Strike

572,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_DEATHKNIGHT,SL_DEATHKNIGHT
573,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_COLLECTOR,SL_COLLECTOR
574,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_NINJA,SL_NINJA
575,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0, SL_GUNNER,SL_GUNNER

//****
// Additional NPC Skills (Episode 11.3)
653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x2,0,magic,0,0x0, NPC_EARTHQUAKE,Earthquake
Expand Down Expand Up @@ -818,10 +823,10 @@
689,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x0, CASH_BLESSING,Party Blessing
690,0,6,4,0,0x3,-1,10,1,yes,0,0x2,0,magic,0,0x0, CASH_INCAGI,Party Increase AGI
691,0,6,4,0,0x3,-1,5,1,yes,0,0x2,0,magic,0,0x0, CASH_ASSUMPTIO,Party Assumptio
//692,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_CATCRY,Cat Cry
692,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_CATCRY,Cat Cry
693,0,6,4,0,0x3,-1,1,1,yes,0,0x2,0,magic,0,0x0, ALL_PARTYFLEE,Party Flee
//694,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_ANGEL_PROTECT,Angel's Protection
//695,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_DREAM_SUMMERNIGHT,Summer Night Dream
694,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_ANGEL_PROTECT,Angel's Protection
695,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, ALL_DREAM_SUMMERNIGHT,Summer Night Dream
//696,0,0,0,0,0,0,9,0,no,0,0x2,0,none,0,0x0, NPC_CHANGEUNDEAD2,Change Undead
697,9,6,4,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0, ALL_REVERSEORCISH,Reverse Orcish
698,0,6,4,0,0x01,0,1,1,no,0,0x2,0,none,0,0x0, ALL_WEWISH,Christmas Carol
Expand Down
8 changes: 7 additions & 1 deletion doc/script_commands.txt
Expand Up @@ -5411,9 +5411,15 @@ Flag 2 means that the level parameter is to be interpreted as a stackable
additional bonus to the skill level. If the character did not have that skill
previously, they will now at 0+the level given.

Flag 4 is the same as flag 1 in that it saves to the database. However, these skills
Flag 3 is the same as flag 1 in that it saves to the database. However, these skills
are ignored when any action is taken that adjusts the skill tree (reset/job change).

Flag contants:
0 - SKILL_PERM
1 - SKILL_TEMP
2 - SKILL_TEMPLEVEL
3 - SKILL_PERM_GRANT

// This will permanently give the character Stone Throw (TF_THROWSTONE,152), at
// level 1.
skill 152,1,0;
Expand Down
72 changes: 36 additions & 36 deletions npc/custom/jobmaster.txt
Expand Up @@ -206,87 +206,87 @@ function Job_Menu {
}

Get_Platinum:
skill "NV_FIRSTAID",1,0;
skill "NV_FIRSTAID",1,SKILL_PERM;
switch (BaseClass) {
case Job_Novice:
if (Class != Job_SuperNovice)
skill "NV_TRICKDEAD",1,0;
skill "NV_TRICKDEAD",1,SKILL_PERM;
break;
case Job_Swordman:
skill "SM_MOVINGRECOVERY",1,0;
skill "SM_FATALBLOW",1,0;
skill "SM_AUTOBERSERK",1,0;
skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
skill "SM_FATALBLOW",1,SKILL_PERM;
skill "SM_AUTOBERSERK",1,SKILL_PERM;
break;
case Job_Mage:
skill "MG_ENERGYCOAT",1,0;
skill "MG_ENERGYCOAT",1,SKILL_PERM;
break;
case Job_Archer:
skill "AC_MAKINGARROW",1,0;
skill "AC_CHARGEARROW",1,0;
skill "AC_MAKINGARROW",1,SKILL_PERM;
skill "AC_CHARGEARROW",1,SKILL_PERM;
break;
case Job_Acolyte:
skill "AL_HOLYLIGHT",1,0;
skill "AL_HOLYLIGHT",1,SKILL_PERM;
break;
case Job_Merchant:
skill "MC_CARTREVOLUTION",1,0;
skill "MC_CHANGECART",1,0;
skill "MC_LOUD",1,0;
skill "MC_CARTREVOLUTION",1,SKILL_PERM;
skill "MC_CHANGECART",1,SKILL_PERM;
skill "MC_LOUD",1,SKILL_PERM;
break;
case Job_Thief:
skill "TF_SPRINKLESAND",1,0;
skill "TF_BACKSLIDING",1,0;
skill "TF_PICKSTONE",1,0;
skill "TF_THROWSTONE",1,0;
skill "TF_SPRINKLESAND",1,SKILL_PERM;
skill "TF_BACKSLIDING",1,SKILL_PERM;
skill "TF_PICKSTONE",1,SKILL_PERM;
skill "TF_THROWSTONE",1,SKILL_PERM;
break;
default:
break;
}
switch (BaseJob) {
case Job_Knight:
skill "KN_CHARGEATK",1,0;
skill "KN_CHARGEATK",1,SKILL_PERM;
break;
case Job_Priest:
skill "PR_REDEMPTIO",1,0;
skill "PR_REDEMPTIO",1,SKILL_PERM;
break;
case Job_Wizard:
skill "WZ_SIGHTBLASTER",1,0;
skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
break;
case Job_Blacksmith:
skill "BS_UNFAIRLYTRICK",1,0;
skill "BS_GREED",1,0;
skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
skill "BS_GREED",1,SKILL_PERM;
break;
case Job_Hunter:
skill "HT_PHANTASMIC",1,0;
skill "HT_PHANTASMIC",1,SKILL_PERM;
break;
case Job_Assassin:
skill "AS_SONICACCEL",1,0;
skill "AS_VENOMKNIFE",1,0;
skill "AS_SONICACCEL",1,SKILL_PERM;
skill "AS_VENOMKNIFE",1,SKILL_PERM;
break;
case Job_Crusader:
skill "CR_SHRINK",1,0;
skill "CR_SHRINK",1,SKILL_PERM;
break;
case Job_Monk:
skill "MO_KITRANSLATION",1,0;
skill "MO_BALKYOUNG",1,0;
skill "MO_KITRANSLATION",1,SKILL_PERM;
skill "MO_BALKYOUNG",1,SKILL_PERM;
break;
case Job_Sage:
skill "SA_CREATECON",1,0;
skill "SA_ELEMENTWATER",1,0;
skill "SA_ELEMENTGROUND",1,0;
skill "SA_ELEMENTFIRE",1,0;
skill "SA_ELEMENTWIND",1,0;
skill "SA_CREATECON",1,SKILL_PERM;
skill "SA_ELEMENTWATER",1,SKILL_PERM;
skill "SA_ELEMENTGROUND",1,SKILL_PERM;
skill "SA_ELEMENTFIRE",1,SKILL_PERM;
skill "SA_ELEMENTWIND",1,SKILL_PERM;
break;
case Job_Rogue:
skill "RG_CLOSECONFINE",1,0;
skill "RG_CLOSECONFINE",1,SKILL_PERM;
break;
case Job_Alchemist:
skill "AM_BIOETHICS",1,0;
skill "AM_BIOETHICS",1,SKILL_PERM;
break;
case Job_Bard:
skill "BA_PANGVOICE",1,0;
skill "BA_PANGVOICE",1,SKILL_PERM;
break;
case Job_Dancer:
skill "DC_WINKCHARM",1,0;
skill "DC_WINKCHARM",1,SKILL_PERM;
break;
default:
break;
Expand Down
72 changes: 36 additions & 36 deletions npc/custom/platinum_skills.txt
Expand Up @@ -30,87 +30,87 @@ prontera,128,200,6 script Platinum Skill NPC 94,{
mes "Have a nice day... >.>";
close;
}
skill "NV_FIRSTAID",1,0;
skill "NV_FIRSTAID",1,SKILL_PERM;
switch (BaseClass) {
case Job_Novice:
if (Class != Job_SuperNovice)
skill "NV_TRICKDEAD",1,0;
skill "NV_TRICKDEAD",1,SKILL_PERM;
break;
case Job_Swordman:
skill "SM_MOVINGRECOVERY",1,0;
skill "SM_FATALBLOW",1,0;
skill "SM_AUTOBERSERK",1,0;
skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
skill "SM_FATALBLOW",1,SKILL_PERM;
skill "SM_AUTOBERSERK",1,SKILL_PERM;
break;
case Job_Mage:
skill "MG_ENERGYCOAT",1,0;
skill "MG_ENERGYCOAT",1,SKILL_PERM;
break;
case Job_Archer:
skill "AC_MAKINGARROW",1,0;
skill "AC_CHARGEARROW",1,0;
skill "AC_MAKINGARROW",1,SKILL_PERM;
skill "AC_CHARGEARROW",1,SKILL_PERM;
break;
case Job_Acolyte:
skill "AL_HOLYLIGHT",1,0;
skill "AL_HOLYLIGHT",1,SKILL_PERM;
break;
case Job_Merchant:
skill "MC_CARTREVOLUTION",1,0;
skill "MC_CHANGECART",1,0;
skill "MC_LOUD",1,0;
skill "MC_CARTREVOLUTION",1,SKILL_PERM;
skill "MC_CHANGECART",1,SKILL_PERM;
skill "MC_LOUD",1,SKILL_PERM;
break;
case Job_Thief:
skill "TF_SPRINKLESAND",1,0;
skill "TF_BACKSLIDING",1,0;
skill "TF_PICKSTONE",1,0;
skill "TF_THROWSTONE",1,0;
skill "TF_SPRINKLESAND",1,SKILL_PERM;
skill "TF_BACKSLIDING",1,SKILL_PERM;
skill "TF_PICKSTONE",1,SKILL_PERM;
skill "TF_THROWSTONE",1,SKILL_PERM;
break;
default:
break;
}
switch (BaseJob) {
case Job_Knight:
skill "KN_CHARGEATK",1,0;
skill "KN_CHARGEATK",1,SKILL_PERM;
break;
case Job_Priest:
skill "PR_REDEMPTIO",1,0;
skill "PR_REDEMPTIO",1,SKILL_PERM;
break;
case Job_Wizard:
skill "WZ_SIGHTBLASTER",1,0;
skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
break;
case Job_Blacksmith:
skill "BS_UNFAIRLYTRICK",1,0;
skill "BS_GREED",1,0;
skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
skill "BS_GREED",1,SKILL_PERM;
break;
case Job_Hunter:
skill "HT_PHANTASMIC",1,0;
skill "HT_PHANTASMIC",1,SKILL_PERM;
break;
case Job_Assassin:
skill "AS_SONICACCEL",1,0;
skill "AS_VENOMKNIFE",1,0;
skill "AS_SONICACCEL",1,SKILL_PERM;
skill "AS_VENOMKNIFE",1,SKILL_PERM;
break;
case Job_Crusader:
skill "CR_SHRINK",1,0;
skill "CR_SHRINK",1,SKILL_PERM;
break;
case Job_Monk:
skill "MO_KITRANSLATION",1,0;
skill "MO_BALKYOUNG",1,0;
skill "MO_KITRANSLATION",1,SKILL_PERM;
skill "MO_BALKYOUNG",1,SKILL_PERM;
break;
case Job_Sage:
skill "SA_CREATECON",1,0;
skill "SA_ELEMENTWATER",1,0;
skill "SA_ELEMENTGROUND",1,0;
skill "SA_ELEMENTFIRE",1,0;
skill "SA_ELEMENTWIND",1,0;
skill "SA_CREATECON",1,SKILL_PERM;
skill "SA_ELEMENTWATER",1,SKILL_PERM;
skill "SA_ELEMENTGROUND",1,SKILL_PERM;
skill "SA_ELEMENTFIRE",1,SKILL_PERM;
skill "SA_ELEMENTWIND",1,SKILL_PERM;
break;
case Job_Rogue:
skill "RG_CLOSECONFINE",1,0;
skill "RG_CLOSECONFINE",1,SKILL_PERM;
break;
case Job_Alchemist:
skill "AM_BIOETHICS",1,0;
skill "AM_BIOETHICS",1,SKILL_PERM;
break;
case Job_Bard:
skill "BA_PANGVOICE",1,0;
skill "BA_PANGVOICE",1,SKILL_PERM;
break;
case Job_Dancer:
skill "DC_WINKCHARM",1,0;
skill "DC_WINKCHARM",1,SKILL_PERM;
break;
default:
break;
Expand Down
2 changes: 1 addition & 1 deletion npc/jobs/2-2a/Creator.txt
Expand Up @@ -101,7 +101,7 @@ valkyrie,53,50,3 script Biochemist#Valkyrie 122,{
mes "responsibility in using these";
mes "secrets for the right ends...";
next;
skill "AM_BIOETHICS",1,0;
skill "AM_BIOETHICS",1,SKILL_PERM;
mes "[Biochemist]";
mes "Open your eyes...";
mes "Now that you have";
Expand Down
4 changes: 2 additions & 2 deletions npc/jobs/valkyrie.txt
Expand Up @@ -151,8 +151,8 @@ valkyrie,48,86,4 script Valkyrie# 811,{
jobchange Job_Novice_High;
resetlvl(1);
set MISC_QUEST,MISC_QUEST | 1024; //<-reset Skill Reset Event
skill "NV_FIRSTAID",1,0;
skill "NV_TRICKDEAD",1,0;
skill "NV_FIRSTAID",1,SKILL_PERM;
skill "NV_TRICKDEAD",1,SKILL_PERM;
completequest 1000;
next;
mes "[Valkyrie]";
Expand Down

0 comments on commit 9d3d342

Please sign in to comment.