6742d81b727de

6742d81b73d5c
1 Guest is here.
 

Topic: DMM - Dark engine Mod Manager Read 153392 times  

6742d81b7483e
The Dark engine Mod Manager (DMM) lets you install and organize mods for System Shock 2, Thief, and Thief II in a straightforward manner.

Instructions
Read the manual.

Download
GitHub.com
or from the attachments below

Participation
Contributions are always welcome! If you have a useful feature to add, you can fork the repo and open a pull request or file an issue on GitHub.


DMM is a continuation of the SS2BMM project. It can be used as a drop-in replacement.
« Last Edit: 02. December 2023, 15:13:40 by Marvin »
Re: DMM - Dark mod manager
6742d81b74f24
@JML
* Concerning read denied warnings: Do you just get a warning in the console or are there actual problems with the functionality? I'm just using basic wxWidgets file system functionality, reduced to the limited NTFS feature set of Wine. No changes at all since the project started, so no idea what I could do to fix.
* Saved profiles not shown immediately: This is intended. However, the use button should have stayed disabled. Fixed
* Cut-off deletion sentence: Probably one of a couple of million different things that can go wrong with string manipulation between operating systems.
* Missing symbols: Wine issue with Unicode symbols and Windows BOM. I tried several ways to implement Unicode symbols, this is the only one that worked consistently on Windows. Shame about Wine.
* Cut-off popup: Does the terminal tell you anything interesting when that happens? The deletion dialog is the same as any other standard dialog. Does this always happen with a certain mod folder, maybe containing invalid characters?
* Drag and drop: Shame. The feature relies on certain refresh timings working correctly. Win only then. Thanks for the feedback!
* Wording: Where exactly does it still say "Exit and start game" anymore? I thought I changed that everywhere.
This is regarding the latest Version of BMM v.1.16.1, so it will most likely concern the initial release of DMM:
* Concerning read denied warnings
No problems with functionality, this is just displayed in the terminal. I thought maybe that information is of some use to you, it isn't for me.
Cut-off popup:
The normal cut off always happens, no terminal message.
The tiny-pop-up is really unpredictable, now I got it when saving a profile. No Terminal message either. Pressing enter however acknowledged the tiny-pop-up that should say that the profile was successfully saved at [&path].
* Wording:
Under v.1.16
Maybe you meant that you relabeled it to something else, but to me this reads as if it was different before and NOW is "Exit and start game". Maybe I'm just stupid and the "existing" part is clear enough to others, but to me it should say "relabeled existing "Exit and start game" to "Launch game"". (Just to clarify, probably nobody cares.)


Is there anything specific you want me to test on the DMM?

Edit: DMM specific:

Profiles from BMM not recognized in DMM. However initial modsetup loaded correctly on first startup (nice!).
« Last Edit: 14. April 2021, 08:35:32 by JML »
Re: DMM - Dark mod manager
6742d81b75036
Not particularly, no. Maybe checking some Thief setup as that's new.

Profiles not recognized simply because of the file ending. You can just rename it.
Re: DMM - Dark mod manager
6742d81b75143
Now on TTLG to gather some feedback from the Thief community: https://www.ttlg.com/forums/showthread.php?t=151204
Acknowledged by: voodoo47
Re: DMM - Dark mod manager
6742d81b754de
You may hate me for pointing this out so late, but I don't think Dark Mod Manager is a good name for a new tool to be used by the Thief community.

They already have the well-established Dark Mod. It's been around for over a decade (it won PCGamer's Mod of the Year in 2012), it's still popular, and it's still actively updated.

https://www.thedarkmod.com/main/

Introducing something called Dark Mod Manager that has nothing to do with the established Dark Mod could be, quite obviously, confusing and problematic. It's also possible some of the developers of the Dark Mod may, somewhat understandably, take offense.

Sorry, I hadn't taken the time to read all the comments in this thread since before you gave it a name.
Feathers were ruffled (see TTLG thread), so added an "engine" to the title. Exe and stuff stays the same.
Acknowledged by 3 members: JML, voodoo47, K-Bone
Re: DMM - Dark engine mod manager
6742d81b75652
What a bunch of princesses.
One a side note, I may have to check my notes but I think I named the "DMM" folder for: Dynamic Mod Management. As opposed to the static mods you would just throw into the game and couldn't really remove after that.
Acknowledged by: RoSoDude

6742d81b75b6bNew Horizon

Re: DMM - Dark mod manager
6742d81b75bc0
Feathers were ruffled (see TTLG thread), so added an "engine" to the title. Exe and stuff stays the same.

They were not ruffled, a few people simply pointed out it could be confusing...which is completely reasonable, and when you questioned whether it really was all that confusing I explained why it was.  I mean, I've been a member of TTLG for years and I don't want someone's project being skipped over because someone who doesn't use Dark Mod confused it as a project for TDM.  I wasn't tossing any angry emoji's or anything. 

What a bunch of princesses.

Gee, thanks Kolya.

