Files
dd5915f83d Security: A lot of changes (#5132)
## About The Pull Request

Special thanks to Cato for helping me with decisionmaking and balancing
on this one [in a bunch of things here, but not all.]


This PR changes a lot of things so I will be breaking it up into
numbers.

# 1. Security Vouchers: Primary
Ported from monkestation, securirty no longer starts with a taser, but
instead with two vouchers. A utility and a primary. All sec should get a
utility, the HOS, ~~medic~~ and detective do not get a primary voucher.
 
The vouchers can be redeemed at the same vendor that you get
flashbangs/cuffs/donuts from.
The choices are:
- The default taser
- The disabler and an energy shoulder holster to pair
- A pepperball gun and a single clip
- A flash-bulb riot shield


Why the change?:
- Warden might not be there to give you your preferred loadout, so even
on lowpop, you get your preferred gear up to some extent. We're not
giving out hellfire lasers here. It adds nothing that couldn't have been
done before, frankly.
- The weapons are availible roundstart already, with the exception of
the pepperball, which was adjusted to match
- More variety in security playstyle, allows sec officers to personalize
and play in (mostly) different ways.
- The disabler, which is the question I always get, is left in due to it
being present in the game as a standalone tool AND some players just
having a preferrence to shoot themselves in the foot, or don't like
fiddling with modes on the go.


The pepperball gun now has a higher shot delay, which is offset by how
the weapon makes or breaks fights by applying item drop, knockdown and
temporary blindness with it's reagent. Pair it with a baton and any
antag who forgot a gas mask just lost.

# 2. Security Vouchers: Utility
The choices are:
- Barrier nades x2
- Stingbangs x2
- Sec laptop, a laptop with relevant programs on it. Lets you view
cameras on the go, among others.
- Justice Helmet
- Donuts
- Weighted Space Law/Corporate Regulations. More on that later.
- Security barrier projector. More on that later.
- A pair of pinpointers, linked with eachother

## Weighted Space Law and Space Law changes:
I'll call it space law but it's corporate regulations ok?
- Space Law actually links you to wiki. Still teaches you legalese, so
just use it more than once to open it.
- Weighted Space Law, otherwise known as Space Law: Collecter's Edition.
With a gold-coloured-metal-plated trim. Allows you to beat people with
space law for 13 damage, a chance to teach them legalese so they can sue
you after, and a funny message. Overall a gimmicky thing for more
interesting interactions.

## Security Projector changes
- Security projector can now CUFF people. Use it as handcuffs to do so.
- The cuffs can be EMP'd away at a 50% chance. Makes sense according to
what they are and it works for their general purpose of "infinite cuffs,
but no cuffs". THE CUFFS FIZZLE OUT IF YOU LEAVE 1 SCREEN OF RANGE. This
is because of the sheer amount of space you can save on cuffs by taking
this 1 item in their stead, with the condition of "if you can keep them
by you until you sit them in their cell.". Worse than cuffs, but a huge
timesaver if you feel confident in your skills as an officer.


# 3. Breaching Hammer Buff
In the current meta, the breaching hammer is dead. Long-gone. Frangible
rounds in shotguns, sawn off or otherwise, are much more worth it than
any amount of cooperated breaching which leads to yourself being shocked
as they are NOT insulated. For that reason, the hammer now takes just 1
person to breach and is resistant to electricity. It's easier to get
than the frangible shotgun, it needs potentially less space counting the
shots, is infinite, can be even used for dealing with insulated things
as security. Simple as. Item revival, way behind meta, or even just
convenience.


## Proof Of Testing

<img width="1409" height="684" alt="aaaaaaaaa"
src="https://github.com/user-attachments/assets/782c23ca-11bb-4ba7-8294-80086af1b134"
/>
<img width="307" height="269" alt="bbbbbbb"
src="https://github.com/user-attachments/assets/8d75a1bb-fb2e-44d8-8338-f22ed6be62da"
/>
<img width="260" height="311" alt="ddddddd"
src="https://github.com/user-attachments/assets/51229031-0a6d-480c-8021-0f57cd8496dc"
/>
<img width="193" height="181" alt="ccccccc"
src="https://github.com/user-attachments/assets/97254655-60f7-4713-9673-bb6b3071d97e"
/>
## Changelog

🆑
add: Security starts with a primary and utility voucher for redemption
in their equipment lathe to make a choice for what they want to use as
their main, nonlethal weapon that round, and a bonus piece of gear on
the side.
add: Corporate Regulations: Collector's Edition, a space law book with
some heft and blunt force to it...
add: Security holobarriers can now additionally create holographic cuffs
around people, which have a chance to disappear when EMP'd, and
disappear if they leave the projector's range of 9 tiles [1 screen]
add: Pepperball magazines now in security vendor, premium section
balance: Pepperball guns fire much slower, fire delay 8
balance: Breaching hammers can be used by 1 person to breach and are now
insulated
fix: Space law books now link our website's space law
/🆑

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
2026-01-29 12:40:15 +01:00

82 lines
3.3 KiB
Plaintext

/// The size of the window that the wiki books open in.
#define BOOK_WINDOW_BROWSE_SIZE "970x710"
#define WIKI_PAGE_IFRAME(wikiurl, link_identifier) {"
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
iframe {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
function pageloaded(myframe) {
document.getElementById("loading").style.display = "none";
myframe.style.display = "inline";
}
</script>
<p id='loading'>You start skimming through the manual...</p>
<iframe width='100%' height='97%' onload="pageloaded(this)" src="[##wikiurl]/[##link_identifier]&remove_links=1" frameborder="0" id="main_frame"></iframe>
</body>
</html>
"}
/obj/item/book/manual/wiki/security_space_law
name = "Corporate Regulations"
desc = "A set of Nanotrasen regulations for keeping law, order, and procedure followed within their space stations."
starting_title = "Corporate Regulations"
page_link = "index.php?title=Space_Law"
/obj/item/book/manual/wiki/security_space_law/attack_self(mob/user) // Was in /tg/ folder, moved it here, made it 100% chance to learn language since you can spam it inhand anyhow. Saves us all from carpal tunnel.
if(user.can_read(src) && !user.has_language(/datum/language/legalese, SPOKEN_LANGUAGE))
to_chat(user, span_notice("As you inhale the book's contents, you feel more sophisticated. After reading Space Law just once, you feel like you are an expert in pretending you know Latin. You can now speak Legalese."))
user.grant_language(/datum/language/legalese, SPOKEN_LANGUAGE) //can speak but not understand
else
.=..()
/obj/item/book/manual/wiki/security_space_law/display_content(mob/living/user)
var/wiki_url = "http://wiki.bubberstation.org"
if(!wiki_url)
user.balloon_alert(user, "this book is empty!")
return
credit_book_to_reader(user)
if(user.client.byond_version < 516) //Remove this once 516 is stable
if(tgui_alert(user, "This book's page will open in your browser. Are you sure?", "Open The Wiki", list("Yes", "No")) != "Yes")
return
DIRECT_OUTPUT(user, link("[wiki_url]/[page_link]"))
else
DIRECT_OUTPUT(user, browse(WIKI_PAGE_IFRAME(wiki_url, page_link), "window=manual;size=[BOOK_WINDOW_BROWSE_SIZE]")) // if you change this GUARANTEE that it works.
/obj/item/book/manual/wiki/security_space_law/weighted
name = "Corporate Regulations: Collector's Edition"
desc = "A set of Nanotrasen guidelines for keeping law and order on their space stations. This one's quite heavy due to its extra pages and metal-plated cover."
icon = 'modular_zubbers/icons/obj/security_voucher.dmi'
icon_state = "SpaceLawWeighted"
force = 13
throwforce = 13
attack_verb_continuous = list("educates", "reprimands", "prosecutes", "teaches a lesson to")
attack_verb_simple = list("educate", "reprimand", "prosecute", "remind","teach a lesson to")
/obj/item/book/manual/wiki/security_space_law/weighted/afterattack(atom/target, mob/user, list/modifiers, list/attack_modifiers)
if(!isliving(target))
return
var/mob/living/living_target = target
if(user == living_target)
return
if(living_target.stat == DEAD)
return
if(prob(10))
living_target.grant_language(/datum/language/legalese, SPOKEN_LANGUAGE) //IMMA TEACH YOU A LESSON
#undef BOOK_WINDOW_BROWSE_SIZE
#undef WIKI_PAGE_IFRAME