Skooma Dealer, Game: TES IV: OblivionI recently returned to Oblivion, decided to return to my very first PC character,
Snaat Rayag the Skooma Dealer, originally rolled in 2014. All he does is buy skooma at a discounted rate, and then tries to sell it. You'd think that such a game might become stale rather quickly, but being a skooma dealer is often a bit risky. It's not just buy/sell, there are other factors. Sometimes customers curse at Snaaty, sometimes they even try to pick fights, or call the guards (if they're of higher morals), etc.
I originally had
Skooma Deals - Buying, Selling--Have others do it for you, by PrettyMurky. Installed it way back in 2014, but recently the mod has stopped working. There's no dialog for skooma selling, even after a fresh uninstall/reinstall the mod stopped working. Began getting frustrated, and so on.
Truth is, I've never been 100% satisfied with Skooma Deals. So now here's my version.
1). Start the Construction Set, bla bla bla. I'm assuming a quest needs to be written from scratch.
2a). Press the Q button on the main toolbar, and right-click > New into the Editor window. Give your quest an ID. I'm calling it aaaSkoomaDealer.
2b). Here's a quick summary of the Quest Data page.
Quest Name: Skooma Dealer
Priority: 30
Toggle Start Game Enabled and Allow Repeated Conversation Topics on.
Quest Conditions:
GetIsPlayableRace == 1.00 AND
GetPlayerInSEWorld == 0.00
Note: GetPlayerinSEWorld is only needed if Shivering Isles is active (toggled on) along with this .esp I'm about to work on.
2c). Start a new script as so...
Scriptname aaaSkoomaDealerMainScript
short DoOnce
float Timer
Begin GameMode
End2d). Change the Script Type scroll-bar from Object to Quest and save. Close the Script Edit panel, Click OK (closing the Quest panel), reopen the quest, and find the script in the scroll-bar. Click OK. Reopen.
2e). The rest of the script is as follows...
Scriptname aaaSkoomaDealerMainScript
short DoOnce
float Timer
Begin GameMode
If (DoOnce == 1) && (Timer < 30)
Set Timer to Timer + GetSecondsPassed
EndIf
If (DoOnce == 1) && (Timer >= 30)
Set DoOnce to 0
Set Timer to 0
Message "I should try another sale..."
EndIf
EndExplanation: What this script will do: every time a sale gets made we can't just spam another sale to the same NPC (this was one of the gripes I had with Skooma Deals). I've got it set so that it'll take 30 seconds for another sale to be attempted, which is the best idea I can come up with for now. Someone more talented might figure a way so that when a sale is made to a particular NPC they won't want another one for X amount of time. Couldn't figure any better than what I've got, though.
So, I'm gaming, my character makes a sale, and since he can't go through the same dialog until 30 seconds have passed, the urge is there to move on to some other NPC.
Some NPCs, as we'll see, are hooked on this junk! They're always eager for more. Others (as they say their dialog) are more cautious. Others are downright angry at my 'toon for trying to sell skooma, and as stated, the worst ones will either call the guards, or try to pick a fight with my dealer.
2f). Click OK (closing the Quest panel) and save.
Now to make a couple quick changes. The Skooma Deals quest I originally had starts by speaking with Roxanne Brigette, an older lady who lives in Bravil's Skooma Den. I don't remember why, and maybe we have a choice to speak to someone else to start things in the Skooma Deals mod. But I do remember that she's one of the NPCs we can buy skooma from.
So in my mod, I've got it so Roxanne is still important because she sells skooma at a lowered price. To make these lowered prices happen, continue to step 3a. For those who are happy with buying at vanilla prices, continue to 4a. To me, the vanilla prices are too high, which means it's harder to make a profit.
Object Window > Magic > Potion3a). . Find PotionSkooma and change its Potion Value (lower right corner). I lowered this to 10. Click OK.
Reason being: real-life dealers often buy drugs at a discounted rate so they can make a profit, and return a portion of this profit to their lord (or lady). With the usual upscale in value caused by NPCs' Dispositions and their Mercantile skill, the price will automatically increase. My dealer buys from Roxy at 23 gp, and mostly sells between 40 to 70 gold.
But it makes no sense to me, the extremely high prices for skooma we see in the game, for such a short-lasting effect. By default, skooma's main effects only last 20 seconds.
3b). Actors > NPC > Breton. Find RoxanneBrigette, or whoever is going to be the main dealer.
3c). Toggle Auto Calc Stats OFF.
3d). Find Mercantile in her Skills window. Click on the Value, press F2, and lower this. I lowered Value from whatever it was all the way down to 5. Not that she's a horrible merchant; I wanted Roxanne to have the cheapest skooma in all the land.
There are several others in my game who sell skooma: Shady Sam, a dealer I added into The Foaming Flask, perhaps a few others I don't know about. There's also a wood elf who stands in shadow behind Bravil's Silverhome On The Water. None of these folks can beat Roxanne's price though, causing the player (me) to have a reason to return to Bravil.
3e). Assuming the seller has AI (and Roxanne does) open whichever packages are pertinent, and toggle Offers Services on. Make sure Potions is selected in their AI panel, whether this AI is a Wander package, an Eat package, etc.
I'm noticing that one of Roxy's AI packages is BravilSkoomaAddictSeek8x12, which is a Bethesda-created package. What this does: if she runs out of skooma she'll leave the den, then go walking around Bravil looking to find more! Since I'm going to add a bunch of skooma to a chest she's in charge of, this means she'll possibly use some of the skooma in this chest. Good gosh. 4a). Reopen the quest and select Quest Stages. Three stages are needed.
Stage 0: Right-click > New into the top Log Entry window and do nothing else.
Stage 5: Right-click > New. In the Result Script box type Player.AddItem PotionSkooma 1. Roxanne gives us a 'sample' during this stage, ya see. ![cool.gif](style_emoticons/sinders/cool.gif)
Stage 10: Again, right-click > New into the top window. In the lower Log Entry box I've got "I have now been designated as an official member of a very unofficial group. Uh... maybe I should just leave it at that."
4b). Click OK, closing the Quest panel, and save.
5a). Reopen the quest and select its Topics tab. I've currently got a total of six GREETINGs.
GREETING 1: First GREETING is when we initially speak to Roxanne.
Info: So you're the new guy, eh? Want to sell ya some skooma?
.............. Well, you've come to the right place. Thing is, if ya wanna do this on yer own ya can, but I gots the best prices!
'ere, 'ave yourself a sample.
GetIsID NPC: RoxanneBrigette == 1.00 AND
GetStage aaaSkoomaDealer < 10.00Result Script: SetStage aaaSkoomaDealer 5
Add Topics window: add an initial skooma topic during which buying arrangements are discussed. I've got aaaBuySkooma here. Right-click > Add Topic into the Editor ID (vertical) window and add the initial skooma topic into this window as well. Dialog for this topic will be added later; for now I want to focus on the GREETINGs.
A second topic, a "NO" topic, can be added as well, which can effectively end the entire quest, if desired. "Seems I've wandered into the wrong hovel, no I ain't interested." Add a fourth stage to the Quest Stages page, toggle Complete Quest on, and type
StopQuest aaaSkoomaDealer into the Result Script box. This is for those who don't want to become a skooma dealer at all! ... Which might be a silly option to have. Assuming someone follows the instructions to create their own version of this idea, or downloads the skooma dealer mod you've made, why would they install this mod in the first place?
OTOH, options are always nice. The "No" topic can also be used for somebody who simply wants to back out of conversation early, so write the quest this way if desired.
---------------------------------------------------------
GREETING 2: During this GREETING the player returns to Roxanne.
Info: Back for more, eh?
GetIsID NPC: RoxanneBrigette == 1.00 AND
GetStage aaaSkoomaDealer == 10.00Choices: aaaBuySkooma and a "No" topic can go here. Basically there's choice of inquiring about skooma or backing out of conversation altogether.
Right-click > Add Topic into the Editor ID window and add the No topic.
---------------------------------------------------------
GREETING 3: This GREETING is said by skooma users and outlaws. I decided to split the world into criminals and citizens, basically. Real-life criminals always adhere to "the code", which means they NEVER rat out a dealer. B1tch, don't snitch.
Info: You... ya ... ya got what I need?
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'BravilSkoomaDen' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetIsID NPC: RoxanneBrigette != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00Copy All those Conditions, so they can be pasted later.
Notice the OR designator between the BravilSkoomaDen faction and BanditFaction. Without OR (if it says AND instead) the game will only allow this GREETING if somebody is in both factions, which is impossible.
Add Topics: Right-click > Add aaaSkoomaDealsTopic1 into this window. Add it into the Editor ID window as well. Dialog for this topic will be written in a few.
Flags: Toggle Random on. This is optional. What this does is makes it so
sometimes NPCs will greet us with the sketchy "Ya got what I need?" greeting. Other times they'll say typical generic stuff like "How does the day greet you, friend?" ... Without this toggled on these folks will always use the sketchy greeting, which gets old.
Note: As we can see, I've got it so those addicts in the Skooma Den faction and bandits use this GREETING. My skooma dealer is aligned with bandits, which means he can freely roam their territory; they know who he is. He is also aligned with Conjurers. But, (being smarter and not so overt with their addictions), Conjurers are going to have their own GREETING. Those who follow this guide can come up with their own faction-alliances, of course.
Marauders, I figure, are more interested in mead and wine and beer. They generally abhor skooma and we never see the drug in their lairs, if I recall correct.
Necromancers also are not generally interested in skooma, although there may be some exceptions; they seem a lot more 'religious' than Conjurers, and therefore don't use drugs which cloud their minds. They also will try to kill my dealer on sight!
![ph34r.gif](style_emoticons/sinders/ph34r.gif)
He's not aligned with them.
-------------------------------------------------------------
GREETING 4: This GREETING is said by middle-class and upper-class citizens of the Empire; those who dwell within law-abiding areas, and it's assumed they sometimes have money. Basically, the NPCs who use this GREETING seem to know who my character is. They
might be interested in his product,
maybe. The world of the skooma dealer is a tricky one though, as we'll see.
Info: You're a shady-looking sort.
Conditions: Paste the conditions copied for the previous greeting, but make sure to change the OR signifiers to ANDs.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE > 20.00Add Topics: Right-click > Add aaaSkoomaDealsTopic2 into this window. Add it again into the Editor ID window.
Flags: Toggle Random on.
Note: GetClothingValue is a way to distinguish those who theoretically have money from those who don't. I experimented with a value of 10 at first, but beggars (and other lower-class citizens) continued to use this GREETING. 20 weeds these people out.
![smile.gif](style_emoticons/sinders/smile.gif)
Note 2: It is possible to add another condition, one which tries to determine whether the NPC actually HAS gold in their pockets via GetItemCount. If they do, the quest continues. If they don't, there is no opening dialog. Problem is, most NPCs don't walk around with money. Or if they do, it isn't very much. Adding coin to them on the spot is possible with scripts, but that gets complicated. OBSE scripts might be required for that.
-------------------------------------------------------------
GREETING 5: This GREETING is said by citizens of the Empire; those who dwell within law-abiding areas, but are of a lower class (or pretend they're of a lower class). Not just beggars, but poorer NPCs such as
Ursanne Loche.
The NPCs who use this GREETING seem to know who my character is; they
might be interested in his product.
Info: Hey. Whatcha got goin' on today?
Conditions: Paste the same conditions, but change the Clothing Value's comparison to reflect poorer clothing choices.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE <= 20.00Add Topics: Right-click > Add aaaSkoomaDealsTopic2 into this window.
Flags: Toggle Random on.
-------------------------------------------------------------------------------
GREETING 6: This GREETING is said by Conjurers in my gameworld. As magicians who pride themselves on how clever they are, they aren't going to appear as openly desperate for drugs with their dialog.
Info: Hmm. I smell something sweet...
Conditions: The conditions from GREETING 3 can be copy-all > pasted, just make sure to get rid of the conditions for BanditFaction and SkoomaDenFaction. The condition for Roxanne is also not needed, since we've eliminated the skooma faction.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'ConjurerFaction' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 ANDAdd Topics: Right-click > Add aaaSkoomaDealsTopic1 into this window.
Flags: Toggle Random on, and if this is the final GREETING in the list, toggle Random End on as well.
5b). Click OK, closing the Quest panel, and save.
Now, to add a couple things into the gameworld.
OBJECT Window > WorldObjects > Container6a). Right-click > edit a chest. ChestVendorSam is a great one to start with, since it's got a sample of skooma, lockpicks, poisons, all items valued highly by the underworld.
I named it aaaSkoomaChest and saved as a New Form.
6b). Make sure Respawns stays toggled on. Left-click onto the Count next to skooma and press F2. I changed the number from 1 to 50. I also got rid of all the other potions in Sam's chest because I felt that a lowlife like Roxanne wouldn't dare keep all those items (she'd sell 'em for more skooma). Instead, I dragged a bunch of Leveled Lists into the chest: VendorAlcoholCommon, VendorAlcoholWine, VendorIngredientsFlora, and so on. This way, all the stuff she's got for sale is random, except the skooma! 🍷
6c). Click OK, saving as a New Form.
CELL window > Bravil Skooma Den7a). Drag the chest
under whatever cell it's going in, so that it's floating in the void. It should be relatively near to Roxanne (or whomever) though, under her feet.
7b). Give the chest a Reference ID. I've got aaaRoxannaChestRef. --- Copy this name and paste it on a Notepad or Wordpad page. Most of all:
Make sure Persistent Reference is toggled on!7c). Click the Ownership tab and change NPC slot from None to whomever. Click OK and save.
Make sure the chest and whoever the merchant is stay in the Render Window, so that both can be accessed.
7d). Now click on the drug lord, or drug lady, while he or she is in the Render Window. So I'm double left-clicking on Roxanne. Select the Merchant Container tab and press the Select Reference in Render Window bar. Now it should be easy to double-click on the chest, and the chest is now referenced when we buy/sell.
Main toolbar > Character > Packages...8a). Right-click > New into the AI Packages window. Create an ID. I've got
aaaDrinkSkoomaPackage. Copy this ID and paste it onto a Notepad page.
8b). Package Type should be Use Item At.
8c). Flags: "Continue if PC is near" and "Skip Fallout Behavior" can both be toggled on. "Must Complete" is optional. The problem with Must Complete is sometimes NPCs can get stuck on this behavior.
Schedule tab: Change Duration from 0 to 1.
Target tab: Select Any Object and find PotionSkooma in the Object ID scroll-bar. Note that this scroll can take a while to pull up.
8d). Count slot should be 1 or 3 or whatever. I assume this is the number of times the NPC uses the item, so if 3 is added, he or she will quaff their bottle three times. 🍾
QUEST Window > Topics tab9a). In the Editor ID window, choose aaaBuySkooma.
Topic Text: Let me see what ya got.
Info: Right, then. You can buy your skooma elsewhere and pay a fortune, but Roxanne's got the best prices in all Cyrodiil...
Conditions:
GetIsID NPC: 'RoxanneBrigette' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 5.00 Choices: aaaBuySkooma
...................... aaaNo
Result Script:
SetStage aaaSkoomaDealer 109b). For those who did not finish the "No" topic, here we go.
Topic Text: No, I changed my mind.
Info: Argh, don'cha waste any more of my time!
Conditions:
GetIsID NPC: 'RoxanneBrigette' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' <= 10.00 Toggle Goodbye on.
Click OK and save.
9c). Reopen and select the aaaBuySkooma topic again. This topic comes after we've gotten all the initial dialog done, and have established a rapport with the seller.
Topic Text: Let me see what you got.
Info: Great ta see ya again. 'ave yerself a look!
Conditions:
GetIsID NPC: 'RoxanneBrigette' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00Result Script (SEE NOTES BELOW):
aaaRoxanneChestRef.Activate player, 1*This 'activate' script will automatically open the skooma chest so we can buy and sell. This is similar to the ShowBarterMenu function used by the GECK. Interestingly, the NPC will stay onscreen while we're shopping, and time does not freeze, which means people continue to walk around in the background. How cool. Why didn't Beth ever use this script for shopping?
Edit:
I have gotten this to work with Roxanne, but have had probs with money not being taken/the player getting threatened after "stealing" from the chest, after trying to add the same script to a custom-made NPC I added. So, experiment with this, knowing things could go wrong. Alright, now the fun really begins. There's going to be dialog, as much dialog as our fingers can type. That Skooma Deals mod I originally had almost always had the same dialog. Those who were inquiring about skooma would say "Hmm, how much?" and then they'd either say "That works for me" if they bought, or "Nah, I'm good" if they didn't buy. The second and third versions of Skooma Deals focused more heavily on
how much we sold our product for, and included a heads-up display which added an actual number onscreen, which designated how much of a persuasion chance we had with whichever NPC the PC is looking at. It also completely destroyed how the Persuasion wheel and Barter system worked. Some gamers might think this sounds great, however I'm one of those people who actually like the vanilla systems. Skooma Deals Version 2 and 3 also seemed to conflict with Enhanced Economy. It also wasn't as 'fun' as the dialog and possibilities we can come up with.
It sounds like I'm bashing Skooma Deals, but there are a few features it has which I probably won't be able to replicate, one of these is Addiction. The more we sell to a particular NPC, the more addicted he or she becomes. This causes their behavior and AI to change. The player-character can designate NPCs to sell product, as well, earning even more coin. All of this requires OBSE, as well as some really complicated scripts.
10a). Go back to the 'criminal', sketchy GREETING, which for me is "You... ya.. ya got what I need?" Right-click its Conditions window and select Copy All Conditions.
Now select the aaaSkoomaDealsTopic1. This has already been linked by the "criminal" GREETING created earlier. The idea is there will be roughly a dozen responses which segue from this greeting, okay? Some responses will be favorable, and others not so favorable... In this first example, we've got an enthusiastic YES from a potential user.
10b). Right-click > New into the Info window...
Topic Text: Get your skooma, right here!
Info: Aye sure, gimme a phial.
Conditions: Paste the conditions from the sketchy GREETING into this window, and note that a couple new conditions are being added into the stack.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'BravilSkoomaDen' == 1.00 OR
GetInFaction Faction: 'ConjurerFaction' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetIsID NPC: RoxanneBrigette != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00- Select GetItemCount and toggle Run on Target on. This way, the Player-Character is being referenced. If the PC hasn't got any skooma at all, this topic (and most of the other topics) will not show up.
- As can be seen, a GetInFaction has been included for Conjurers, so they can say "Aye sure, gimme a phial" as well.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
Player.RemoveItem PotionSkooma 1
Player.AddItem Gold001 50
AddScriptPackage aaaDrinkSkoomaPackageFlags: toggle Goodbye and Random on.
NOTE the DrinkSkooma package. This will cause the NPC who just bought the skooma to immediately start quaffing their bottle! 🍾 Only criminal types and addicts will do this in my game. Citizens of the Empire are more discreet; I figure they buy their dose and then go home before they suck it.
NOTE 2: The 'Set aaaSkoomaDealer.DoOnce to 1', again, causes the quest's timer script to run, which means after a sale is made it'll take 30 seconds to have a chance for another sale.
10c). Right-click > Copy All Conditions (all six of them).
10d). Next response is going to be a "no". Note that it shares the same "Get your skooma, right here" Topic Text as the response above.
Info: Nah, I think I'm good.
Conditions: Paste the conditions which were Copy All'd up above in Step 10c.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye and Random on.
10e). This response is another positive sale, identical to the first response, except the Response text is "Ah. Sweet moon sugar..." .... Everything else, the conditions, the toggles, the scripts, all of that is the same. This second response is therefore only so the NPC says something different from "Aye sure, gimme a phial."
10f). The fourth response is going to be another "no", but the NPC goes out of his or her mind, angrily accusing my dealer.
Info: NO! GET AWAY WITH THAT GARBAGE, SNAKE!
.... Everything else, the conditions, the toggles, the Set aaaSkoomaDealer.DoOnce script, all of that is the same. So we've got a yes, a no, a yes and a no, all four responses randomly and possibly said by the same criminal elements of society. So now it's time to mix things up a bit.
Actually, add a Result Script like so:
ModDisposition Player - 10 to that last "no" response, so the NPC now likes our character a little less.
10g). Next response is going to be another "no", however the outlaw NPC doesn't just want to make a fair purchase. Again, this shares the same "Get your skooma right here" Topic Text.
Info: How about you give me one of them fer free?
....... Or... give me some coin, mate, gimme ALL yer coin!
Flags: toggle Goodbye and Random on.
Conditions: Copy All these after they've been arranged.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetIsSex Male == 1.00 AND
GetInFaction Faction: 'ConjurerFaction' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00- Note that GetItemCount PotionSkooma is not needed for this to show up. There's a reason, as we'll see.
- The conditions up above also don't include the Skooma Den faction (I figure they're too docile and spaced out), nor is Roxanne needed to be canceled, since only males will attack my dealer.
![huh.gif](style_emoticons/sinders/huh.gif)
Yeah, that's right, it's possible my skooma dealer can be attacked, as we'll see in a moment.
Choices: Right-click > Add Topic. I've got aaaGiveSkoomaTopic and aaaNo for choices.
10h). Add aaaGiveSkoomaTopic into the Editor ID window. The idea is: my dealer gives a free phial to the guy threatening him.
Topic Text: I'll give you a free sample, don't hurt me!
Info: Ah, that's the way I like it!
Result Script:
Player.RemoveItem PotionSkooma 1
................... Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Random and Goodbye.
Conditions: Paste the conditions just copy-all'd.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'ConjurerFaction' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00Also, make a second response under this same 'free sample' topic.
Info: A-ha-ha-ha!! Fool'd ya! How about I STILL take all your stash, and your coin!
Result Script:
Player.RemoveItem PotionSkooma 1
.......................... AddItem PotionSkooma 1
..........................SetAV Aggression 50
........................ StartCombat Player Flags: toggle Goodbye, Random, and Random End.
Conditions: Paste the same conditions copy-all'd earlier.
The usual Result Script which delays chance of another sale is not needed, as we'll hopefully be too busy trying not to get our ass kicked!Note:
The AddItem PotionSkooma adds a bottle to whomever the PC is talking to. This way, we can get our skooma back after we've pwned our attacker! 10i). The steps above assumes the dealer has a bottle of skooma to give. What happens if he doesn't?
Right-click > New into the same Info window...so the "I'll give you a sample" topic is shared with this new response.
Info: Huh, what is this? You ain't got no skooma!
....Don't you dare filch on me! You gonna git what's comin' to ya now!
Result Script:
SetAV Aggression 50
........................ StartCombat Player Flags: toggle Goodbye.
Conditions: Paste the same ones, making a change to GetItemCount's comparison value.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' < 1.00 AND
GetInFaction Faction: 'ConjurerFaction' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.0010j). Select aaaNo in the Editor ID window. The scenario here is similar to if we haven't got any skooma. Basically, we say "NO" to the guy taunting us, which causes him to attack.
Info: NO?!? We'll just see about that, skooma dealer!
Result Script:
SetAV Aggression 50
........................ StartCombat Player Flags: toggle Goodbye.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'ConjurerFaction' == 1.00 OR
GetInFaction Faction: 'BanditFaction' == 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.0010k).Click OK, closing the Quest panel, and save.
I made 6 more responses: three of them "yeses" and three extra "nos". One of the yes responses is only said by females: after she makes her purchase she starts flirting with my dealer and even follows him around for a bit (AddScriptPackage aaaFollowPlayerPackage).
![wub.gif](style_emoticons/sinders/wub.gif)
I added some choices to make her follow around or not. If we don't allow her to follow there's a ModDisposition Player -40 script.
Another Yes makes NPCs lose Fatigue and fall to the ground after they suck their purchase (ModAV Fatigue -50). One of the Nos makes an NPC lecture my character, even though the NPC is an outlaw. 🤠 I also made Yes responses specifically for the beasts: one for Khajiit and one for the lizards.
None of the no responses are as dramatic as the fight scenario above, because I want this scenario to happen more rarely than the others. HOWEVER, note that some Khajiit bandit NPCs will still randomly try to attack my dealer. Some of them pick up the "This is a hold-up, and it over, or DIE!" threat, even if they're not Khajiit Highwaymen. Which adds to the unpredictable nature of playing a skooma dealer, of course.
11a). Open the quest, go to its Topics tab, and select aaaSkoomaDealsTopic2. This is the topic used by citizens, and others who dwell within lawfully-abiding areas. Most of these are "no" responses, since most citizens are not users of skooma. So my dealer's only going to sell to these folks in a more cautious, sometimes experimental, manner. Because there are more consequences if trying to go this route. Disposition also becomes a factor at times, as some citizens are unsure if they'd like to cross that line into illegal behavior.
However, more money can be made per sale. 60 to 70 gold instead of 50 or less, gained from outlaws, especially amongst those whose Clothing Value is over 20. Note that the GREETING which leads to this set of responses tends to weed out a good number of customers who haven't got the money.
Right-click > New into the Info window.
Topic Text: You look weary. Have a look at this.
Info: Hmm, I like what I see!
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
Player.RemoveItem PotionSkooma 1
.................. Player.AddItem Gold 60Flags: toggle Goodbye and Random on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] > 40.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE > 20- Make sure to toggle Run on Target on for the GetItemCount.
- Note Disposition is involved. This response only shows up if the citizen is comfortable around my dealer.
11b). Copy All Conditions so they can be pasted for the next response.
11c). The next response is a "no". Right-click > New into the Info window.
Info: NO! Get AWAY from me, FILCHER!!!
Result Script:
ModDisposition Player -40
.................. Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye and Random on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE > 20Note: Disposition is no longer a factor; it doesn't matter if they like our character, all that matters is they HATE skooma.
GetClothingValue is still present. Only higher-brow sorts are going to make a scene.
11d). Here we have another "Yes", however there's a catch, as now we're talking to someone who hasn't got as much money.
Info: Ah, that looks good. Afraid I can't afford your price, though.
Result Script:
Flags: toggle Random on.
Conditions: Copy All the conditions below after they've been set up.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE <= 20Choices: Right-click > Add Topic. Two choices can be added here: aaaReducedSaleTopic and aaaSaleRefusalTopic
11e). Right-click > New into the Editor ID window, and add those two topics.
11f). Let's start with the Reduced Sale topic. Two Infos are needed here. In the first one, the NPC agrees to a lowered price. In the second, he or she declines the sale.
Topic Text: How about half price? 30 gold?
Info: Ah, that'll be just the thing.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
Player.RemoveItem PotionSkooma 1
.................. Player.AddItem Gold 30Flags: toggle Goodbye and Random on.
Conditions: paste the conditions from 11d, although the GetItemCount is no longer needed.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE <= 20Obviously, too many reduced sales are not a good thing. In my gameworld Roxanne charges 23 gp for each bottle of skooma, meaning my dealer only makes 7 gp for this sale.
I also made a second "poor person" topic, this time they agree to spend 40.11g). If the NPC declines purchase...
Topic Text: (this is shared with the dialog in 11f above).
Info: Nah, think I'll pass. Gotta come up with some coin for me children!
Result Script:
Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye, Random on, and Random End on.
Conditions: The same conditions are used from the response above.
11h). Select the 'sale refusal' topic, aaaSaleRefusal. This is the choice the PC makes if they decide not to sell to this poorer soul.
Topic Text: Can't do that, sorry. Maybe next time.
Info: I'll be off, then.
Result Script:
Flags: toggle Goodbye.
Conditions: Same as above in 11d, 11e, and 11f
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE <= 20Click OK and save. Reopen the quest's Topics tab, and
11i). Select aaaSkoomaDealsTopic2. Right-click > New into the Info window. Okay, this next response is THE one any skooma dealer dreads.
Info: NO, and I'm calling the guards at you, you menace.
GUARDS!!!! COME QUICK COME QUICK, WE'VE GOT A SKOOMA MERCHANT ON THE PREMISES!!!
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
................... Player.ModCrimeGold 40
................... ModDisposition Player -40Flags: toggle Goodbye and Random on.
Conditions: paste the same conditions copy-all'd from Step 11b, but remove the GetDisposition.
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00 AND
GetClothingValue NONE > 20- Only the higher-brow types are going to call the guards. In my real-life experience, those with less money would rather not cause such a fuss because they sometimes fear retaliation from gangs.
Note: ModCrimeGold is only adjusted upward by 40, which might not seem enough. Guards are not going to try to arrest the PC if their CrimeGold is only 40, not unless we speak to them directly. So make this higher, if desired. Thing is, my dealer has already racked up quite a few of these charges. As I type this, he's already edging near to 500, which is the mark when guards WILL come after us, "STOP RIGHT THERE CRIMINAL SCUM!"
11j). Disposition makes a factor for this next one. Again, all of these responses stem from the "You look weary..." Topic Text.
Info: Not interested. And I don't like your kind!
Result Script:
Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye and Random on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] <= 40.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00- Make sure to toggle Run on Target is on for the GetItemCount.
11k). I've also got a couple of "No" responses which haven't got anything to do with Disposition or Clothing Value. They're just negative responses from folks who generally aren't interested, without any morality factoring in.
11l). This next response is from potential buyers who are "on the fence". Note that the Persuasion mini-game is going to be needed for these folks.
Info: Hmm, I am interested. Tell me a little more. (Disposition is below 40).
Result Script:
Flags: toggle Random on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] < 40.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.00GetClothingValue is not on in my game, but this can be added if desired.11m). Right-click > Add Topic into the Add Topics window (NOT the Choices window). Make a new topic. I am calling this one aaaExplainSkoomaTopic. Add the aaaNo topic into this window as well.
Choices forces us to make a choice during this section, whereas Topics do not. Therefore, it's possible to play the Persuasion mini-game at this point in an attempt to boost the potential customer's confidence. Another option is, of course, to choose "No" or back out of conversation altogether.
11n). Right-click > New into the Editor ID window and add the "explain" topic. During this step the dealer tries to convince the potential customer to buy a bottle, and for this first portion, is successful. This step assumes the player has played the Persuasion game, and Disposition is 40 or above.
Topic Text: Let me talk about my, uh, 'product'.
Info: Aye, I'll take one, then. Just... be quick about this.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
...................Player.RemoveItem PotionSkooma 1
.................. Player.AddItem Gold 60Flags: toggle Goodbye and Random on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] > 39.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.0011o). Right-click > New into the same Info window shared by "Let me tell you about my product." This dialog is used if the NPC's disposition has not been boosted highly enough.
Topic Text: Let me talk about my, uh, 'product'.
Info: Hmm, I'm not convinced. I'll be off, then.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] < 40.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.0011p). Finally, we need dialog for when the NPC's Disposition
has been boosted high enough, yet they've decided they're not interested.
Info: No, I don't think I want any. Sorry to have wasted your time.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1Flags: toggle Goodbye, Random, and Random End on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetDisposition Reference: [TARGET] > 39.00 AND
GetInFaction Faction: 'BravilSkoomaDen' != 1.00 AND
GetInFaction Faction: 'ConjurerFaction' != 1.00 AND
GetInFaction Faction: 'BanditFaction' != 1.00 AND
GetStage Quest: 'aaaSkoomaDealer' == 10.0011q). Click OK and save. For now, here is the final response, and this one's going to potentially be used by shopkeepers, innkeepers, or any NPC who owns the cell my dealer is in. This response goes under the "You look weary..." topic. Again we've got an angry response, aimed at making a large fuss, and causing a scene.
Info: Listen, I don't like the likes of you, coming into our establishments, our homes, our places of business.
I can't change the law, but I can banish you from here! ...DO NOT return with your foul peddlings, dealer!
Result Script:
Player.ModCrimeGold 40
................... SendTrespassAlarm PlayerRefFlags: toggle Goodbye, Random, and Random End on, assuming this is the last random response of the list.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
IsInMyOwnedCell NONE == 1.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00
GetStage Quest: 'aaaSkoomaDealer' == 10.00Now we've got a problem! During Step 11i the NPC called for the guards, but this was mostly a bunch of hot air. Unless the dealer's CrimeGold was about to tip over 500, such a threat is harmless. In THIS scenario however, the site's owner is able to actually
charge the dealer with a viable crime. For those who've never trespassed in this game, be aware that we've only got a few seconds to vacate the premises, otherwise a guard will show up. "STOP RIGHT THERE..." bla bla bla. 👮🏿♀️
Because of responses like this, my dealer is really aware of whom he tries to peddle his wares to.
Consequences! It only takes one time hearing a warning like this, and the temptation to try selling to another cell-owner falls to just about nil.
Hmm, one more. This one will require another AI package, but this time the NPC's not gonna be sucking skooma.
Main toolbar > Character > Packages11r). Right-click > New into the Ai Packages window.
ID: aaaNineDivineMagicPackage (copy this and paste it somewhere).
Package Type: Cast Magic
Flags: Continue if PC is Near, Must Complete, Skip Fallout Behavior
Schedule tabDuration: 1
Location tab: Toggle Location on, select Near Reference
Ref: 'Player' 'PlayerRef'
Target tab: Click Target. Toggle 'Any Object' on.
Object ID: StandardRestoreHealthTarget2Apprentice
Count: 3
-- StandardRestoreHealthTarget2Apprentice is basically Convalescence. In effect, the chapel dweller is now trying to HEAL our toon. ✝
The Object ID scroll-bar is notoriously aggravating to narrow our toward intended object, as there are a zillion objects in this bar. Be patient!
11s). So one final Response Text, last one, I promise. This one's gonna be said by Holier-than-Thou types, literally. Again, it falls under the "You look weary..." i.e., aaaSkoomaDealsTopic2.
Info: Sir, no, and I advise you to change thy wicked ways. For it is folks like ye who threaten to befoul the grand splendor that is Cyrodiil.
Result Script:
Set aaaSkoomaDealer.DoOnce to 1
................... AddScriptPackage aaaNineDivineMagicPackageFlags: toggle Goodbye on.
Conditions:
GetQuestVariable Quest: 'aaaSkoomaDealer', DoOnce == 0.00 AND
GetItemCount Potion: 'PotionSkooma' >= 1.00 AND
GetInFaction Faction: 'NineDivines' == 1.00
GetStage Quest: 'aaaSkoomaDealer' == 10.0011t). And that about wraps it up for today's lesson on how to create a skooma dealer. There are other things we can try to implement while rolling with this idea, but that's plenty for now. Ciao!
------------------------------------------------------------------------
Let me give a shoutout to some other skooma mods
1).
Jadrax Illegal Skooma: Puts a 'stolen' tag on most examples of skooma in the game. If a guard sees us picking up a bottle, it's a crime. Skooma also gets confiscated when arrests occur.
2).
Skooma Smokeable Pipe: Adds a smoking pipe which automatically goes into the PC's inventory, very professionally done. My dealer can be seen smoking the pipe
in this picture.
There are a number of other skooma mods at THE Nexus: some of them add addiction, others add skooma dens and the ability to craft our own drugs. I haven't tried any of them, but some do look worth looking into.
3).
Crowded Roads Revisited -- Adds random travellers to the roads of Cyrodiil. Is customizable through an .ini file, so we can make some roads less full of people than others. There are dozens of mods like this one. I like Crowded Roads because it adds plenty of random NPCs to sell to.
This post has been edited by Renee: Mar 11 2024, 07:28 PM