|
|
|
|
|
|
|
| Demon:
|
|
|
|
|
| Dreamcatcher:
|
|
|
|
|
|
|
|
|
|
|
|
|
| Shadowlords:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Entrance Cavern
The underground river flows through this cavern. Fish bones and makeshift
nets cover the nearby bank. Evidently someone or something has been fishing this river.
Siverfinger leaves the party here:
"Fare-the-well friends, I'll put you on your way now. There used to be a passage to the
surface from these caverns. Watch for orcs, though. Some weeks ago, a score came through
on clumsy rafts and some of them may still be around."
sl1_cave2_trig1
#include "sl_include"
void main()
{
AssociateConversation(GetObjectByTag("Nooble"), "sl1_nooble_caves");
}
Nooble: Uh, what was that noise?
1. Sounded link goblin, or maybe orc . . .
What? You mean, some kind of monster?
1. Sorry Nooble. If you travel with me, you travel with danger.
Uh, okay. I'll be fine. (+good)
sl1_to_good
void main()
{
AdjustAlignment(GetPCSpeaker(), ALIGNMENT_GOOD, 1);
}
2. Deal with it.
I suppose I'll have to.
3. Keep whining and I'll feed you to 'em.
I knew I should have added a "no evil minion" clause in my contract. (+evil)
sl1_to_evil
void main()
{
AdjustAlignment(GetPCSpeaker(), ALIGNMENT_EVIL, 1);
}
2. Just the wind, I think.
Didn't sound like the wind to me.
- Wok and Pok
Two orcs argue in this cave:
Wok: ". . . fish gumbo, fishcabobs, fish pie, fish sandwich . . . "
Pok: "Why boat have to break?"
Wok: ". . . fish tartar, fish surprise . . . "
Pok: "Not like being stuck in cave!"
Wok: ". . . fish in spider juice sauce . . ."
Pok: "Sick of fish, want eat real meat!"
Wok: ". . . BBQ fish, deep fried fish . . ."
Pok: "Wok, Intruders! And juicy ones too!"
sl1_cave2_trig2
// put on trigger
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oWok = GetObjectByTag("Wok");
object oPok = GetObjectByTag("Pok");
AssignCommand(oWok, ActionSpeakString(". . . fish gumbo, fishcabobs, fish pie, fish sandwich . . ."));
AssignCommand(oPok, ActionWait(2.0));
AssignCommand(oPok, ActionSpeakString("Why boat have to break?"));
AssignCommand(oWok, ActionWait(4.0));
AssignCommand(oWok, ActionSpeakString(". . . fish tartar, fish surprise . . . "));
AssignCommand(oPok, ActionWait(4.0));
AssignCommand(oPok, ActionSpeakString("Not like being stuck in cave!"));
AssignCommand(oWok, ActionWait(4.0));
AssignCommand(oWok, ActionSpeakString(". . . fish in spider juice sauce . . ."));
AssignCommand(oPok, ActionWait(4.0));
AssignCommand(oPok, ActionSpeakString("Sick of fish, want eat real meat!"));
AssignCommand(oWok, ActionWait(4.0));
AssignCommand(oWok, ActionSpeakString(". . . BBQ fish, deep fried fish . . ."));
AssignCommand(oPok, ActionWait(4.0));
AssignCommand(oPok, ActionSpeakString("Wok, Intruders! And juicy ones too!"));
AssignCommand(oWok, ActionAttack(GetEnteringObject()));
AssignCommand(oPok, ActionAttack(GetEnteringObject()));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
- Main Cavern
It appears as a makeshift sleeping and eating area was set up by the orcs here.
Cookfires and bedding are scattered about.
A number of orcs are amassed here. Depending on the party's level, there will be orcs,
orc captains, and/or orc shamans present.
- Storage Room
This dingy side cave apparently holds the cargo that the orcs were carrying on their
rafts. The two chests you see here are stamped with the sign of the Purple Sun Trading Coster,
a local merchant company.
One chest is still locked and contains 100 gp and a masterwork rapier. The second chest
contains a healing potion, breastplate, some gems, a scroll of Identify, and a Potion of Many Colors:
Potion of Many Colors
Created from left over alchemist compounds, a Potion of Many Colors is rarely found
in stores. Though the results are typically beneficial, it is impossible to predict what will
happen to the recipient beforehand.
Drinking the potion will result in a random effect: +4 STR, Bless, Sleep, Choking, Heal Light Wounds,
Heal Serious Wounds, Heal Critical Wounds, Heal, Haste, Cure Poison. (adjusted - see DMSummary page)
- Pool Cavern
Clear water drips down from stalactites into the deep pool below.
Topak, a fighter is here. When the party enters the room, he will call "Do not attack! I am peaceful."
sl1_cave2_trig2
// put on trigger
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oTopak = GetObjectByTag("Topak");
AssignCommand(oTopak, ActionSpeakString("Do not attack! I am peaceful."));
AssignCommand(oTopak, ActionStartConversation(GetEnteringObject(), "sl1_topak"));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
Topak: I am a friend, do not attack.
1. Who are you and what are you doing here?
My name is Topak. I serve Captain Preth of the Red Shields.
1. Captain Preth? We seek to deliver a message to him. How fares his troop and how can we find him?
The battles have been bitter the last few weeks. I know not how many times
he has pulled us from certain defeat. He's a good man, the Captain. I'd follow him through Hell
if I must.
2. How did you find yourself down here?
I was scouting the Zhent position last morning when I was ambushed by the enemy. I fled into this cave, only to find it occupied by goblins.
I made my way downward, evading the beasts as best I could. Finally, I made my way through a small opening and filled it behind me.
1. You are a brave man. Perhaps we can join together and regroup with Captain Preth?
That is a fine idea. Together, I'm sure we can make it to the surface. (joins)
sl1_topak_act1
void main()
{
ActionForceFollowObject(GetPCSpeaker(), 10.0);
SetLocalObject(OBJECT_SELF, "Following", GetPCSpeaker());
}
2. Good luck to you Topak.
Thank you. I'm afraid I may need it.
2. Keep your distance fiend!
I shall do you no harm.
Topak wears chain mail and carries a longsword and torch. He is slightly wounded and would gladly be healed.
- Empty Cave
A cool breeze flows through this room from an unknown source.
- Side Cavern
A lone miner worked this cave, his skeleton still grasping his pick.
It appears as if he broke through to a new passage. His bones still show
claw marks and the hole he dug appears hastily refilled.
There is a secret door here, easily found.
If Topak is with the group, he will state:
Somewhere around here is the opening I fled through. It's around here somewhere. I was
a bit disoriented at the time, so you may have to search about.
sl1_cave2_trig3
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oTopak = GetObjectByTag("Topak");
object oPC = GetEnteringObject();
if(GetDistanceBetween(oPC, oTopak) < 20.0)
{
AssignCommand(oTopak, ActionSpeakString("Somewhere around here is the opening I fled through."));
AssignCommand(oTopak, ActionSpeakString("I was a bit disoriented at the time, so you may have to search about."));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
}
- Goblin Storeroom
As you enter this room, the stench of rancid meat and animal must greet
your senses. This room appears to be a storage room for the local denziens,
who are none too tidy.
Several barrels hold a few gold pieces, some torches, and a single lamp.
- Shrine
At the far end of this long cavern is some sort of shrine. Beside the shrine
is a well-built door, out of place beside the rough caves.
Two Goblins have a heated discussion at the end of the hall.
Thrag the Red: "The master sleepsss long. We must prepare a new sacrifissse . . ."
Nor'klash: "The troublesss above makesss for poor hunting."
Thrag the Red: "We may have to turn to one of the people . . ."
They are both Goblin shamans (lvl1 & lvl2). They will attempt to cast Hold Person
and attack.
sl1_cave2_trig4
// put on trigger
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oThrag = GetObjectByTag("Thrag");
object oNor = GetObjectByTag("Nor");
AssignCommand(oThrag, ActionSpeakString("The master sleepsss long. We must prepare a new sacrifissse . . ."));
AssignCommand(oNor, ActionWait(2.0));
AssignCommand(oNor, ActionSpeakString("The troublesss above makesss for poor hunting."));
AssignCommand(oThrag, ActionWait(4.0));
AssignCommand(oThrag, ActionSpeakString("We may have to turn to one of the people . . ."));
AssignCommand(oNor, ActionWait(4.0));
AssignCommand(oNor, ActionSpeakString("Unless something comess to us!"));
AssignCommand(oThrag, ActionAttack(GetEnteringObject()));
AssignCommand(oNor, ActionAttack(GetEnteringObject()));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
Outside the entrance to the Crypt, paladins and clerics receive the message:
The sense of evil is palpable beyond this door. Something old and vile rests fitfully.
sl1_cave2_trig5
// put on trigger
void main()
{
if (!(GetLocalInt(GetEnteringObject(), "SenseEvil") == 1))
{
int iCleric = GetLevelByClass(CLASS_TYPE_CLERIC, GetEnteringObject());
int iPaladin = GetLevelByClass(CLASS_TYPE_PALADIN, GetEnteringObject());
if((iCleric > 0) || iPaladin > 0)
ActionStartConversation(GetEnteringObject(), "sl1_sense_evil", TRUE);
SetLocalInt(GetEnteringObject(), "SenseEvil", 1);
}
}
Conversation (sl1_sense_evil):
The sense of evil is palpable beyond this door. Something old and vile rests fitfully.
Shrine:
(SHRINECLENSED=0)
Bloody animal parts and gnawed bones litter what was once a holy shrine.
1. Leave.
2. (player is a cleric or paladin) Clense the shrine with prayer.
sl1_shrine_con1
int StartingConditional()
{
if(GetLocalInt(GetModule(), "ShrineCleansed") == 1)
return FALSE;
int iCleric = GetLevelByClass(CLASS_TYPE_CLERIC, GetEnteringObject());
int iPaladin = GetLevelByClass(CLASS_TYPE_PALADIN, GetEnteringObject());
if((iCleric > 0) || iPaladin > 0)
return TRUE;
return FALSE;
}
(DC 10 turning check succeeds) White light clenses this dark shrine. (White light animation, +100xp,
set SHRINECLENSED=1, have healing potion appear)
sl1_shrine_con2
int StartingConditional()
{
int iCharisma = GetAbilityModifier(ABILITY_CHARISMA, GetPCSpeaker());
int iRoll = (d20() + iCharisma);
if (iRoll > 10)
return TRUE;
return FALSE;
}
sl1_shrine_act1
void main()
{
SetLocalInt(GetModule(), "ShrineCleansed", 1);
GiveXPToCreature(GetPCSpeaker(), 100);
AdjustAlignment(GetPCSpeaker(), ALIGNMENT_GOOD, 2);
location lShrine = GetLocation(OBJECT_SELF);
CreateObject(OBJECT_TYPE_ITEM, "nw_it_mpotion003", lShrine, TRUE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_DUR_LIGHT_WHITE_5),lShrine, 5.0);
}
(DC 10 turning check fails) The dark gods punish your insolence. (Cast curse on player)
sl1_shrine_act2
void main()
{
SpeakString("The dark gods punish your insolence.");
int iRandom = d4();
switch(iRandom)
{
case 1:
ActionCastSpellAtObject(SPELL_BESTOW_CURSE, GetPCSpeaker());
break;
case 2:
ActionCastSpellAtObject(SPELL_SLOW, GetPCSpeaker());
break;
case 3:
ActionCastSpellAtObject(SPELL_FEAR, GetPCSpeaker());
break;
case 4:
ActionCastSpellAtObject(SPELL_CONFUSION, GetPCSpeaker());
break;
}
}
(SHRINECLENSED=1)
This ancient shrine has been clensed of its unholy taint.
- Crypt
Bones litter the floor of this crypt, some with flesh hanging in gooey strands.
An Ancient Goblin resides here, part of a magical experiment in granting long-life
and intelligent to lesser beasts.
Shresh the Elder: "Ah, visitors to my realm. A worthy destraction, perhaps."
sl1_cave2_trig6
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
SetLocalInt(OBJECT_SELF, "fired", 1);
object oShresh = GetObjectByTag("Shresh");
AssignCommand(oShresh, ActionSpeakString("Ah, visitors to my realm. A worthy destraction, perhaps."));
}
}
Shresh knows some mage spells and will cast Armor on himself before combat. He carries
2 potions of healing, and will use them if his health gets low enough. He attacks
with a masterwork haliberd. In a trapped chest are 50 gp, a scroll of Armor, and a Puzzle Ring:
Puzzle Ring
This strange ring is made from interlocking bands of platnum, gold, silver, and copper. Each band appears
to have been made to be pulled, as if rearranging the pieces will somehow create a different shape. Inside
the bands is a short engraving:
As the cold moon wanes,
Yellow sunlight bathes,
Illuminating red earth,
In white holy fire.
Pulling the bands in the order silver, gold, copper, and platnum will remove the ring from inventory and replace it
with:
Shimmering Ring
This ring shimmers with a blend of colors, constantly moving and warm to the touch.
The ring casts color spray (usable by any class) with 20 charges.
- South Den
Several Goblins are here and will attack the party on sight. If the party is high enough level,
there will also be Goblin captains.
- North Den
Several Goblins are here and will attack the party on sight. If the party is high enough level,
there will also be Goblin captains.
- Waiting Hall
This chamber is cleaner than the rest, though the difference is small at best.
Several Goblin guards are here and will attack on sight.
- Chieftan's Throne Room
The Goblin Chieftan is here, along with several captains. Behind the throne is a chest
containing several gems, 100gp, and a +1 buckler - SkullBreaker:
Forged by inhuman shamans, the bizarre angles and weird designs invoke a dizzying
sense of strangeness. Still, the shield is quite sturdy and looks unnaturally strong.
- Exit
Clean air and starlight filters in from an opening in this cavern to the North.
If Topak is with the group, he will exclaim:
Ah! I feared I would never see the surface again. Now we must seek the captain and give our report.
sl1_cave2_trig6
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oTopak = GetObjectByTag("Topak");
if(GetDistanceBetween(GetEnteringObject(), oTopak) < 20.0)
{
AssignCommand(oTopak, ActionSpeakString("Ah! I feared I would never see the surface again. Now we must seek the captain and give our report."));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
}
|
DM Notes
|
|
- |
- |
- |
- |
- |
|
- |
- |
- |
|
- |
- |
- |
- |
- |
- |
|
- |
- |
- |
- |
- |
|
- |
- |
- |
|
|