// Sagatha the witch, expert for nature and ether magic
//----------------------------------------
function script QuestSagathaHappy {
set @unhappiness, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
if (@unhappiness < @value)
goto L_zero;
set @unhappiness, @unhappiness - @value;
goto L_write;
L_zero:
set @unhappiness, 0;
L_write:
set QUEST_MAGIC, (QUEST_MAGIC & ~NIBBLE_3_MASK) | (@unhappiness << NIBBLE_3_SHIFT);
}
//----------------------------------------
function script QuestSagathaAnnoy {
set @unhappiness, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
if ((@unhappiness + @value) > 15)
goto L_max;
set @unhappiness, @unhappiness + @value;
goto L_write;
L_max:
set @unhappiness, 15;
L_write:
set QUEST_MAGIC, (QUEST_MAGIC & ~NIBBLE_3_MASK) | (@unhappiness << NIBBLE_3_SHIFT);
}
function script SagathaStatus {
set @has_magic, getskilllv(SKILL_MAGIC);
set @evil, 0;
set @good, 0;
set @unhappy, (QUEST_MAGIC & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT;
set @mouboo, ((QUEST_MAGIC & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) & 3;
if (@mouboo == 3)
set @good, @good + 1;
if (@mouboo == 2)
set @evil, 1;
if (@mouboo == 1)
set @evil, 1;
if (MAGIC_FLAGS & FLAG_DID_CUTTREE)
set @evil, 1;
set @druid, (((QUEST_MAGIC & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT) & 12) >> 2;
if (@druid == 3)
set @good, @good + 1;
}
//----------------------------------------
013-1.gat,131,24,0 script Sagatha#_M 167,{
callfunc "SagathaStatus";
set @Q_MASK, NIBBLE_4_MASK;
set @Q_SHIFT, NIBBLE_4_SHIFT;
set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
if (MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA)
mes "[Sagatha the Witch]";
if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
mes "[Witch]";
if (@evil)
goto L_evil;
if (@unhappy > 10)
goto L_unhappy;
mes "Before you stands a beautiful woman, dressed in dark purple robes and wearing a witch's hat.";
if (Sex)
mes "She looks at you suspiciously.";
if (!Sex)
mes "She looks at you impassively.";
next;
set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_SAGATHA;
L_evil:
mes "The witch's eyes flare up in anger as she notices you, and she turns away from you.";
mes "Whatever the reason, she doesn't seem to like you.";
next;
close;
L_unhappy:
mes "The witch glares at you in anger.";
mes "\"I hope you enjoyed killing those innocent forest creatures!\"";
mes "She turns away, clearly not interested in any discussion.";
mes "\"Don't come back until you have come to your senses!\"";
next;
close;
L_Main:
menu "What do you know about...", L_Question;
close;
L_Question:
set @QQ_ELANORE, 1;
set @QQ_MANASEED, 2;
set @QQ_WYARA, 3;
set @QQ_AULDSBEL, 5;
setarray @choice$, "", "", "", "", "", "";
set @choices_nr, 0;
setarray @choice_idx, 0, 0, 0, 0, 0, 0;
set @choice$[@choices_nr], "...Elanore the Healer?";
set @choice_idx[@choices_nr], @QQ_ELANORE;
set @choices_nr, @choices_nr + 1;
if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
goto L_Q_post_manaseed;
set @choice$[@choices_nr], "...the Mana Seed?";
set @choice_idx[@choices_nr], @QQ_MANASEED;
set @choices_nr, @choices_nr + 1;
L_Q_post_manaseed:
if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
goto L_Q_post_manapotion;
set @choice$[@choices_nr], "...Mana Potions?";
set @choice_idx[@choices_nr], @QQ_MANAPOTION;
set @choices_nr, @choices_nr + 1;
L_Q_post_manapotion:
if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
goto L_Q_post_wyara;
set @choice$[@choices_nr], "...Wyara the Witch?";
set @choice_idx[@choices_nr], @QQ_WYARA;
set @choices_nr, @choices_nr + 1;
L_Q_post_wyara:
if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
goto L_Q_post_sagatha;
set @choice$[@choices_nr], "...Sagatha the Witch?";
set @choice_idx[@choices_nr], @QQ_SAGATHA;
set @choices_nr, @choices_nr + 1;
L_Q_post_sagatha:
if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
goto L_Q_post_auldsbel;
set @choice$[@choices_nr], "...Auldsbel the Wizard?";
set @choice_idx[@choices_nr], @QQ_AULDSBEL;
set @choices_nr, @choices_nr + 1;
L_Q_post_auldsbel:
set @choice$[@choices_nr], "...never mind.";
set @choice_idx[@choices_nr], 0;
set @choices_nr, @choices_nr + 1;
menu @choice$[0], -,
@choice$[1], -,
@choice$[2], -,
@choice$[3], -,
@choice$[4], -;
set @menu, @menu - 1;
if (@menu >= @choices_nr)
set @menu, 0;
set @c, @choice_idx[@menu];
if (@c == 0) goto L_Main;
if (@c == @QQ_ELANORE) goto L_Q_elanore;
if (@c == @QQ_MANASEED) goto L_Q_manaseed;
if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
if (@c == @QQ_WYARA) goto L_Q_wyara;
if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
close;
L_Q_elanore:
mes "[Sagatha the Witch]";
mes "\"FIXME.\"";
next;
goto L_Main;
L_Q_manaseed:
mes "[Sagatha the Witch]";
if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
goto L_Q_manaseed_unabsorbed;
if (@has_magic)
goto L_Q_manaseed_m;
mes "\"arimasu\"";
next;
goto L_Main;
L_Q_manaseed_unabsorbed:
mes "[Sagatha the Witch]";
mes "\"...unattuned.\"";
next;
goto L_Main;
L_Q_manaseed_m:
mes "[Sagatha the Witch]";
mes "\"...\"";
next;
goto L_Main;
L_Q_manapotion:
mes "[Sagatha the Witch]";
mes "\"Can't make one without a cauldron.\"";
next;
goto L_Main;
L_Q_wyara:
mes "[Sagatha the Witch]";
mes "\"\"";
next;
goto L_Main;
L_Q_auldsbel:
mes "[Sagatha the Witch]";
mes "\"\"";
next;
goto L_Main;
S_update_var:
set QUEST_MAGIC,
(QUEST_MAGIC & ~(@Q_MASK)
| (@Q_status << @Q_SHIFT));
return;
}