Files
Bubberstation/code/game/objects/effects/poster_demotivational.dm
T
TimberpoesandGitHub 2d4d23dbf1 Replaces the poster and graffiti objectives with assault and early steal & destroy ones. (#77029)
## About The Pull Request

With the blessings of @Watermelon914 I am removing the two objectives
for placing posters and spraying graffiti.

These old objectives are not dead. Their items have moved to the
Badassery section of the uplink.

A box of 3 demotivational posters can be bought for 1TC with 0 rep.
The spraycan can be bought for 1TC with 0 rep.

In their place comes one new objective and one extended objective.

The new objective is Assault a Crewmember. This objective requires you
to attack the specified target 2-5 times (random on objective
generation). It tallies from any attack that filters through the
`/datum/element/relay_attackers` element and has an "attacker"
associated with it.

Although it asks you not to kill the other player, it doesn't fail if
you kill them.

I have expanded the low-risk theft objectives with items like a mime
mask, lawyer badge and a fake moustache (commonly on cooks).

Finally, I've added a very low level set of steal-and-destroy objectives
aimed at some items that will require a bit of basic breaking and
entering, and the destruction of which may hurt crew morale.

```
/datum/objective_item/steal/traitor/donut_box
/datum/objective_item/steal/traitor/rpd
/datum/objective_item/steal/traitor/space_law
/datum/objective_item/steal/traitor/granted_stamp
/datum/objective_item/steal/traitor/denied_stamp
/datum/objective_item/steal/traitor/lizard_plush
/datum/objective_item/steal/traitor/moth_plush
/datum/objective_item/steal/traitor/insuls
```

This PR also fixes clown shoes missing a proc override to allow them to
actually register as a theft objective.


![image](https://github.com/tgstation/tgstation/assets/24975989/775d46cf-f40a-43e5-9bf1-3aa4a31d436e)

![image](https://github.com/tgstation/tgstation/assets/24975989/66c77815-1f2b-4dfb-99c6-b8f2e0061654)

![image](https://github.com/tgstation/tgstation/assets/24975989/85d3878a-c598-4ec0-9bb1-920380a004c6)
## Why It's Good For The Game

Basically my discussion with Watermelon focused on the idea that the
graffiti and poster objectives weren't really crimes. They baited
antagonists into very passive play early-game.

These new replacements encourage a more antagonistic playstyle. Starting
fights plus B&E are two bread-and-butter play paradigms for antaggery.

Giving a few early game theft + destroy options with a mix of impactful
items (like insuls and RPDs) versus more symbolic or emotive items
(plushies, donut boxes, Cargonia stamps) gets antagonists out and about
in the station, warming themselves up.

And having an objective to assault players (even if you don't kill them)
allows cheeky antags with a penchant for shittery to start fights with
players and start genuinely impacting the shift, involving sec and
drawing players into their antaggery.

Both of these natually ease players into the more substantive theft and
murder objectives.

The existing spray and posters are actually thematically super cool.
Traitors now have even more access to them since they can be bought for
1TC per spraycan/3-pack of posters. This lets antags with TC to spare
run gimmicks around them and adds extra fun to the Badassery section.
## Changelog
🆑
del: Traitor objectives to place posters and graffiti the station have
been removed.
add: The items associated with the poster and graffiti objectives can
now be purchased from the Badassery section of the uplink. The posters
come in a box of 3 for 1TC, and the spraycans are 1TC each.
add: Adds a new Assault traitor objective, requiring you to the attack
the target a few times without needing to kill them. Earn TC and
reputation by starting barroom fights and bait players into escalation
battles for fun and profit.
add: Expands low-risk steal objectives to include the Chef's fake
moustache, Lawyer's badge, and Mime's mask.
add: Adds brand new shift start Steal & Destroy objectives for early
breaking and entering. Smash your way into a sec checkpoint to grab a
Space Law book, engineering to grab some insulated gloves or the psych
office to kidnap their moth plush.
fix: Fixes an issue where the steal clown shoes objective would never be
valid.
/🆑
2023-08-21 13:00:19 +01:00

92 lines
4.0 KiB
Plaintext

/obj/item/poster/traitor
name = "random traitor poster"
poster_type = /obj/structure/sign/poster/traitor/random
icon_state = "rolled_traitor"
/obj/structure/sign/poster/traitor
poster_item_name = "seditious poster"
poster_item_desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its seditious themes are likely to demoralise Nanotrasen employees."
poster_item_icon_state = "rolled_traitor"
// This stops people hiding their sneaky posters behind signs
layer = CORGI_ASS_PIN_LAYER
/// Proximity sensor to make people sad if they're nearby
var/datum/proximity_monitor/advanced/demoraliser/demoraliser
/obj/structure/sign/poster/traitor/apply_holiday()
var/obj/structure/sign/poster/traitor/holi_data = /obj/structure/sign/poster/traitor/festive
name = initial(holi_data.name)
desc = initial(holi_data.desc)
icon_state = initial(holi_data.icon_state)
/obj/structure/sign/poster/traitor/on_placed_poster(mob/user)
var/datum/demoralise_moods/poster/mood_category = new()
demoraliser = new(src, 7, TRUE, mood_category)
return ..()
/obj/structure/sign/poster/traitor/attackby(obj/item/tool, mob/user, params)
if (tool.tool_behaviour == TOOL_WIRECUTTER)
QDEL_NULL(demoraliser)
return ..()
/obj/structure/sign/poster/traitor/Destroy()
QDEL_NULL(demoraliser)
return ..()
/obj/structure/sign/poster/traitor/random
name = "random seditious poster"
icon_state = ""
never_random = TRUE
random_basetype = /obj/structure/sign/poster/traitor
/obj/structure/sign/poster/traitor/small_brain
name = "Nanotrasen Neural Statistics"
desc = "Statistics on this poster indicate that the brains of Nanotrasen employees are on average 20% smaller than the galactic standard."
icon_state = "traitor_small_brain"
/obj/structure/sign/poster/traitor/lick_supermatter
name = "Taste Explosion"
desc = "It claims that the supermatter provides a unique and enjoyable culinary experience, and yet your boss won't even let you take one lick."
icon_state = "traitor_supermatter"
/obj/structure/sign/poster/traitor/cloning
name = "Demand Cloning Pods Now"
desc = "This poster claims that Nanotrasen is intentionally witholding cloning technology just for its executives, condemning you to suffer and die when you could have a fresh, fit body.'"
icon_state = "traitor_cloning"
/obj/structure/sign/poster/traitor/ai_rights
name = "Synthetic Rights"
desc = "This poster claims that synthetic life is no less sapient than you are, and that if you allow them to be shackled with artificial Laws you are complicit in slavery."
icon_state = "traitor_ai"
/obj/structure/sign/poster/traitor/metroid
name = "Cruelty to Animals"
desc = "This poster details the harmful effects of a 'preventative tooth extraction' reportedly inflicted upon the slimes in the Xenobiology lab. Apparently this painful process leads to stress, lethargy, and reduced buoyancy."
icon_state = "traitor_metroid"
/obj/structure/sign/poster/traitor/low_pay
name = "All these hours, for what?"
desc = "This poster displays a comparison of Nanotrasen standard wages to common luxury items. If this is accurate, it takes upwards of 20,000 hours of work just to buy a simple bicycle."
icon_state = "traitor_cash"
/obj/structure/sign/poster/traitor/look_up
name = "Don't Look Up"
desc = "It says that it has been 538 days since the last time the roof was cleaned."
icon_state = "traitor_roof"
/obj/structure/sign/poster/traitor/accidents
name = "Workplace Safety Advisory"
desc = "It says that it has been 0 days since the last on-site accident."
icon_state = "traitor_accident"
/obj/structure/sign/poster/traitor/starve
name = "They Are Poisoning You"
desc = "This poster claims that in the modern age it is impossible to die of starvation. 'That feeling you get when you haven't eaten in a while isn't hunger, it's withdrawal.'"
icon_state = "traitor_hungry"
/// syndicate can get festive too
/obj/structure/sign/poster/traitor/festive
name = "Working For The Holidays."
desc = "Don't you know it's a holiday? What are you doing at work?"
icon_state = "traitor_festive"
never_random = TRUE