diff options
-rw-r--r-- | db/constants.conf | 10 | ||||
-rw-r--r-- | npc/003-0/mages.txt | 1 | ||||
-rw-r--r-- | npc/config/magic.txt | 10 | ||||
-rw-r--r-- | npc/functions/util.txt | 24 | ||||
-rw-r--r-- | npc/items/books.txt | 35 |
5 files changed, 68 insertions, 12 deletions
diff --git a/db/constants.conf b/db/constants.conf index 6ddd25341..1712cdd54 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3847,6 +3847,16 @@ constants_db: { SUMMER: 2 AUTUMN: 3 + comment__: "magic subclass" + CL_PALADIN: 1 + CL_TANKER: 2 + CL_BERSEKER: 4 + CL_RANGER: 8 + CL_SNIPER: 16 + CL_WIZARD: 32 + CL_SAGE: 64 + CL_PRIEST: 128 + comment__: "map masks" MASK_NONE: 1 MASK_MATTACK: 2 diff --git a/npc/003-0/mages.txt b/npc/003-0/mages.txt index 957a7f5cd..0122bb47b 100644 --- a/npc/003-0/mages.txt +++ b/npc/003-0/mages.txt @@ -11,6 +11,7 @@ // SA_LIGHTNINGLOADER (bestow wind element on weapon for 20m, 70% cth) // SA_SEISMICWEAPON (bestow earth element on weapon for 20m, 70% cth) // SA_DRAGONOLOGY (+4% ATK, +2% MATK, +1 INT and +4% resist against DRAGONS) +// some summoning magic, maybe? Or just MAGIC_EXP gain rate up // Priest // AL_PNEUMA (BLOCKS ranged (4+ tiles) physical attacks on a 3x3 area. No bows :D) diff --git a/npc/config/magic.txt b/npc/config/magic.txt index ce712b518..0b016b2bf 100644 --- a/npc/config/magic.txt +++ b/npc/config/magic.txt @@ -5,7 +5,15 @@ // // Used for our pseudo-magic. // These are only helpers, you can add more restrictions and effects freely. -// Important Variables: MAGIC_EXP, LAST_SKILL +// Important Variables: +// MAGIC_EXP +// Current mana magic experience +// LAST_SKILL +// Last Mana Skill used +// MAGIC_LVL +// Maximum tier of usable magic, capped by Mana Stone +// MAGIC_SUBCLASS +// Bitmasked magic subclass. // SkillID, EXP Points function script GetManaExp { diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 9e2ef7700..55fdba9bc 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -240,3 +240,27 @@ function script party_expon { return .@value[0]; } + +// Gets how many subclasses were actually filled +// total_subclass( ) +function script total_subclass { + .@i=0; + if (MAGIC_SUBCLASS & CL_PALADIN) + .@i+=1; + if (MAGIC_SUBCLASS & CL_TANKER) + .@i+=1; + if (MAGIC_SUBCLASS & CL_BERSEKER) + .@i+=1; + if (MAGIC_SUBCLASS & CL_RANGER) + .@i+=1; + if (MAGIC_SUBCLASS & CL_SNIPER) + .@i+=1; + if (MAGIC_SUBCLASS & CL_WIZARD) + .@i+=1; + if (MAGIC_SUBCLASS & CL_SAGE) + .@i+=1; + if (MAGIC_SUBCLASS & CL_PRIEST) + .@i+=1; + return .@i; +} + diff --git a/npc/items/books.txt b/npc/items/books.txt index 9b98dae5a..68a9ae56e 100644 --- a/npc/items/books.txt +++ b/npc/items/books.txt @@ -165,8 +165,8 @@ OnInit: select rif( MAGIC_LVL >= 2 ,rif(@menu == 1, "► ") + l("Ch 1 — Prologue")), - rif( MAGIC_EXP ,rif(@menu == 2, "► ") + l("Ch 2 — Magic Experience")), - rif( false ,rif(@menu == 3, "► ") + l("Ch 3 — Location")), + rif( MAGIC_EXP ,rif(@menu == 2, "► ") + l("Ch 2 — Mana Magic vs Common Magic")), + rif( MAGIC_LVL >= 2 ,rif(@menu == 3, "► ") + l("Ch 3 — Subclass")), rif( false ,rif(@menu == 4, "► ") + l("Ch 4 — Casting")), rif( false ,rif(@menu == 5, "► ") + l("Ch 5 — Reeling")), l("Close"); @@ -178,14 +178,14 @@ OnInit: l("Mana is something which existed since the being, but nobody knows much about."), l("This book will write itself, and reveal you the Secret Of Mana."), l("Give it time, increase your magic power, and you'll find out the truth."), - l("PS. This also allows you to select a subclass."); + l("Your current maximum magic efficiency is @@. This book allows you many new possibilities.", MAGIC_LVL); break; case 2: narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, l("There are two kind of magic: Mana Skills and Magic Skills."), - l("They look like the same, but they're not. Magic Skills have a Magic Experience meter."), - l("Re-casting the same magic skill won't give you magic experience."), - l("The easiest way to identify is: Magic Skills never target a single foe. This grimorium reports your Magic Skills."); + l("They look like the same, but they're not. Mana Skills have a Magic Experience meter and have different rules."), + l("Re-casting the same mana skill won't give you magic experience. Magic Skills doesn't have this system, and level up on quest or, depending on the skill, on the skill window, using Job Level."), + l("The easiest way to identify is: Mana Skills never target a single foe. This grimorium reports your Mana Skills."); if (getskilllv(TMW2_ZARKOR)) mesc l("Summon Cave Maggot - @sk-zarkor"); if (getskilllv(TMW2_PARUM)) @@ -193,11 +193,24 @@ OnInit: next; break; case 3: - narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, - l("-"), - l("-"), - l("-"), - l("-"); + mesc l("You currently have @@/@@ subclass(es).", total_subclass(),(MAGIC_LVL/2)); + if (MAGIC_SUBCLASS & CL_PALADIN) + mesc lg("* Paladin"); + if (MAGIC_SUBCLASS & CL_TANKER) + mesc lg("* Tanker"); + if (MAGIC_SUBCLASS & CL_BERSEKER) + mesc lg("* Berseker"); + if (MAGIC_SUBCLASS & CL_RANGER) + mesc lg("* Ranger"); + if (MAGIC_SUBCLASS & CL_SNIPER) + mesc lg("* Sniper"); + if (MAGIC_SUBCLASS & CL_WIZARD) + mesc lg("* Wizard"); + if (MAGIC_SUBCLASS & CL_SAGE) + mesc lg("* Sage"); + if (MAGIC_SUBCLASS & CL_PRIEST) + mesc lg("* Priest"); + next; break; case 4: narrator S_FIRST_BLANK_LINE | S_LAST_NEXT, |