Skip to content
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

Security Vouchers + Security Balance/QoL Pass + Random Head Overlay Bug Fix #4721

Merged
merged 30 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
var/static/list/set_types
if(!set_types)
set_types = list()
for(var/datum/voucher_set/static_set as anything in subtypesof(/datum/voucher_set))
for(var/datum/voucher_set/static_set as anything in subtypesof(/datum/voucher_set/mining)) //monkestation edit
set_types[initial(static_set.name)] = new static_set

var/list/items = list()
Expand Down
62 changes: 54 additions & 8 deletions code/game/machinery/deployable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
max_integrity = 100
var/proj_pass_rate = 50 //How many projectiles will pass the cover. Lower means stronger cover
var/bar_material = METAL
//monkestation edit: var for allowing a mover to pass through the barricade if the turf they move from has a barricade, this sounds dumb
var/pass_same_type = TRUE

/obj/structure/barricade/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
Expand All @@ -39,7 +41,7 @@

/obj/structure/barricade/CanAllowThrough(atom/movable/mover, border_dir)//So bullets will fly over and stuff.
. = ..()
if(locate(/obj/structure/barricade) in get_turf(mover))
if((locate(/obj/structure/barricade) in get_turf(mover)) && pass_same_type)
return TRUE
else if(isprojectile(mover))
if(!anchored)
Expand Down Expand Up @@ -137,19 +139,22 @@
icon_state = "barrier0"
density = FALSE
anchored = FALSE
max_integrity = 180
max_integrity = 200 //monkestation edit 180 to 200
proj_pass_rate = 20
armor_type = /datum/armor/barricade_security

var/deploy_time = 40
var/deploy_time = 5 SECONDS //monkestation edit
var/deploy_message = TRUE
//monkestation edit: var for setting density
var/locked = FALSE
pass_same_type = FALSE


/datum/armor/barricade_security
melee = 10
bullet = 50
laser = 50
energy = 50
bullet = 60 //monkestation edit: 50 to 60
laser = 60 //monkestation edit: 50 to 60
energy = 60 //monkestation edit: 50 to 60
bomb = 10
fire = 10

Expand All @@ -158,12 +163,53 @@
addtimer(CALLBACK(src, PROC_REF(deploy)), deploy_time)

/obj/structure/barricade/security/proc/deploy()
icon_state = "barrier1"
set_density(TRUE)
toggle_lock() //monkestation edit
set_anchored(TRUE)
if(deploy_message)
visible_message(span_warning("[src] deploys!"))

//MONKESTATION EDIT START
/obj/structure/barricade/security/proc/toggle_lock()
if(!locked)
set_density(TRUE)
icon_state = "barrier1"
locked = TRUE
playsound(src, 'sound/machines/boltsup.ogg', 45)
else
set_density(FALSE)
icon_state = "barrier0"
locked = FALSE
playsound(src, 'sound/machines/boltsdown.ogg', 45)
update_appearance()

/obj/structure/barricade/security/attackby(obj/item/tool, mob/living/user, params)
if(isidcard(tool))
var/obj/item/card/id/id_card = tool
if((ACCESS_SECURITY in id_card.GetAccess()))
toggle_lock()
balloon_alert(user, "barrier [locked ? "locked" : "unlocked"]")
else
balloon_alert(user, "no access!")
else
return ..()
Comment on lines +186 to +194
Copy link
Contributor

@Gboster-0 Gboster-0 Jan 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be better organized

Suggested change
if(isidcard(tool))
var/obj/item/card/id/id_card = tool
if((ACCESS_SECURITY in id_card.GetAccess()))
toggle_lock()
balloon_alert(user, "barrier [locked ? "locked" : "unlocked"]")
else
balloon_alert(user, "no access!")
else
return ..()
if(!isidcard(tool))
return ..()
var/obj/item/card/id/id_card = tool
if(!(ACCESS_SECURITY in id_card.GetAccess()))
balloon_alert(user, "no access!")
return
toggle_lock()
balloon_alert(user, "barrier [locked ? "locked" : "unlocked"]")


