Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

NWN Neverwinter Nights (NWN & NWN2) Modules Thread

KainenMorden

Educated
Patron
Joined
Aug 19, 2022
Messages
938
Codex Year of the Donut
That's true and was an issue since the conception of Dnd. Gygax always wanted to nerf magic users in various ways because he knew they'd become the most powerful characters in the party even when playing at relatively low lvl. He always preferred a Conan style hero/party and didn't see the appeal in magic users, he opposed the magic missile spell never missing as well.
Every time someone wanted to play a Monk in Advanced D&D - I would point out that the monks ultimate ability - quivering palm - which must score a hit, miss a save for the victim, and can only be used once a week - a mage of the same level could cast 2 disintegrate or death spells spells a day - in addition to the 23 other spells the mage can cast.
Definitely a good point, without starting a huge debate about it, IMHO D&D was designed as a unique type of cooperative war game. Magic users can be killed very easily at low lvl besides at times requiring gold or other components to facilitate magic use and the incentive for the party to expend resources and utilize proper tactics in combat to keep them alive long enough to reach higher lvls is how powerful they can become and how much they can contribute to the party down the road.

That being said, they certainly become much more powerful than other classes fairly quickly, it could be argued especially so in 3e where Clerics and Druids were also considered quite OP by Pnp players and there are a bunch of multi class shenanigans that can go on though many experienced players would very rarely sacrifice a caster lvl for any reason. No edition or offshoots of D&D such as Pathfinder 1e has ever completely corrected this issue though it is somewhat mitigated by restricting play to low lvls.
 

KainenMorden

Educated
Patron
Joined
Aug 19, 2022
Messages
938
Codex Year of the Donut
Magic users can be killed very easily at low lvl
This has always been the case, regardless of which D&D edition it was.
But once casters go level 11+, they break the whole damn game.

I was just making a general point about that, they were designed to be that way from the beginning and this has never changed. I'll also point out that many tables never exceed lvl 10.

In the context of a crpg, of course casters become OP but it wouldn't be Dnd without magic. Perhaps there is a game designer out there that made something like Dnd but with more balance between casters and other classes but I'm not aware of it.
 

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
15,021
Perhaps there is a game designer out there that made something like Dnd but with more balance between casters and other classes but I'm not aware of it.
Me. In my system, casters don't have damaging spells at all.
Is it also true your Paladins have no testicles?
No booty for the goody two shoes paladins.
Torm commands it!
Actually, if you account for the paladin's need for charisma as a main attribute, paladins would get quite a lot of pussy, but charisma is also the ability to influence and inspire others (positively), which is also a paladin's role.
 

KainenMorden

Educated
Patron
Joined
Aug 19, 2022
Messages
938
Codex Year of the Donut
Perhaps there is a game designer out there that made something like Dnd but with more balance between casters and other classes but I'm not aware of it.
Me. In my system, casters don't have damaging spells at all.
Is it also true your Paladins have no testicles?
No booty for the goody two shoes paladins.
Torm commands it!
Actually, if you account for the paladin's need for charisma as a main attribute, paladins would get quite a lot of pussy, but charisma is also the ability to influence and inspire others (positively), which is also a paladin's role.

If this is Torm's will then I will go ahead and headcanon the COT class as a more general Divine Champion that serves a deity whose tenets don't involve castration.

Charisma may be the most contentious ability score and there's many interpretations of it. It could be a measure of physical attractiveness, a measure of social skills/having an agreeable disposition, overall personal magnetism that also fuels spell casting, the measure of the favor you possess with your chosen deity, the ability to inspire a group before battle, etc.

The use of Charisma to seduce women is more Bard territory to me. I wonder if a Paladin makes a promise of faithfulness to a woman and cheats on her, is he stripped of his powers? Toee you could become fallen for getting too drunk, nwn allows you to literally get away with murder.
 

NecroLord

Dumbfuck!
Dumbfuck
Joined
Sep 6, 2022
Messages
15,021
I wonder if a Paladin makes a promise of faithfulness to a woman and cheats on her, is he stripped of his powers?
Some dumb DM's really like screwing their paladin players over...
I always saw a paladin falling in terms of sins and guilt. Sometimes a paladin needs to "get his hands dirty", so to speak, the Prime Material isn't always a nice place and the paladin must commit some less than virtuous acts in his pursuit of Good. A good DM warns the players if they stray too far from the path of Good and inform them that it might eventually warrant a fall.
 

