|
|
|
|
|
|
|
| Demon:
|
|
|
|
|
| Dreamcatcher:
|
|
|
|
|
|
|
|
|
|
|
|
|
| Shadowlords:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Night has set on the Forest of Wyrms. Starlight provides dim light and many opportunities for rogues
to sneak about.
On the battlefield, several ravens attack corpses, then fly to another if a player approaches.
- Gnoll Cave
Starlight streams into this dank hole in the cliff wall. To the east, a flickering
campfire can be seen.
If Topak is present, he will say:
Ah, it is nice to breathe fresh air again. Our camp is due east of here. Beware travelling
north, as Zhentarim may still prowl the battlefield.
sl1_forest_trig1
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oTopak = GetObjectByTag("Topak");
if(GetDistanceBetween(GetEnteringObject(), oTopak) < 20.0)
{
AssignCommand(oTopak, ActionSpeakString("Ah, it is nice to breathe fresh air again."));
AssignCommand(oTopak, ActionWait(2.0));
AssignCommand(oTopak, ActionSpeakString("Our camp is due east of here. Beware travelling north, as Zhentarim may still prowl the battlefield."));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
}
- Captain Preth
Huddled around a campfire, the remains of the Red Shield expedition
warm themselves by the flames. Their armor has been battered and their
grim expressions tell of harsh battles and great loss.
sl1_forest_trig2
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
SetLocalInt(OBJECT_SELF, "fired", 1);
object oRedShieldGuard = GetObjectByTag("RedShieldGuard");
AssignCommand(oRedShieldGuard, ActionSpeakString("Halt, travellers! Keep your hands from your weapons and approach slowly."));
object oTopak = GetObjectByTag("Topak");
if(GetDistanceBetween(GetEnteringObject(), oTopak) < 20.0)
{
AssignCommand(oTopak, ActionSpeakString("Hail Dunneth!"));
string sSpeech = GetName(GetEnteringObject()) + " is with me and is a friend.";
AssignCommand(oTopak, ActionWait(2.0));
AssignCommand(oTopak, ActionSpeakString(sSpeech));
if (GetGender(GetEnteringObject()) == GENDER_MALE)
{
sSpeech = "He";
}
else
{
sSpeech = "She";
}
sSpeech = sSpeech + " helped pull me fromthe vilest of goblin caves just west of here.";
AssignCommand(oTopak, ActionWait(2.0));
AssignCommand(oTopak, ActionSpeakString(sSpeech));
AssignCommand(oTopak, ActionWait(2.0));
AssignCommand(oTopak, ActionSpeakString("Let us pass, for we must speak to the captain with haste."));
}
}
}
Guard: "Halt, travellers! Keep your hands from your weapons and approach slowly."
If Topak is with the party, he will exclaim:
Hail Dunneth! <FirstName> is with me me and is a friend. [S/he] helped pull me from
the vilest of goblin caves just west of here. Let us pass, for we must speak to the captain with haste.
Captain Preth:
Welcome travellers, you seem to have found yourselves on dangerous grounds. What brings you
here and what is your business? (Set PRETHTALK=1)
sl1_preth_con1
int StartingConditional()
{
if (!(GetLocalInt(OBJECT_SELF, "PrethTalk") == 1))
return FALSE;
return TRUE;
}
sl1_preth_act1
void main()
{
SetLocalInt(GetPCSpeaker(), "PrethTalk", 1);
}
Hail <FirstName>.
sl1_preth_con2
int StartingConditional()
{
if (GetLocalInt(OBJECT_SELF, "PrethTalk") == 1)
return FALSE;
return TRUE;
}
1. I am <FullName>, and I come from Josura bringing a sealed message to you.
Many thanks friend. Hmm. It is troubling, not in its contents, but the contrast
with the other orders we've been receiving. For days now, we've been getting instructions
to hold fast, no matter the odds. We've been engaging the Zhent troops with terrible losses
on both sides. This new letter says to pull back as soon as possible.
1. That sounds like madness! How could this be?
I'm beginning to suspect the messenger that delivered the previous letters. Unfortunately, he
has left our company earlier this night, heading to the north. Before we withdraw, I'd like
to know who is responsible for the death of so many men. Report back when you're done
and we'll fight our way back over the pass again. Thank you for your help.
1. Very well, I shall investigate and we shall find the villan.
Journal entry:
Captain Preth has indicated that a strange messenger has been delivering orders
to hold the Zhentarim at all costs. This is in contrast to the latest message by Josura
to fall back. Suspicions have turned to a messenger, who disappeared to north last night.
Preth has asked you to investigate the matter.
2. (FOUNDTHIEF=1) I have found the culprit. A thief named Shrak has been pitting the your
two forces against each other. To what end is not clear, though perhaps Josura can make sense of this.
sl1_preth_con3
int StartingConditional()
{
if (GetLocalInt(OBJECT_SELF, "PrethTalk") == 1)
return FALSE;
return TRUE;
}
Well, the plan is clear and the finger points to Hill's Edge. We must return to Scornubel
now. Perhaps speaking with Josura will help decide what we must do next.
1. I am ready to leave now.
Very well. We shall be off. Thank you again for your assistance in this matter. (+1000 xp)
sl1_preth_act2
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "QuestCompleted") == 1))
{
SetLocalInt(OBJECT_SELF, "QuestCompleted", 1);
object oPartyMember = GetFirstFactionMember(GetPCSpeaker(), TRUE);
while (GetIsObjectValid(oPartyMember) == TRUE)
{
GiveXPToCreature(oPartyMember, 1000);
oPartyMember = GetNextFactionMember(GetPCSpeaker(), TRUE);
}
}
}
2. Wait. There are a few matters I must deal with first.
- Burning Wagon
An overturned wagon still burns, throwing dim smoke into the night air.
Two Zhent raiders are nearby.
Yamish: "The latest caravans haven't had much to salvage."
Frukri: "Must be getting more cautions."
Yamish: "Or the new ones don't have much to loose."
Frukri: "True."
Yamish: "In the shadows. Look out!"
sl1_forest_trig3
// put on trigger
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oYamish = GetObjectByTag("Yamish");
object oFrukri = GetObjectByTag("Frukri");
AssignCommand(oYamish, ActionSpeakString("The latest caravans haven't had much to salvage."));
AssignCommand(oFrukri, ActionWait(2.0));
AssignCommand(oFrukri, ActionSpeakString("Must be getting more cautions."));
AssignCommand(oYamish, ActionWait(4.0));
AssignCommand(oYamish, ActionSpeakString("Or the new ones don't have much to loose."));
AssignCommand(oFrukri, ActionWait(4.0));
AssignCommand(oFrukri, ActionSpeakString("True."));
AssignCommand(oYamish, ActionWait(4.0));
AssignCommand(oYamish, ActionSpeakString("In the shadows. Look out!"));
AssignCommand(oFrukri, ActionAttack(GetEnteringObject()));
AssignCommand(oYamish, ActionAttack(GetEnteringObject()));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
The raiders both wear breastplate armor and carry longswords and medium shields. In the wagon
debris is a chest containing 50gp, a scroll of Cure Serious Wounds, and a potion of healing.
- Ring of Stones
A small fairy ring stands here. The stones look ancient, encrusted with moss and lichen.
If players die, they will return here, minus some experience points.
A deer is nearby. If a druid comes by, a conversation will be struck up:
sl1_forest_trig4
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oWalksQuietly = GetObjectByTag("WalksQuietly");
if (GetIsObjectValid(oWalksQuietly))
{
int iDruid = GetLevelByClass(CLASS_TYPE_DRUID, GetEnteringObject());
int iRanger = GetLevelByClass(CLASS_TYPE_RANGER, GetEnteringObject());
if((iDruid > 0) || iRanger > 0)
{
ActionStartConversation(GetEnteringObject(), "sl1_walksquietly", TRUE);
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
}
}
Walks Quietly: Hello, friend of the forest.
1. Greetings, quiet one.
It is good to find one who is a caretaker of the forest. Many men have invaded our
homes, killing my brothers and sisters when they are found.
1. Where are these men?
Some to the north, some to the south, and another in the woods to the northeast.
I will do what I can to bring peace to this forest.
1. Peace be with you, Walks Quietly. (+100xp)
sl1_walks_act1
void main()
{
GiveXPToCreature(oPartyMember, 100);
}
2. Hey, I'm regular Doctor Dolittle!
Though you speak our tongue, only nonsense spews from your mouth.
- Battlefield
The sight ahead of you is gruesome, with burnt and battered bodies scattered about.
Several heated battles have been fought here, with heavy losses on both sides.
Nooble: Oh my, all these bodies.
1. I thought you'd be excited by the prospect of looting.
Well, sure, who wouldn't be. All a matter of organization, that's all.
2. Don't worry, I'll protect you.
Sure, boss. Confidence is high!
sl1_forest_trig8
#include "sl_include"
void main()
{
AssociateConversation(GetObjectByTag("Nooble"), "sl1_nooble_forest");
}
A DC15 Spot check will reveal the following:
You notice that while there are many bodies present, some have been carted away. Wagon
tracks lead to the northwest, into the woods.
sl1_forest_trig5
#include "nw_i0_tool"
void main()
{
if(!(GetLocalInt(GetEnteringObject(), "WagonTracks") == 1))
{
if(AutoDC(DC_MEDIUM, SKILL_SPOT, GetEnteringObject()) == TRUE)
{
SetLocalInt(GetEnteringObject(), "WagonTracks", 1);
ActionStartConversation(GetEnteringObject(), "sl1_wagontracks", TRUE);
}
}
}
Two old men paw the bodies that remain:
Jakob: "'Tis an art, I say! In me father's time, no one went pawnin' over bodies lookin' for loot. 'Twas much more methodical."
Noris: "Sounds like ya'd still strip the bodies bare. 'Tis the result, not the method."
Jakob: "Show 'em some dignity. Not their fault they're lyin' in the mud."
Noris: "My ways more practical. 'Sides, we need to clear out before the dawn brings another battle."
Jakob: "Perhaps so. Ooh, I found meself a pretty treasure!"
Norris: "Nice."
sl1_forest_trig6
// put on trigger
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oJakob = GetObjectByTag("Jakob");
object oNoris = GetObjectByTag("Noris");
AssignCommand(oJakob, ActionSpeakString("'Tis an art, I say! In me father's time, no one went pawnin' over bodies lookin' for loot. 'Twas much more methodical."));
AssignCommand(oNoris, ActionWait(4.0));
AssignCommand(oNoris, ActionSpeakString("Sounds like ya'd still strip the bodies bare. 'Tis the result, not the method."));
AssignCommand(oJakob, ActionWait(6.0));
AssignCommand(oJakob, ActionSpeakString("Show 'em some dignity. Not their fault they're lyin' in the mud."));
AssignCommand(oJakob, ActionWait(4.0));
AssignCommand(oJakob, ActionSpeakString("My ways more practical. 'Sides, we need to clear out before the dawn brings another battle."));
AssignCommand(oNoris, ActionWait(4.0));
AssignCommand(oNoris, ActionSpeakString("Perhaps so. Ooh, I found meself a pretty treasure!"));
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
Norris: Many pardons <sir/lady>. The fighting has taken our farms and we can only live by scavaging what we can.
1. I pity you. Begone.
Jakob: Oh, kind <sir/lady>, we dunna mean no harm. These poor men won't be needed what we take. Besides,
our wife and chil'n gotsta eat.
1. You are disgusting, vile creatures to defile the dead in such a way.
Oh, yes <sir/lady>. You can rightly call me disgusting, and vile too. But a man's gotsta get food in 'is belly.
2. Out and about for a bit of looting, I see? Well, go about your business gentlemen.
3. (PRETHTALK=1) I seek a messenger, someone out of place on the field of battle.
sl1_jakob_con1
int StartingConditional()
{
if (!(GetLocalInt(OBJECT_SELF, "PrethTalk") == 1))
return FALSE;
return TRUE;
}
Well, there was this feller all in black, skulking around counting bodies. Took a few of 'em
off with 'im, too. Even the one's we'd already gone over. 'e went off to the north somewhere.
1. Very well. Goodbye
4. I have no time for this.
You can ask them about the messenger and they'll respond:
The men can be easily killed, as they are unarmed. They carry 45gp each.
- Forest Spirits
Strange shadows and lights play among the trees. The air vibrates with deep, silent groans.
Moving into this area will result in random minor effects on a party member:
do 1 point of damage, heal 1 point, bless, curse.
On the ground is a wand-shaped branch:
Weirding Branch
Fallen from a nearby Ironwood tree, this strange branch seems to have been affected by the magics of this glade.
Drudic lore tells of totems fashioned from branches such as this, when merged with certain living gems, to
fashion a powerful totem.
When combined with the Living Crystal, this forms a Totem of Entanglement:
Totem of Entanglement
This lesser totem is often used by young druids in defense of their glade. Few outsiders
will enter again, once the earth itself entwines about their legs.
Casts Entange, 10 charges. (Druid only)
- Front Guard
Several heavily armed Zhent guards are here:
Guard: Halt intruder! If you take another step forward, we'll cut you down where you stand.
Give us good reason as to why we should let you through.
1. Die Zhent scum!
2. We're reinforcements from the East. A mixup left us without regulation uniforms.
(Persuade DC15 check fails) Ha! A likely story. At least you made me laugh before I cut you down! (they attack)
sl1_zguard_con1
#include "nw_i0_tool"
int StartingConditional()
{
if(AutoDC(DC_HARD, SKILL_PERSUADE, GetPCSpeaker()); == FALSE)
return FALSE;
return TRUE;
}
sl1_zguard_act1
void main()
{
ActionAttack(GetPCSpeaker());
ActionSpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
}
(Persuade DC15 check succeeds) Hmm. You might be able to find one one off of the bodies on the battlefield. Good luck.
3. Um, my mistake. Wrong campsite.
Intruders! Get them! (they attack)
sl1_zguard_act1
4. (Have message in inventory) You and the Red Shields have been duped into fighting a needless battle.
I found this letter that explains it all.
sl1_zguard_con1
#include "nw_i0_tool"
int StartingConditional()
{
// Make sure the PC speaker has these items in their inventory
if(!CheckPartyForItem(GetPCSpeaker(), "ShrakLetter"))
return FALSE;
return TRUE;
}
Hmm. Looks like the captain should see this. Keep your hands away from your weapons and
go back to the campfire. (SHOWLETTER=1)
sl1_zguard_act2
void main()
{
SetLocalInt(GetModule(), "ShowLetter", 1);
}
- Zhent Camp
Scowling men quietly plan strategy by the fire. They quiet as you approach.
Captain Merjon:
(ZHENTGO=1) Enough talk. We must prepare our camp, so begone.
sl1_merjon_con1
int StartingConditional()
{
// Inspect local variables
if(GetLocalInt(OBJECT_SELF, "ZhentGo") == 1)
return TRUE;
return FALSE;
}
(SHOWLETTER=0) Who are you and what are you doing here?
(SHOWLETTER=1) Well, my guard seems to think you have something worth my time. Show it now.
sl1_merjon_con2
int StartingConditional()
{
// Inspect local variables
if(GetLocalInt(GetModule(), "ShowLetter") == 1)
return TRUE;
return FALSE;
}
1. All Zhentarim shall perish beneath my blade! (they attack)
sl1_merjon_act1
void main()
{
ActionAttack(GetPCSpeaker());
}
2. (PRETHTALK=1) My name is <FullName>. It is possible that you and the Red Shields are being
duped by outside forces trying to thin both your ranks.
Is this some sort of ruse? Perhaps you were sent by Captain Preth
to try to get us to retreat?
1. I assure you this is not the case. Please take my word for this.
(Persuasion DC25 succeeds) Hmm. It has been a hard battle, but perhaps you are right. We shall withdraw (+200xp, ZHENTGO=1).
sl1_merjon_con3
int StartingConditional()
{
int iCharisma = GetAbilityModifier(ABILITY_CHARISMA, GetPCSpeaker());
int iSkill = GetSkillRank(SKILL_PERSUADE);
int iRoll = (d20() + iCharisma + iSkill);
if (iRoll >= 25)
return TRUE;
return FALSE;
}
sl1_merjon_act2
void main()
{
RewardPartyXP(200, GetPCSpeaker);
SetLocalInt(GetModule(), "ZhentGo", 1);
}
(Persuasion DC25 fails) Your word is not enough. I will need hard evidence.
2. I have a letter that will prove this is so.
sl1_zguard_con1
Hmm. The pieces are coming together. We have been duped! Pawns in a game. Quickly men,
pack your gear. We leave at dawn. (+ 500 xp, ZHENTGO=1)
sl1_merjon_act3
void main()
{
RewardPartyXP(500, GetPCSpeaker);
SetLocalInt(GetModule(), "ZhentGo", 1);
}
3. I have only suspicions at this time, but I ask that you allow us to seek more clues and bring them to you when we find them.
Very well. If I find you are a spy for the Red Shields, I shall slit your throat.
3. My mistake. Wrong camp. (they attack)
sl1_merjon_act1
The Zhent troops are high level 3-7 and it would be a slaughter to attack them.
- Forest Elf
Elowyn: Strangers, you seem not like the men who battle day in and day out. Perhaps you have
come to stop this loss of life? Should you like to trade, I have some things that may be of
interest.
1. I would welcome trade with you good elf.
2. Sorry. I must depart now.
3. (PRETHTALK=1) I seek a false messenger who has been tricking the men in this forest.
sl1_jakob_con1
There is a small hunting lodge to the northeast. Though long abandoned, I have
seen recent activity there.
The elf will trade with the party. She sells healing potions, arrows, bolts, bullets,
and a few scrolls (Burning Hands, Bless, Knock, Sleep, Color Spray).
- Shrak's Hut
(Set FOUNDTHIEF = 1)
sl1_forest_trig7
#include "sl_include"
void main()
{
if (!(GetLocalInt(OBJECT_SELF, "fired") == 1))
{
object oShrak = GetObjectByTag("Shrak");
location lShrak = GetLocation(oShrak);
// Buff up Shrak
int iEL = GetEncounterLevel(GetEnteringObject());
if (iEL > 1)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectACIncrease(iEL - 1), oShrak);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectAttackIncrease(iEL - 1), oShrak);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectTemporaryHitpoints(4 * (iEL - 1)), oShrak);
}
SetLocalInt(OBJECT_SELF, "fired", 1);
}
}
A small house lies hidden in the trees, a worn wagon resting nearby.
Shrak: So you are the meddlers sent by Josura. It appears you've found your villain . . . and your doom.
1. Prepare to die, dealer of the dead! (attacks)
sl1_shrak_act2
2. Before you kill me, could you answer one question?
(persuasion DC10 succeeds)I'm feeling generous, ask.
sl1_shrak_con1
#include "nw_i0_tool"
int StartingConditional()
{
if(AutoDC(DC_MEDIUM, SKILL_PERSUADE, GetPCSpeaker()); == FALSE)
return FALSE;
return TRUE;
}
1. Who do you work for?
Her name is Quincel, of Hill's Edge. A fearsome woman, but she pays well. Enough talk, now we finish this. (+50xp, attacks)
2. Why are you collecting all these bodies?
For gold, of course. What those priests do with these husks, I try not to think about it. Enough talk, now we finish this. (+50xp, attacks)
sl1_shrak_act1
void main()
{
GiveXPToCreature(GetPCSpeaker(), 50);
ActionAttack(GetPCSpeaker());
}
3. How did you get the Zhent and the Red Shields to fight?
(persuasion DC10 fails)Ha! You think me a fool! Such tricks work only in those women's books I'm sure you read.
sl1_shrak_con1
sl1_shrak_act2
void main()
{
ActionAttack(GetPCSpeaker());
}
A simple matter, really. By intercepting their messengers and providing the captains with false
orders, they've been fighting to the death quite nicely. Enough talk, now we finish this. (+50xp, attacks)
sl1_shrak_act1
3. Wait - perhaps we can reach an understanding.
(persuasion DC10 succeeds)I see, and what would this understanding entail?
sl1_shrak_con1
1. I'll let you go, and forget this ever happened.
(persuasion DC20 succeeds) I can see that discretion is best in this matter. It is time to move on. (Shrak leaves map, +50xp, +evil)
sl1_shrak_con2
#include "nw_i0_tool"
int StartingConditional()
{
if(AutoDC(DC_HARD, SKILL_PERSUADE, GetPCSpeaker()); == FALSE)
return FALSE;
return TRUE;
}
sl1_shrak_act3
void main()
{
GiveXPToCreature(GetPCSpeaker(), 50);
// It's an evil act for good players
int iAlignment = GetAlignmentGoodEvil(GetPCSpeaker());
if(iAlignment = ALIGNMENT_GOOD)
AdjustAlignment(GetPCSpeaker(), ALIGNMENT_EVIL, 1);
ActionMoveAwayFromObject(GetPCSpeaker());
DestroyObject(OBJECT_SELF, 10.0);
SetCommandable(FALSE);
}
(persuasion DC20 fails)Ha! At least your final words were amusing to me. (attacks)
2. (player has 100gp) I'll give you 100 gold and let you go.
sl1_shrak_con3
int StartingConditional()
{
if(GetGold(GetPCSpeaker()) < 100)
return FALSE;
return TRUE;
}
(persuasion DC10 succeeds) Very well, it was time to move on anyway. (-100gp from player, +100gp to Shrak, +evil, Shrak leaves map)
sl1_shrak_con1
sl1_shrak_act4
void main()
{
TakeGoldFromCreature(100, GetPCSpeaker());
// It's an evil act for good players
int iAlignment = GetAlignmentGoodEvil(GetPCSpeaker());
if(iAlignment = ALIGNMENT_GOOD)
AdjustAlignment(GetPCSpeaker(), ALIGNMENT_EVIL, 1);
ActionMoveAwayFromObject(GetPCSpeaker());
DestroyObject(OBJECT_SELF, 10.0);
SetCommandable(FALSE);
}
(persuasion DC10 fails)Ha! A pittance for what I can make selling your bloated corpses! (attacks)
3. Surrender, and I shall kill you quickly.
Never! (attacks)
(persuasion DC10 fails)An understanding? With the likes of you? I think the only understanding you'll have is with the point of my blade.
Inside is Shrak, with several rogue assistants if the party's level is high enough. An arrow
trap is immediately in front of Shrak (1d6 dmg).
Shrak wields a masterwork longsword (BlackMarrow - see below) and wears +1 leather armor. Inside is two chests. The locked,trapped chest
contains 200gp, banded mail, and several gems. The unlocked chest contains a letter (see below),
a masterwork lockpick set, 250gp, and Bracers of Armor +1.
While seemingly made of simple steel, the metal has been darkened by application
of some unusual material. With the name "BlackMarrow" etched in the hilt,
the gruesome substance is strongly suggested.
The letter can be shown to the captain of the Zhent or Captain Preth to further the plot.
// OnAquireItem module event
void main()
{
oAcquired = GetModuleItemAcquired()
if (oAcquired == GetObjectByTag("ShrakLetter")
{
SetLocalInt(GetModule(), "FoundThief", 1);
AddJournalQuestEntry("DeliverLetter", 2, GetItemPossessor(oAcquired));
}
}
Shrak,
Your efficiency continues to impress me. As long as neither the Zhentarim or Red Shields suspect
that we have disrupted their lines of communciation, continue to have them engage in battle.
The fresh corpses will be much appreciated and you will be well compensated for them.
Bring your cargo to the warehouse at Hill's Edge. Enclosed is a claim ticket which
should allow you entrance to the store room.
In Cyric's name,
Quincel
Journal entry:
It appears that Shrak has been a false messenger, pitting the two opposing armies in
an attept to create fresh bodies for some dark purpose. The trail leads to Hill's Edge,
where you may find further answers. Until then, you must show this letter to Captain Preth
and make your way back to Scornubel to alert Josura and procure transportation.
|
DM Notes
|
|
- |
- |
- |
- |
- |
|
- |
- |
- |
|
- |
- |
- |
- |
- |
- |
|
- |
- |
- |
- |
- |
|
- |
- |
- |
|
|