/obj/structure/barricade/security/wrench_act(mob/living/user, obj/item/tool, params)
if(locked)
balloon_alert(user, "must be unlocked first!")
return
if(!tool.use_tool(src, user, 2 SECONDS, volume=50))
return
set_anchored(!anchored)
tool.play_tool_sound(src)
user.balloon_alert_to_viewers("[anchored ? "anchored" : "unanchored"]")
return TOOL_ACT_TOOLTYPE_SUCCESS

/obj/structure/barricade/security/emp_act(severity)
toggle_lock()

/obj/structure/barricade/security/emag_act()
toggle_lock()
//MONKESTATION EDIT STOP

/obj/item/grenade/barrier
name = "barrier grenade"
Expand Down
14 changes: 12 additions & 2 deletions code/game/objects/items/grenades/smokebomb.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
inhand_icon_state = "smoke"
slot_flags = ITEM_SLOT_BELT
///It's extremely important to keep this list up to date. It helps to generate the insightful description of the smokebomb
var/static/list/bruh_moment = list("Dank", "Hip", "Lit", "Based", "Robust", "Bruh", "Gamer")
var/list/bruh_moment = list("Dank", "Hip", "Lit", "Based", "Robust", "Bruh", "Gamer") //monkestation edit
var/writing_utensil = "crayon" //monkestation edit

///Here we generate the extremely insightful description.
/obj/item/grenade/smokebomb/Initialize(mapload)
. = ..()
desc = "The word '[pick(bruh_moment)]' is scribbled on it in crayon."
desc = "'[pick(bruh_moment)]' is scribbled on it in [writing_utensil]." //monkestation edit

///Here we generate some smoke and also damage blobs??? for some reason. Honestly not sure why we do that.
/obj/item/grenade/smokebomb/detonate(mob/living/lanced_by)
Expand All @@ -34,3 +35,12 @@
var/damage = round(30/(get_dist(blob, src) + 1))
blob.take_damage(damage, BURN, MELEE, 0)
qdel(src)

//MONKESTATION EDIT START
/obj/item/grenade/smokebomb/security
name = "security smoke grenade"
icon_state = "smokered"
//dumb list name but i respect the joke
bruh_moment = list("Cover up", "Plausible Deniability", "Clown B-Gone", "Smoke Em!", "Syndicate Repellant")
writing_utensil = "chalk"
//MONKESTATION EDIT STOP
25 changes: 21 additions & 4 deletions code/game/objects/items/holosign_creator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,20 +98,37 @@

/obj/item/holosign_creator/security
name = "security holobarrier projector"
desc = "A holographic projector that creates holographic security barriers."
desc = "A holographic projector that creates holographic security barriers. You can remotely open barriers with it."
icon_state = "signmaker_sec"
holosign_type = /obj/structure/holosign/barrier
creation_time = 30
creation_time = 2 SECONDS
max_signs = 6

/obj/item/holosign_creator/security/afterattack(atom/target, mob/user)
var/obj/structure/holosign/barrier/barrier
if(target.type == holosign_type)
barrier = target
if(barrier.openable)
barrier.open(user)
return ..()

/obj/item/holosign_creator/engineering
name = "engineering holobarrier projector"
desc = "A holographic projector that creates holographic engineering barriers."
desc = "A holographic projector that creates holographic engineering barriers. You can remotely open barriers with it."
icon_state = "signmaker_engi"
holosign_type = /obj/structure/holosign/barrier/engineering
creation_time = 30
creation_time = 2 SECONDS
max_signs = 6

/obj/item/holosign_creator/engineering/afterattack(atom/target, mob/user)
var/obj/structure/holosign/barrier/engineering/barrier
if(target.type == holosign_type)
barrier = target
if(barrier.openable)
barrier.open(user)
return ..()


/obj/item/holosign_creator/atmos
name = "ATMOS holofan projector"
desc = "A holographic projector that creates holographic barriers that prevent changes in atmosphere conditions."
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/implants/implant_mindshield.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@
/obj/item/implanter/mindshield
name = "implanter (mindshield)"
imp_type = /obj/item/implant/mindshield
custom_premium_price = PAYCHECK_COMMAND * 2 //monkestation edit

/obj/item/implantcase/mindshield
name = "implant case - 'Mindshield'"
desc = "A glass case containing a mindshield implant."
imp_type = /obj/item/implant/mindshield

11 changes: 8 additions & 3 deletions code/game/objects/items/pinpointer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -176,15 +176,19 @@
/obj/item/pinpointer/pair
name = "pair pinpointer"
desc = "A handheld tracking device that locks onto its other half of the matching pair."
var/other_pair
var/obj/item/pinpointer/pair/other_pair //monkestation edit

/obj/item/pinpointer/pair/Destroy()
other_pair = null
. = ..()

/obj/item/pinpointer/pair/scan_for_target()
target = other_pair

//monkestation edit start
if(other_pair.active)
target = other_pair
else
target = null
//monkestation edit stop
/obj/item/pinpointer/pair/examine(mob/user)
. = ..()
if(!active || !target)
Expand All @@ -196,6 +200,7 @@

/obj/item/storage/box/pinpointer_pairs
name = "pinpointer pair box"
custom_premium_price = PAYCHECK_COMMAND * 3.5 //monkestation edit

/obj/item/storage/box/pinpointer_pairs/PopulateContents()
var/obj/item/pinpointer/pair/A = new(src)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@
inhand_icon_state = "securitywebbing"
worn_icon_state = "securitywebbing"
content_overlays = FALSE
custom_premium_price = PAYCHECK_COMMAND * 3
custom_premium_price = PAYCHECK_COMMAND * 2 //monkestation edit: 3 to 2

/obj/item/storage/belt/security/webbing/Initialize(mapload)
. = ..()
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/boxes/job_boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
/obj/item/storage/box/survival/security
mask_type = /obj/item/clothing/mask/gas/sechailer

/obj/item/storage/box/survival/security/radio/PopulateContents()
/obj/item/storage/box/survival/security/PopulateContents() //monkestation edit
..() // we want the regular stuff too
new /obj/item/radio/off(src)

Expand Down
12 changes: 12 additions & 0 deletions code/game/objects/items/storage/boxes/security_boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@
for(var/i in 1 to 7)
new /obj/item/grenade/flashbang(src)

//MONKESTATION EDIT START
/obj/item/storage/box/sec_smokebomb
name = "box of smoke grenades (WARNING)"
desc = "The rest of the warning label is torn off..."
icon_state = "secbox"
illustration = "grenade"

/obj/item/storage/box/sec_smokebomb/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/grenade/smokebomb/security(src)
//MONKESTATION EDIT STOP

/obj/item/storage/box/stingbangs
name = "box of stingbangs (WARNING)"
desc = "<B>WARNING: These devices are extremely dangerous and can cause severe injuries or death in repeated use.</B>"
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/fancy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
spawn_count = 6
open_status = TRUE
appearance_flags = KEEP_TOGETHER|LONG_GLIDE
custom_premium_price = PAYCHECK_COMMAND * 1.75
//custom_premium_price = PAYCHECK_COMMAND * 1.75 monkestation removal
contents_tag = "donut"

/obj/item/storage/fancy/donut_box/Initialize(mapload)
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/tanks/watertank.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@
inhand_icon_state = "pepperbackpacksec"
custom_price = PAYCHECK_CREW * 2
volume = 1000
slowdown = 0 //monkestation edit

/obj/item/watertank/pepperspray/Initialize(mapload)
. = ..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@
new /obj/item/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
new /obj/item/flashlight/seclite(src)
new /obj/item/ammo_box/magazine/m35/rubber(src) //monkestation edit: Paco sec
new /obj/item/clothing/mask/russian_balaclava(src) //monkestation edit
new /obj/item/bodycam_upgrade(src) //monkestation edit: Security Liability Act

/obj/structure/closet/secure_closet/security/sec
Expand Down
Loading
Loading