-
Notifications
You must be signed in to change notification settings - Fork 541
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
Add new midround antag: the divergent clone #37334
Add new midround antag: the divergent clone #37334
Conversation
make sure it copies the original's mind / notes |
requesting a small chance for the OG and the clone to say the same exact sentence at the same time if they're both in view of each other |
Updated this a lot. See the opening post for the new way it works. |
This probably still needs an admin role window for the new role. Also I think the role preference doesn't show up in the preferences settings so I gotta fix that. |
Is this done and ready for review? If not please set it to draft until it's ready |
It's like 90% done. I have a couple of minor adjustments I need to make:
These should be relatively minor LoC wise so please feel free to review what's already here. I'll try to knock these out today anyway though. I'll set it as a draft in the mean time. |
Question, will a clone also have access to notes the original added to their memory? |
Divergent clones are perfect copies of existing, potentially still living crew members, created in a freak cloner accident. They can remember the original's antag status, and may sometimes be evil which means they get traitor objectives. If the original is also a traitor, the evil clone will share their objectives.
04caa12
to
c9c870b
Compare
This is now ready. |
Yes. |
isn't this effectively just a better and more fun version of that one xenoarch artifact? |
I don't play xenoarch so I don't know :^) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, thanks for all the effort in working with the admins to come to what I think is a very well-polished end product. Just a few nits and minor comments.
new_role.ForgeObjectives() | ||
new_role.AnnounceObjectives() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These procs should fire under /datum/role/divergentclone/New() instead of being called here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While I agree that might make sense, it also seems that no other role does this, so I chose not to do it here either. I'm assuming it's to allow admins to add the role to people without it instantly creating objectives or announcing the objectives to them.
to_chat(G, "<span class='notice'><b>You were selected to be a divergent clone, but will not be spawned in yet!</b></span>") | ||
to_chat(G, "<span class='notice'>You have been granted the \"Spawn as Divergent Clone\" ghost spell. Use this near a cloning pod to spawn in as a divergent clone of someone who was cloned, or is currently being cloned, in that pod.</span>") | ||
to_chat(G, "<span class='notice'>Using this spell on an unoccupied cloning pod will allow you to choose a record of a person previously cloned in that pod. Using it on an occupied pod will cause you to become a twin of the person currently in the pod, and be ejected from the pod at the same time as them.</span>") | ||
to_chat(G, "<span class='notice'>Remember: you can only use this spell once, and re-entering your corpse will remove it permanently. In fact, for your convenience we have removed your ability to re-enter your corpse.</span>") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure about this - I haven't gotten to the code for this yet but if this role is randomly assigned to someone do they immediately lose the ability to re-enter their corpse? That could be a huge bummer for someone who is having a fun round and wants to be revived while keeping the option open for this role. Maybe make it so that they lose the ability to enter their corpse if they accept this role when prompted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure how to best handle this, but I think the way I'm doing it already is the least worst option. Like, you lose the ability to re-enter your corpse if you get auto-accepted as a ninja or catbeast. The intent here is the same. Allowing someone to reincarnate after they get this role would mean that the role is wasted, and there aren't good frameworks in place in dynamic to monitor if this happens so that threat could be refunded or the role could be passed to the next person (the only solution that doesn't involve massive amounts of new code would be an infinite loop that runs until the ghost either spawns as a divergent clone or gets resurrected and checks their status every time, and I don't like that).
@@ -0,0 +1,63 @@ | |||
/datum/objective/freeform/divergentclone_neutral | |||
explanation_text = "Convince the world that you are the real <person>, or at least as real as the other copy." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is mostly just a placeholder/sanity thing. The actual text gets set in PostAppend.
[gameplay]
What this does
Adds a new midround antagonist, the divergent clone: a perfect clone of an existing, previously cloned and potentially still living crew member, controlled by another player. These existential horrors are the product of a cloner safety protocol malfunction (read: they randomly pop as a dynamic midround antag if there exists a cloner that has produced a clone).
Divergent clones can be either neutral or evil at 50% odds each.
Neutral clones are non-antagonistic (they get a message telling them they're not enemies of the station), but due to their unique condition can easily end up in an escalating conflict with their original copy.
Evil clones are traitors with standard syndicate objectives.
The divergent clone additionally has an "amnesia" stat which affects what details it can remember from its original counterpart, primarily to do with their antag status. See this diagram for a breakdown of the different variations:
The intent of these variations is to make the clone's motivations ambiguous to other crew members, as well as to provide ambiguity to the clone itself as to whether its original is an antagonist or not.
Spawning mechanics
This is a midround antag that recruits from the ghost pool. It can only fire if at least one player has been cloned from a clone pod somewhere on the station. The ghost who wins the raffle is given a ghost spell called "Spawn as Divergent Clone". This spell allows the ghost to spawn in from the nearest cloning pod at a time of their choosing using the following mechanics:
The reason for this somewhat unorthodox spawning mechanism is to give the antag player a choice of who to become and when. For example, they could wait around for someone to get cloned and go for the twin birth option, or they could haunt around the cloner waiting for the geneticist to bugger off so that they won't be immediately spotted when solo dropping.
The ghost is given a temporary objective ("Reincarnate as a divergent clone"), so that the admin role panel can have buttons for the ghost. The role panel will allow changing the ghost's evilness and amnesia. It also allows the admin to force-spawn the ghost as a specific character.
The easiest way to bus in a divergent clone is to just give the spell to a ghost; the spell will give the clone the appropriate roles when used, even if the ghost doesn't have the role. If the admin wants the player to have no say in the matter at all, they can give the role to the ghost, then modify the role's parameters via the role panel, and then force-spawn the ghost at a specific cloner.
Threat costs
The threat cost is low at 5, half of that of autotraitor (because only 50% of clones are traitorous). The weight of this firing is a third of that of the default midround antag (3 instead of 10), so this should be fairly rare. The requirements for firing are similar to autotraitor, but slightly laxer (because only 50% of clones are traitorous).
Guidelines and objectives of the divergent clone
Upon becoming a divergent clone, the player is given a greeting explaining the role in brief. This has multiple variations with different information content depending on the alignment and amnesia level of the clone.
Common part:
For neutral clones:
For evil clones:
Different knowledge levels of original based on alignment and amnesia:
Non-evil divergent clones have two objectives:
Convince the world that you are the real <person>, or at least as real as the other copy.
Acquire an ID card matching your name or DNA.
Evil divergent clones have the following objectives:
Convince the world that you are the real <person> at any cost, be that by talk, violence or subterfuge. Do not let anyone get in your way, including your original copy.
Additionally, evil clones and zero-amnesia neutral clones whose original is a traitor have access to the Syndicate uplink password on the original's PDA. If the original is not a traitor but the clone is, the original's PDA is retroactively converted into an uplink (in-universe it was always an uplink, the original just didn't know). The original is not told that this happens.
Depending on amnesia level, the uplink password may be hidden from the divergent clone until they get their hands on the uplink PDA. This is to add extra ambiguity into the equation, as well as prevent some instances of yelling the uplink password on radio the moment you get out of the cloner.
The divergent clone's Notes verb memory contains almost all of the information of the original clone (bank details, radio channels, etc.), but the antag memories (uplink info, code words) vary based on the amnesia stat. There's also additional background information on the original clone that varies based on the amnesia stat; no-amnesia clones remember all the original's antagonist roles and objectives, while amnesiac clones do not.
Technical notes
I had to change some tangentially related things to make this work. Memory now has categories to make it easier to separate the antagonist memories from common memories. Cloning pods had to be refactored to allow multiple occupants, and to make it easier to produce twins of existing occupants. Probably some other stuff I forget.
Why it's good
Identity theft is funny.
How it was tested
In very many painstaking ways.
Changelog
🆑