Issues with variables in dialogue result scripts

Post » Tue May 17, 2011 2:22 pm

In Oblivion we had a well prepared Wiki waiting for us that told us basics like "you may not declare variables in result scripts".


Sorry, and again don't take this personally, but if local variables aren't going to work, the compiler should flag them as errors. Having to look in the documentation is not the right answer.
User avatar
Gwen
 
Posts: 3367
Joined: Sun Apr 01, 2007 3:34 am

Post » Tue May 17, 2011 3:20 am

Sorry, and again don't take this personally, but if local variables aren't going to work, the compiler should flag them as errors. Having to look in the documentation is not the right answer.

Agreed.

This whole confusion on my part (which I'm realizing way too late in the game, with hundreds of scripts to change now) came from seeing local variables declared somewhere else (in another mod I believe), and trying it out myself, and getting the results (in that instance) that I wanted. *sigh*

- DU
User avatar
bonita mathews
 
Posts: 3405
Joined: Sun Aug 06, 2006 5:04 am

Post » Tue May 17, 2011 4:00 am

Good point. Now I have to question any "assumption" I make, but I "assume" that a stopped quest does not consume any CPU time. My problem is that when I introduce a quest script to do this type of semaphore operation, there is no point in the game when I can be guaranteed it is no longer needed. So I can never actually stop it.

...so now I'm thinking...

For my purposes, I feel fairly confident that I -do- know when I'd need the quest script running or not (only in dialogue with certain NPCs)... so perhaps starting and stopping it would allow me to offload some generic aspects to the script... the timing would still be an issue, but I suppose I can safely assume there to be enough time between the begin result of topicA, and the end result of topicB...
User avatar
Robyn Lena
 
Posts: 3338
Joined: Mon Jan 01, 2007 6:17 am

Post » Tue May 17, 2011 11:40 am

Interesting.

Question: How does the timing of that work?

For example, if I set NowDoit to 1 in a on begin result script of topica, can I assume that DoSomethingNifty has been run by the time I get to topicb?

If I set NowDoit to 1 in a result script... if I later in the same script have a if NowDoit == 0 clause, will that be run before moving on to the next topic?


It always depends on the application. This is the way to go for a sequenced cutscene for example, the dialogue will start things to happen, at the end the script will restart dialgue. Of course you stop the quest once you're done.

You can use it in dialogue as well, as long as you're in dialogue, the Menumode 1009 block will run once per frame. It's safe to assume that you can't move on to the next topic within one frame, but you can always add safeguards. The script overhead won't slow down your computer, all it currently does is facial animation of the NPC you're talking to.

In Morrowind I used this for a Blackjack game in dialogue in Haldenshore and Blackjack and other games in Havish, including the classic application: Wheel of fortune: Dialogue sets a variable to start the wheel spinning, dialogue ends, wheel moves, at the end the wheel's script starts dialogue again to give you your winnings (or not).

In more time critical situations I used it for the proper balistic movement of cannon balls with polynominal trigonometry in Booty Island. We didn't even have a square root function before tribunal :violin:


But for your applications tokens (items with onAdd scripts) should be the better choice anyway.
User avatar
keri seymour
 
Posts: 3361
Joined: Thu Oct 19, 2006 4:09 am

Post » Tue May 17, 2011 1:19 pm

Sorry, and again don't take this personally,

Why should I?

but if local variables aren't going to work, the compiler should flag them as errors. Having to look in the documentation is not the right answer.

As I wrote in my first posting above. You also shouldn't need 3rd party tools to get a proper feedback when your script doesn't compile. We have to work with the tools we have.
User avatar
Kelly James
 
Posts: 3266
Joined: Wed Oct 04, 2006 7:33 pm

Post » Tue May 17, 2011 4:15 am

I use stage functions a lot, and almost always with local variables and I never noticed any oddities about them using/modifying quest variables.

Now about the dialogue result scripts, I'm not so sure. I know I've used local variables in FWE's crafting dialogue scripts (and the original CRAFT uses them as well). And that worked, though the talking reference only had an empty script attached to it.
User avatar
Sherry Speakman
 
Posts: 3487
Joined: Fri Oct 20, 2006 1:00 pm

Post » Tue May 17, 2011 4:47 am

But for your applications tokens (items with onAdd scripts) should be the better choice anyway.

Showing my newbie status here, but I'm having trouble wrapping my brain around how that would work --- I'm not seeing the "flow" of it.

For example (to 'hear' myself step through the logic), to pay an NPC $50 NCR script
  • I setup a quest script to define some variables
  • I use the begin result script of topicA to set quest.payamount to 50, and then to give... someone? a token.
  • The token has an onAdd script that defines its own variables, sets them with player.getitemcount, calculates the total amount of NCR$ the player has in a single number, and set quest.cashonhand to that amount.
  • The token script also figures out which bills the character can pay with and what change they'd need - say the character only has a single $100, the token script would then set quest.100stopay to 1, quest.20stopay to 0, quest.5stopay to 0, quest.20sinchange to 2, and quest.5sinchange to 2
  • topicB has a condition of quest.cashonhand >= 50, while topicC has a condition of quest.cashonhand < 50
  • topicB has a end result script that adds a second token...
  • Second token's onAdd script does a "player.removeitem moneyncr100 quest.100stopay" etc, and "player.additem moneyncr20 quest.20sinchange", etc


I'm guessing this is not the smoothest way to do this, I'm just trying to wrap my brain around it (having not worked with tokens before - I'm familiar with the concept in a very basic sense, but have no experience with them). I'm thinking this way I have variables for every type of currency in and out, then a handful of different tokens for different calculations, and a single "complete the transaction" token... then the result scripts need only add the correct token and set the main "in and out" numbers.

I feel guilty asking so much of folk's time here... but could you break down for me what should be done differently in the above example? (As well as who should get the token, or if it even matters?)
User avatar
T. tacks Rims
 
Posts: 3447
Joined: Wed Oct 10, 2007 10:35 am

Post » Tue May 17, 2011 10:14 am

Now about the dialogue result scripts, I'm not so sure. I know I've used local variables in FWE's crafting dialogue scripts (and the original CRAFT uses them as well). And that worked, though the talking reference only had an empty script attached to it.


Hm... but they had scripts attached, yes?

We have two issues here:

1. Local variables in result script may not be set properly.
2. What happens to the variable in the reference's script.

The whole thing might be even more complicated, maybe we just need any script on the reference for the result script variables to work.

"Shadowing" (i.e. declaring variables in the same sequence in the references script and the result script and then setting the variables in the result script) was possible in Oblivion, but it wouldn't be much effort to prevent it.
User avatar
TWITTER.COM
 
Posts: 3355
Joined: Tue Nov 27, 2007 3:15 pm

Post » Tue May 17, 2011 7:34 am

For example (to 'hear' myself step through the logic), to pay an NPC $50 NCR script

I agree this is a harder problem than it seems, but if the approach is that hard to describe it may not work. I did not read the details, my apologies. Please do not overlook post #17 from glowcat, who suggested a different approach based on containers.
User avatar
Hearts
 
Posts: 3306
Joined: Sat Oct 20, 2007 1:26 am

Post » Tue May 17, 2011 8:48 am

I use stage functions a lot, and almost always with local variables and I never noticed any oddities about them using/modifying quest variables.

Based on this thread I have just found and fixed one bug, so I am pretty sure JOG's description is correct. I have a quest, with no quest script, and a stage, which looks like:
short iset i to player.getlevelif i > 6   ... do something...

I had not noticed, but the "do something" was never executing. I changed it to remove the local variable and repeat "player.getlevel" at each if test, and now it is working. This is exactly consistent with JOG's comment that when the number of local script variables exceeds the number of quest variables (1 > 0 in my case) the extra local script variables remain at zero regardless of any assignment.

Are you sure your stages are working *properly* ? It is a silent failure / data corruption problem, so it may have escaped notice.
User avatar
Taylor Thompson
 
Posts: 3350
Joined: Fri Nov 16, 2007 5:19 am

Post » Tue May 17, 2011 12:52 am

Hm... but they had scripts attached, yes?

We have two issues here:

1. Local variables in result script may not be set properly.
2. What happens to the variable in the reference's script.

The whole thing might be even more complicated, maybe we just need any script on the reference for the result script variables to work.

"Shadowing" (i.e. declaring variables in the same sequence in the references script and the result script and then setting the variables in the result script) was possible in Oblivion, but it wouldn't be much effort to prevent it.

In the case of CRAFT the speaker reference had an empty script attached to it. like "scn emptyscript", no variables.

Random example for a start result script:
short ishort nref questsetStage CRAFTHelper 0setStage CRAFTHelperRefChecker 1if CHMenuStyle == 1	set CRAFTHelper.showCategories to 0	set CRAFTHelper.showAmmo to 1	set CRAFTHelper.showArmors to 1	set CRAFTHelper.showMisc to 1	set CRAFTHelper.showWeapons to 1else	set CRAFTHelper.showCategories to 1	set CRAFTHelper.showAmmo to 0	set CRAFTHelper.showArmors to 0	set CRAFTHelper.showMisc to 0	set CRAFTHelper.showWeapons to 0endifset i to 0set n to listGetCount CHInitListLabel 99if i < n	set quest to listGetNthForm CHInitList i	if quest != 0		setStage quest 1	endif	set i to i + 1	goto 99endif


And that was working fine.
User avatar
Laura Wilson
 
Posts: 3445
Joined: Thu Oct 05, 2006 3:57 pm

Post » Tue May 17, 2011 12:26 pm

I agree this is a harder problem than it seems, but if the approach is that hard to describe it may not work.

To be honest, the approach I outlined above is simpler than what I have been doing -- which works very well in about 300 different tested result scripts (of course they all are on an NPC with enough defined variables for the 'shadowing' to work without my having realized it).


I did not read the details, my apologies. Please do not overlook post #17 from glowcat, who suggested a different approach based on containers.

I haven't overlooked it -- I'm trying desperately to wrap my brain around how that would work and/or be advantageous... but I cannot figure out how the flow of that would work. The idea of tokens with onAdd scripts I can wrap my brain at least part way around... but not so much with the container idea at the moment. :(
User avatar
Ownie Zuliana
 
Posts: 3375
Joined: Thu Jun 15, 2006 4:31 am

Post » Tue May 17, 2011 1:49 pm

I feel guilty asking so much of folk's time here...

Don't.

In the last few hours there was more traffic here than in the whole last month. While I haven't worked on my mod today, this is quite as interesting (I'm actually visiting here for distraction, when I have only tedious tasks like lighting, landscape-building or Navmeshes open in my WIP.)


but could you break down for me what should be done differently in the above example? (As well as who should get the token, or if it even matters?)


If it were a single NPC or only NPCs added by your mod I'd use the NPC's script to do the stuff. If you want to add that functionality to vanilla NPCs, modifying their scripts would cause incompatibilities with other mods that modify those NPCs, even just a Facelift mod.

To prevent this, you need to do the stuff somewhere else.
A quest-script would be a clean way, but I assumed you need the reference of the NPC the player is talking to (to actually give him the notes, or check his funds or whatever) If this is true then a token is easier.

Instead of giving the NPC your notes you give him the token. The token is simply an item and instead of an Gamemode block you write your script in the OnAdd block. Here you do all the calculations, and take the notes from the player, and finally destroy the token.

so
1. Set the payamount variable
2. give the NPC the token.
3. The token uses a script like this:

scn mightworkint debtint countref NPCbegin OnAdd	set NPC to GetContainer	set debt to quest.PlayerOwes	set count to debt/100	if count <= getitemcount NCRMoney100		player.removeitem NCRMoney100 count		NPC.additem NCRMoney100 count		set debt to debt-count*100	endif	set count to debt/20	if count <= getitemcount NCRMoney20		player.removeitem NCRMoney20 count		NPC.additem NCRMoney20 count		set debt to debt-count*20	endif			set count to debt/5	if count <= getitemcount NCRMoney5		player.removeitem NCRMoney5 count		NPC.additem NCRMoney5 count		set debt to debt-count*5	endif	set quest.PlayerOwes to debtend


If you can do without giving the money to the NPC. You can still do it in dialogue-results, just use global variables or variables defined in the quest script instead of variables defined in the result

If the above script actually does what you want, you can still replace debt with "quest.PlayerOwes" then we're down to one variable, make count another quest-script variable or a global and we're about ready to work safely in the result script.
User avatar
Cathrin Hummel
 
Posts: 3399
Joined: Mon Apr 16, 2007 7:16 pm

Post » Tue May 17, 2011 4:59 pm

Random example for a start result script:

I apologize for complaining of a typo, but is this script placed in the result section of a dialog topic?

The "i" and "n" here are used by NVSE, I assume from the function names, so this opens a *whole different* kettle of worms. I don't know anything about the internals of NVSE; it is possible NVSE may behave differently. Also, I am not sure if you have tracked down memory corruption bugs in large software projects. In my experience, it is possible that in your mod, the local variables are written on top of variables from some other quest or object altogether, corrupting some apparently unrelated variables there. This type of silent corruption is hard to find, and impossible to disprove.

Your example is consistent with my view that you "got lucky" by not having any problems reported. To be conservative, now that I know about this problem, I will never use local variables in un-named scripts. Also, partly related, I am now looking forward much more to see what modding tools are available in skyrim and dragon age II.
User avatar
CRuzIta LUVz grlz
 
Posts: 3388
Joined: Fri Aug 24, 2007 11:44 am

Post » Tue May 17, 2011 8:56 am

In the last few hours there was more traffic here than in the whole last month.

YMMV; I look here regularly, but I post and get much better response on newvegasnexus.
User avatar
Daniel Holgate
 
Posts: 3538
Joined: Tue May 29, 2007 1:02 am

Post » Tue May 17, 2011 1:37 am

I apologize for complaining of a typo, but is this script placed in the result section of a dialog topic?

Yes, what I meant is that it's placed in the "Result script (Begin)" section.

The "i" and "n" here are used by NVSE, I assume from the function names, so this opens a *whole different* kettle of worms. I don't know anything about the internals of NVSE; it is possible NVSE may behave differently. Also, I am not sure if you have tracked down memory corruption bugs in large software projects. In my experience, it is possible that in your mod, the local variables are written on top of variables from some other quest or object altogether, corrupting some apparently unrelated variables there. This type of silent corruption is hard to find, and impossible to disprove.

i and n are just regular variable names, they are don't carry any special meaning for NVSE.

Your example is consistent with my view that you "got lucky" by not having any problems reported. To be conservative, now that I know about this problem, I will never use local variables in un-named scripts.

In the case of dialog result scripts I might've been lucky that the only speaker reference these were called on had an empty script and no declined variables, which might be exactly what's needed to make it work (and this empty script on the activator was set by CRAFT, which if I remember correctly was partly authored by Elminster and he probably knew why he added it).

For stage scripts (the one executed calling setStage), I'm pretty sure that I did not get lucky. PN simply depends too heavily on stage scripts with local variables to leave a problem with them unnoticed.
User avatar
Adriana Lenzo
 
Posts: 3446
Joined: Tue Apr 03, 2007 1:32 am

Post » Tue May 17, 2011 3:22 pm

Don't.

In the last few hours there was more traffic here than in the whole last month. While I haven't worked on my mod today, this is quite as interesting (I'm actually visiting here for distraction, when I have only tedious tasks like lighting, landscape-building or Navmeshes open in my WIP.)

I hear ya. I'm using this thread... well... to avoid $dayjob at the moment.

If it were a single NPC or only NPCs added by your mod I'd use the NPC's script to do the stuff. If you want to add that functionality to vanilla NPCs, modifying their scripts would cause incompatibilities with other mods that modify those NPCs, even just a Facelift mod.

I need to do several things both with added NPCs and vanilla NPCs. In the interest of keeping my own sanity keeping track of things, I'd like to implement them all in the same way. As it stands right now, my change to the dialogue with vanilla NPCs is an incompatability point that I cannot avoid - but I'm doing whatever I can to avoid "unnecessary" ones.

To prevent this, you need to do the stuff somewhere else.
A quest-script would be a clean way, but I assumed you need the reference of the NPC the player is talking to (to actually give him the notes, or check his funds or whatever) If this is true then a token is easier.

Off the top of my head, I cannot think of a time (either in what I've done so far, or in what I'm planning on doing) where I need to give the NPC the funds. The one instance where they are actually kept track of, they are currently being kept track of in a quest script variable (in the current implementation at least). As those funds will never need to be accessed by anything outside of scripts that come up as part of dialogue with that NPC, I don't see this as a functional problem (though it may not be the most graceful).

scn mightwork

That script would mostly do what I want (other than not wanting to give to the NPC) in the -simple- cases... like when no change is needed. But I can handle that part of it, no problem (the logic inside the script, I can wrap my brain around just fine - it is once I get outside of the script that I stumble).

If you can do without giving the money to the NPC. You can still do it in dialogue-results, just use global variables or variables defined in the quest script instead of variables defined in the result

I certainly CAN do it that way, but I'm thinking that I don't want to. Right now in my base mod, I have over 300 result scripts that, other than having different in and out values, could be consolidated into four or five different scripts without difficulty (with several hundred more in the WIP addons to the main mod). Right now I'm facing needing to go and change them all -- a serious PITA by itself. I'd love to consolidate the code so that future changes don't require so much work (barring input values changes, which will always require me to go back to the result scripts)

If the above script actually does what you want, you can still replace debt with "quest.PlayerOwes" then we're down to one variable, make count another quest-script variable or a global and we're about ready to work safely in the result script.

Yes, using the script the way you wrote it there, I could see it being down to a single variable for that specific function...

Now I wish I had GECK and my mod in front of me to double check a few things, rather than thinking about all of this in my head. *chuckle*
User avatar
Kari Depp
 
Posts: 3427
Joined: Wed Aug 23, 2006 3:19 pm

Post » Tue May 17, 2011 12:10 pm

In the case of dialog result scripts I might've been lucky that the only speaker reference these were called on had an empty script and no declined variables, which might be exactly what's needed to make it work (and this empty script on the activator was set by CRAFT, which if I remember correctly was partly authored by Elminster and he probably knew why he added it).

For what it is worth, the example that started this thread involved a vanilla NPC (Major Knight, if you want to take a look at him in the GECK) who has a script associated with him, but no variables declared in it (just one to track his death as I recall) -- and setting variables in result scripts seems to not be working for him.


I do not know enough to say for certain, but from what I know of, the explanation provided here regarding shadow variables does seem to fit the behavior I've been seeing.
User avatar
MatthewJontully
 
Posts: 3517
Joined: Thu Mar 08, 2007 9:33 am

Post » Tue May 17, 2011 12:18 pm

i and n are just regular variable names, they are don't carry any special meaning for NVSE.


I am sure that is true. My point was that the behavior of NVSE functions on shadow variables could possibly be different from the behavior of base game functions. But no problems have been reported on your mod, I guess there is no reason to worry about this.
User avatar
stephanie eastwood
 
Posts: 3526
Joined: Thu Jun 08, 2006 1:25 pm

Post » Tue May 17, 2011 11:07 am

Question, as it relates to this discussion thus far: does anyone have a link to a good resource talking specifically about the in's and out's of using tokens?

I understand the basic concept, but trying to find more information on best practices for them, I keep coming across examples of places to use them or walkthroughs on other subjects that mention the use of tokens. I'm fairly certain I've figured out how I can use tokens effectively in my mod to cut down on a lot of things, but I'm just looking for tidbits on how to create them (so that I don't mess something else up on that)... and things like should I "ref.removeitem token 1" at the end of the onAdd script to keep things clean, or is there a different/better/preferred way to do so? Etc, etc.

As it stands right now, I think I'm going to end up with two different tokens, and a quest script to define a small handful of variables -- everything in the result scripts being either adding tokens or setting the quest defined variable values. Still a lot of result scripts to change, but should be much simpler in the final implementation.

- DU
User avatar
Damned_Queen
 
Posts: 3425
Joined: Fri Apr 20, 2007 5:18 pm

Post » Tue May 17, 2011 12:14 pm

I don't have any leads, but if you find any, please update here. Maybe there are some useful tricks I have not found yet. I am getting less interested in complex scripting, to be honest. I have modded other games where the scripting was much easier to "predict", where my first implementation worked. For my first released FNV mod (see sig), granted, I did not know what I was doing. For my second mod which is almost done, I have spent > 75% of my time in trying literally dozens of different approaches for each complex script behavior I wanted, where each time the NPC either just sat there, or ran off into nowhere for no reason I can understand. For my third mod, I will stick with *extremely simple* script behaviors and just put more conversations, quests and combat. Those, I can do without beating my head against the scripting language.
User avatar
DAVId MArtInez
 
Posts: 3410
Joined: Fri Aug 10, 2007 1:16 am

Post » Tue May 17, 2011 10:59 am

I certainly appreciate where you're coming from.


For my purposes, my scripts really aren't that complex -- rather, the calculations are not exactly "simple", but the commands used are are simple and straight forward. My biggest problem right now is simply lack of understanding how to implement some things to drive my scripts (combined with the fact that I generally don't learn very well from FAQ's and walkthroughs - I do better tearing apart something and figuring out how it works... though in this case, that is how I ended up here in the first place)
User avatar
Prisca Lacour
 
