summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2020-07-02 12:15:43 -0300
committerJesusaves <cpntb1@ymail.com>2020-07-02 12:15:43 -0300
commit1d536fb5456efa5fd8eaea38c8212a02b1888800 (patch)
tree59be62d4fe79db2d0134c2ca8139896448a4908e
parent609e40d5a3a2263e0a67e869fc53c2c7e5e70750 (diff)
downloadserverdata-1d536fb5456efa5fd8eaea38c8212a02b1888800.tar.gz
serverdata-1d536fb5456efa5fd8eaea38c8212a02b1888800.tar.bz2
serverdata-1d536fb5456efa5fd8eaea38c8212a02b1888800.tar.xz
serverdata-1d536fb5456efa5fd8eaea38c8212a02b1888800.zip
Fine tuning skills, Colin now teaches again a few basic skills
-rw-r--r--npc/027-2/colin.txt132
-rw-r--r--npc/functions/hub.txt6
2 files changed, 109 insertions, 29 deletions
diff --git a/npc/027-2/colin.txt b/npc/027-2/colin.txt
index 70b6491c6..d066edc40 100644
--- a/npc/027-2/colin.txt
+++ b/npc/027-2/colin.txt
@@ -6,43 +6,53 @@
// Colin, of Destructive Magic Class.
027-2,28,23,0 script Colin NPC_PLAYER,{
+ function basicMagic;
+ function standardMagic;
+ function advancedMagic;
if (!MAGIC_LVL) goto L_NoMagic;
mes l(".:: Destructive Magic Class ::.");
mesc l("Specialized in destructive, magical skills.");
next;
mesn;
- do {
mesc l("You have @@ magic skill points available.", sk_points());
- next;
- mesc l("Fireball - Basic AoE (Area Of Effect) Skill");
- mesc l("Holy Light - Standard Holy Magical Attack");
- mesc l("Magic Strike - Standard Magical Attack");
-
- mesc l("Napalm Beat - Spammable AoE Skill");
- mesc l("Frost Diver - Attempt to freeze an enemy, dealing damage");
- mesc l("Fire Walk - Creates a trail of fire, harming any pursuer");
-
- mesc l("Frost Nova - Freeze everything in a range");
mesc l("Note: You can exchange 1 @@ for 3 @@", getitemlink(GemPowder), getitemlink(Quill)), 1;
- menuint
- rif(countitem(GemPowder), l("Exchange Gempowder for Quill")), -1,
- l("Cancel"), 0;
mes "";
+ select
+ l("Basic Tricks"),
+ l("Standard Tricks"),
+ l("Advanced Tricks"),
+ rif(countitem(GemPowder), l("Exchange Gempowder for Quill"));
+ mes "";
+ .@lv=@menu;
+ do
+ {
+ switch (.@lv) {
+ case 1:
+ basicMagic();
+ break;
+ case 2:
+ standardMagic();
+ break;
+ case 3:
+ advancedMagic();
+ break;
+ case 4:
+ inventoryplace Quill, 3;
+ delitem GemPowder, 1;
+ getitem Quill, 3;
+ @menuret=0;
+ break;
+ }
- switch (@menuret) {
- case -1:
- inventoryplace Quill, 3;
- delitem GemPowder, 1;
- getitem Quill, 3;
- break;
- case 0:
- closeclientdialog;
- break;
- default:
+ // Handle result
+ mes "";
+ if (@menuret) {
if (!learn_magic(@menuret))
mesc l("You do not meet all requisites for this skill."), 1;
- break;
- }
+ } else {
+ closeclientdialog;
+ }
+
} while (@menuret);
close;
@@ -58,6 +68,76 @@ L_NoMagic:
mesq l("Perhaps, in the city, someone knows rumors about Mana Stones and can teach you. Other than that, you're on your own.");
close;
+function basicMagic {
+ if (MAGIC_LVL < 1) goto L_NoMagic;
+ mes l(".:: Fire Arrow ::.");
+ mesc l("Basic fire single target attack. May burn targets.");
+ mes "";
+ mes l(".:: Napalm Beat ::.");
+ mesc l("Basic multi-target holy attack. Is actually weak.");
+ mes "";
+ mes l(".:: Magic Strike ::.");
+ mesc l("Basic wind single target attack. Strong in overall.");
+ mes "";
+ mes l(".:: Frost Diver ::.");
+ mesc l("Basic ice single target attack. May freeze targets.");
+ mes "";
+ menuint
+ l("Fire Arrow"), TMW2_FIREARROW,
+ l("Napalm Beat"), TMW2_NAPALMBEAT,
+ l("Magic Strike"), TMW2_MAGICSTRIKE,
+ l("Frost Diver"), TMW2_FROSTDIVER,
+ l("Cancel"), 0;
+ return;
+}
+
+function standardMagic {
+ if (MAGIC_LVL < 2) goto L_NoMagic;
+ mes l(".:: Fireball ::.");
+ mesc l("Area of effect fire damage. May burn targets.");
+ mes "";
+ mes l(".:: Holy Light ::.");
+ mesc l("Basic single target holy attack. Splashes in the nearby tiles.");
+ mes "";
+ mes l(".:: Lightning Bolt ::.");
+ mesc l("Strong wind single target attack.");
+ mes "";
+ mes l(".:: Frost Nova ::.");
+ mesc l("Basic ice area attack. May freeze targets.");
+ mes "";
+ menuint
+ l("Fireball"), TMW2_FIREBALL,
+ l("Holy Light"), TMW2_HOLYLIGHT,
+ l("Lightning Bolt"), TMW2_LIGHTNINGBOLT,
+ l("Frost Nova"), TMW2_FROSTNOVA,
+ l("Cancel"), 0;
+ return;
+}
+
+function advancedMagic {
+ if (MAGIC_LVL < 4) goto L_NoMagic;
+ mes l(".:: Armageddon ::.");
+ mesc l("Huge area of effect fire damage. May burn targets.");
+ mes "";
+ mes l(".:: Judgment ::.");
+ mesc l("Superior single target damage which splashes in area.");
+ mes "";
+ mes l(".:: Tempest ::.");
+ mesc l("Strong wind area of effect attack.");
+ mes "";
+ mes l(".:: Nilfheim ::.");
+ mesc l("Basic ice area attack. Freeze targets in a big area.");
+ mes "";
+ menuint
+ l("Armageddon"), TMW2_ARMAGEDDON,
+ l("Judgment"), TMW2_JUDGMENT,
+ l("Tempest"), TMW2_TEMPEST,
+ l("Nilfheim"), TMW2_NILFHEIM,
+ l("Cancel"), 0;
+ return;
+}
+
+
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, NPCEyes);
diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt
index 4d90d14ee..4de062f6b 100644
--- a/npc/functions/hub.txt
+++ b/npc/functions/hub.txt
@@ -357,7 +357,7 @@ function script HUB_SkillInvoke {
break;
case TMW2_ARMAGEDDON:
.@PW=140+(10*@skillLv);
- .@RG=4+(@skillLv/5);
+ .@RG=5+(@skillLv/5);
// 18% chance, 3s, 3x3 radius
areaharm(@skillTarget, .@RG, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Fire);
areasc(.@RG, 3000, SC_BURNING, BL_MOB|BL_PC|BL_HOM|BL_MER, "filter_hostile", @skillTarget, 1800);
@@ -386,7 +386,7 @@ function script HUB_SkillInvoke {
.@SPW=60+(15*@skillLv);
.@dmg=AdjustSpellpower(.@PW);
.@dsub=AdjustSpellpower(.@SPW);
- .@RG=5+(@skillLv/5);
+ .@RG=3+(@skillLv/5);
harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Holy);
areaharm(@skillTarget, .@RG, .@dsub, HARM_MAGI, Ele_Holy);
GetManaExp(TMW2_HOLYLIGHT, 3);
@@ -435,7 +435,7 @@ function script HUB_SkillInvoke {
// Nilfheim cast on self?
.@PW=80+(10*@skillLv);
.@RG=4+(@skillLv/5);
- areaharm(getcharid(3), .@RG, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Water);
+ areaharm(getcharid(3), .@RG*3/2, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Water);
areasc(.@RG, 15000, SC_FREEZE, BL_PC | BL_MOB | BL_MER | BL_HOM, "filter_hostile");
// Maybe filter_notme() would work better, indeed
GetManaExp(TMW2_NILFHEIM, 3);