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

Cognislime -- Cognizine but for objects #25907

Closed
wants to merge 27 commits into from

Conversation

Interrobang01
Copy link
Contributor

@Interrobang01 Interrobang01 commented Mar 7, 2024

About the PR

Introducing a solid version of cognizine that works on objects! After not working on this for 2 months I realized it was already basically done, so I finished it real quick (read: 4 hours + 3 hours after posting the PR) and here we are.

You can make it by mixing cognizine (10u) and slime (6u).

If you heat normal cognizine with water (which makes a new reagent, cognigrime), add the slime as well as a plasma catalyst, then cool it down, you can get crystalline cognislime, which grants mobility in addition to sentience but only works on items (because larger objects can push people because I couldn't figure out fixtures)

The sprites are ripped from #23526 because uranium looks like slime (the uranium sprites have since been changed with the sole exception of the uranium ore crab spawning animation, so no issues there)

Current bugs which I don't know how to fix (they're minor and can be fixed in future pull requests):

  • Cognislimed objects cannot examine things
  • Cognislimed objects have no voices
  • Crystal-Cognislimed objects have object collision and not player collision

The spiritual successor to #13388

(it's pronounced cognisleeme)

Why / Balance

Sentient item hijinks. This is a good idea, trust me. This doesn't affect game balance because sentient objects couldn't possibly affect the game in a major way.

Technical details

There's an AddCognislimeDoAfterEvent in Shared which handles the doafter. The CognislimeComponent is also in shared. In Server, the CognislimeSystem will check to see that the target object is on neither the whitelist nor the blacklist (stored in the component). If not, the script will ensure the necessary components and add a ghost role.

As some of the commit names suggest I don't have a good grasp on things like access modifiers, so please feel free to correct me on that front.

Media

cognislime_demo.mp4

Cognislime (left) and Crystalline Cognislime (right)
image
image
image
image

  • I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

🆑

  • add: Mixing Cognizine and slime now creates Cognislime, a hunk of goo which can be applied to any object to grant it sentience.

@github-actions github-actions bot added the Changes: Sprites Changes: Might require knowledge of spriting or visual design. label Mar 7, 2024
Copy link
Contributor

github-actions bot commented Mar 7, 2024

RSI Diff Bot; head commit 0fbad4f merging into 90063db
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Fun/cognislime.rsi

State Old New Status
cognislime Added
cognislime_crystalline Added

Edit: diff updated after 0fbad4f

@tutoumi
Copy link

tutoumi commented Mar 7, 2024

Does objets have capacities ? Like a closet capable of closing itself, the nuke making sound itself etc.

Content.Server/Cognislime/CognislimeSystem.cs Show resolved Hide resolved
Content.Server/Cognislime/CognislimeSystem.cs Outdated Show resolved Hide resolved
Content.Server/Cognislime/CognislimeSystem.cs Outdated Show resolved Hide resolved
Content.Server/Cognislime/CognislimeSystem.cs Outdated Show resolved Hide resolved
Content.Server/Cognislime/CognislimeSystem.cs Outdated Show resolved Hide resolved
Content.Shared/Cognislime/SharedCognislimeSystem.cs Outdated Show resolved Hide resolved
Resources/Locale/en-US/cognislime/cognislime.ftl Outdated Show resolved Hide resolved
Resources/Prototypes/Entities/Objects/Fun/cognislime.yml Outdated Show resolved Hide resolved
@KingOnBudget
Copy link

KingOnBudget commented Mar 7, 2024

Having the option to make items sentient is cool as fuck and all but the moment you use this on an antag stealing objective that objective becomes nigh impossible to accomplish as the item can just yell and out the poor antag.

@tutoumi
Copy link

tutoumi commented Mar 7, 2024

Make the object killable to unsentiment it, and the blood is cognizine

@Hrosts
Copy link
Contributor

Hrosts commented Mar 7, 2024

Having the option to make items sentient is cool as fuck and all but the moment you use this on an antag stealing objective that objective becomes nigh impossible to accomplish as the item can just yell and out the poor antag.

Maybe you should be able to wash off the slime using soap or water spray/splash? This will make it possible to de-mind any item which you don't want screaming about your dastardly deeds. You can delete a pAI, after all.

@potato1234x
Copy link
Contributor

Finally, talking mop bucket...

@notquitehadouken
Copy link
Contributor

the sentient throngler running around and committing mass genocide:

@deltanedas
Copy link
Contributor

the sentient L6C ROW::::::::::::::::::::::

@K-Dynamic
Copy link
Contributor

Time to make the singulo/tesla sentient

@Interrobang01
Copy link
Contributor Author

Does objets have capacities ? Like a closet capable of closing itself, the nuke making sound itself etc.

Unfortunately no. To do this fully unique code for every single object would have to be added which is unfeasible. Something more general like letting objects perform basic click actions on themselves or letting guns shoot bullets could happen in a future PR.

Having the option to make items sentient is cool as fuck and all but the moment you use this on an antag stealing objective that objective becomes nigh impossible to accomplish as the item can just yell and out the poor antag.

I'm of the opinion that this simply presents the challenge of convincing the objective to comply. A way to unalive cognislimed objects is a good idea, but it probably won't happen in this PR.

Time to make the singulo/tesla sentient

singulo doesn't have the right components :why:
actually imma add singulo to the whitelist real quick for the memes

@deltanedas
Copy link
Contributor

letting guns shoot bullets

just add CombatMode and it works

@Cojoke-dot
Copy link
Contributor

This looks like it would be awesome, I anticipate making AI guns as captain and having some fun with that. How does being put on affect the item(Ie: Can I have a talking hat?).

@Interrobang01
Copy link
Contributor Author

Interrobang01 commented Mar 7, 2024

How does being put on affect the item(Ie: Can I have a talking hat?).

I haven't technically tested it but there's no reason sentient objects shouldn't work exactly like normal items, except they can speak. I'll see if I can get guns to fire themselves via combat mode like deltanedas said.

(edit: tested it, clothes do work.)

@Qsan163
Copy link

Qsan163 commented Mar 10, 2024

The Cursed Greytide Toolbox ?

Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Mar 14, 2024
@beck-thompson
Copy link
Contributor

Just posting here to get updates for: #26765 (I can easily make it part of the system, it'll be exactly the same as you have it now just will match up with the glue and lube!)

@Interrobang01
Copy link
Contributor Author

Just posting here to get updates for: #26765

ooh, yeah, just directly applying cognizine would be a lot simpler than all the mixing steps needed here. It's a shame my {very high effort shameless unused sprite color swap} won't be used, though. Good luck

@beck-thompson
Copy link
Contributor

Haha I actually liked the sprite / how it was applied and stuff (Its slime so it makes sense)! Unless you want me to make it exactly like the lube / glue I was gonna keep that exactly the same and only change the CognislimeComponent.cs and the CognislimeSystem a small amount so it matches style wise with the others.

@mirrorcult
Copy link
Contributor

opting to close for a couple reasons

  • imo this makes sentient objects not very special.
  • cognizine is limited but this works on basically anything and i foresee a lot of potential random issues popping up for something that doesn't add a whole lot
  • conceptually just doesnt make sense to me? it feels like the process of 'making an entire inanimate object sentient' should involve something other than chemistry, like this is really the domain of wizardry or cult shit than chemistry
  • having to maintain the whitelists and blacklists for it is really bad

@mirrorcult mirrorcult closed this Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Sprites Changes: Might require knowledge of spriting or visual design. S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted
Projects
None yet
Development

Successfully merging this pull request may close these issues.