Re: DMM - Dark mod manager
6742d81b75eee
New Horizon I really like TDM but it is named in the most general and misleading terms possible. "The Dark Mod" doesn't use the Dark engine that Thief is built on, nor is it a "mod" since 8 years. "Dark Mod Manager" on the other hand is a perfectly reasonable description of its scope and what it does.
I understand that these things happen and initial names tend to stick. (After all Thief had its meaningless working title "The Dark Project" stuck on.) And yes, you've been there much longer.
Nevertheless, complaining about DMM because it uses two of the words correctly that TDM uses misleadingly and fabricating a potential confusion from that still seems kinda prissy to me. With all due respect.
Re: DMM - Dark engine mod manager
6742d81b76128
He's "fabricating a potential confusion" over two completely different things where one is called "Dark Mod" and the other is/was called "Dark Mod Manager"? Really? Uh, okay.
Re: DMM - Dark engine mod manager
6742d81b76221
The less still said about this the better.
I'll be gone for a couple of months btw hope all goes well..
Re: DMM - Dark engine mod manager
6742d81b76394
@ZylonBane https://www.systemshock.org/index.php?topic=11692.msg140131#msg140131

Certainly doable, but sounds to me as if NewDark exposing config variables for modding would be a much cleaner and generic solution. Is there any chance LeCorbeau would do smth like that?

6742d81b7660bvoodoo47

Re: DMM - Dark engine mod manager
6742d81b7665b
so yeah, to make this do what needs to be done in the T1 environment, two more features will be needed, most likely. the first one should be easy - a Disable (pause, perhaps?) All button, that would disable (and also re-enable) the entire cam_mod.ini modpath, prefixes, suffixes, everything in one swoop. will be needed for fan missions that are absolutely incompatible with everything.

the second one is probably more annoying - a T1 mode, which would add a prefix to every mod path being added. something like this (regular mode first, then T1 mode);

application.Thief1Mode 0
pop NecroAge (extracted) and Candles to the DMM folder, run manager, enable them, cam_mod.ini looks like this
Code: [Select]
.\DMM\CANDLES+.\DMM\NecroAge
application.Thief1Mode 1
pop NecroAge (extracted) and Candles to the DMM folder, run manager, enable them, cam_mod.ini now looks like this
Code: [Select]
.\DMM\CANDLES\Thief1+.\DMM\CANDLES+.\DMM\NecroAge\Thief1+.\DMM\NecroAge
so basically, every mod added would also automatically have a path set that would look for a Thief1 folder inside that mod, and load whatever is there with higher priority than the mod itself. a T1 autopatch folder, pretty much.

pros - future proof, any mod created in the future can have a T1 patch integrated if need be, and everything will work properly without having to mess around patches for mods manually (as we know, this is very less than ideal, as users will inevitably mess it up, that's why I got rid of patches for mods in the SS2 environment wherever I could). cons - extra code in the manager, but as far as I can tell, Thief1/Gold will always need some special handling somewhere, and I think the least bad option would be to let the manager handle it.

@Marvin, doable?
« Last Edit: 19. November 2021, 22:50:04 by voodoo47 »
Re: DMM - Dark engine mod manager
6742d81b76744
Doable always, sensical, let me think about it (annual winter holidays).

6742d81b767cfvoodoo47

Re: DMM - Dark engine mod manager
6742d81b7681b
of course - thanks.
Re: DMM - Dark engine mod manager
6742d81b768f5
No, I've not forgotten, no, don't have the time right now. :-/

6742d81b76998voodoo47

Re: DMM - Dark engine mod manager
6742d81b769e3
that makes two of us. I should quit my job again - this adulting thing really isn't for me, I'm much better off playing old games and making silly mods.
Acknowledged by: Marvin

6742d81b76d02sarge945

Re: DMM - Dark engine mod manager
6742d81b76d57
Currently in ss2bmm, certain mods (like RSD, Alarming Cameras, SCP) overwrite string files and this makes them incompatible in terms of their strings.

From my understanding, currently if mod A modifies, say, the description for a psi power, they have to include the entire psihelp.str file, which will conflict with mod B which modifies a different psi power.

It's a real shame that we can do all sorts of fantastic dml changes for gameplay, and they remain largely compatible, but when it comes to strings files, we are stuck with annoying compatibility issues.

Would it be possible for the mod manager to combine these files into a "master" strings file, based on the currently loaded mods? This would need to be refreshed every time a mod with a strings file is activated or deactivated.

That's probably a lot of work, though.

Basically it would work like this:
a. Start with default versions (vanilla) of the string files
b. For each line that is overridden by the first mod, replace it in the master file
c. for each line that is overridden by the second mod and is not equal to the default version of that string, override them in the master file, replacing lines modified by the first mod, etc
d. repeat until all loaded mods are processed.

Can this be fixed as part of this mod manager?
« Last Edit: 06. February 2022, 13:20:54 by sarge945 »

6742d81b77090RoSoDude

Re: DMM - Dark engine mod manager
6742d81b770e2
The mod manager wouldn't actually need to bother with all the diffing stuff if it just parsed the string labels and mod creators included minimal .str files containing only new/changed strings. For example, psihelp.str for Alarming Cameras would consist of just the following:

Psi7:"Remote Electron Tampering\n\nPrevents cameras from activating the alarm when destroyed.\n\nDuration: 5 seconds + 5 seconds per PSI"

The mod manager would see the "Psi7:" label and then replace the build .str file with the version above without changing anything else, and append any new string labels to the very end of the file. Any mods with a full .str file would do a full replacement so they'd have to be updated, but going forward it would be very simple to have mods changing individual strings with no compatibility issues, like with gameplay DML and asset replacement.

I would love to see this as a feature in DMM someday.

6742d81b77181voodoo47

Re: DMM - Dark engine mod manager
6742d81b771d1
I think the engine would have to support this, so probably a no go.

6742d81b77b73sarge945

Re: DMM - Dark engine mod manager
6742d81b77bd2
I think the engine would have to support this, so probably a no go.

The idea is that it would build a full, complete string file before the game even starts

I will try to explain this in a different way to hopefully get us all on the same page.

Mod A and B both contain custom strings. Currently, both mods have to ship a complete psihelp.str file (or whichever string file they modified) containing all strings in the game, including ones they did not modify, which means they are inherently incompatible as the unmodified strings from one file will overwrite the changes from the other.

Here's a real world example:

RSD modified some psi power descriptions. As a result, it ships the following psihelp.str file

Code: [Select]
BuyText0:"These buttons select which Tier of psionic disciplines you wish to purchase."
BuyText2:"This shows how many cyber modules you have available to spend."
BuyText3:"These buttons navigate between various character MFDs."
AmpText0:"These buttons switch between the different Tiers of psionic disciplines."

Psi0:"First Tier Neural Capacity\n\nThis is required for First Tier psionic disciplines.  It increases your maximum psi points by 2.  All First Tier disciplines cost 1 psi point per use."
Psi1:"Psycho-Reflective Screen\n\nProtects you from 20% of all combat damage.\n\nDuration: 20 seconds + 30 seconds per PSI"
Psi2:"Neuro-Reflex Dampening\n\nEliminates all weapon kickback.\n\nDuration: 1 minute + 20 seconds per PSI"
Psi3:"Kinetic Redirection\n\nPulls an object toward you.\n\nDuration: 1 second per PSI"
Psi4:"Psychogenic Endurance\n\nIncreases your Endurance by 2.\n\nDuration: 1 minute + 1 minute per PSI"
Psi5:"Psychogenic Cyber-Affinity\n\nIncreases your Cybernetic Affinity by 2.\n\nDuration: 30 seconds + 30 seconds per PSI"
Psi6:"Projected Cryokinesis\n\nLaunches a heat-draining projectile, equally effective against robotic and non-robotic targets.  Higher PSI increases damage."
Psi7:"Remote Electron Tampering\n\nMakes active alarms time out faster.\n\nTime reduction: 5 seconds + 5 seconds per PSI"
Psi8:"Second Tier Neural Capacity\n\nThis is required for Second Tier psionic disciplines.  It increases your maximum psi points by 4.  All Second Tier disciplines cost 2 psi points per use."
Psi9:"Anti-Entropic Field\n\nWhile active, ranged weapons will not degrade and cannot break.\n\nDuration: 20 seconds + 20 seconds per PSI"
Psi10:"Adrenaline Overproduction\n\nIncreases base damage of hand-to-hand weapons by 1 per PSI.\n\nDuration: 20 seconds per PSI"
Psi11:"Neural Decontamination\n\nClears radiation and shields you from 80% of further absorption.\n\nDuration: 10 seconds + 5 seconds per PSI"
Psi12:"Cerebro-Stimulated Regeneration\n\nRegenerates lost hit points.\n\nAmount healed: 1 hit point per PSI"
Psi13:"Psychogenic Strength\n\nIncreases your Strength by 2.\n\nDuration: 1 minute + 1 minute per PSI"
Psi14:"Recursive Psionic Amplification\n\nIncreases your Psionic Ability by 3.  Psi point costs are doubled while active.\n\nDuration: 10 seconds + 10 seconds per PSI"
Psi15:"Localized Pyrokinesis\n\nDamages all creatures within a certain radius.\n\nDuration: 5 seconds + 5 seconds per PSI"
Psi16:"Third Tier Neural Capacity\n\nThis is required for Third Tier psionic disciplines.  It increases your maximum psi points by 6.  All Third Tier disciplines cost 3 psi points per use."
Psi17:"Molecular Duplication\n\nUse some nanites to duplicate one ammo clip or hypo.\n\nChance of success: 40% + 10% per PSI"
Psi18:"Electron Cascade\n\nRecharges a single item or weapon by 20% per point of PSI, up to the maximum allowed by your Maintenance skill."
Psi19:"Energy Reflection\n\nProvides 50% immunity to all energy-based damage sources.\n\nDuration: 20 seconds per PSI"
Psi20:"Instantaneous Quantum Relocation\n\nSets teleport marker at your current position (no psi cost), then when used again teleports you to the marker. Hit Alt-T to clear marker."
Psi21:"Remote Pattern Detection\n\nShows the location of many useful items, including nanites, ammo, hypos, implants, and audio logs.\n\nDuration: 2 minutes per PSI"
Psi22:"Projected Pyrokinesis\n\nLaunches a fiery projectile, most effective against non-robotic targets.  Higher PSI increases damage."
Psi23:"Psychogenic Agility\n\nIncreases your Agility by 2.\n\nDuration: 1 minute + 1 minute per PSI"
Psi24:"Fourth Tier Neural Capacity\n\nThis is required for Fourth Tier psionic disciplines.  It increases your maximum psi points by 8.  All Fourth Tier disciplines cost 4 psi points per use."
Psi25:"External Psionic Detonation\n\nDrops a psionic proximity mine.  Does half damage to robots, and double damage to psionically sensitive creatures.  Higher PSI increases damage.\nDuration: 4 minutes"
Psi26:"Enhanced Motion Sensitivity\n\nShows the location of all nearby hostiles.\n\nDuration: 1 minute per PSI"
Psi27:"Neural Toxin-Blocker\n\nClears toxins and shields you from 100% of further absorption.\n\nDuration: 10 seconds + 5 seconds per PSI"
Psi28:"Psionic Hypnogenesis\n\nCauses a non-robotic target to become docile and stand still.\n\nDuration: 10 seconds per PSI, or until damaged by a human"
Psi29:"Molecular Transmutation\n\nTurns ammunition and hypos into nanites."
Psi30:"Metacreative Barrier\n\nCreates a wall of psionic force directly in front of you.\n\nWall's hit points: 150 + 50 per PSI over 5\nDuration: 4 minutes"
Psi31:"Cerebro-Energetic Extension\n\nTurns your Psi Amp into a powerful melee weapon.\n\nDuration: 10 seconds per PSI"
Psi32:"Fifth Tier Neural Capacity\n\nThis is required for Fifth Tier psionic disciplines.  It increases your maximum psi points by 10.  All Fifth Tier disciplines cost 5 psi points per use."
Psi33:"Advanced Cerebro-Stimulated Regeneration\n\nRegenerates lost hit points.\n\nAmount healed: 3 hit points per PSI"
Psi34:"Soma Transference\n\nDrains target non-robotic creature of hit points, and adds those hit points to your total."
Psi35:"Electron Suppression\n\nImmobilizes any robotic target.\n\nDuration: 5 seconds per PSI"
Psi36:"Imposed Neural Restructuring\n\nCauses a non-robotic target to become hostile to all non-human creatures.\n\nDuration: 10 seconds per PSI, or until damaged by a human"
Psi37:"Remote Circuitry Manipulation\n\nAllows you to hack psionically, ignoring skill requirements.  Uses half your PSI (rounded up) in place of both Hacking skill and Cyber-Affinity, and costs psi points instead of nanites."
Psi38:"Photonic Redirection\n\nRenders you invisible to all creatures.  Firing a weapon will end the effect.\n\nDuration: 4 seconds per PSI"
Psi39:"Psycho-Reflective Aura\n\nProtects you from 60% of all combat damage.\n\nDuration: 10 seconds + 20 seconds per PSI"

PsiShort0:"This is a bug"
PsiShort1:"Psi Shield"
PsiShort2:"Reflex"
PsiShort3:"Psi Pull"
PsiShort4:"Endurance"
PsiShort5:"Cyber Affin."
PsiShort6:"Cryokinesis"
PsiShort7:"Stop Alarm"
PsiShort8:"This is a bug"
PsiShort9:"Anti-Entropy"
PsiShort10:"Adrenaline"
PsiShort11:"Rad Shield"
PsiShort12:"Regenerate"
PsiShort13:"Strength"
PsiShort14:"Recursive Psi"
PsiShort15:"Pyro Field"
PsiShort16:"This is a bug"
PsiShort17:"Duplicate"
PsiShort18:"Recharge"
PsiShort19:"Reflect"
PsiShort20:"Teleport"
PsiShort21:"Detect Items"
PsiShort22:"Pyrokinesis"
PsiShort23:"Agility"
PsiShort24:"This is a bug"
PsiShort25:"Prox. Mine"
PsiShort26:"Sense Motion"
PsiShort27:"Toxin Sheld"
PsiShort28:"Hypnosis"
PsiShort29:"Transmute"
PsiShort30:"Barrier"
PsiShort31:"Psi Sword"
PsiShort32:"This is a bug"
PsiShort33:"Adv. Regen"
PsiShort34:"Transfer HP"
PsiShort35:"Suppression"
PsiShort36:"Restructure"
PsiShort37:"Psi Hack"
PsiShort38:"Invisibility"
PsiShort39:"Psi Shield+"

PsiIcon0:"picn00"
PsiIcon1:"picn01"
PsiIcon2:"picn02"
PsiIcon3:"picn04"
PsiIcon4:"picn05"
PsiIcon5:"picn06"
PsiIcon6:"picn07"
PsiIcon7:"picn21"
PsiIcon8:"picn08"
PsiIcon9:"picn03"
PsiIcon10:"picn22"
PsiIcon11:"picn10"
PsiIcon12:"picn11"
PsiIcon13:"picn12"
PsiIcon14:"picn13"
PsiIcon15:"picn15"
PsiIcon16:"picn16"
PsiIcon17:"picn09"
PsiIcon18:"picn14"
PsiIcon19:"picn17"
PsiIcon20:"picn18"
PsiIcon21:"picn19"
PsiIcon22:"picn20"
PsiIcon23:"picn23"
PsiIcon24:"picn24"
PsiIcon25:"picn25"
PsiIcon26:"picn26"
PsiIcon27:"picn27"
PsiIcon28:"picn28"
PsiIcon29:"picn29"
PsiIcon30:"picn30"
PsiIcon31:"picn31"
PsiIcon32:"picn32"
PsiIcon33:"picn33"
PsiIcon34:"picn34"
PsiIcon35:"picn35"
PsiIcon36:"picn36"
PsiIcon37:"picn37"
PsiIcon38:"picn38"
PsiIcon39:"picn39"

Meanwhile, Alarming Cameras, which modifies one Psi power, has to contain a very similar file:

Code: [Select]
BuyText0:"These buttons select which Tier of psionic disciplines you wish to purchase."
BuyText2:"This shows how many cyber modules you have available to spend."
BuyText3:"These buttons navigate between various character MFDs."
AmpText0:"These buttons switch between the different Tiers of psionic disciplines."

Psi0:"First Tier Neural Capacity\n\nThis is required for First Tier psionic disciplines.  It increases your maximum psi points by 2.  All First Tier disciplines cost 1 psi point per use."
Psi1:"Psycho-Reflective Screen\n\nProtects you from 15% of all combat damage.\n\nDuration: 20 seconds + 30 seconds per PSI"
Psi2:"Neuro-Reflex Dampening\n\nEliminates all weapon kickback.\n\nDuration: 1 minute + 20 seconds per PSI"
Psi3:"Kinetic Redirection\n\nPulls an object toward you.\n\nDuration: 1 second per PSI"
Psi4:"Psychogenic Agility\n\nIncreases your Agility by 2.\n\nDuration: 2 minutes + 1 minute per PSI"
Psi5:"Psychogenic Cyber-Affinity\n\nIncreases your Cybernetic Affinity by 2.\n\nDuration: 2 minutes + 1 minute per PSI"
Psi6:"Projected Cryokinesis\n\nLaunches a heat-draining projectile, equally effective against robotic and non-robotic targets.  Higher PSI increases damage."
Psi7:"Remote Electron Tampering\n\nPrevents cameras from activating the alarm when destroyed.\n\nDuration: 5 seconds + 5 seconds per PSI"
Psi8:"Second Tier Neural Capacity\n\nThis is required for Second Tier psionic disciplines.  It increases your maximum psi points by 4.  All Second Tier disciplines cost 2 psi points per use."
Psi9:"Anti-Entropic Field\n\nWhile active, ranged weapons will not degrade and cannot break.\n\nDuration: 10 seconds + 20 seconds per PSI"
Psi10:"Adrenaline Overproduction\n\nIncreases hand-to-hand damage by a factor equal to PSI.\n\nDuration: 10 seconds per PSI"
Psi11:"Neural Decontamination\n\nShields you from 80% of radiation damage.\n\nDuration: 10 seconds + 5 seconds per PSI"
Psi12:"Cerebro-Stimulated Regeneration\n\nRegenerates lost hit points.\n\nAmount healed: 2 hit points per PSI"
Psi13:"Psychogenic Strength\n\nIncreases your Strength by 2.\n\nDuration: 2 minutes + 1 minute per PSI"
Psi14:"Recursive Psionic Amplification\n\nIncreases your Psionic Ability by 2.  Psi point costs are doubled while active.\n\nDuration: 10 seconds + 10 seconds per PSI"
Psi15:"Localized Pyrokinesis\n\nDamages all creatures within a certain radius.  Higher PSI increases damage.\n\nDuration: 15 seconds + 8 seconds per PSI"
Psi16:"Third Tier Neural Capacity\n\nThis is required for Third Tier psionic disciplines.  It increases your maximum psi points by 6.  All Third Tier disciplines cost 3 psi points per use."
Psi17:"Molecular Duplication\n\nUse some nanites to duplicate one ammo clip or hypo.\n\nChance of success: 30% + 10% per PSI"
Psi18:"Electron Cascade\n\nRecharges a single item or weapon by 20% per point of PSI, up to the maximum allowed by your Maintenance skill."
Psi19:"Energy Reflection\n\nProvides 50% immunity to all energy-based damage sources.\n\nDuration: 20 seconds per PSI"
Psi20:"Neural Toxin-Blocker\n\nShields you from 100% of toxin absorption.\n\nDuration: 10 seconds + 5 seconds per PSI"
Psi21:"Enhanced Motion Sensitivity\n\nShows the location of all nearby creatures.\n\nDuration: 30 seconds per PSI"
Psi22:"Projected Pyrokinesis\n\nLaunches a fiery projectile, most effective against non-robotic targets.  Higher PSI increases damage."
Psi23:"Psionic Hypnogenesis\n\nCauses a non-robotic target to become docile and stand still.\n\nDuration: 20 seconds per PSI, or until damaged by a human"
Psi24:"Fourth Tier Neural Capacity\n\nThis is required for Fourth Tier psionic disciplines.  It increases your maximum psi points by 8.  All Fourth Tier disciplines cost 4 psi points per use."
Psi25:"Photonic Redirection\n\nRenders you invisible to all creatures.  Firing a weapon will end the effect.\n\nDuration: 5 seconds + 5 seconds per PSI"
Psi26:"Remote Pattern Detection\n\nShows the location of many useful items, including nanites, ammo, hypos, implants, and audio logs.\n\nDuration: 1 minute per PSI"
Psi27:"Electron Suppression\n\nImmobilizes any robotic target.\n\nDuration: 3 seconds per PSI"
Psi28:"Psychogenic Endurance\n\nIncreases your Endurance by 2.\n\nDuration: 2 minutes + 1 minute per PSI"
Psi29:"Molecular Transmutation\n\nTurns ammunition and hypos into nanites."
Psi30:"Remote Circuitry Manipulation\n\nAllows you to hack psionically.  Uses half your Psionic Ability (rounded up) in place of both Hacking skill and Cyber-Affinity, and costs psi points instead of nanites."
Psi31:"Cerebro-Energetic Extension\n\nTurns your Psi Amp into a powerful melee weapon.\n\nDuration: 10 seconds per PSI"
Psi32:"Fifth Tier Neural Capacity\n\nThis is required for Fifth Tier psionic disciplines.  It increases your maximum psi points by 10.  All Fifth Tier disciplines cost 5 psi points per use."
Psi33:"Advanced Cerebro-Stimulated Regeneration\n\nRegenerates lost hit points.\n\nAmount healed: 5 hit points + 5 hit points per PSI"
Psi34:"Soma Transference\n\nDrains target non-robotic creature of hit points, and adds those hit points to your total."
Psi35:"Instantaneous Quantum Relocation\n\nSets teleport marker at your current position, then when used again teleports you to the marked location. Hit Alt-T to clear marker."
Psi36:"Imposed Neural Restructuring\n\nCauses a non-robotic target to become hostile to all non-human creatures.\n\nDuration: 10 seconds per PSI, or until damaged by a human"
Psi37:"Metacreative Barrier\n\nCreates a wall of psionic force directly in front of you.\n\nWall's hit points: 150 + 50 per PSI over 5\nDuration: 4 minutes"
Psi38:"External Psionic Detonation\n\nDrops a psionic proximity mine.  Does no damage to robots, and double damage to psionically sensitive creatures.\n\nDuration: 4 minutes"
Psi39:"Psycho-Reflective Aura\n\nProtects you from 60% of all combat damage.\n\nDuration: 10 seconds + 20 seconds per PSI"

PsiShort0:"This is a bug"
PsiShort1:"Psi Shield"
PsiShort2:"Reflex"
PsiShort3:"Psi Pull"
PsiShort4:"Agility"
PsiShort5:"Cyber Affin."
PsiShort6:"Cryokinesis"
PsiShort7:"Stop Alarm"
PsiShort8:"This is a bug"
PsiShort9:"Anti-Entropy"
PsiShort10:"Adrenaline"
PsiShort11:"Rad Shield"
PsiShort12:"Regenerate"
PsiShort13:"Strength"
PsiShort14:"Recursive Psi"
PsiShort15:"Pyro Field"
PsiShort16:"This is a bug"
PsiShort17:"Duplicate"
PsiShort18:"Recharge"
PsiShort19:"Reflect"
PsiShort20:"Toxin Sheld"
PsiShort21:"Sense Motion"
PsiShort22:"Pyrokinesis"
PsiShort23:"Hypnosis"
PsiShort24:"This is a bug"
PsiShort25:"Invisibility"
PsiShort26:"Detect Items"
PsiShort27:"Suppression"
PsiShort28:"Endurance"
PsiShort29:"Transmute"
PsiShort30:"Psi Hack"
PsiShort31:"Psi Sword"
PsiShort32:"This is a bug"
PsiShort33:"Adv. Regen"
PsiShort34:"Transfer HP"
PsiShort35:"Teleport"
PsiShort36:"Restructure"
PsiShort37:"Barrier"
PsiShort38:"Prox. Mine"
PsiShort39:"Psi Shield+"

PsiIcon0:"picn00"
PsiIcon1:"picn01"
PsiIcon2:"picn02"
PsiIcon3:"picn04"
PsiIcon4:"picn05"
PsiIcon5:"picn06"
PsiIcon6:"picn07"
PsiIcon7:"picn21"
PsiIcon8:"picn08"
PsiIcon9:"picn03"
PsiIcon10:"picn22"
PsiIcon11:"picn10"
PsiIcon12:"picn11"
PsiIcon13:"picn12"
PsiIcon14:"picn13"
PsiIcon15:"picn15"
PsiIcon16:"picn16"
PsiIcon17:"picn09"
PsiIcon18:"picn14"
PsiIcon19:"picn17"
PsiIcon20:"picn18"
PsiIcon21:"picn19"
PsiIcon22:"picn20"
PsiIcon23:"picn23"
PsiIcon24:"picn24"
PsiIcon25:"picn25"
PsiIcon26:"picn26"
PsiIcon27:"picn27"
PsiIcon28:"picn28"
PsiIcon29:"picn29"
PsiIcon30:"picn30"
PsiIcon31:"picn31"
PsiIcon32:"picn32"
PsiIcon33:"picn33"
PsiIcon34:"picn34"
PsiIcon35:"picn35"
PsiIcon36:"picn36"
PsiIcon37:"picn37"
PsiIcon38:"picn38"
PsiIcon39:"picn39"

As a result of this, @RoSoDude has to ship a custom compatibility file that merges the changes from both strings file, which needs to be installed manually as a separate minimod, above both mods. Any mods that modify string files and want to be compatible with others will have to do the same thing.

While this currently only affects a handful of mods, there is a reasonable chance this will get worse over time as more mods are added.

The suggestion is to allow modders to instead ship a partial version of a given string file, such as psihelp.str.prt, containing only the modified text, so Alarming Cameras could ship a file containing this:

Code: [Select]
Psi7:"Remote Electron Tampering\n\nPrevents cameras from activating the alarm when destroyed.\n\nDuration: 5 seconds + 5 seconds per PSI"
The mod manager could then maintain a managed version of the string files, starting with the vanilla files and adding strings to them as needed before launching the game.

In order to maintain compatibility with other mod managers (ss2bmm), mod authors could ship 2 versions of each string file:
psihelp.str - this is the complete version containing every string, which is how strings are handled now
psihelp.str.prt - this contains only the new strings

Then it would work like this:
- Incompatible mod managers would simply install both files, which is harmless as the engine won't read the prt file, so everything works as it does now. This should not require any changes to any existing mod manager.
- If DMM sees the prt file, it should completely ignore the regular version and instead process the part file, adding it's contents to the end of the managed string file, ensuring compatibility with other mods that use the same system to modify the same file.

This has some advantages:
- No need to modify the game engine - it only ever sees a full, complete strings file
- This feature is effectively opt-in for mod authors, other mods will be unaffected and will work as normal
- Mods using this feature can still be used in other mod managers, albeit with the same problems we currently have now

This has some drawbacks:
- It would have to be done by the mod manager, probably just before launching the game, which means more work for DMM developers and yet another subsystem to maintain
- Mod authors who want to use this feature and maintain compatibility with multiple mod managers will have to duplicate their strings - both in the complete copy and the part file. This is not an issue if they only decide to support DMM - at that point they only need to ship the .prt file

I have been talking with some mod developers about this and we found out that Dark is totally okay if you append duplicates to the string file, it will use whichever one is lower in the file. So it should be relatively straightforward for DMM to copy/manage the vanilla strings file and simply append to it for each mod in order.

I'm not sure how this would affect localised versions.

I hope this has clarified the suggestion somewhat, and explained why I feel it would be an important feature to have. I hope more people can chime in with feedback/suggestions, as I understand this is a big request and there are a lot of edge cases we need to consider here.
« Last Edit: 10. February 2022, 23:14:10 by sarge945 »
Acknowledged by: RoSoDude

6742d81b77e7cZylonBane

Re: DMM - Dark Engine Mod Manager
6742d81b77ecd
Just a heads-up @Marvin, when the next SCP releases (Real Soon Now), it will include a modding mechanism whereby files can be dropped in the "scriptdata" folder, which Squirrel scripts can detect and access. However, the mod manager currently displays a warning symbol next to these and declares their type "Unrecognized". So we need a new "Script Data" type added. Attached is a sample non-functional mod that demonstrates this behavior.

While I was messing around with this, I noticed a few more issues:

The DML mod type isn't recognized if the DML is inside a "dbmods" folder.

There are a couple of typos in the dialog for deleting a mod:


The button "Launch game" also terminates the mod manager. The rollover help doesn't even warn that this will happen. This can be annoying if you're testing mod configurations, because you have to keep re-launching the manager.

The mod manager window title and about dialog should be updated to use title case. Currently they all read "Dark mod manager" instead of "Dark Mod Manager".
Re: DMM - Dark Engine Mod Manager
6742d81b7816b
Long time, no see - apologies for that, manager has simply fallen to the wayside.

In any case, todos would be:
* Thief 1 compatibility fixes
* typo fixes
* new dml folder type

Remaining questions:

1. @ZylonBane dbmods folder - is that a "proper" SS2 mod folder or something that Brain's original manager used? Iirc the manager performs a depth=1 search through all recognized folder types, plus the main folder, but that can obviously be changed. Is a DML file actually allowed in any subfolder, at any depth?
2. I think there was a change request about the "Launch game" feature once, can't remember where... exiting also performs some cleanup operations for free. In any case, I would opt to minimize the manager as keeping it open without greying out the button (which would mean that the manager has to check for a running instance of SS2) could be confusing to the average user. Alternatively, one could leave the button disabled on a timer.
3. @voodoo47 About the "disable all" button: I thought that fan missions are usually started via FMSel, doesn't that have its own way of mod disabling? What actually would be the proper interaction flow, and what is the likeliest thing a user expects when dealing with a fan mission with/without mods? If users use a different program for fan missions, should that instead disable mods?



As for the string discussion: As you probably know, the two hardest problems in computer science are naming things, off-by-1 errors, and string handling. DMM is supposed to be as dumb as possible, and merging string files - which can by in CP850, Latin-1, or nowadays possibly Unicode, mind you - is not something I would feel comfortable with in C++, a language I know virtually nothing about.

Making up your own robust solution and opening a PR would of course be very welcome.

6742d81b7888aZylonBane

Re: DMM - Dark Engine Mod Manager
6742d81b788e5
1. @ZylonBane dbmods folder - is that a "proper" SS2 mod folder or something that Brain's original manager used?
Dbmods is a NewDark feature, so the original mod manager wouldn't have known about it. It's documented in the "dbmod-sample.dml" file that comes with NewDark.
// There's a third way for loading specific mission dbmods. If there is a directory named "dbmods\<mission>"
// in any path from which dbmods can be loaded, then it will load all dml files in that directory, regardless
// of their name. So for example if the game is loading the mission "miss1.mis", then it will load all dml files
// in directories named "dbmods\miss1.mis\". There's also a "dbmods\miss_all\" that applies to all missions.
// Note that it will not load the FM/base dir first for these, all paths will be processed in regular order
// (still with the highest priority dir loaded last). For that it might be safer to avoid including a dbmods
// mission dir in an FM. See info about the "dbmods" directory in "Gamesys dbmods" below, for details on file
// order etc..

// To apply a dbmod to gamesys, it follows similar convention as for mission files. Append .dml extension,
// for example "dark.gam.dml", or to apply it to all gamesys files call it "gamesys.dml".
//
// The location and loading rules are the same as for missions, described above. There is however one
// additional option for applying gamesys mods. Gamesys dml files may also be placed in a "dbmods" sub-dir
// in any dir that's in in resname_base or mod_path. All "dbmods" directories will be loaded (or rather all
// *.dml files in them) in expected order, so that the highest priority dir is loaded last for the final
// say. All dml files in one dir are loaded in alphabetical/sorted order, that ensures a consistent order
// each time and also allows you to affect the order by simply renaming the files (in case there are some
// small conflicts between mods that can be resolved by changing the order). Any sub-directories contained
// inside a "dbmods" directory will be ignored (for gamesys patches).
//
// The "dbmods" directories are processed after all the regular dml files are processed.
//
// Example:
//     <base dir>/gamesys.dml
//     mymods/dbmods/tougherAI.dml
//     mymods/dbmods/weakerWeapons.dml
//     modA/dbmods/cheaperLoot.dml
//     modA/dbmods/tougherAI.dml
//
//     The mod_path is "mymods+modA".
//
//     The loaded order will be:
//         <base dir>/gamesys.dml
//         modA/dbmods/cheaperLoot.dml
//         modA/dbmods/tougherAI.dml
//         mymods/dbmods/tougherAI.dml
//         mymods/dbmods/weakerWeapons.dml

2. I think there was a change request about the "Launch game" feature once, can't remember where... exiting also performs some cleanup operations for free.
I think it would be fine if the button and rollover text was explicit about what's going to happen. Surprise app shutdown is never a good thing. So like, if the label was changed to "Close & Play" or whatever fits.

Maybe a popup dialog too if you try to close it with un-applied changes. Something like "There are changes that have not been applied.", then have Apply, Discard, and Cancel buttons.
Acknowledged by: Marvin

6742d81b789bfvoodoo47

Re: DMM - Dark Engine Mod Manager
6742d81b78a0f
3. no, FMsel does not have a disable/pause all (mods) button, so such a button wouldn't be a bad thing to have in DMM (this is needed for Thief fan missions that are absolutely incompatible with any/all mods). NewDarkloader has it, but FMsel is what we officially support (and we probably don't want to fork it to ad the button there).
Acknowledged by: Marvin

Your name:
This box must be left blank:

The deck number where you shall meet Dr. Janice Polito:
Sticky topic
1 Guest is here.
The time loop, pt II
Contact SMF 2.0.19 | SMF © 2016, Simple Machines | Terms and Policies
FEEP
6742d81b7bb80