mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Add files via upload * changed sigtech, tourist, and clerk icons added more detail to sigtech icon new tourist and clerk icons * Some more icon changes I uploaded the wrong file * applied grimm-hollowknight requested changes Adds new signal technician and paramedic hud icons and reverts clerk's back, all requested by grimm-hollowknight * ah, so thats why you reverted that change im dumb * why cant i merge upstream why github * Adds brig physicians Adds brig physicians as a new job. There are a lot of changes, but in short: - Added the job and many required things for it to work - Edited maps to add lockers, landmarks, and update the brig medbay - Added new clothing, PDAs, IDs, ect. * Fixed some stuff - Fixed some stuff I forget to change on some maps - Added new landmark icons * Removed Brig Physician's ability to be an antag Removed Brig Physician's ability to be antag and gave them a mindshield * Many requested changes - Removed the flash from the Brig Physician's starting equipment - Removed security access for non-skeleton crew and weapon access from the Brig Physician - Added skillcapes - Updated the Infirmary in eclipse and omega - Added a wall mounted flash on box - Added an anesthetic tank and medical mask to the Brig Physician's locker - Added icons for potential future support for the changes in #11744 * Another bunch of changes - Fixed a bunch of typos and minor mistakes (thanks TheGamerdk for pointing most of them out) - Added support for #11744 now that its merged - Fixed a merge conflict * Might fix one of the merge conflicts ahhhhhhhhhhhhhhh I had to redo ALL of the map changes, so that was fun * Should finally bring this back to a functional state Should fix some of the checks failing cause the Kilo file was messed up - Re-did the changes to Kilo - Fixed something I left in while testing stuff * Thought I fixed this - Fixes the Brig Physician's skill capes using the wrong job * Should fix wejengin2's issues with the maps Should fix most of wejengin2's issues with the map changes. - Changes all the emergency wall meds to normal wall meds - Might have fixed the APCs, but I don't know if I did it right - MapMerged Kilo - In Omega, I fixed the decals, added firelocks, and added vents/scrubbers in the brig infirmary - In Box, I re-added some of the missing items - In Delta, rearranged the lights and replaced them with tubes - In Meta, I moved the morgue tray into the unused space, moved the blood freezer into the office, and added a shelf in the infirmary * Bows, bamboo, and bones Ports the stuff * Before i get yelled at * ack * Some sprites I forgot to save * Syndicate bow * Map changes * Other bee ports This might be a bit too much to add * Fixes invisible bows in Fastdmm2 and a build error * oops * Some tweeks/fixes * More stuff Added more footwraps, ported tribal skirts, and fixed hardlight bows * merg * oops * aaa * Gramger Thanks Anvilman Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> * Revert "Merge branch 'yogstation13-master' into tribal-crafting-port" This reverts commitb0396f5085, reversing changes made to3085d93160. * Revert "Merge branch 'tribal-crafting-port' of https://github.com/nmajask/Yogstation-But-Worse into tribal-crafting-port" This reverts commit32967243c7, reversing changes made tob0396f5085. * Fix * More fix * removes some stuff for now * fixed dart guns * Embed stuff pain * Update code/game/objects/items/stacks/sheets/sheet_types.dm Co-authored-by: Theos <theubernyan@gmail.com> * ADMIN LOG: A * fixes * pain * less debug * Readd the changes * balance * hardlight bow stuff * bamboo * starting recipes and stuff * More clothes Ports some stuff * Adds the clothing to the map * balance * Slug fix * MELEE! * Crossbows * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/projectiles/projectile/reusable/arrow.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Hardlight bow arrow embedding * Ashwalker nest tweaks * Balance Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Bow fixes and minor balance changes * Im dum * fix * Update code/modules/projectiles/boxes_magazines/_box_magazine.dm * reorganized crafting menu aaaaaa * huh * fex * removed broken code Co-authored-by: Anvilman6 <54463777+Anvilman6@users.noreply.github.com> Co-authored-by: Theos <theubernyan@gmail.com> Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com>
248 lines
8.7 KiB
Plaintext
248 lines
8.7 KiB
Plaintext
/obj/item/firing_pin
|
||
name = "electronic firing pin"
|
||
desc = "A small authentication device, to be inserted into a firearm receiver to allow operation. NT safety regulations require all new designs to incorporate one."
|
||
icon = 'icons/obj/device.dmi'
|
||
icon_state = "firing_pin"
|
||
item_state = "pen"
|
||
flags_1 = CONDUCT_1
|
||
w_class = WEIGHT_CLASS_TINY
|
||
attack_verb = list("poked")
|
||
var/fail_message = span_warning("INVALID USER.")
|
||
var/selfdestruct = 0 // Explode when user check is failed.
|
||
var/force_replace = 0 // Can forcefully replace other pins.
|
||
var/pin_removeable = 0 // Can be replaced by any pin.
|
||
var/obj/item/gun/gun
|
||
|
||
/obj/item/firing_pin/New(newloc)
|
||
..()
|
||
if(istype(newloc, /obj/item/gun))
|
||
gun = newloc
|
||
|
||
/obj/item/firing_pin/afterattack(atom/target, mob/user, proximity_flag)
|
||
. = ..()
|
||
if(proximity_flag)
|
||
if(istype(target, /obj/item/gun))
|
||
var/obj/item/gun/G = target
|
||
if(G.no_pin_required)
|
||
return
|
||
if(G.pin && (force_replace || G.pin.pin_removeable))
|
||
G.pin.forceMove(get_turf(G))
|
||
if(!G.pin.gun_remove(user))
|
||
return
|
||
to_chat(user, "<span class ='notice'>You remove [G]'s old pin.</span>")
|
||
|
||
if(!G.pin)
|
||
if(!user.temporarilyRemoveItemFromInventory(src))
|
||
return
|
||
gun_insert(user, G)
|
||
to_chat(user, "<span class ='notice'>You insert [src] into [G].</span>")
|
||
else
|
||
to_chat(user, "<span class ='notice'>This firearm already has a firing pin installed.</span>")
|
||
|
||
/obj/item/firing_pin/emag_act(mob/user)
|
||
if(obj_flags & EMAGGED)
|
||
return
|
||
obj_flags |= EMAGGED
|
||
to_chat(user, span_notice("You override the authentication mechanism."))
|
||
|
||
///what do we do when we are being added to a gun
|
||
/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G)
|
||
gun = G
|
||
forceMove(gun)
|
||
gun.pin = src
|
||
return
|
||
|
||
///pin removal proc, return TRUE if the gun is still intact when it's done, false if there is a "tragic" "accident"
|
||
/obj/item/firing_pin/proc/gun_remove(mob/living/user)
|
||
gun.pin = null
|
||
gun = null
|
||
return TRUE
|
||
|
||
///can the pin be used by whoever is firing its gun
|
||
/obj/item/firing_pin/proc/pin_auth(mob/living/user)
|
||
return TRUE
|
||
|
||
///what happens if an authorization is failed, explodes if selfdestruct is TRUE
|
||
/obj/item/firing_pin/proc/auth_fail(mob/living/user)
|
||
user?.show_message(fail_message, MSG_VISUAL)
|
||
if(selfdestruct)
|
||
if(user)
|
||
user.show_message("[span_danger("SELF-DESTRUCTING...")]<br>", MSG_VISUAL)
|
||
to_chat(user, span_userdanger("[gun] explodes!"))
|
||
explosion(get_turf(gun), -1, 0, 2, 3)
|
||
if(gun)
|
||
qdel(gun)
|
||
|
||
|
||
|
||
/obj/item/firing_pin/magic
|
||
name = "magic crystal shard"
|
||
desc = "A small enchanted shard which allows magical weapons to fire."
|
||
|
||
/obj/item/firing_pin/clockie
|
||
name = "clockwork crystal shard"
|
||
desc = "A small enchanted shard which allows followers of Ratvar to use their weapons."
|
||
|
||
///can the pin be used by whoever is firing its gun
|
||
/obj/item/firing_pin/clockie/pin_auth(mob/living/user)
|
||
return is_clockcult(user)
|
||
|
||
// Test pin, works only near firing range.
|
||
/obj/item/firing_pin/test_range
|
||
name = "test-range firing pin"
|
||
desc = "This safety firing pin allows weapons to be fired within proximity to a firing range."
|
||
fail_message = span_warning("TEST RANGE CHECK FAILED.")
|
||
pin_removeable = TRUE
|
||
|
||
/obj/item/firing_pin/test_range/pin_auth(mob/living/user)
|
||
for(var/obj/machinery/magnetic_controller/M in range(user, 3))
|
||
return TRUE
|
||
return FALSE
|
||
|
||
|
||
// Implant pin, checks for implant
|
||
/obj/item/firing_pin/implant
|
||
name = "implant-keyed firing pin"
|
||
desc = "This is a security firing pin which only authorizes users who are implanted with a certain device."
|
||
fail_message = span_warning("IMPLANT CHECK FAILED.")
|
||
var/obj/item/implant/req_implant = null
|
||
|
||
/obj/item/firing_pin/implant/pin_auth(mob/living/user)
|
||
if(user)
|
||
for(var/obj/item/implant/I in user.implants)
|
||
if(req_implant && I.type == req_implant)
|
||
return TRUE
|
||
return FALSE
|
||
|
||
/obj/item/firing_pin/implant/mindshield
|
||
name = "mindshield firing pin"
|
||
desc = "This Security firing pin authorizes the weapon for only mindshield-implanted users."
|
||
icon_state = "firing_pin_loyalty"
|
||
req_implant = /obj/item/implant/mindshield
|
||
|
||
/obj/item/firing_pin/implant/pindicate
|
||
name = "syndicate firing pin"
|
||
desc = "War has changed. It’s no longer about nations, ideologies, or ethnicity. It’s an endless series of proxy battles fought by mercenaries and machines. War – and its consumption of life – has become a well-oiled machine. War has changed. ID-tagged soldiers carry ID-tagged weapons, use ID-tagged gear. Nanomachines inside their bodies enhance and regulate their abilities. Genetic control. Information control. Emotion control. Battlefield control. Everything is monitored and kept under control. War has changed. The age of deterrence has become the age of control . . . All in the name of averting catastrophe from weapons of mass destruction. And he who controls the battlefield . . . controls history. War has changed. When the battlefield is under total control . . . War becomes routine."
|
||
icon_state = "firing_pin_pindi"
|
||
req_implant = /obj/item/implant/weapons_auth
|
||
|
||
|
||
|
||
// Honk pin, clown's joke item.
|
||
// Can replace other pins. Replace a pin in cap's laser for extra fun!
|
||
/obj/item/firing_pin/clown
|
||
name = "hilarious firing pin"
|
||
desc = "Advanced clowntech that can convert any firearm into a far more useful object."
|
||
color = "#FFFF00"
|
||
fail_message = span_warning("HONK!")
|
||
force_replace = TRUE
|
||
|
||
/obj/item/firing_pin/clown/pin_auth(mob/living/user)
|
||
playsound(src, 'sound/items/bikehorn.ogg', 50, 1)
|
||
return FALSE
|
||
|
||
// Ultra-honk pin, clown's deadly joke item.
|
||
// A gun with ultra-honk pin is useful for clown and useless for everyone else.
|
||
/obj/item/firing_pin/clown/ultra/pin_auth(mob/living/user)
|
||
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||
if(user && (!(HAS_TRAIT(user, TRAIT_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")))
|
||
return FALSE
|
||
return TRUE
|
||
|
||
/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/G)
|
||
..()
|
||
G.clumsy_check = FALSE
|
||
|
||
/obj/item/firing_pin/clown/ultra/gun_remove(mob/living/user)
|
||
gun.clumsy_check = initial(gun.clumsy_check)
|
||
..()
|
||
|
||
// Now two times deadlier!
|
||
/obj/item/firing_pin/clown/ultra/selfdestruct
|
||
desc = "Advanced clowntech that can convert any firearm into a far more useful object. It has a small nitrobananium charge on it."
|
||
selfdestruct = TRUE
|
||
|
||
// fun pin
|
||
// for when you need a gun to not be fired by anyone else ever
|
||
/obj/item/firing_pin/fucked
|
||
name = "Syndicate Ultrasecure Firing Pin"
|
||
desc = "Get fuuuuuuuuucked."
|
||
selfdestruct = TRUE
|
||
|
||
/obj/item/firing_pin/fucked/pin_auth(mob/living/user)
|
||
if(faction_check(user.faction, list(ROLE_SYNDICATE), FALSE))
|
||
return TRUE
|
||
return FALSE
|
||
|
||
/obj/item/firing_pin/fucked/gun_remove(mob/living/user)
|
||
auth_fail(user)
|
||
return FALSE
|
||
|
||
// DNA-keyed pin.
|
||
// When you want to keep your toys for yourself.
|
||
/obj/item/firing_pin/dna
|
||
name = "DNA-keyed firing pin"
|
||
desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link."
|
||
icon_state = "firing_pin_dna"
|
||
fail_message = span_warning("DNA CHECK FAILED.")
|
||
var/unique_enzymes = null
|
||
|
||
/obj/item/firing_pin/dna/afterattack(atom/target, mob/user, proximity_flag)
|
||
. = ..()
|
||
if(proximity_flag && iscarbon(target))
|
||
var/mob/living/carbon/M = target
|
||
if(M.dna && M.dna.unique_enzymes)
|
||
unique_enzymes = M.dna.unique_enzymes
|
||
to_chat(user, span_notice("DNA-LOCK SET."))
|
||
|
||
/obj/item/firing_pin/dna/pin_auth(mob/living/carbon/user)
|
||
if(user && user.dna && user.dna.unique_enzymes)
|
||
if(user.dna.unique_enzymes == unique_enzymes)
|
||
return TRUE
|
||
return FALSE
|
||
|
||
/obj/item/firing_pin/dna/auth_fail(mob/living/carbon/user)
|
||
if(!unique_enzymes)
|
||
if(user && user.dna && user.dna.unique_enzymes)
|
||
unique_enzymes = user.dna.unique_enzymes
|
||
to_chat(user, span_notice("DNA-LOCK SET."))
|
||
else
|
||
..()
|
||
|
||
/obj/item/firing_pin/dna/dredd
|
||
desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link. It has a small explosive charge on it."
|
||
selfdestruct = TRUE
|
||
|
||
// Laser tag pins
|
||
/obj/item/firing_pin/tag
|
||
name = "laser tag firing pin"
|
||
desc = "A recreational firing pin, used in laser tag units to ensure users have their vests on."
|
||
fail_message = span_warning("SUIT CHECK FAILED.")
|
||
var/obj/item/clothing/suit/suit_requirement = null
|
||
var/tagcolor = ""
|
||
|
||
/obj/item/firing_pin/tag/pin_auth(mob/living/user)
|
||
if(ishuman(user))
|
||
var/mob/living/carbon/human/M = user
|
||
if(istype(M.wear_suit, suit_requirement))
|
||
return TRUE
|
||
to_chat(user, span_warning("You need to be wearing [tagcolor] laser tag armor!"))
|
||
return FALSE
|
||
|
||
/obj/item/firing_pin/tag/red
|
||
name = "red laser tag firing pin"
|
||
icon_state = "firing_pin_red"
|
||
suit_requirement = /obj/item/clothing/suit/redtag
|
||
tagcolor = "red"
|
||
|
||
/obj/item/firing_pin/tag/blue
|
||
name = "blue laser tag firing pin"
|
||
icon_state = "firing_pin_blue"
|
||
suit_requirement = /obj/item/clothing/suit/bluetag
|
||
tagcolor = "blue"
|
||
|
||
/obj/item/firing_pin/Destroy()
|
||
if(gun)
|
||
gun.pin = null
|
||
return ..()
|