Lacrymas

Arcane
Joined
Sep 23, 2015
Messages
18,739
Pathfinder: Wrath
On top of everything else, I do find it satisfyingly delicious that some of the most charismatic people are off limits. It also stops players from trying to seduce every NPC. There are no other classes in my setting which use Charisma as a primary stat (when we are playing 5E), so it's a dump stat for everyone except Paladins.
 

rogueknight333

Arbiter
Joined
Jul 31, 2017
Messages
366
Me. In my system, casters don't have damaging spells at all.

Damage spells are probably not even the most OP. Time Stop might well be the single most OP arcane spell. Buffing spells can be very OP in low-magic settings. Summoning spells can be very OP, depending on what exactly one is allowed to summon. Enchantment spells like Dominate Monster would be OP, except that 90+% of the enemies that are actually a threat are immune to them in a typical scenario.

... I wonder if a Paladin makes a promise of faithfulness to a woman and cheats on her, is he stripped of his powers?

Perfectly reasonable, since breaking any promise, whatever its content, would be un-paladinish, though whether a single lapse results in being fallen depends on setting, DM, etc.

... Toee you could become fallen for getting too drunk, nwn allows you to literally get away with murder.

In NWN, you can get away with whatever the particular module builder lets you get away with, which can of course vary widely. Since any limitations mean more work for the builder though, usually that is pretty much everything, up to and including murder.

I always saw a paladin falling in terms of sins and guilt. Sometimes a paladin needs to "get his hands dirty", so to speak, the Prime Material isn't always a nice place and the paladin must commit some less than virtuous acts in his pursuit of Good. A good DM warns the players if they stray too far from the path of Good and inform them that it might eventually warrant a fall.

That he is at least trying to always do the honorable thing and avoid "getting his hands dirty" is precisely what distinguishes a paladin from everyone else. It rather destroys the whole point of the class if that is not respected. Also, the rationalization for having special powers beyond what a standard fighter would have is precisely that the paladin A) earns them from his deity by his saintly behavior and B) kind of needs extra power to be able to get away with occasionally acting "lawful stupid" (though that probably worked better in early editions of D&D when paladins tended to be more OP).
 

KainenMorden

Educated
Patron
Joined
Aug 19, 2022
Messages
938
Codex Year of the Donut
Great points on paladins, in the context of NWN, the onus is on the player to make in game decisions that a paladin would make and this will often come at the cost of resources that could be gained in a manner that paladins would find dishonorable which would include accepting a reward after completing some noble quest.

As you mention, the class was designed to give mechanical advantages with the caveat that the player would have RP restrictions placed on them and this has often been "lost in translation" in crpgs.
 

Lacrymas

Arcane
Joined
Sep 23, 2015
Messages
18,739
Pathfinder: Wrath

Damage spells are probably not even the most OP. Time Stop might well be the single most OP arcane spell. Buffing spells can be very OP in low-magic settings. Summoning spells can be very OP, depending on what exactly one is allowed to summon. Enchantment spells like Dominate Monster would be OP, except that 90+% of the enemies that are actually a threat are immune to them in a typical scenario.

Oh, I'm perfectly aware of what exactly is OP and have taken steps to counter that, especially since there is no arcane magic in my setting. However, one of my main goals (aside from keeping casters in check) with not giving spellcasters damaging spells is to give inherent value to martial classes which are infamously underpowered most of the time, especially in 5E.
 

Gargaune

Arcane
Joined
Mar 12, 2020
Messages
3,643
OI! Why haven't any of you ever told me about the OHS Henchmen System?! I've been here for years now and not a peep out of anyone, keeping it all for your greedy fuck selves! I gotta randomly read the very first post in this thread from 2009 for a throwaway mention of it. It's not like it runs out, you know?!

