summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/magic.conf.template20
-rw-r--r--npc/001-1_Tulimshar/elanore.txt25
2 files changed, 45 insertions, 0 deletions
diff --git a/conf/magic.conf.template b/conf/magic.conf.template
index 48a685f4..8c5ac05d 100644
--- a/conf/magic.conf.template
+++ b/conf/magic.conf.template
@@ -23,6 +23,7 @@ CONST ELT_GHOST = 8
CONST ELT_UNDEAD = 9
# Schools of magic
+CONST SC_POISON = 132
CONST SC_SHEARED = 194 # This is the same as SC_HIDE, since mobs can't hide and shearing is only used for mobs. Feel free to fix!
CONST SC_HIDE = 194
CONST SC_HALT_REGENERATE = 195
@@ -935,6 +936,25 @@ SPELL hide (target : PC) : "#A13" =
# Level 2 spells
#--------------------------------------------------------------------------------
+SPELL cure-poison (target : PC) : "#L20" =
+ LET level = 2
+ school = LIFE
+ IN (MANA 15, CASTTIME 1000,
+ REQUIRE skill(caster, MAGIC) > level,
+ REQUIRE skill(caster, school) > level,
+ REQUIRE (rdistance(location(caster),
+ location(pc(target))) < 1 + (spellpower / 60)),
+ COMPONENTS ["GambogeHerb"])
+ => EFFECT CALL adjust_spellpower(school);
+ CALL default_effect();
+ IF (running_status_update (target, SC_POISON))
+ THEN (CALL gain_heal_xp(40, 1, 2, 2);
+ stop_status_change (target, SC_POISON);
+ CALL gain_xp(2);
+ IF caster <> target
+ THEN sfx(target, SFX_HEAL, 0););
+
+
SPELL fire-ball : "#W22" =
LET level = 2
school = WAR
diff --git a/npc/001-1_Tulimshar/elanore.txt b/npc/001-1_Tulimshar/elanore.txt
index 1402f044..a2afb2d3 100644
--- a/npc/001-1_Tulimshar/elanore.txt
+++ b/npc/001-1_Tulimshar/elanore.txt
@@ -16,6 +16,7 @@
set @STATUS_LEARNED_LAY_ON_HANDS, 3;
set @STATUS_WAITING_FOR_KADIYA, 4;
set @STATUS_READY_TO_LEARN_CURE_POISON, 5;
+ set @STATUS_LEARNED_CURE_POISON, 6;
if (sc_check(sc_poison))
goto L_CurePoison;
@@ -228,6 +229,7 @@ L_Teach:
if (@Q_status == @STATUS_LEARNED_LAY_ON_HANDS) goto L_Teach_Explain3;
if (@Q_status == @STATUS_WAITING_FOR_KADIYA) goto L_Teach_CheckAdvanceTo3;
if (@Q_status == @STATUS_READY_TO_LEARN_CURE_POISON) goto L_Teach_CurePosion;
+ if (@Q_status == @STATUS_LEARNED_CURE_POISON) goto L_Teach_dunno;
mes "[Elanore the Healer]";
mes "\"You have made good progress, but you lack the magical power to advance further. Also, I would like to observe you some more to be certain that you will make a good healer.\"";
@@ -503,6 +505,29 @@ L_Teach_AdvanceTo3Ready:
L_Teach_CurePosion:
mes "[Elanore the Healer]";
+ mes "\"Thank you again for your help with Kadiya!\"";
+ mes "\"Curing sicknesses is often quite difficult; most of them require complicated potions to be brewed.\"";
+ next;
+ mes "[Elanore the Healer]";
+ mes "\"Fortunately, things are much easier with most poisons. For those we have a simple spell that only requires a Gamboge leaf.\"";
+ mes "\"This is the next spell that I would like to teach you.\"";
+ next;
+ mes "[Elanore the Healer]";
+ mes "\"If you would like to cure someone who is poisoned, first rub a Gamboge leaf between your hands. Your hands must be covered in Gamboge liquid for this to work.\"";
+ mes "\"Speak the invocation, `" + getspellinvocation("cure-poison") + "'.\"";
+ mes "\"Next, you either touch the poisoned person with your hands, or speak their name. You have to be close for this to work, though.\"";
+ next;
+ mes "[Elanore the Healer]";
+ mes "\"Once again, the invocation is `" + getspellinvocation("cure-poison") + "'.\"";
+ mes "\"Come back again soon; there is another spell I would like to teach you.\"";
+ next;
+ set @Q_status, @STATUS_LEARNED_CURE_POISON;
+ callsub S_update_var;
+
+ goto L_Main;
+
+L_Teach_dunno:
+ mes "[Elanore the Healer]";
mes "\"Hmm. I wanted to teach you something, but I've forgotten what it was... please come back later.\"";
next;
goto L_Main;