Posts: 3375
Joined: Thu Mar 15, 2007 9:25 am

Post » Tue May 17, 2011 11:00 am

Working on a potential token script (something to do before going into a company meeting I'd rather not go to in a few minutes), I thought I'd toss up what I've got right now --- if anyone is bored enough that they want to check my logic on all of this, I'd be grateful. It doesn't go through things in quite the most ideal order from a transaction standpoint, but the script is much simpler this way and should still work I think... (note that only the NCR portion is done right now - haven't had a chance to write in the Legion portion)

- DU


scn CEOpaymenttokenint Debtint Changeint Hundredsint Twentiesint Fivesint Denariiint Aureiint Billsbegin OnAdd	if CEOvrscript.NCRpayment > 0		set Debt to CEOvrscript.NCRpayment		set Change to 0		set Hundreds to player.GetItemCount MoneyNCR100		set Twenties to player.GetItemCount MoneyNCR20		set Fives to player.GetItemCount MoneyNCR5		if Hundreds > 0 && Debt >= 100 ;// Pay as much as possible in hundreds			set Bills to Debt/100			if Bills <= Hundreds				player.RemoveItem MoneyNCR100 Bills				set Hundreds to (Hundreds - Bills)				set Debt to (Debt - (Bills * 100))			elseif Bills > Hundreds				player.RemoveItem MoneyNCR100 Hundreds				set Hundreds to 0				set Debt to (Debt - (Hundreds * 100))			endif		endif		if Twenties > 0 && Debt >= 20 ;// Pay as much as possible in twenties			set Bills to Debt/20			if Bills <= Twenties				player.RemoveItem MoneyNCR20 Bills				set Twenties to (Twenties - Bills)				set Debt to (Debt - (Bills * 20))			elseif Bills > Twenties				player.RemoveItem MoneyNCR20 Twenties				set Twenties to 0				set Debt to (Debt - (Twenties * 20))			endif		endif		if Fives > 0 && Debt >= 5 ;// Pay as much as possible in fives			set Bills to Debt/5			if Bills <= Fives				player.RemoveItem MoneyNCR5 Bills				set Fives to (Fives - Bills)				set Debt to (Debt - (Bills * 5))			elseif Bills > Fives				player.RemoveItem MoneyNCR5 Fives				set Fives to 0				set Debt to (Debt - (Fives * 5))			endif		endif		if Debt >= 20 && Hundreds > 0 ;// Change in a hundred if needed			player.RemoveItem MoneyNCR100 1			set Change to (100 - Debt)			set Debt to 0		elseif Debt > 0			if Twenties > 0 ;// Change in a twenty if needed				player.RemoveItem MoneyNCR20 1				set Change to (20 - Debt)				set Debt to 0			elseif Twenties <= 0 ;// Change in a hundred if out of twenties				player.RemoveItem MoneyNCR100 1				set Change to (100 - Debt)				set Debt to 0			endif		endif		if Change > 0			if Change > 20 ;// Make change in twenties				set Bills to Change/20				player.AddItem MoneyNCR20 Bills				set Change to (Change - (Bills * 20))			endif			if Change > 5 ;// Make change in fives				set Bills to Change/5				player.AddItem MoneyNCR5 Bills				set Change to (Change - (Bills * 5))			endif		endif	endif	if CEOvrscript.LEGIONpayment > 0	endifend

User avatar
Joanne
 
Posts: 3357
Joined: Fri Oct 27, 2006 1:25 pm

Post » Tue May 17, 2011 7:36 am

To remove the Token use RemoveMe, Removeitem may have unforseen side effects (as in: it will CTD for certain)

Generally token are used for two things:

1. Add a variable to vanilla NPCs - instead of modifying their script give the NPC a number of unplayable items, and check for the itemcount if you want to know the variable value.

2. Run a script on a random actor without modifying the base object, even better. Ingame-Actors from encounters that are spawned from the same base object can have different scripts.

You'll find several examples of token-use in the TESCS Wiki: e.g. http://cs.elderscrolls.com/constwiki/index.php/Unplayable_Items
User avatar
Tracy Byworth
 
Posts: 3403
Joined: Sun Jul 02, 2006 10:09 pm

Previous

Return to Fallout: New Vegas