This fucking thing right here lets you roll your own full party in NWN, it has a system that lets you save PCs into a database to then be imported into a game hire as henchmen. It even has a very basic marching formation feature! Look, I know it's not full IE control, you can't manually level-up companions (not easily anyway) and you can't swap leaders, but between this and the new NWN EE henchmen controls, damn if we ain't getting halfway there.

So finally, I can play the D&D party I've always* wanted:

OHS-1.jpg
OHS-2.jpg


Shadowkitty and the three Lawful Neutral Dwarf Fighters Who Hate Elves!


* "always" since I saw that Swen doesn't want me to.
 
Joined
May 31, 2018
Messages
2,868
Location
The Present
By random chance, I found a Wild Mage class mod for NWN2. It looks remarkably similar to the excellent Wild Mage Expansion mod for BG2. I'm convinced that was its direct inspiration. Has anyone tried this? I really enjoyed wild magic (and the mod) for BG2--enough to where this actually makes me consider playing NWN2 again. Like SoZ or MotB.
 

Pikoman

Literate
Joined
Dec 30, 2023
Messages
34
Can anyone suggest me a module similar to ADWR? By similar I do not mean the coomshit, preferably I'd rather not have to read through tons of erotica again if it can be avoided. Sans the sexual content, ADWR is pretty fucking great as a roleplaying experience, few contemporary titles or even older ones boast such a wide array of ways to roleplay your PC and offer such open-endedness to most of the quests available. All in all, it is a very solid RPG in regards to its RP options and I'd like to play a module which thrives on those aspects as well.
 

Gargaune

Arcane
Joined
Mar 12, 2020
Messages
3,643
So I just checked out the NUI Spell Widget mod (i.e. NWN2 Quickcast for NWN1) and it looks pretty fantastic. I was aware of it for a while, but for some reason I'd gotten it into my head that NUI mods can't be packaged in .hak files, but that's not the case, there's a patch hak version as well. The author notes a couple of bugs, including the rare CTD, but it otherwise seems like a very polished solution. You do have to manually initialise it via console on a new game, but after that it's all seamless, you can move it around, resize it, it supports metamagic and counts your spells in the tooltip.

nwn-nuisw-1.jpg


One thing I'd noticed with NWN, particularly with spellcasters, is that I tend to lose track of all my different toys and features midlevels on if I can't cram them into the game's hotbar and end up remembering that "oh, I could've used such and such" after the combat's over. It was less of a case with NWN2 because I had my entire spellbook available at a glance and the hotbars could be filled with all sorts of other stuff, so having that feature backported to NWN is some pretty massive incline.


On a technical note, though - rogueknight333, since you'll be the most knowledgeable among us, apparently the mods listens to EVENT_SCRIPT_MODULE_ON_NUI_EVENT, EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET and X2_S_UD_SPELLSCRIPT and a commenter expressed concern about having to manually merge any proprietary scripts that hook into those. The author replied that the override version (and I'm assuming the .hak version's just a pack of that) calls an ExecuteScript "when it finds an existing event handler for one of the events it needs." What's your take on impact, am I correct in reading that as the mod being set up to maintain compatibility with modules handling those events for other purposes?
 

Just Locus

Educated
Joined
Mar 11, 2022
Messages
549
PSA - For beginner module authors (like me)
Here's a full-fledged comprehensive aurora toolset manual that goes super in-depth with the tools and how to utilize them.

Here - I highly recommend it.
 

Just Locus

Educated
Joined
Mar 11, 2022
Messages
549
I also have another question, so you know when creating a dialogue tree that there is a wizard icon that allows you to setup skill/attribute checks with ease? well I did one for intimidation and it doesn't work in-game, I'm quite a novice at NWN's toolset so I don't understand what's wrong, I'm also unfamiliar with NWN's scripting language, and I'd rather not take a college course on the whole thing, among other things.

I just want to make a medium-sized module that focuses a ton on characterization and dialogue, but I'm quite unskilled at this whole 'scripting' thing that encompasses a ton of NWN modules, I want my intro to be short but concise, but there needs to be quite a few scripted events that I don't know how to get down pat.
 

deama

