summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-14 04:08:13 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-14 04:08:13 -0300
commitf5d6ff098ed47775147826d3b0becb5934876021 (patch)
treeb4689631cb75d3886ca709d3e9bfa2caf392ec0c
parent5e9bd903948c5d1a07524c32c3d32459241ba20f (diff)
downloadserverdata-f5d6ff098ed47775147826d3b0becb5934876021.tar.gz
serverdata-f5d6ff098ed47775147826d3b0becb5934876021.tar.bz2
serverdata-f5d6ff098ed47775147826d3b0becb5934876021.tar.xz
serverdata-f5d6ff098ed47775147826d3b0becb5934876021.zip
Lesser Heal and Lay On Hands took me almost a whole hour to finish.
-rw-r--r--db/pre-re/skill_db.conf35
-rw-r--r--db/pre-re/skill_tree.conf2
-rw-r--r--npc/magic/final.txt29
-rw-r--r--npc/magic/level1-lesser-heal.txt49
-rw-r--r--npc/magic/level2-lay-on-hands.txt68
-rw-r--r--npc/scripts.conf2
6 files changed, 162 insertions, 23 deletions
diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf
index 81d7c6b0..5fc10f84 100644
--- a/db/pre-re/skill_db.conf
+++ b/db/pre-re/skill_db.conf
@@ -38747,6 +38747,41 @@ skill_db: (
}
}
},
+{
+ Id: 20029
+ Name: "SKILL_LUM"
+ Description: "Lum"
+ MaxLevel: 9
+ SkillType: {
+ Self: true
+ }
+ SkillInfo: {
+ Quest: true
+ }
+ CoolDown: 500
+ Requirements: {
+ SPCost: 6
+ Items: {
+ Lifestone: 1
+ }
+ }
+},
+{
+ Id: 20030
+ Name: "SKILL_INMA"
+ Description: "Inma"
+ MaxLevel: 9
+ SkillType: {
+ Self: true
+ }
+ SkillInfo: {
+ Quest: true
+ }
+ CoolDown: 500
+ Requirements: {
+ SPCost: 10
+ }
+},
// Lum MagicBlade Sulphur Kalmurk Parum ArrowHail Barrier(OK?) EnchantLifestone FlyingBackpack(?) Joyplim Hide(?) LayOnHands Ingrav Knuclkes MakeArrow MakeIronPowder MakeShirt MakeTanktop MakeSTanktop Protect Rain Shear SFluffy SMouboo SPinkie SSnake SSPiky SWicked ToxicDart Necro
)
diff --git a/db/pre-re/skill_tree.conf b/db/pre-re/skill_tree.conf
index b6cdfbac..87c3654e 100644
--- a/db/pre-re/skill_tree.conf
+++ b/db/pre-re/skill_tree.conf
@@ -74,9 +74,11 @@ Talpan: {
SKILL_MODRISUMP: 9
SKILL_MODRIYIKAM: 9
SKILL_MODRILAX: 9
+ SKILL_LUM: 9
// Level 2
EVOL_PHYSICAL_SHIELD: 5
+ SKILL_INMA: 9
// Level 3
// Level 4
diff --git a/npc/magic/final.txt b/npc/magic/final.txt
index 1cd93e40..92fb65a4 100644
--- a/npc/magic/final.txt
+++ b/npc/magic/final.txt
@@ -48,34 +48,17 @@ function script HUB_SkillInvoke {
case SKILL_MODRISUMP:
case SKILL_MODRIYIKAM:
case SKILL_MODRILAX:
- SK_GrowPlants(); break;
+ SK_GrowPlants(); break; // FIXME: Unreleased/cannot be learned
+ case SKILL_LUM:
+ SK_Lum(); break;
// Level 2
+ case SKILL_INMA:
+ SK_Inma(); break;
// Level 3
// Level 4
// Level 5
////////////////////////////////
- /* / XXX: Healing Class
- case TMW2_FIRSTAID:
- .@PW=90+(10*@skillLv);
- // First aid only works on you, so
- .@heal=max(AdjustSpellpower(.@PW), AdjustAttackpower(.@PW));
- heal .@heal, 0;
- GetManaExp(TMW2_HEALING, 1);
- break;
- case TMW2_HEALING:
- .@PW=130+(20*@skillLv);
- harm(@skillTarget, -AdjustSpellpower(.@PW), HARM_MISC);
- GetManaExp(TMW2_HEALING, 2);
- break;
- case TMW2_MAGNUSHEAL:
- // Area healing
- .@PW=200+(20*@skillLv);
- .@RG=4+(@skillLv/5);
- areaharm(@skillTarget, .@RG, -AdjustSpellpower(.@PW), HARM_MISC, "filter_friendly");
- GetManaExp(TMW2_HEALING, 3);
- break;
- ////////////////////////////////
- // XXX: Fire Class
+ /* XXX: Fire Class
// (May burn targets for damage over time)
case TMW2_FIREARROW:
.@PW=140+(10*@skillLv);
diff --git a/npc/magic/level1-lesser-heal.txt b/npc/magic/level1-lesser-heal.txt
new file mode 100644
index 00000000..bf515062
--- /dev/null
+++ b/npc/magic/level1-lesser-heal.txt
@@ -0,0 +1,49 @@
+// The Mana World script
+// Author: Jesusalva <jesusalva@themanaworld.org>
+//
+// Magic Script: SKILL_LUM (Level 1)
+// School: Life 1
+
+function script SK_Lum {
+ // In some cases it is... aborted
+ if (getunittype(@skillTarget) == UNITTYPE_PC) {
+ .@me=getcharid(3);
+ .@ok=true;
+ attachrid(@skillTarget);
+ // Kill the GM Event
+ if (isequipped(MagicGMTopHat))
+ .@ok=false;
+ // Ailments cannot prevent this one because the Lifestione, so...
+ // Already dead
+ if (Hp < 1)
+ .@ok=false;
+ // Finished
+ .@limit=MaxHp-Hp;
+ detachrid();
+ attachrid(.@me);
+ if (!.@ok) return;
+ } else {
+ if (getunitdata(@skillTarget, UDT_HP) < 1) return;
+ .@limit=getunitdata(@skillTarget, UDT_MAXHP)-
+ getunitdata(@skillTarget, UDT_HP);
+ }
+
+ // No need for healing?
+ if (.@limit <= 0) return;
+
+ // Real healing happens here
+ .@PW=90+(10*@skillLv);
+ .@dmg=AdjustSpellpower(.@PW);
+ sc_start(SC_G_LIFEPOTION, 5000, 1+.@dmg/5, 10000,
+ SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE, @skillTarget);
+
+ // Specifics
+ if (getskilllv(SKILL_MAGIC_DARK) >= 1)
+ SC_Bonus(2, SC_BLOODING, 1); // FIXME SC_REBOUND? SC_MAGICMUSHROOM?
+
+ // Gives EXP according to how much you healed
+ getexp min(.@dmg, .@limit)*getskilllv(SKILL_MAGIC_LIFE), .@PW/10;
+ GetManaExp(@skillId, 1);
+ return;
+}
+
diff --git a/npc/magic/level2-lay-on-hands.txt b/npc/magic/level2-lay-on-hands.txt
new file mode 100644
index 00000000..fe9af4cd
--- /dev/null
+++ b/npc/magic/level2-lay-on-hands.txt
@@ -0,0 +1,68 @@
+// The Mana World script
+// Author: Jesusalva <jesusalva@themanaworld.org>
+//
+// Magic Script: SKILL_INMA (Level 1)
+// School: Life 2
+
+function script SK_Inma {
+ // FIXME: #inma Mouboo
+ // In some cases it is... aborted
+ if (getunittype(@skillTarget) == UNITTYPE_PC) {
+ .@me=getcharid(3);
+ .@ok=true;
+ attachrid(@skillTarget);
+ // TODO: detect if is a bot...
+ // FIXME: 099-4 and 099-5 special rules
+ // Kill the GM Event
+ if (isequipped(MagicGMTopHat))
+ .@ok=false;
+ // Ailments which prevent inma from working
+ if (getstatus(SC_BLOODING))
+ .@ok=false;
+ if (getstatus(SC_CURSE))
+ .@ok=false;
+ if (getstatus(SC_POISON) && !getstatus(SC_SLOWPOISON))
+ .@ok=false;
+ if (getstatus(SC_DPOISON) && !getstatus(SC_SLOWPOISON))
+ .@ok=false;
+ // Already dead
+ if (Hp < 1)
+ .@ok=false;
+ // Finished
+ .@limit=MaxHp-Hp;
+ detachrid();
+ attachrid(.@me);
+ if (!.@ok) return;
+ } else {
+ if (getunitdata(@skillTarget, UDT_HP) < 1) return;
+ .@limit=getunitdata(@skillTarget, UDT_MAXHP)-
+ getunitdata(@skillTarget, UDT_HP);
+ }
+ if (@skillTarget == getcharid(3)) return; // No self casting
+ if (isequipped(MagicGMTopHat)) return; // Kill the GM event
+ if (.@limit <= 0) return; // No need for healing
+ // Apply effects
+ .@PW=130+(20*@skillLv);
+ .@dmg=AdjustSpellpower(.@PW);
+
+ // Capped to what you need or your own health - the smallest of them
+ .@dmg = min(.@dmg, .@limit, Hp);
+
+ // Pay with 20% of your healing total
+ heal -(.@dmg/5), 0;
+
+ // Heal the target instantly
+ harm(@skillTarget, -(.@dmg), HARM_MISC);
+
+ // Specifics
+ if (getskilllv(SKILL_MAGIC_DARK) >= 2)
+ SC_Bonus(10, SC_BLOODING, 1); // FIXME SC_REBOUND? SC_MAGICMUSHROOM?
+ else
+ SC_Bonus(5, SC_BLOODING, 1); // FIXME SC_REBOUND? SC_MAGICMUSHROOM?
+
+ // Gives EXP according to how much you healed
+ getexp .@dmg*getskilllv(SKILL_MAGIC_LIFE), .@PW/10;
+ GetManaExp(@skillId, 2);
+ return;
+}
+
diff --git a/npc/scripts.conf b/npc/scripts.conf
index 6a0c79b8..a625b547 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -72,6 +72,8 @@
"npc/magic/level1-experience.txt",
"npc/magic/level1-flare-dart.txt",
"npc/magic/level1-grow-plants.txt",
+"npc/magic/level1-lesser-heal.txt",
+"npc/magic/level2-lay-on-hands.txt",
"npc/magic/final.txt",
// Commands