📱 SS2 Randomiser

1 Guest is here.
Page: 1/36▶▶
6643e4e2842a4
sarge945Quote
°DML °Veteran

SS2 Randomiser v1.2
by Sarge945

Try the new beta here.

This mod aims to add more variety to System Shock 2, as well as reinforcing the importance of exploration and situational awareness. It does so by randomising the locations of all the enemies, goodies and loot, as well as most quest items (such as the dead powercell in medsci1). It is designed to feel "natural", as if the items were placed by hand with care in each playthrough, and a lot of work has gone into making the mod feel seamless.

Great care has been taken to ensure there are no possible failure states. All progression-related items should be available when required.

While It was specifically designed for long-term players who already have pre-established mental models of where items are, and who instinctively know to check or ignore certain areas, it should be a lot of fun for newer players as well. Speed and exploration are especially important in a game like System Shock 2 with respawning enemies, and a lot of the difficulty can be mitigated by experienced players essentially speeding through the maps without taking the time to explore or look for items.

Features
The mod was made with a focus on maintaining balance while keeping the game fresh, and as such, generally follows these rules:
  • Designed for SCP and compatible with almost all DML mods, some may require patches but they aren't difficult to make
  • Secmod support out of the box, no addons necessary
  • Only existing items are moved, no new items are added
  • Enemies are randomised to similar ones, new strategies may be required! Care has been made to make sure the lore is followed.
  • Most items can appear anywhere
  • Care has been taken to ensure item placements make sense and maintain consistency with the original game - body bags will only contain hypos, bars and kitchens will be stocked with food and beverages, etc.
  • Some items are not moved at all to maintain consistency with the world and logs, such as the shotgun outside the fluidics control room
  • "Reward items" and such are also unchanged, such as the French-Epstein device at the end of the cargo bays, which is designed to reward the player after a grueling challenge
  • Security Crates will randomise their contents with other security crates, but not with the general map items. You will still need to hack security crates to get the items they contain.
  • Weapons and other "high value" or rare items will only appear in their given area. The shotgun in R&D for instance will only appear in R&D, it will not appear elsewhere in the Science sector.
  • Items that require hacking (such as the medsci1 cryo closet) or skills to access (such as psi pull items) are completely unchanged.
  • Randomisers will try to keep roughly the same overall item distribution. If a closet had 3-4 items in the original game, it will likely have a similar amount. Don't expect closets overflowing with items or large stretches of empty areas. Some adjustments have been made to item distribution however to even out certain parts that had too many or too few items.
  • Annelid Eggs can be replaced with eggs of any type relevant to the deck. Goo eggs may be replaced by swarmer eggs, worm eggs etc

The mod can be seen in action here:
https://www.youtube.com/watch?v=Y4qi_S4TYLc
https://www.twitch.tv/videos/1766191296

Installing
There are 2 main versions. Lite and Full. Full is a superset of Lite, and all addons will work for both versions. Do NOT install both Lite and Full, they are mutually exclusive. Main versions should appear lower priority (closer to the bottom) in the mod manager than any addons.

The table below details the differences between the two main versions.

GoodiesB
WeaponsF
ArmorN (rare and already perfectly placed)
Plot ItemsB
Audio LogsB (only when using the Audio Logs addon)
Security CratesB
EggsF
EnemiesF
Extra LocationsN (medsci only, upcoming in a future version)

B means that all of the items of a given type for a given map are randomised in both versions of the mod
F means that items of a given type are only randomised in the Full version
N means that items of a given type are not randomised at all

"Goodies" refers to any item in the game that isn't part of the other categories, that can be obtained by the player. Game boys, chips, sodas, FE devices, auto-repair kits, implants, etc etc.
"Plot Items" refers to Toxin A, Keycards, Power Cells, Art Terminals, Hardware Overrides, etc.
"Extra Locations" allows items to appear in otherwise empty locations, such as behind boxes, on shelves, in small nooks etc. It is very important to look around and search thoroughly if you want to find everything!

There are also several addons available. Addons should appear higher priority than the main versions in the mod manager. Here's an explanation of what each one does:

  • No Spiders - This completely removes spiders from the game. In most cases spiders will be randomised to a different enemy type. In some cases where spiders aren't randomised (such as the vent ambush trap in the rickenbacker), they are instead replaced with worms.
  • No Swarms - This completely removes swarm eggs from the game. It also removes the associated audio log talking about them on the recreation deck. All swarm eggs will be replaced with a different type of egg.
  • Ops4 Key - Operations contains a Security Card, however it's useless in vanilla because the security booth (containing Bronson's corpse) can be opened using the Security Card found in engineering. Since the card is already randomised, this addon makes it so that you're required to find the card in order to unlock the security booth.
  • RSD - This makes some minor changes to some areas to accommodate the Rebalanced Skills and Disciplines mod. For instance, RSD adds a power cell door to Hydro, which normally leads to an empty room. This addon disables the randomiser spot within that room, since RSD already puts goodies in there, and it's important that no plot items spawn in that room given that it's locked in RSD. Load this higher than RSD.
  • Trash - In Vanilla, garbage cans can hold all sorts of items - nanites, cybermodules, implants, weapons, etc. This addon forces them to only ever contain junk items such as magazines or chips.
  • Logs - This adds randomisation for Audio Logs. This is not to everyone's taste, so it's optional.

Frequently Asked Questions

Q: Does this work with SCP
A: Yes

Q: Does this work with Rebalanced Skills and Disciplines?
A: Yes, use the compatibility addon and load it above both mods

Q: Does this work with Secmod
A: Yes. No additional files or add-ons are necessary, simply enable it in the manager alongside secmod and it will work.

Q: Does this work with <insert other mod here>
A: Most likely yes, as long as it's a DML mod. It should be compatible with most things that don't make extensive changes to the item distribution or positioning. If in doubt, ask in the thread and you should get an answer.

Q: Does enemy randomisation work with other mods, such as Pistol Hybrids or Shard Hybrids?
A: Yes, but it will affect the enemy spawn ratios. If a pipe hybrid is spawned, it may then be replaced with a pistol hybrid, for instance, reducing the total number of pipe hybrids. Please also keep in mind that some enemy replacement mods don't respect patrol paths, links, or triggers, so enemy AI may be affected. This is an issue with these mods which I cannot fix.

Q: Can you randomise keypad codes?
A: No, this is not possible for technical reasons - audio logs cannot be updated dynamically. However, the point of randomising keypad codes is to prevent players using previously learned codes on repeat playthroughs. If this is desired, consider using No Keypad Cheese, which accomplishes the same goal without using randomisation.

Q: I'm a FM author, can I make this work for my FM?
A: The system itself is pretty generic and should be usable with FMs, provided squirrel.osm is loaded. Adding support for your FM will require creating object pools and randomisers in DML, and linking items to pools. I don't know much about FMs, so this answer is intentionally somewhat vague.

Q: I'm a mod author, and my mod adds new items, can I make my mod compatible with this one?
A: Yes. If your mod adds new items to existing containers, it's automatically compatible, no work is necessary. All your items will be randomised automatically. New items and containers added to the world will need to be linked to relevant object pools. See the existing mission DMLs for a list of the object pools on each map and examples of how the original world-items are linked to them. If you want to specifically prevent an object you add to a container from being randomised, there are metaproperties for that, see gamesys.dml

Issue Reporting
Bug reports are always welcome. As well as a description of the problem (and screenshots), it would be very useful to send through a copy of ss2.log as well, since this will contain the seed numbers used by the randomisers. Doing so will allow me to recreate the exact situation in the editor, and should make finding bugs much easier.

https://www.youtube.com/watch?v=YIgecuBBWJo

You can discuss this mod, provide feedback, and talk about my other mods here

Changelog
Beta 1

- Initial Version

Beta 2

- Fixed the issue where loading an autosave would prevent randomisation.
- Autosaves still happen before randomisation occurs, allowing rerolls. Not sure if I should consider this a bug or a feature.
- No longer set objects transient

Beta 3

- Autosaving now works as intended - You can no longer reroll by loading an autosave.

Beta 4

- Increased initial delay from 0.01 to 0.04 because some maps were causing crashes with a lot of mods
- Added Hydro.

Beta 5:

- Fixed medsci1 crash when loading other script-heavy mods like RSD
- Fixed a case where it wasn't perfectly deterministic in some cases, resulting in autosave rerolling on some maps (like medsci2) for some randomisers.
- Added some Hydro items that were missed.

Beta 6:

- medsci2:
    - Added medbed key to randomiser.
    - Removed dead monkey on medbed from randomiser, it will no longer receive items, since this made for some silly combinations (monkey with a psi amp, for instance).
- eng2:
    - French-Epstein device in Cargo Bay 2 made to not randomise as it is a reward for completing the cargo bays.
- hydro2:
    - Added medbed key to randomiser.
    - Laser Pistol, Laser Rapier and Grenade Launcher can no longer appear in the secret area above the egg observation rooms, only in their respective areas.
    - The LabAssistant implant will now always be found in the offices/labs, never in Sector B or C, to aid progression for people who want to use it to research Toxin A.
    - Added a missing anti-radiation hypo.
- hydro1:
    - Added Cyber Modules back to the small nook near the start of the level, they are no longer randomised. It's difficult to put items up there due to physics limitations, so they are left for now - better to have the same item than a little nook with nothing in it.
    - Assault Rifle no longer randomised, as it's somewhat special (especially with RSD where it's the first Assault Rifle in the game). I may change this.

Beta 7:
- MedSci2 shotgun is no longer randomised, as it's likely the first proper shotgun most players will acquire.
- Added support for Ops maps.
- High Priority outputs no longer get junk items
    - High Priority outputs are used for various situations where guaranteeing loot makes sense, such as various corpses that release worms when interacted with, and for particularly hazardous encounters. These are now guaranteed to give at least one useful item, rather than having the possibility of giving items like chips, a magazine, etc.
- Various tweaks to earlier levels.
- Weapons and key items should now be a lot more evenly distributed with their placements, as they ignore various spawn conditions and can appear almost anywhere.

Beta 8:
- Physics-Controlled objects will remember their state if swapping with an item of a similar archetype
    - Similar is defined as "anything with a similar shape", so for instance vodka, champagne and liquor
    - This realistically means that it should now be possible to see standing-up bottles, even when swapped. This makes the medsci2 bar look much better
- Fixed some bugs including a severe bug where objects could appear on top of or inside each other
- Minor changes to some map randomisation
    - The turret corridoor in medsci1 is no longer guaranteed to contain an item. I might change this.
    - MedSci2 closet where the 2 shotgun hybrids ambush the player is now high priority, so the box in that room should always contain something worthwhile.
- For objects in tricky spots (such as the gun on the roof section in medsci2), instead of disabling item output entirely, those objects can still appear in their original locations occasionally.
    - This realistically means the pistol will appear in it's normal spot sometimes. The rest of the time the spot will be empty. Other items in some spots are also affected.
- The mod now spits out seeds for all randomisers to the log file. This should make reporting bugs much easier, as the exact setup can be replicated in the editor.

Beta 9:
- Major rewrite. Massively simplified everything. Should make development much quicker/easier going forward and result in a lot less bugs.
- Randomised various quest items
    - Science Sector Card (medsci1, still limited to Cryo Recovery B)
    - R&D Card (medsci2, still limited to Dr Watts room)
    - Hardware Override chips (eng1, still limited to Auxillary Storage 5)
- Other minor tweaks to some randomisations.

Beta 10:
- Added Recreation Deck.
- Fixed numerous bugs.

Beta 11:
- Added Command Deck.
- Fixed a critical bug where Weapons and other "specific" items would only ever spawn in containers or on markers (would not replace existing items).

Beta 12:
- Added Rickenbacker maps.
- Bodybags can now contain Nanites as well as Hypos, since in vanilla the medsci ones only contained hypos and the rick ones only contained nanites. This may be changed in the future.

Beta 13:
- Added Body of the Many and Shodan maps
- Added RSD Powercells to randomisers (where possible). Adding all of them will require a new version of RSD.
- Objects tagged "allow self only" now allow other, similar items.
    - This means that item spawns will be more dynamic in a few cases where items originally had weird orientations or characteristics (see the readme for more information)
- Fixed an issue where objects tagged with "containers only" would invalidate the "allow self only" tag. Now thet can appear either in a random container, or their original position.
- Fixed a strange edge case where some randomisers wouldn't run correctly, resulting in items appearing inside each other and inconsistent values when using the same seed.
- Other minor tweaks, addition of some missed items, and small bugfixes

Beta 14:
- Complete rewrite under-the-hood to be message based. Randomising should now be much faster!
- Added egg randomisation for all levels except BOTM (needs thorough testing!)
- Fixed a few errors with some item spots looking weird
- Fixed broken Hydro2 weapon randomisation (broken in Beta 13)

