-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Added Kill Tome (Death Note). #39011
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
Conversation
|
License? |
|
Call it unalive tome instead :godo: |
|
too op imo |
|
Licensing issues aside, I'm not sure how adding a surefire way to kill someone at any distance, with no way to defend against it nor trace back to the murderer is supposed to "bring more RP situations". This is just a "I WIN" button. |
|
There are some balancing discussions that need to occur around this, all of which should be kept to the discourse instead of the PR. |
|
Im in full support as long as this is admeme only, it sounds fucking hilarious |
|
yes, its OP and "I win" button, if somebody has ideas how to balance it please share it with me, its my first PR to ss14 and i just wanted to do something to practice |
I mentioned alexmactep, is it not enough? |
|
I'd suggest making this make a random crew a sleeper agent, with a kill objective on whoever is written in the death note. It wouldn't be an instant kill/have counterplay and it would be a much more in-universe way of getting killed. |
I think they're referring to you having taken an item from the Death Note manga https://en.wikipedia.org/wiki/Death_Note This would be a great item for a grim reaper or a wizard cosplaying as one btw |
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.
Is that intended for it to have no contraband label?
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.
Yes, IC characters should not know about Kill Tome, its not an E-Sword, its just a tome (IC)
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 guess there should be then non Kill Tome tomes too, so everyone doesn't have to play clueless when they see black book.
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.
players dont have to see other tomes daily in order for them "not to know". I mean i have never seen a tome in my life, but if i see a black one right now, i wont suspect anything
|
When it says "Players can now find the death note" find it where? We should probably limit this use to wizards/admemes otherwise it would be way to powerful. |
This comment was marked as abuse.
This comment was marked as abuse.
|
i renamed it to Kill Tome and removed DeathNoteSpawn event and am leaving you the decision where should Kill Tome be used and how. Up to you to decide |
|
could possibly be a funny wizard item. |
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.
Seems be be working as intended. I'll leave it up to admins or other maintainers to decide if this is desired content.
|
Ok so i'm gonna review and approve under the assumption this item will never be made accessible outside of admin intervention. |
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.
Heres a review, ill address this one myself (In fact have as I was writing it)
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.
Peak
But please nobody try to make this normally accessible I will cry
|
Well, it's a black book with some white scribbles on it so I'd say it's vague enough to be legally all right. The actual Death Note's pretty simplistic and from my quick searching there's just, so many knock offs. It's fine. |
|
Not gonna post the breaking change since its not a breaking chance, but a technical detail |
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.
The code here needs some cleanup and performance improvements.
| Kill(uid, targetComp); | ||
|
|
||
| _popupSystem.PopupPredicted(Loc.GetString("killtome-death"), | ||
| Loc.GetString("killtome-death-others", ("target", uid)), |
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.
Needs to use Identity.Entity or the popup will reveal disguises.
| // The component doesn't get removed fast enough and the update loop will run through it a few more times. | ||
| // This check is here to ensure it will not spam popups or kill you several times over. | ||
| if (targetComp.Dead) | ||
| continue; |
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.
That just sounds like something is mispredicting.
This check shouldn't be needed.
| targetComp.Dead = true; | ||
|
|
||
| RemCompDeferred<KillTomeTargetComponent>(uid); |
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.
no need to have this datafield if you are removing the component anyways
|
|
||
| ent.Comp.KilledEntities.Add(realUid); | ||
|
|
||
| Dirty(ent); |
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.
move outside the loop
|
|
||
| // If we have written at least one eligible name, we show the popup (So the player knows death note worked). | ||
| if (showPopup) | ||
| _popupSystem.PopupEntity(Loc.GetString("killtome-kill-success"), ent.Owner, args.Actor, PopupType.Large); |
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.
doesn't this need prediction?
| // 4. not be already killed by Kill Tome | ||
|
|
||
| // If all these conditions are met, we return true and the entityUid of the person to kill. | ||
| private bool CheckIfEligible(string name, KillTomeComponent comp, [NotNullWhen(true)] out EntityUid? entityUid) |
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.
use Entity<KillTomeComponent>
| private bool CheckIfEligible(string name, KillTomeComponent comp, [NotNullWhen(true)] out EntityUid? entityUid) | ||
| { | ||
| if (!TryFindEntityByName(name, out var uid) || | ||
| !TryComp<MobStateComponent>(uid, out var mob)) |
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 a lot of TryComps and name checks every time someone writes in it.
At least the names should be cached somehow.
| if (uid is not { } realUid) | ||
| { | ||
| entityUid = null; | ||
| return false; | ||
| } |
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.
you can just use uid.Value, no need to cast it into a non-nullable and back
| public bool Dead; | ||
|
|
||
| // Disallows cheat clients from seeing who is about to die to the killtome. | ||
| public override bool SendOnlyToOwner => true; |
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 also means the death won't be predicted to anyone except the owner.
So in this case it has to be visible to everyone.
This reverts commit d0c104e.
This reverts commit d0c104e. Revert suggested due to code issues and passed the voting. @ScarKy0 has interest in fixing it @xsainteer <https://youtu.be/8RmeZKz-i_w?t=2151>

About the PR
Added Death Note and its ability to kill people.
Why / Balance
This would bring more RP situations and chaos to rounds.
Technical details
Added DeathNoteComponent, which grants any paper an ability of Death Note. After a person writes a name in death note, the target is granted a DeathNoteTargetComponent, which has killTime and killDelay variables. DeathNoteSystem's Update method iterates through every DeathNoteTargetComponent entity and checks if killTime has come. That is how that all works.
Media
2025-07-16.15-41-54.mp4
Requirements
Breaking changes
Added new AfterWriteEvent, that is raised on paper (rather than actor) after something was written on it (Needed it to get Paper.Content to get targets' names)
Changelog