
Shania of Arroyo
Over the years many players (including myself) have complained about the basic narrative of Fallout 2: why should the Chosen One try to save Arroyo when everyone there is a jerk? Shania of Arroyo is an attempt to address this issue by adding a friendly character to the tribe. She's an older widow with many children who decides to take a personal interest in inspiring the Chosen One with some enthusiasm for finding the GECK. The idea here is if the pc considers Shania a friend (or at least a friendly face), then there's a minimum of one sensible narrative reason to take the GECK quest seriously.
I originally began working on Shania long ago with the idea of writing another tutorial article on making npcs using her as an example. Yet time for playing and modding is never in abundance, and the article never got beyond some preliminary notes. In an idle recent moment I decided to dust off Shania and at least make her character in full. I think she turned out pretty well, and hopefully others will enjoy her.
Shania's script was made in the context of killap's Restoration Project 2.2/2.3, and is fully compatible with games using the latest RP. With a bit of revision the script could also be used in regular (1.02d) games or Megamod games. Shania has lots of friendly extra dialogue with female Chosen Ones, addressing some occassional criticisms that the Megamod's use of New Vision presents an outright hostile environment in Arroyo for lady pcs (if one were to make an adaptation). The primary issues involved there would be first to replace some dialogue about Jordan to refer to someone else, and second to gut some game-time based dialogue keyed to Hakunin's dream sequences, since these would be out place with New Vision's AFR plotline.
I tested Shania with both male and female pcs in brief games, but some of her interactivity is related to events later in the game. The script looks fine to me, but please report any bugs here.
Files available here. Current version number is 3.
If you have not previously added new scripts to (as opposed to changing existing scripts in) your RP 2.2. or greater game, then to use Shania do the following:
1) Copy acshania.int to Fallout2\data\scripts. Copy acshania.msg and aceric.msg to Fallout2\data\text\english\dialogue. Aceric.msg should already exist there, so overwrite the version you had before. acshania.ssl is just a decompiled script if you want to look at such, and is not necessary to play the game.
2) Open the text file scripts.lst found in Fallout2\data\scripts and add the following as the very last line:
acshania.int ; Shania of Arroyo #local_vars=20
3) Open the text file scrname.msg in Fallout2\data\text\english\game and add the following as the very last line:
{1659}{}{Shania} # acshania.int ; Shania of Arroyo
4) Open arvillag.map using the Fallout 2 mapper. You need to put Shania somewhere on the map. I thought a good spot was the tent just to the right of the Elder's tent, so I did the following:
4a) Move the dude standing in that tent somewhere else (or just delete him); his script is self-referential regarding his home tile for wandering around, so as long as you're careful not to move him so he's standing inside a piece of scenery somewhere you can shift him wherever you like.
4b) On the critters tab, the fourth critter shown from the left is a generic female villager. Right-click her picture, then move the cursor around and left-click to place the critter in the middle of the tent. Right-click again on the ground somewhere if necessary to get out of placement mode, then left click on the lady you just placed in the tent. Click "edit" and when the grey box pops up click script and scroll through the list. Click on acshania.int to assign this lady Shania's script, then click "done."
4c) From the File menu at the top of the screen, click Save to save your modified arvillag.map. You're all done, so exit the mapper.
5) Start a new game, and enjoy yourself.
Please don't overlook step five. Many people seem to think a modder is joking around or something when they see "Start a new game." I can't speak for everyone, but in my case I only ever say "Start a new game" if starting a new game really is necessary. In this case, the main reason is the change to scripts.lst. Adding a new entry there confuses Fallout 2 in regard to saved games and may make existing save-games unusable. In other words if you're in the middle of a game right now, wait until next time to install Shania.
If you don't know how to use the Fallout 2 mapper to complete the above steps, this would be a fine opportunity to learn. Otherwise, just wait a while and I'll make a bigger dowload including the map change as well as other npcs I'm currently working on.
FAQ
Q: THIS IS DUMB BECAUSE TEH ELDER IS CHOSEN ONE'S MAMA!!! INTERPLAYS SAY THIS!!!!!!
A: I looked through the Arroyo folk text files, and I did not see this stated in any text that is actually used in the game. Maybe I missed something, though. If so change it, or don't use the mod, whichever you prefer. Think about it, though-- if the Elder was really the Chosen One's mother, isn't it frankly pretty creepy that she's so impersonal and always calling her kid "Chosen One?" The only plausible outcome of such parenting is to manufacture a perfidious sociopath.
Q: What are these "chat-manager" variables?
A: I used them to control how much text is displayed in the response area at any one time. Otherwise there are too many lines to display and they run off the visible area of the response box, leading to the possibility of circular dialogue bugs.
Q: Some local variables don't seem to do anything useful.
A: No big deal. They won't hurt anything. If changes are made in the future, they're there and ready to go.
Q: You've got some nodes where all the conversation choices lead to the same response. Is this a bug?
A: Nope, they're just for variety. In other cases, deliberate ambiguity in writing is intended as a means to facilitate imagined narratives the player may wish to privately construct.
Q: Lines like "if msg text string 100 contains text then" don't make sense. Why did you write that?
A: It's like a flag that says "this line is contrived to comply with the syntax of the Fallout scripting language while constructing complex if-then-else clauses." Some other writers use lines like "if (1 == 1)" to serve the same purpose, but I don't like that technique because in that case anyone other than the original author trying to read the script may have considerable trouble determining if the line is a bug. Did they mean to write "if (numeric variable 1 == 1)" and if so what exactly was variable 1 supposed to represent? This is actually a big problem in many original BIS scripts. Authors often devised fruity little text snippets and assigned them numbers, apparently believing the numbers referred to proto data or hard-coded engine data (for example, look at any door script); then someone else would apparently see these snippets, think them clever and think that the use of numbers indicated some scientific certainty had gone into the thought process somewhere previously, and then put them in a header file thereby spreading the error to numerous scripts (for example, look at all the door scripts). In general, though, message file checks are designed to prevent bad code the various compilers will variously accept anyway like:
Code:
if (hungry == true) then
begin
display message("Your stomach grumbles for food.");
decrease concentration skills by 1;
end
if (smelly == true) then
begin
display message("You stink. You need a shower.");
decrease popularity by 1;
end
else
begin
display message("You're squeaky clean. You must have bathed recently.");
increase popularity by 1;
end
or
Code:
begin
check pants for car keys;
check under couch for car keys;
end
begin
open car door;
insert key in ignition;
end
or
Code:
begin
if (have food == true) then
display message("You put on your chef's hat and open the fridge.");
else
display message("You won't be able to cook dinner until you go to the market for supplies.");
begin
if (car keys == lost) then
display message("You'll have a long walk to the nearest market.");
else
display message("Your car awaits in the driveway.");
end
end
Last edited: