Sign in to follow this  
Followers 0

Cyrodiil Reactive Newspaper System

1 post in this topic

Posted

Hey, everyone. I figured I should post this writeup as a guide on how the reactive newspaper system in Cyrodiil is structured. This is important to anyone who authors quest content and wants/may want to have newspapers that reflect those events, and also important to anyone who wants to write, implement, add or place newspapers into the game world.

The direction we've taken with the newspapers is to create reactivity in them the same way Oblivion did - by having new newspapers appear in circulation as a response to in-game events. The basic principle of adding a book to the game is well-understood, but the way to get a newspaper to enter circulation obviously isn't.

So, here's how it's structured and how to use it.

The leveled lists

The newspaper system works based on leveled lists, all with the prefix CYRLvlNewspaper. They're essentially done in a nested structure, with one leveled list for each newspaper 'brand' (Black Horse Courier, Nibenese Herald, Colovian Chronicle, Mudcrab) - e.g. CYRLvlNewspaperColovianList. Each of these leveled lists is included as a loot entry in the global CYRLvlNewspaperAllList list.

Adding a generic newspaper to the list (in the editor)

Any 'generic' newspapers (i.e. newspapers that are meant to be present in-world from gamestart, rather than only entering circulation in response to something) must be added to the correct leveled list to appear properly. This list should always be a brand-specific listNo newspapers should ever be added to the generic 'all' list, because this will break the conditioning. This means that a newspaper which should be present in the game from gamestart should be placed in the 'CYRLvlNewspaperColovianList if it's a Colovian Chronicle paper, the CYRLvlNewspaperNibeneseList if it's a Nibenese Herald paper, etc.

Adding a responsive newspaper to the list (at runtime)

This one's fairly simple, if a bit cumbersome. Simply add an AddForm command to your script - e.g. in a quest fragment, dialogue fragment, or data script function call - that adds the newspaper you want to add to circulation into the appropriate leveled list, as described above. The same rule still applies - never add a newspaper to the generic list! An example script would be:

CYRLvlNewspaperCourierList.additem(MyJournalisticallyExcellentNewspaper, 1, 1)

Notice the '1, 1', representing the level at which they should be added to the list and the quantity that should be added to the list. These should always be set at 1, so they will appear without requiring the player to be at a high level.

Notes on naming conventions for newspaper items

All newspapers should follow the following naming convention:

CYRNewspaper<Brand> - where <Brand> is BCH for Black Horse Courier, CC for Colovian Chronicle, NH for Niben Herald, and MC for Mudcrab.

After the brand, the following naming convention is observed for generic newspapers:

Generic<NewspaperName> - the newspaper name should be descriptive of the newspaper's contents on a high-level. In some cases the title of the newspaper itself as defined in the book text may be appropriate. If not, this may be a more truncated or otherwise descriptive name.

After the brand, the following naming convention is observed for post-quest reactive newspapers:

PostQuest<QuestID><VariantLetter> where QuestID is the ID of the relevant quest, and VariantLetter is a letter used to 'number' each variant of the newspaper, e.g. A, B, etc.

A full example name would be CYRNewspaperBCHCYRBrumaMS11A.

Adding a merchant selling newspapers/placing newspapers in the world

This is where the purpose of the encompassing 'All' list becomes clear. The 'All' list is actually a larger leveled list containing each of the other leveled lists as leveled loot items. As such, the 'All' list will always spawn every single one of the newspapers in each of the brand-specific sub-lists.

With that information the usage of these lists in merchants and loot distribution in the world should be fairly self-explanatory. If you want an item in the world to always be a particular brand, use the brand-specific leveled items. If you want it to be any newspaper in circulation, use the All list. The All list should probably be used in most contexts, though use of the brand-specific lists to highlight the regional nature of the newspapers in Nibenay/Colovia and the esoteric nature of the Mudcrab would be very desirable.

The same goes for merchants - if the merchant should sell all papers in circulation, use the 'All' list. Otherwise, use a brand-specific list as appropriate.

 

Future additions to the framework

It's hard to predict the future in its totality, but do know that the framework will change and expand as the mod develops, as with everything else. That said, there is one feature that I do intend to implement soon, which is the addition of a courier-quest style reusable API function to add newspapers to the lists instead of requiring quest devs to write out the addform scripts themselves. This may or may not happen depending on how useful I judge it to be, though - writing a line of addform scripting isn't really all that time-consuming relative to writing out a function call for any API function we could reasonably write.

I'll keep this post updated as the framework changes in the future. In the meantime, this is the documentation for the newspaper system as it exists today. For it to function correctly and smoothly it's very important that (relevant) people take a read of it and follow the usage instructions provided. Thanks for reading! Feel free to speak up if you have any questions, concerns or suggestions.

7 people like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0