Prophet
Joined
May 13, 2013
Messages
5,030
Location
UK
I also have another question, so you know when creating a dialogue tree that there is a wizard icon that allows you to setup skill/attribute checks with ease? well I did one for intimidation and it doesn't work in-game, I'm quite a novice at NWN's toolset so I don't understand what's wrong, I'm also unfamiliar with NWN's scripting language, and I'd rather not take a college course on the whole thing, among other things.

I just want to make a medium-sized module that focuses a ton on characterization and dialogue, but I'm quite unskilled at this whole 'scripting' thing that encompasses a ton of NWN modules, I want my intro to be short but concise, but there needs to be quite a few scripted events that I don't know how to get down pat.
Maybe you can prompt chatgpt for the scripting stuff.
 

Just Locus

Educated
Joined
Mar 11, 2022
Messages
549
Well I'm afraid ChatGPT won't give me the answers since what I'm particularly thinking of is a little too specific to just be given a straightforward answer to.
 

Gargaune

Arcane
Joined
Mar 12, 2020
Messages
3,643
I also have another question, so you know when creating a dialogue tree that there is a wizard icon that allows you to setup skill/attribute checks with ease? well I did one for intimidation and it doesn't work in-game, I'm quite a novice at NWN's toolset so I don't understand what's wrong, I'm also unfamiliar with NWN's scripting language, and I'd rather not take a college course on the whole thing, among other things.

I just want to make a medium-sized module that focuses a ton on characterization and dialogue, but I'm quite unskilled at this whole 'scripting' thing that encompasses a ton of NWN modules, I want my intro to be short but concise, but there needs to be quite a few scripted events that I don't know how to get down pat.
The way dialogue works is a "fall through" approach meaning that, when there are multiple responses per node, the NPC will always select the first (highest) one that qualifies. "Qualifies" means that it has no script conditional or that its script conditional returns True.

So when you set up a skill check in dialogue, you write the PC's line (e.g. [Intimidate] "Plane tickets, bitch!") and then you write two NPC responses under it, first the pass and then the fail (e.g. [Success] "I was just trolling, you guys!" and, respectively, [Failure] "LOL DANCING DONUT GO BRRRR"). Now select the first line and, under the Text Appears When, select your starting conditional script or create a new one (manually or using the Wizard). You leave the second one alone, with no conditional, so when you run the conversation, if your skill check script returns True, the NPC will go on the Success branch, or if it returns False, it'll fall through to the Failure.

An easy rookie mistake would be to load the script on the PC's line instead of the NPC's or feeding the Wizard the wrong object to check on. I write all my scripts manually so I'm not familiar with what you can screw up in the Wizard off the top of my head, but if you did put your script in the right place, the first thing you wanna do if it doesn't seem to be working is to check it actually gets called. A quick and dirty way to do that is to make it spit out whatever it's returning:

- Open the script in the Script Editor
- Right at the end, above the closing curly bracket, you'll have a line that says return suchAndSuch;
- Backspace over the return and type in int iResult = so that the line now reads:

int iResult = suchAndSuch;

- Now enter a new line underneath (but above the curly bracket, that stays at the bottom and don't miss the semicolons!) that says exactly:

FloatingTextStringOnCreature("Script debug:" + IntToString(iResult), GetFirstPC());

- And underneath that line, enter another new line that says:

return iResult;

- Hit the Save And Compile button at the top left of the Script Editor and close it

Essentially, if the original code just returns a variable or calculation, you are changing it to store that into a new variable, display it and then return it. Now when you test your module again, when the NPC replies to that conversation node, you should see a "Script debug: " pop up above your PC followed by 1 or 0 - 1 means True, and that your scripted check has succeeded, and 0 means False.

So that would be some general scripting advice. When it comes to dialogue skill checks in particular, you should also know that BioWare included a lot of default auto-roller ones (automatically generate a DC based on your level). The tutorial you linked is a comprehensive affair, but if you're an absolute beginner you should start with the old official BioWare tutorial and, whenever you run into a snag, it's a good idea to crack open an existing module where you remember encountering a similar function and just look at how it was handled there, Aurora's accessible enough that it's an effective approach.

You can absolutely make a decent module in Aurora without ever touching the Script Editor, but don't be afraid to engage with it. There's certainly more complex functions to it, but the basics - particularly what the Script Wizards spits out - are easy to follow along with and can help you make more interesting features later on. When you need to check something out, there's a complete and detailed API reference at the NWN Lexicon.

But anyway, check what I said above with where you loaded your script and try the debug if that's not the problem. If you're still having trouble, you can post your script here and I'll have a look when I'm next on.
 

rogueknight333

Arbiter
Joined
Jul 31, 2017
Messages
366
... On a technical note, though - rogueknight333, since you'll be the most knowledgeable among us, apparently the mods listens to EVENT_SCRIPT_MODULE_ON_NUI_EVENT, EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET and X2_S_UD_SPELLSCRIPT and a commenter expressed concern about having to manually merge any proprietary scripts that hook into those. The author replied that the override version (and I'm assuming the .hak version's just a pack of that) calls an ExecuteScript "when it finds an existing event handler for one of the events it needs." What's your take on impact, am I correct in reading that as the mod being set up to maintain compatibility with modules handling those events for other purposes?

Just skimmed it briefly, but if I understand correctly, he is not saying it is compatible by default, just that it would be easy to make other modules/mods with a custom script in the same event compatible by adding an "ExecuteScript" function to such that runs his scripts after the custom one is carried out.
 

Just Locus

Educated
Joined
Mar 11, 2022
Messages
549

Gargaune

Thank you very kindly for the response, I wanted to ask you something similar in private for the sake of not clogging up the thread with technical advice but I have another question.

I'm going through the ropes when it comes to quest creation in the toolset, so for starters, I'm trying to make a quest where a wizard asks me to kill a camp full of goblins (I put only one for the sake of simplicity) and I created the journal entry that is set to happen once the player kills the goblin. Yet, I'm not sure how to trigger that Journal entry.

I hear online that there is a script when clicking on an enemy under the option "OnDeath" but I couldn't find my Journal entry when looking down the list of scripts, supposedly you need to create your own script for when the enemy dies to trigger the journal entry but this is the 'brick wall' that I've hit.

 

Gargaune

Arcane
Joined
Mar 12, 2020
Messages
3,643
Just skimmed it briefly, but if I understand correctly, he is not saying it is compatible by default, just that it would be easy to make other modules/mods with a custom script in the same event compatible by adding an "ExecuteScript" function to such that runs his scripts after the custom one is carried out.
Thanks, man, appreciate the insight as always! It's hard to guess how widespread the use of these events is among module builders, the first two appear to be new EE functions, so I'm assuming the probability for conflict is still quite low. The last one's an X2 item, so hm... But I'm tempted to roll with it, I like the mod, and just keep a note of a potential problem for now. I might go snooping around the sources in the .erf when I have time, see if I can make sense of the architecture.

Thank you very kindly for the response, I wanted to ask you something similar in private for the sake of not clogging up the thread with technical advice but I have another question.
I gave you a stalk so you can PM me if you want, but I don't think you asking modding questions in here would be "clogging up" the thread - it's on topic and might inspire more of the local fauna to stop wailing about decline in RPGs and put their money where their mouth is.

I'm going through the ropes when it comes to quest creation in the toolset, so for starters, I'm trying to make a quest where a wizard asks me to kill a camp full of goblins (I put only one for the sake of simplicity) and I created the journal entry that is set to happen once the player kills the goblin. Yet, I'm not sure how to trigger that Journal entry.

I hear online that there is a script when clicking on an enemy under the option "OnDeath" but I couldn't find my Journal entry when looking down the list of scripts, supposedly you need to create your own script for when the enemy dies to trigger the journal entry but this is the 'brick wall' that I've hit.
You're confusing journal entries with scripts - the OnDeath field you saw in the creature properties is a script field, that's the only thing it takes. And a journal entry can only be set in two ways - setting it in the Other Actions tab in the dialogue interface, or programmatically by calling AddJournalQuestEntry(...).

So if you want to advance your quest stage on an NPC's death, you can:

a) Script it directly on the Creature. The simple way would be to copy the contents of the existing OnDeath script and append a call to AddJournalQuestEntry, then save it under a new name to set for that one creature. Alternatively, you could also look at scripting it in the OnUserDefined, but that involves more scripting, not less, so we won't get into that.

b) Spawn your Creature as a unique part of a custom Encounter and write a script for its Scripts -> OnExhausted. In this case you'd only have to write your AddJournalQuestEntry in that script.


But both of these mean you have to get down and start writing some code, so if you absolutely don't wanna learn any scripting, does that mean you're screwed? Well, no, I told you it's possible to make a full module without it and I'm a man of my word - you also have the not-so-secret option:

c) Design around it by using an item as a death marker to check for in dialogue. For example, your goblin boss drops a goblin boss rectum that you either have to take back to your wizard, or there's a door with a dialogue that won't let you progress unless you give it a goblin boss rectum. Taking items from the player is simple to do with the Script Wizard, and if you think back to the NWN OC, BioWare quite extensively used items as trackers.

The advantage of this approach is that it's very accessible to beginners, it's quick and easy to do with the Wizard, and it's simple to track in co-op multiplayer. The disadvantage is that it's not a very polished or flexible design, and you'll constantly have to find formulaic workarounds for your quests - e.g. you can't advance the quest stage straight away upon the creature's death, you need to have the player engage in a dialogue first.


Now, all of the above applies to tracking the death of one NPC. If you want to check for killing a group of NPCs, as in all those spawned by a given Encounter, your only realistic option is (b). And if you want to kill all the goblins across the whole map, meaning multiple encounters or creatures, you'll have to go an extra step to an extra step where each cleared objective increments an index and checks whether it's been met etc.


P.S. You linked that big tutorial earlier, but I'm guessing you haven't gone through all 200 pages of it yet, have you? My suggestion is to put it away for now and do the old Aurora Toolset Tutorial I linked in my last post, it's just thirty pages of step-by-step simple module building and you'll be surprised how well it sets you up with the basics.
 

Gargaune

Arcane
Joined
Mar 12, 2020
Messages
3,643
So I had a chance at last to actually play with OHS and NUISW installed, spent some time in DoD with 'em and figured I'd report. First impressions are very positive, the Quickcast menu is very comfortable to have again, much as expected from my NWN2 experience, and OHS coupled with the EE's henchmen controls really opens up the game, I'm starting to feel a bit like I'm in charge of an actual party in the adventure.

A couple of caveats:

- The Spell Widget's inability to register spent spells that have been interrupted (either from Concentration or Arcane Spell failure) can be a bit confusing at times. This is easily fixed by closing and opening it again, but it's just something you gotta keep in mind. Spontaneous conversion is also noted to have the same problem.

- I was very concerned about how OHS would handle story scenarios where the PC is separated from the party... Specifically, I was afraid that if the Link Boy got lost in an inaccessible area, then so much for my custom party. DoD offers a very convenient testbed with a quest where (without spoiling too much) the PC is stripped of their henchmen and posessions and dropped into a maze to be hunted by a werewolf (woo, spooky)! Well, with OHS installed, poor, defenseless Shadowkitty spawned in there with her full escort of Three Lawful Neutral Dwarf Fighters Who Hate Elves™ and the little furball lasted maybe a couple of combat rounds.

On the one hand, yes, this will trivialise such setpiece encounters, but I'm quite chuffed that it's not the alternative where the party got lost. And, frankly, most modules feature few enough such situations that OHS's benefits should far outweigh the drawbacks. Hopefully it works the same in other modules, I dunno off the top of my head how Ossian executed the party removal.


There's one other thing I noticed, though I'm not sure what to make of it yet... I've had a couple of instances where NPCs around Daggerford spawned away from their normal positions, including one where a Waiter at the Chateau Elite popped up by the city gates. Two instances had the ambient package, so that could easily account for it, but one was a default henchmen who seemed to have "shifted" around. I don't recall such behaviour last time I played DoD and I can't rule out that there's some obscure mod inteference (OHS definitely tracks your area entries, it has explicit log messages to that effect, and NUISW handles some internal events, albeit less likely), but then it could also be that it's a DoD issue I just failed to notice or even a new engine bug in the latest build. For now, I don't care enough to start pulling mods and checking, especially for such a sporadic occurrence, but we'll see as I get on.
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom