Skip to content

Conversation

@xsainteer
Copy link
Contributor

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

@PJBot PJBot added S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. Changes: Sprites Changes: Might require knowledge of spriting or visual design. labels Jul 16, 2025
@github-actions github-actions bot added the size/M Denotes a PR that changes 100-999 lines. label Jul 16, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Jul 16, 2025

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

Resources/Textures/Objects/Misc/killtome.rsi

State Old New Status
icon Added

Edit: diff updated after d8aa613

@metalgearsloth
Copy link
Contributor

License?

@Simyon264
Copy link
Member

Call it unalive tome instead :godo:

@lzk228
Copy link
Contributor

lzk228 commented Jul 16, 2025

too op imo

@EthanQix
Copy link

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.

@bhenrich
Copy link
Contributor

bhenrich commented Jul 16, 2025

There are some balancing discussions that need to occur around this, all of which should be kept to the discourse instead of the PR.

@ScarKy0
Copy link
Contributor

ScarKy0 commented Jul 16, 2025

Im in full support as long as this is admeme only, it sounds fucking hilarious

@xsainteer
Copy link
Contributor Author

xsainteer commented Jul 16, 2025

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

@xsainteer
Copy link
Contributor Author

License?

I mentioned alexmactep, is it not enough?

@CroilBird
Copy link
Contributor

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.

@K-Dynamic
Copy link
Contributor

I mentioned alexmactep, is it not enough?

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

Copy link
Contributor

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?

Copy link
Contributor Author

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)

Copy link
Contributor

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.

Copy link
Contributor Author

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

@ToastEnjoyer
Copy link
Contributor

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.

@superjj18

This comment was marked as abuse.

@Entvari
Copy link
Contributor

Entvari commented Jul 16, 2025

Thisd be hilarious as admeme if the licensing issue gets sorted, but should ABSOLUTELY NOT BE AVAILABLE TO WIZARD.

purchases deathnote roundstart
"JOHN SECURITY!!! JIMMY ATMOS!!! BILL SCIENCE!!! DEATH TO ALL MY METAGRUDGES!!"
Death-Note-Light-Yagami-Writing

@xsainteer
Copy link
Contributor Author

xsainteer commented Jul 16, 2025

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

@Tayrtahn Tayrtahn added the A: Roundflow/Antag Area: Roundflow - "What happens in the game", including antagonist roles and their capabilities label Jul 18, 2025
@xsainteer xsainteer requested a review from Tayrtahn July 18, 2025 16:32
@Pumkin69
Copy link
Contributor

could possibly be a funny wizard item.

@xsainteer xsainteer requested a review from Tayrtahn July 23, 2025 08:41
Copy link
Member

@Tayrtahn Tayrtahn left a 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.

@PJBot PJBot added the S: Approved Status: Reviewed and approved by at least one maintainer; a PR may require another approval. label Jul 23, 2025
@Tayrtahn Tayrtahn added T: Of Admin Interest Type: Affects administration work a lot, and might require admins to weigh in on and removed S: Awaiting Changes Status: Changes are required before another review can happen labels Jul 23, 2025
@ScarKy0
Copy link
Contributor

ScarKy0 commented Jul 25, 2025

Ok so i'm gonna review and approve under the assumption this item will never be made accessible outside of admin intervention.
That being said, review first (I'll probably address myself and merge)

Copy link
Contributor

@ScarKy0 ScarKy0 left a 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)

@PJBot PJBot added the S: Awaiting Changes Status: Changes are required before another review can happen label Jul 25, 2025
Copy link
Contributor

@ScarKy0 ScarKy0 left a 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

@ScarKy0 ScarKy0 removed the S: Awaiting Changes Status: Changes are required before another review can happen label Jul 25, 2025
@TiniestShark
Copy link
Member

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.

@TiniestShark TiniestShark added the S: Art Approval Status: The art (e.g. Spritework) has been approved by an art lead. label Jul 25, 2025
@ScarKy0 ScarKy0 merged commit d0c104e into space-wizards:master Jul 25, 2025
13 checks passed
@ScarKy0
Copy link
Contributor

ScarKy0 commented Jul 25, 2025

Not gonna post the breaking change since its not a breaking chance, but a technical detail

@xsainteer xsainteer deleted the death-note branch July 27, 2025 18:59
Copy link
Member

@slarticodefast slarticodefast left a 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)),
Copy link
Member

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.

Comment on lines +51 to +54
// 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;
Copy link
Member

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.

Comment on lines +64 to +66
targetComp.Dead = true;

RemCompDeferred<KillTomeTargetComponent>(uid);
Copy link
Member

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);
Copy link
Member

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);
Copy link
Member

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)
Copy link
Member

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))
Copy link
Member

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.

Comment on lines +144 to +148
if (uid is not { } realUid)
{
entityUid = null;
return false;
}
Copy link
Member

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;
Copy link
Member

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.

VasilisThePikachu added a commit that referenced this pull request Aug 3, 2025
VasilisThePikachu added a commit that referenced this pull request Aug 3, 2025
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Roundflow/Antag Area: Roundflow - "What happens in the game", including antagonist roles and their capabilities Changes: Sprites Changes: Might require knowledge of spriting or visual design. P3: Standard Priority: Default priority for repository items. S: Approved Status: Reviewed and approved by at least one maintainer; a PR may require another approval. S: Art Approval Status: The art (e.g. Spritework) has been approved by an art lead. size/M Denotes a PR that changes 100-999 lines. T: New Feature Type: New feature or content, or extending existing content T: Of Admin Interest Type: Affects administration work a lot, and might require admins to weigh in on

Projects

None yet

Development

Successfully merging this pull request may close these issues.