1.0 (Release Version)
- The mod is now split into 2 main versions, Lite and Full. Full contains all the features of Lite, plus it also randomises Enemy placement and non-plot-related audiologs
- All maps are now randomised
- Added "No Swarm Eggs" addon. Will prevent Swarm Eggs from appearing at all, and remove the relevant log in rec1 as well. To enable, use the optional file.
- RSD Compatibility is now an optional file. Will change some minor aspects of the randomisation to not clash with RSD Changes. To enable, use the optional file.
- Items with emails associated with them (Crystal Shards, Toxin A etc) will now randomise, and the email will be setup to work at the new location.
- Fixed "hypo only" outputs (like the medical beds in hydro2, and body bags) allowing medkits as well
- Fixed Hydro2 LabAssistant randomisation
- Added some more item locations, finished randomising all maps
- Added "Trash" addon - makes trash cans only contain junk items (magazines, cola, etc etc)
- Added "Ops4 Key" addon - makes the Security key in ops4 required to unlock the security booth (in Vanilla you can use the keycard from Engineering). Since it's randomised, it makes sense that it should serve some purpose.
- Added "No Spiders" addon. All spiders will be randomised to something else, and spiders which aren't randomised are replaced with either worms or monkeys

1.1 (Release Hotfix)
- Fixed race condition with Object.SetName and Object.Destroy, which was randomly preventing some AI's that were replaced from properly executing signal responses, leading to failed ambushes
- Changed the way Enemy randomisers work, now the ratio of enemies can be specified on the randomisers themselves, similar to other randomisers, rather than using a big table. This should allow proper support for FMs.
- Lite version is now much lighter, it no longer randomises weapons or eggs. There is now a lot more differentiation between Lite and Full, to hopefully give people more options.
- Audio Log randomisation is now an addon

1.2:
- Added Secmod support.
- Randomised a few items that I missed on various maps.
- Randomised the ops4 armoury. It only randomises amongst itself, so this is not a significant gameplay change.
- Fixed missing the captains quarters in command2, now that whole area is randomised properly.
- Added "Spawn Groups", allowing groups of objects to be randomised to the same type of object. This is used in a few places for enemy spawns.
- Moved Batteries from 2 enemies in Rick1 into containers, allowing them to randomise properly when the enemies are replaced. [Thanks Deu Sex]
- The hackable vault behind the athletics lobby desk in rec1 is now randomised.

Special Thanks
@RoSoDude for testing and development advice
@bombum for testing through multiple playthroughs and finding significant bugs, what a champion!
@JossiRossi for object data from their randomiser attempt as well as development advice.
@voodoo47 for the excellent Recycler mod, which made testing on some maps without squirrel (rick3 for instance) much easier.
@Deu sex for testing and streaming.
@Joe for Secmod testing.
@ThiefsieFool for Secmod information and help.
Acknowledged by: tiphares4
6643e4e284612
PacmikeyQuote
.
6643e4e2848b5
📱 sarge945Quote

Quote by Pacmikey:
Does this also mean a rogue-like mod could be possible?

No
6643e4e284a39
JossiRossiQuote
Just did a quick run through medsci1, seems to be working great!

The second dead battery position did get randomized, which I don't mind at all, but I think it may have been unintended as most other key items were kept in the same place?

Not sure if adding new possible locations for items is something you'd want? Trying to think of a sane way to do that with the look over your code, but I think ultimately it may require either an external file with the list of new coordinates, or adding some kind of placeholder items to the dml file for the scripts to add to the coordinate possibilities before the script is run (if it even operates in that order).
6643e4e28515f
sarge945Quote

Quote by JossiRossi:
Just did a quick run through medsci1, seems to be working great!

That's awesome to hear! Glad you had a good experience with it!


Quote by JossiRossi:
The second dead battery position did get randomized, which I don't mind at all, but I think it may have been unintended as most other key items were kept in the same place?

It was intentional.

I am trying to think of other ways to handle other plot items, but unfortunately many of them are attached to various logs/emails. For instance, for the Crew Card and R and D card we are told both times exactly where to go, so randomising them doesn't make sense.

Some other cards, like the Hydro A,B and D cards, are randomised.

For the Crew card in medsci2, I was thinking of something special for that one that would still be within the lore, but we will see if I can pull it off :)


Quote by JossiRossi:
Not sure if adding new possible locations for items is something you'd want? Trying to think of a sane way to do that with the look over your code, but I think ultimately it may require either an external file with the list of new coordinates, or adding some kind of placeholder items to the dml file for the scripts to add to the coordinate possibilities before the script is run (if it even operates in that order).

I already have a number of new item locations. In medsci1 you may have noticed some items placed on desks/tables, or in corner spots that aren't normally used. I place markers and add them to the object pools, which uses them as outputs.
Page: 1/36▶▶
Reply

Legal stuff

Privacy Policy & Terms of Service Contact