Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(mods/Monster_Girls): Add a mod for Monster Girl mutations #5100

Merged
merged 5 commits into from
Jul 31, 2024

Conversation

RobbieNeko
Copy link
Collaborator

@RobbieNeko RobbieNeko commented Jul 29, 2024

Checklist

Required

Optional

  • This is a PR that removes JSON entities.
    • The removed JSON entities have new entries in data/json/obsoletion/ folder or use some other migration process for existing saves.

(Added this checklist just in case, the mod does appropriately use migrations)

Purpose of change

A wide variety of players may be dissatisfied with the vanilla mutation categories (I, personally, am one of them). They may have been wanting their survivor to turn into a more anime-like catgirl, rather than a character from the 2019 movie Cats. This mod aims to satisfy them, and make mutations good again.

Describe the solution

  • Replaces many of the vanilla mutation categories with new, much more pleasant, monster girl mutation categories
    • Uses "delete" to remove all the mutations from the vanilla categories
    • Creates new monster girl mutation categories
    • Uses "extend" to add the mutations to their relevant monster girl categories (after personally going through the mutations by hand to decide what was kept)
    • Adds monster girl mutagens (for now, just a "copy-from" their vanilla counterparts)
    • Migrates the vanilla category-specific mutagens towards either:
      • Uncategorized mutagens (if there is no equivalent monstergirl category)
      • Monster girl mutagens

Describe alternatives you've considered

  • Attempt to utilize the vanilla categories and simply alter them to fit monstergirls

I had ~6 categories that would not have a monster girl equivalent, and thus I might as well make the python scripting easier for myself and just completely wipe the slate clean

  • Leave in Alpha, Elfa, and Medical since they're pretty much just humans

Booooriiiinngg! (In all seriousness, it kept the scripting simple and I just found that leaving these in was pointless given they're meant to be the "safe" option for if you don't want your character to become an absolute freak of nature, and I'm trying to solve that underlying concern with the mod anyway)

Testing

It loads without any JSON errors, and I can confirm the mutagens I added do exist

Additional context

All the "-mimi" names are based on kemonomimi from Japanese media.

More mutation categories are planned in the future, but the planned ones pretty much all involve me constructing them majorly from scratch rather than basing them off an existing one, and I'd like to get the mod out there and potentially get feedback on what I've already done.

Nekomimi as an example of what a fully-mutated category can look like
image

@github-actions github-actions bot added docs PRs releated to docs page JSON related to game datas in JSON format. mods PR changes related to mods. labels Jul 29, 2024
@RobbieNeko
Copy link
Collaborator Author

And here I thought I had correctly made it so that semantic PR would be happy. Oh well, tis to be expected

@scarf005 scarf005 changed the title feat(content, mods/Monster_Girls): Add a mod for Monster Girl mutations feat(mods/Monster_Girls): Add a mod for Monster Girl mutations Jul 29, 2024
@scarf005
Copy link
Member

And here I thought I had correctly made it so that semantic PR would be happy. Oh well, tis to be expected

it's kinda limitation when adding new mod, can be ignored (for now)
also, could we get some screenshots to get a gist of it?

@RoyalFox2140
Copy link
Collaborator

When I worked on my Chaos mod to allow you to take any valid mutation with any other it didn't work as a mod and required file overwrites, I don't know why it didn't work as both copy-from and an overwrite of the ID both failed. Even Kheir and CV said it should've worked. Deleting and extending categories this way should at least work but this is gonna require playtesting to be fully sure, and if it doesn't then we'll at least know one of the many fires to put out with our copy-from system. It's very likely that if we never fixed it then any mod-related overwrites to threshold requirements and restrictions will simply not work at all. I will put in relevant links about this.

https://github.com/RoyalFox2140/Chaos-Mod/blob/main/Chaos%20mod/mutations.json
https://discord.com/channels/830879262763909202/830916329053487124/1205991158535430234
https://discord.com/channels/830879262763909202/830916329053487124/1152719697243033640

@RobbieNeko
Copy link
Collaborator Author

RobbieNeko commented Jul 29, 2024

Makes sense, Semantic PR gonna be semantic
And sure, I can take some screenshots of the JSON files (in particular, the categories)

@RobbieNeko
Copy link
Collaborator Author

Added some screenshots, including the list of current monstergirl categories as well as some of the mutation changes

@RoyalFox2140
Copy link
Collaborator

I also realize this is going to be a dropbear of compatibility problems with other mods that touch mutations, but there's absolutely no avoiding that in this case. This will either take a lot of new patchmods somewhere or a lot of mods getting marked as incompatible on either modinfo file.

@RobbieNeko
Copy link
Collaborator Author

Yeahhh, tis the price to pay for monster girls I suppose

@scarf005
Copy link
Member

Makes sense, Semantic PR gonna be semantic And sure, I can take some screenshots of the JSON files (in particular, the categories)

oh, i meant in-game screenshots, since JSON code can be seen at https://github.com/cataclysmbnteam/Cataclysm-BN/pull/5100/files at ease but looking game changes are a bit more involved

@RoyalFox2140
Copy link
Collaborator

Makes sense, Semantic PR gonna be semantic And sure, I can take some screenshots of the JSON files (in particular, the categories)

oh, i meant in-game screenshots, since JSON code can be seen at https://github.com/cataclysmbnteam/Cataclysm-BN/pull/5100/files at ease but looking game changes are a bit more involved

There's no new graphics and most of the mod is copy-from'ing existing mainline mutations but I guess a screenshot of the character menu with one of the new thresholds is what you're looking for.

@RobbieNeko
Copy link
Collaborator Author

yeah, I haven't introduced new graphics (at least not yet, I may very well have to for some of the planned categories in the future)

@scarf005
Copy link
Member

There's no new graphics

...oh.

@RobbieNeko
Copy link
Collaborator Author

image
Here's a Nekomimi

@RobbieNeko
Copy link
Collaborator Author

By the looks of things, Ubuntu Curses is failing because for some reason it's grabbing some .h files incorrectly, and macOS 12 is just exploding for other reasons (including apparently a lack of SDL2_mixer, and various other bits)

In summary: Those build errors do not appear to be my fault

@AlecWhite
Copy link
Contributor

Do we really need another in-repo mod?

@RobbieNeko
Copy link
Collaborator Author

What's the issue you take with adding another in-repo mod? It's just another entry in the potential mods list when making a world.

@AlecWhite
Copy link
Contributor

AlecWhite commented Jul 29, 2024

What's the issue you take with adding another in-repo mod?

Potential bloat.
Specially when there aren't any guidelines for in-repo mods.

@RobbieNeko
Copy link
Collaborator Author

I mean, whether or not it's up to scratch to be included in-repo or not is up to the intepretation of those with merge permissions. If scarf/Chaos/whomever tells me that they don't think it'd be a good fit for in-repo status, I'll gladly go on ahead and take it elsewhere.

@chaosvolt
Copy link
Member

chaosvolt commented Jul 29, 2024

The main concern I'm going to have with this is that one of these days we need to extensively balance vanilla mutations anyway, and I wonder if any of the changes in here make things more playable and thus should be mainlined instead. That said, that's a long-term thing buried in my todo list so unlikely to affect this mod immediately.

@RobbieNeko
Copy link
Collaborator Author

The main concern I'm going to have with this is that one of these days we need to extensively balance vanilla mutations anyway, and I wonder if any of the changes in here make things more playable and thus should be mainlined instead. That said, that's a long-term thing buried in my todo list so unlikely to affect this mod immediately.

If anything, that's a flattering concern to have ^-^. By all means, mainline some of the changes here in the future if they're deemed good enough for mainline balance. And my goal here is certainly aligned with the idea of making mutation categories that people will enjoy more

It may be Python, but it's also my-thon. (and I don't know Type Script)
@github-actions github-actions bot added the scripts related to game management scripts label Jul 30, 2024
@RobbieNeko
Copy link
Collaborator Author

RobbieNeko commented Jul 30, 2024

Upon being asked to by Scarf, I have provided the scripts used in the development of the mod.

threshConverter.py uses the mod's vanilla-mutations file and the base game's mutations file (in that order) to automatically add thresholds where applicable to the mod's file

mutation-conversion.py takes the base game's mutations file, and spits out a file with all the "delete"s added

All the "extend"s were and are done manually

@RoyalFox2140
Copy link
Collaborator

RoyalFox2140 commented Jul 30, 2024

What's the issue you take with adding another in-repo mod?

Potential bloat. Specially when there aren't any guidelines for in-repo mods.

Then don't run it. We don't need guidelines for in-repo mods and we have far less than the DDA-side of things.

The overhead on downloading a few extra in-repo mods on a worst case scenario would only add a few extra minutes of download time to extremely slow connections which already face significantly slow download times that require them to do other things while downloading. And that file size is only relevant if thousands of sprites are supplied in the mod.

Meanwhile there is no overhead on your save file unless you're loading the mod in your save. I could see a concern if we're increasing repo size by an extra GB or 2GB but soundpacks are currently the main culprit of download times, and the overhead on your save is irrelevant whether you're running the mod or not.

I just don't see any reason to reject additional content for the argument of having less content in your mod lists on world creation, it's a fairly minor inconvenience to have a few extra mods compared to the benefit of how many people might enjoy using this or other mods.

@chaosvolt
Copy link
Member

Yeah, there's nothing wrong with adding this mod per se. I would like it if it could be rigged to be as compatible as possible, ideally, but something will inevitably act up if you go deliberately loading up every available mod so that's probably unavoidable.

I would advise taking any more in-depth discussion about what mods oughta be in-repo to, well, a discussion if need be.

@scarf005
Copy link
Member

scarf005 commented Jul 30, 2024

@RobbieNeko questions regarding script:

  1. could you specify which JSON files can be auto-generated and which cannot?
  2. judging by the script, it needs to manually input JSON files, could an example list be given? (e.g need to run the script with foo.json and bar.json) this is necessary to have a clear workflow.
  3. due to reasons mentioned in build: Add deno typescript support to repository #2553, in python is not encouraged for scripting in BN; would you mind if i rewrote them in typescript? (so you don't have to)

@RobbieNeko
Copy link
Collaborator Author

RobbieNeko commented Jul 30, 2024

@scarf005 of course I can answer those questions

  1. The two scripts provided are solely related to the production of the vanilla_mutations.json file. However, they do NOT allow for the file to be fully automatically generated, as the "extend"s to add the mutations to the monster girl categories must be done manually (and must be done before using threshConverter.py).
  2. a) mutation-converter.py takes a file with mutation definitions (i.e. Cataclysm-BN/data/json/mutations/mutations.json) and outputs a new file that has "delete"s in place for all of the mutations with categories defined for them in that inputted file. It creates the base that I (after renaming the resulting file to a more pleasant title) then added all my choices of which mutations a given monster girl category gets, and the script was mostly made to save an enormous amount of time as opposed to doing all those "delete"s by hand.
    b) threshConverter.py's first input is the outputted file from mutation-converter.py with the "extend"s for the monstergirl categories already put into place. Its second input is the same file as was input into mutation-converter.py (i.e. Cataclysm-BN/data/json/mutations/mutations.json). It then goes through and finds the mutations that have "threshreq"s in the latter file, checks to see if they're in any of the monster girl categories via the first file, and then adds the relevant thresholds to the "extends" of the first file (and writes them to that file). As before, this was written solely to save myself the tedium of adding the relevant ones by hand.
  3. To be completely honest, I had only ever expected these scripts to be used by myself, and I had seen little point in learning TypeScript and thus taking longer to do the same task that was meant to save me tedium rather than just using the Python that I already know. I hadn't exactly intended on making the scripts for use in BN, otherwise I might have chosen to sit down and learn TypeScript, haha. I was a little caught off-guard by your request for me to include the scripts I used in the production of the mod. So if you do intend on using them in BN, you absolutely have my permission to rewrite them in TypeScript.

scarf005
scarf005 previously approved these changes Jul 30, 2024
Copy link
Member

@scarf005 scarf005 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

gosh someone redraw feline eyes

  • seems to work as intended
  • we use TS, but we could keep the python script for reference
  • i have partially rewritten the script, could be applied in later PR

also waiting input from @chaosvolt, @KheirFerrum, and @Coolthulhu

Copy link
Member

@chaosvolt chaosvolt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure what to add to this myself. Personally I feel it would've been fine to just use the IDs of the comparable vanilla categories to at least have a few less things that might break but eh.

Will leave this to Scarf and the others, quick glance through this shows nothing else that stands out as problematic to me.

@I2pRandom
Copy link

I say merge it, why hell not

@KheirFerrum
Copy link
Collaborator

KheirFerrum commented Jul 31, 2024

I don't really see why this should end up as a core mod personally. Core mods are incredibly annoying to deal with since they have to be updated in lock step with any changes to the game (meaning a fix needs to be committed within the day), and if they cannot be, obsoletion from core mod status means that you can't run an external version without JSON edits to remove obsolete status (which is the main reason we have unmaintained core mods to begin with, since removing a core mod requires a lot of deliberation and typically doesn't happen unless content has been mainlined in some way, see the boat mod for an example).

Most likely this will mean that anyone touching mutation functionality will have to deal with this insanely massive mod, unless they're comfortable with letting experimental releases break other people's game until the designated maintainer comes along.

@RobbieNeko
Copy link
Collaborator Author

With regards to "anyone touching mutation functionality will have to deal with this massive mod":
The only time I can imagine someone would have to mess with this mod is if they are adding or removing mutations that are also in categories. By my count, we've only had a single PR doing such a thing in the past year (if not at least the past two years). Adding or removing such mutations does not appear to be common, nor do I know of any plans to ramp up such additions or removals. It'd be one thing if such PRs were common, but given the current infrequency I do not see this mod adding much burden to those dealing with mutation changes in vanilla BN.

@KheirFerrum
Copy link
Collaborator

KheirFerrum commented Jul 31, 2024

With regards to "anyone touching mutation functionality will have to deal with this massive mod": The only time I can imagine someone would have to mess with this mod is if they are adding or removing mutations that are also in categories. By my count, we've only had a single PR doing such a thing in the past year (if not at least the past two years). Adding or removing such mutations does not appear to be common, nor do I know of any plans to ramp up such additions or removals. It'd be one thing if such PRs were common, but given the current infrequency I do not see this mod adding much burden to those dealing with mutation changes in vanilla BN.

I didn't mean removing mutations, but rather altering core functionality by consolidating effects, refactoring or restructuring the JSON and how the hardcode reads JSON. Whether or not those changes are common, isn't really the concern, but whether or not one can wait to get you to fix those issues in the same day or if the onus will be on them to edit these mods to bring them up to new standards. I do this whenever I do changes like that, but it is not a common thing.

@RoyalFox2140
Copy link
Collaborator

It's all copy-froms, functionality won't break.

@KheirFerrum
Copy link
Collaborator

KheirFerrum commented Jul 31, 2024

It's all copy-froms, functionality won't break.

Hmm, alright then. I'm still not fully onboard with it being a core mod, but more because I'm not really onboard with adding more core mods most of the time.

@scarf005 scarf005 merged commit a175cbb into cataclysmbnteam:main Jul 31, 2024
6 of 10 checks passed
@SilearFlare
Copy link

But can you milk the cow mutant
that is absolutely imperative to the discussion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs PRs releated to docs page JSON related to game datas in JSON format. mods PR changes related to mods. scripts related to game management scripts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants