Files
Bubberstation/code/modules/mafia/map_pieces.dm
John Willard c3bbf807c5 Adds Coroner to Mafia & Bunch of Mafia changes (#92158)
## About The Pull Request

Changeling chat is now at night, rather than :j saymode, and it is also
separated from normal messages as [CHANGELING CHAT]
Adds a new [DEAD CHAT], all dead players in Mafia are corpselocked and
talking will instead go to Dead chat.
The Chaplain's ability is now being able to hear Dead chat at night, and
being able to in turn speak to the Dead.
The Chaplain's old ability has been given to a new role, the Coroner.
"Pray" is now "Autopsy".
Deaths in the Mafia arena aren't broadcasted anymore, to lessen
annoyance to round observers.

Also updates role icons & some outfits, as well as some bug fixes I
encountered while messing with it on localhost. I also tried (but not
fully) to make Mafia games more modular and independent, so maybe in the
future we can have more than one Mafia game running at a time.

I am limited to 2 player testing for this, so it is very much possible
that there's some issues I haven't found from my local testing, let me
know if you find anything please.

## Why It's Good For The Game

Being dead in Mafia boots you out of the round regardless of how
invested you were, that kidna sucks so hopefully being able to still
contribute something to the game, or at least discuss it with other dead
players in your own chat, makes players feel important to the game
they're playing.

I have a previous attempt of this here -
https://github.com/tgstation/tgstation/pull/75879 - but it staled out.
This differs from that attempt, as only dead players from the Mafia game
can speak in dead chat, while the old attempt allowed anyone that was
observing a mafia sign post (so dead players from the game, but not
observing the post, weren't able to speak to Chaplains, making him very
hard to be useful especially since getting information like that across
is a little hard). Being corpselocked also prevents them from being able
to see who Changelings are by simply looking at who has maptext at
night, and keeps them more focused on the game being played.

## Changelog

🆑
add: Added a new role to Mafia; the Coroner, which takes the Chaplain's
ability to see dead people's roles.
add: Mafia Chaplains now speak with the dead at night instead, and the
dead are corpselocked to prevent cheating.
fix: Mafia's HoS doesn't kill himself when executing non-townies.
qol: You can now update your notes & send them in chat while dead, as
well as look up the descriptions of other roles.
/🆑
2025-07-30 19:59:30 +10:00

90 lines
3.1 KiB
Plaintext

/obj/effect/landmark/mafia_game_area //locations where mafia will be loaded by the datum
name = "Mafia Area Spawn"
/obj/effect/landmark/mafia
name = "Mafia Player Spawn"
/obj/effect/landmark/mafia/town_center
name = "Mafia Town Center"
//for ghosts/admins
/obj/mafia_game_board
name = "Mafia Game Board"
icon = 'icons/obj/mafia.dmi'
icon_state = "board"
anchored = TRUE
var/datum/mafia_controller/MF
/obj/mafia_game_board/attack_ghost(mob/user)
. = ..()
if(!MF)
MF = GLOB.mafia_game
if(!MF)
MF = create_mafia_game()
MF.ui_interact(user)
/datum/map_template/mafia
should_place_on_top = FALSE
///The map suffix to put onto the mappath.
var/map_suffix
///A brief background tidbit
var/description = ""
///What costume will this map force players to start with?
var/custom_outfit
/datum/map_template/mafia/New(path = null, rename = null, cache = FALSE)
path = "_maps/minigame/mafia/" + map_suffix
return ..()
//we only have one map in unit tests for consistency.
#ifdef UNIT_TESTS
/datum/map_template/mafia/unit_test
name = "Mafia Unit Test"
description = "A map designed specifically for Unit Testing to ensure the game runs properly."
map_suffix = "mafia_unit_test.dmm"
#else
/datum/map_template/mafia/summerball
name = "Summerball 2020"
description = "The original, the OG. The 2020 Summer ball was where mafia came from, with this map."
map_suffix = "mafia_ball.dmm"
/datum/map_template/mafia/ufo
name = "Alien Mothership"
description = "The haunted ghost UFO tour has gone south and now it's up to our fine townies and scare seekers to kill the actual real alien changelings..."
map_suffix = "mafia_ayylmao.dmm"
custom_outfit = /datum/outfit/mafia/abductee
/datum/map_template/mafia/spider_clan
name = "Spider Clan Kidnapping"
description = "New and improved spider clan kidnappings are a lot less boring and have a lot more lynching. Damn westaboos!"
map_suffix = "mafia_spiderclan.dmm"
custom_outfit = /datum/outfit/mafia/ninja
/datum/map_template/mafia/gothic
name = "Vampire's Castle"
description = "Vampires and changelings clash to find out who's the superior bloodsucking monster in this creepy castle map."
map_suffix = "mafia_gothic.dmm"
custom_outfit = /datum/outfit/mafia/gothic
/datum/map_template/mafia/syndicate
name = "Syndicate Megastation"
description = "Yes, it's a very confusing day at the Megastation. Will the syndicate conflict resolution operatives succeed?"
map_suffix = "mafia_syndie.dmm"
custom_outfit = /datum/outfit/mafia/syndie
/datum/map_template/mafia/snowy
name = "Snowdin"
description = "Based off of the icy moon map of the same name, the guy who reworked it did a good enough job to receive a derivative piece of work based on it. Cool!"
map_suffix = "mafia_snow.dmm"
custom_outfit = /datum/outfit/mafia/snowy
/datum/map_template/mafia/lavaland
name = "Lavaland Excursion"
description = "The station has no idea what's going down on lavaland right now, we got changelings... traitors, and worst of all... lawyers roleblocking you every night."
map_suffix = "mafia_lavaland.dmm"
custom_outfit = /datum/outfit/mafia/lavaland
#endif