File standardisation (#13131)

* Adds the check components

* Adds in trailing newlines

* Converts all CRLF to LF

* Post merge EOF

* Post merge line endings

* Final commit
This commit is contained in:
AffectedArc07
2020-03-17 18:08:51 -04:00
committed by GitHub
parent ec19ea3d2d
commit 04ba5c1cc9
1451 changed files with 183694 additions and 183593 deletions
@@ -223,4 +223,4 @@
affected_mob.adjustBruteLoss(5)
if(ismob(progenitor.loc))
progenitor.hunger++
progenitor.hunger++
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+114 -114
View File
@@ -1,114 +1,114 @@
/obj/item/storage/bible
name = "bible"
desc = "Apply to head repeatedly."
icon_state ="bible"
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF
var/mob/affecting = null
var/deity_name = "Christ"
/obj/item/storage/bible/suicide_act(mob/user)
to_chat(viewers(user), "<span class='warning'><b>[user] stares into [src.name] and attempts to transcend understanding of the universe!</b></span>")
user.dust()
return OBLITERATION
/obj/item/storage/bible/fart_act(mob/living/M)
if(QDELETED(M) || M.stat == DEAD)
return
M.visible_message("<span class='danger'>[M] farts on \the [name]!</span>")
M.visible_message("<span class='userdanger'>A mysterious force smites [M]!</span>")
M.suiciding = TRUE
do_sparks(3, 1, M)
M.gib()
return TRUE // Don't run the fart emote
/obj/item/storage/bible/booze
name = "bible"
desc = "To be applied to the head repeatedly."
icon_state ="bible"
/obj/item/storage/bible/booze/New()
..()
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
new /obj/item/stack/spacecash(src)
new /obj/item/stack/spacecash(src)
new /obj/item/stack/spacecash(src)
//BS12 EDIT
// All cult functionality moved to Null Rod
/obj/item/storage/bible/proc/bless(mob/living/carbon/M as mob)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/heal_amt = 10
for(var/obj/item/organ/external/affecting in H.bodyparts)
if(affecting.heal_damage(heal_amt, heal_amt))
H.UpdateDamageIcon()
return
/obj/item/storage/bible/attack(mob/living/M as mob, mob/living/user as mob)
add_attack_logs(user, M, "Hit with [src]")
if(!iscarbon(user))
M.LAssailant = null
else
M.LAssailant = user
if(!(istype(user, /mob/living/carbon/human) || SSticker) && SSticker.mode.name != "monkey")
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return
if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='warning'>The book sizzles in your hands.</span>")
user.take_organ_damage(0,10)
return
if((CLUMSY in user.mutations) && prob(50))
to_chat(user, "<span class='warning'>The [src] slips out of your hand and hits your head.</span>")
user.take_organ_damage(10)
user.Paralyse(20)
return
if(M.stat !=2)
if((istype(M, /mob/living/carbon/human) && prob(60)))
bless(M)
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] heals [] with the power of [src.deity_name]!</span>", user, M), 1)
to_chat(M, "<span class='warning'>May the power of [src.deity_name] compel you to be healed!</span>")
playsound(src.loc, "punch", 25, 1, -1)
else
if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet))
M.adjustBrainLoss(10)
to_chat(M, "<span class='warning'>You feel dumber.</span>")
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] beats [] over the head with []!</span>", user, M, src), 1)
playsound(src.loc, "punch", 25, 1, -1)
else if(M.stat == 2)
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] smacks []'s lifeless corpse with [].</span>", user, M, src), 1)
playsound(src.loc, "punch", 25, 1, -1)
return
/obj/item/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity)
return
if(istype(A, /turf/simulated/floor))
to_chat(user, "<span class='notice'>You hit the floor with the bible.</span>")
if(user.mind && (user.mind.isholy))
for(var/obj/effect/rune/R in A)
if(R.invisibility)
R.talismanreveal()
if(user.mind && (user.mind.isholy))
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
to_chat(user, "<span class='notice'>You bless [A].</span>")
var/water2holy = A.reagents.get_reagent_amount("water")
A.reagents.del_reagent("water")
A.reagents.add_reagent("holywater",water2holy)
if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me
to_chat(user, "<span class='notice'>You purify [A].</span>")
var/unholy2clean = A.reagents.get_reagent_amount("unholywater")
A.reagents.del_reagent("unholywater")
A.reagents.add_reagent("holywater",unholy2clean)
/obj/item/storage/bible/attackby(obj/item/W as obj, mob/user as mob, params)
playsound(src.loc, "rustle", 50, 1, -5)
..()
/obj/item/storage/bible
name = "bible"
desc = "Apply to head repeatedly."
icon_state ="bible"
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF
var/mob/affecting = null
var/deity_name = "Christ"
/obj/item/storage/bible/suicide_act(mob/user)
to_chat(viewers(user), "<span class='warning'><b>[user] stares into [src.name] and attempts to transcend understanding of the universe!</b></span>")
user.dust()
return OBLITERATION
/obj/item/storage/bible/fart_act(mob/living/M)
if(QDELETED(M) || M.stat == DEAD)
return
M.visible_message("<span class='danger'>[M] farts on \the [name]!</span>")
M.visible_message("<span class='userdanger'>A mysterious force smites [M]!</span>")
M.suiciding = TRUE
do_sparks(3, 1, M)
M.gib()
return TRUE // Don't run the fart emote
/obj/item/storage/bible/booze
name = "bible"
desc = "To be applied to the head repeatedly."
icon_state ="bible"
/obj/item/storage/bible/booze/New()
..()
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
new /obj/item/reagent_containers/food/drinks/cans/beer(src)
new /obj/item/stack/spacecash(src)
new /obj/item/stack/spacecash(src)
new /obj/item/stack/spacecash(src)
//BS12 EDIT
// All cult functionality moved to Null Rod
/obj/item/storage/bible/proc/bless(mob/living/carbon/M as mob)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/heal_amt = 10
for(var/obj/item/organ/external/affecting in H.bodyparts)
if(affecting.heal_damage(heal_amt, heal_amt))
H.UpdateDamageIcon()
return
/obj/item/storage/bible/attack(mob/living/M as mob, mob/living/user as mob)
add_attack_logs(user, M, "Hit with [src]")
if(!iscarbon(user))
M.LAssailant = null
else
M.LAssailant = user
if(!(istype(user, /mob/living/carbon/human) || SSticker) && SSticker.mode.name != "monkey")
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return
if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='warning'>The book sizzles in your hands.</span>")
user.take_organ_damage(0,10)
return
if((CLUMSY in user.mutations) && prob(50))
to_chat(user, "<span class='warning'>The [src] slips out of your hand and hits your head.</span>")
user.take_organ_damage(10)
user.Paralyse(20)
return
if(M.stat !=2)
if((istype(M, /mob/living/carbon/human) && prob(60)))
bless(M)
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] heals [] with the power of [src.deity_name]!</span>", user, M), 1)
to_chat(M, "<span class='warning'>May the power of [src.deity_name] compel you to be healed!</span>")
playsound(src.loc, "punch", 25, 1, -1)
else
if(ishuman(M) && !istype(M:head, /obj/item/clothing/head/helmet))
M.adjustBrainLoss(10)
to_chat(M, "<span class='warning'>You feel dumber.</span>")
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] beats [] over the head with []!</span>", user, M, src), 1)
playsound(src.loc, "punch", 25, 1, -1)
else if(M.stat == 2)
for(var/mob/O in viewers(M, null))
O.show_message(text("<span class='danger'>[] smacks []'s lifeless corpse with [].</span>", user, M, src), 1)
playsound(src.loc, "punch", 25, 1, -1)
return
/obj/item/storage/bible/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity)
return
if(istype(A, /turf/simulated/floor))
to_chat(user, "<span class='notice'>You hit the floor with the bible.</span>")
if(user.mind && (user.mind.isholy))
for(var/obj/effect/rune/R in A)
if(R.invisibility)
R.talismanreveal()
if(user.mind && (user.mind.isholy))
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
to_chat(user, "<span class='notice'>You bless [A].</span>")
var/water2holy = A.reagents.get_reagent_amount("water")
A.reagents.del_reagent("water")
A.reagents.add_reagent("holywater",water2holy)
if(A.reagents && A.reagents.has_reagent("unholywater")) //yeah yeah, copy pasted code - sue me
to_chat(user, "<span class='notice'>You purify [A].</span>")
var/unholy2clean = A.reagents.get_reagent_amount("unholywater")
A.reagents.del_reagent("unholywater")
A.reagents.add_reagent("holywater",unholy2clean)
/obj/item/storage/bible/attackby(obj/item/W as obj, mob/user as mob, params)
playsound(src.loc, "rustle", 50, 1, -5)
..()
File diff suppressed because it is too large Load Diff
@@ -1,94 +1,94 @@
/obj/item/storage/briefcase
name = "briefcase"
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
item_state = "briefcase"
flags = CONDUCT
hitsound = "swing_hit"
force = 8
throw_speed = 2
throw_range = 4
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
resistance_flags = FLAMMABLE
max_integrity = 150
/obj/item/storage/briefcase/sniperbundle
desc = "Its label reads \"genuine hardened Captain leather\", but suspiciously has no other tags or branding. Smells like L'Air du Temps."
force = 10
/obj/item/storage/briefcase/sniperbundle/New()
..()
new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src)
new /obj/item/clothing/accessory/red(src)
new /obj/item/clothing/under/syndicate/sniper(src)
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/suppressor/specialoffer(src)
/obj/item/storage/briefcase/false_bottomed
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 10
var/busy_hunting = FALSE
var/bottom_open = FALSE //is the false bottom open?
var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it
/obj/item/storage/briefcase/false_bottomed/Destroy()
if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here.
QDEL_NULL(stored_item)
return ..()
/obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params)
..()
if(stored_item && istype(stored_item, /obj/item/gun) && !Adjacent(A))
var/obj/item/gun/stored_gun = stored_item
stored_gun.afterattack(A, user, flag, params)
/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/I, mob/user)
if(bottom_open)
if(stored_item)
to_chat(user, "<span class='warning'>There's already something in the false bottom!</span>")
return
if(I.w_class > WEIGHT_CLASS_NORMAL)
to_chat(user, "<span class='warning'>The [I] is too big to fit in the false bottom!</span>")
return
if(!user.drop_item(I))
user << "<span class='warning'>The [I] is stuck to your hands!</span>"
return
stored_item = I
max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class
I.forceMove(null) //null space here we go - to stop it showing up in the briefcase
to_chat(user, "You place the [I] into the false bottom of the briefcase.")
else
return ..()
/obj/item/storage/briefcase/false_bottomed/screwdriver_act(mob/user, obj/item/I)
if(!bottom_open && busy_hunting)
return
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
if(!bottom_open)
to_chat(user, "You begin to hunt around the rim of the [src]...")
busy_hunting = TRUE
if(do_after(user, 20, target = src))
if(user)
to_chat(user, "You pry open the false bottom!")
bottom_open = TRUE
busy_hunting = FALSE
else
to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with the [stored_item] snugly inside." : "."]")
bottom_open = FALSE
/obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user)
if(bottom_open && stored_item)
user.put_in_hands(stored_item)
to_chat(user, "You pull out the [stored_item] from the [src]'s false bottom.")
stored_item = null
max_w_class = initial(max_w_class)
else
return ..()
/obj/item/storage/briefcase
name = "briefcase"
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
item_state = "briefcase"
flags = CONDUCT
hitsound = "swing_hit"
force = 8
throw_speed = 2
throw_range = 4
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
resistance_flags = FLAMMABLE
max_integrity = 150
/obj/item/storage/briefcase/sniperbundle
desc = "Its label reads \"genuine hardened Captain leather\", but suspiciously has no other tags or branding. Smells like L'Air du Temps."
force = 10
/obj/item/storage/briefcase/sniperbundle/New()
..()
new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src)
new /obj/item/clothing/accessory/red(src)
new /obj/item/clothing/under/syndicate/sniper(src)
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/suppressor/specialoffer(src)
/obj/item/storage/briefcase/false_bottomed
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 10
var/busy_hunting = FALSE
var/bottom_open = FALSE //is the false bottom open?
var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it
/obj/item/storage/briefcase/false_bottomed/Destroy()
if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here.
QDEL_NULL(stored_item)
return ..()
/obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params)
..()
if(stored_item && istype(stored_item, /obj/item/gun) && !Adjacent(A))
var/obj/item/gun/stored_gun = stored_item
stored_gun.afterattack(A, user, flag, params)
/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/I, mob/user)
if(bottom_open)
if(stored_item)
to_chat(user, "<span class='warning'>There's already something in the false bottom!</span>")
return
if(I.w_class > WEIGHT_CLASS_NORMAL)
to_chat(user, "<span class='warning'>The [I] is too big to fit in the false bottom!</span>")
return
if(!user.drop_item(I))
user << "<span class='warning'>The [I] is stuck to your hands!</span>"
return
stored_item = I
max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class
I.forceMove(null) //null space here we go - to stop it showing up in the briefcase
to_chat(user, "You place the [I] into the false bottom of the briefcase.")
else
return ..()
/obj/item/storage/briefcase/false_bottomed/screwdriver_act(mob/user, obj/item/I)
if(!bottom_open && busy_hunting)
return
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
if(!bottom_open)
to_chat(user, "You begin to hunt around the rim of the [src]...")
busy_hunting = TRUE
if(do_after(user, 20, target = src))
if(user)
to_chat(user, "You pry open the false bottom!")
bottom_open = TRUE
busy_hunting = FALSE
else
to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with the [stored_item] snugly inside." : "."]")
bottom_open = FALSE
/obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user)
if(bottom_open && stored_item)
user.put_in_hands(stored_item)
to_chat(user, "You pull out the [stored_item] from the [src]'s false bottom.")
stored_item = null
max_w_class = initial(max_w_class)
else
return ..()
@@ -1,382 +1,382 @@
/* First aid storage
* Contains:
* First Aid Kits
* Pill Bottles
* Dice Pack (in a pill bottle)
*/
/*
* First Aid Kits
*/
/obj/item/storage/firstaid
name = "first-aid kit"
desc = "It's an emergency medical kit for those serious boo-boos."
icon_state = "firstaid"
throw_speed = 2
throw_range = 8
var/empty = 0
req_one_access =list(ACCESS_MEDICAL, ACCESS_ROBOTICS) //Access and treatment are utilized for medbots.
var/treatment_brute = "salglu_solution"
var/treatment_oxy = "salbutamol"
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_virus = "spaceacillin"
var/med_bot_skin = null
var/syndicate_aligned = FALSE
/obj/item/storage/firstaid/fire
name = "fire first-aid kit"
desc = "A medical kit that contains several medical patches and pills for treating burns. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "ointment"
item_state = "firstaid-ointment"
med_bot_skin = "ointment"
New()
..()
if(empty) return
icon_state = pick("ointment","firefirstaid")
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/healthanalyzer( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/reagent_containers/food/pill/salicylic( src )
return
/obj/item/storage/firstaid/fire/empty
empty = 1
/obj/item/storage/firstaid/regular
desc = "A general medical kit that contains medical patches for both brute damage and burn damage. Also contains an epinephrine syringe for emergency use and a health analyzer"
icon_state = "firstaid"
New()
..()
if(empty) return
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
new /obj/item/reagent_containers/food/pill/salicylic( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/healthanalyzer( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
return
/obj/item/storage/firstaid/toxin
name = "toxin first aid kit"
desc = "A medical kit designed to counter poisoning by common toxins. Contains three pills and syringes, and a health analyzer to determine the health of the patient."
icon_state = "antitoxin"
item_state = "firstaid-toxin"
med_bot_skin = "tox"
New()
..()
if(empty) return
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/healthanalyzer( src )
return
/obj/item/storage/firstaid/toxin/empty
empty = 1
/obj/item/storage/firstaid/o2
name = "oxygen deprivation first aid kit"
desc = "A first aid kit that contains four pills of salbutamol, which is able to counter injuries caused by suffocation. Also contains a health analyzer to determine the health of the patient."
icon_state = "o2"
item_state = "firstaid-o2"
med_bot_skin = "o2"
New()
..()
if(empty) return
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/healthanalyzer( src )
return
/obj/item/storage/firstaid/o2/empty
empty = 1
/obj/item/storage/firstaid/brute
name = "brute trauma treatment kit"
desc = "A medical kit that contains several medical patches and pills for treating brute injuries. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "brute"
item_state = "firstaid-brute"
med_bot_skin = "brute"
New()
..()
if(empty) return
icon_state = pick("brute","brute2")
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/healthanalyzer(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/stack/medical/bruise_pack(src)
return
/obj/item/storage/firstaid/brute/empty
empty = 1
/obj/item/storage/firstaid/adv
name = "advanced first-aid kit"
desc = "Contains advanced medical treatments."
icon_state = "advfirstaid"
item_state = "firstaid-advanced"
med_bot_skin = "adv"
/obj/item/storage/firstaid/adv/New()
..()
if(empty)
return
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack/advanced(src)
new /obj/item/stack/medical/bruise_pack/advanced(src)
new /obj/item/stack/medical/ointment/advanced(src)
new /obj/item/stack/medical/ointment/advanced(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/healthanalyzer(src)
/obj/item/storage/firstaid/adv/empty
empty = 1
/obj/item/storage/firstaid/machine
name = "machine repair kit"
desc = "A kit that contains supplies to repair IPCs on the go."
icon_state = "machinefirstaid"
item_state = "firstaid-machine"
med_bot_skin = "machine"
/obj/item/storage/firstaid/machine/New()
..()
if(empty)
return
new /obj/item/weldingtool(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/reagent_containers/food/drinks/oilcan/full(src)
new /obj/item/robotanalyzer(src)
/obj/item/storage/firstaid/machine/empty
empty = 1
/obj/item/storage/firstaid/tactical
name = "first-aid kit"
icon_state = "bezerk"
desc = "I hope you've got insurance."
max_w_class = WEIGHT_CLASS_NORMAL
treatment_oxy = "perfluorodecalin"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "charcoal"
req_one_access =list(ACCESS_SYNDICATE)
med_bot_skin = "bezerk"
syndicate_aligned = TRUE
/obj/item/storage/firstaid/tactical/New()
..()
if(empty) return
new /obj/item/reagent_containers/hypospray/combat(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src) // Because you ain't got no time to look at what damage dey taking yo
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/defibrillator/compact/combat/loaded(src)
new /obj/item/clothing/glasses/hud/health/night(src)
return
/obj/item/storage/firstaid/tactical/empty
empty =1
/obj/item/storage/firstaid/surgery
name = "field surgery kit"
icon_state = "duffel-med"
desc = "A kit for surgery in the field."
max_w_class = WEIGHT_CLASS_BULKY
max_combined_w_class = 21
storage_slots = 10
can_hold = list(/obj/item/roller,/obj/item/bonesetter,/obj/item/bonegel, /obj/item/scalpel, /obj/item/hemostat,
/obj/item/cautery, /obj/item/retractor, /obj/item/FixOVein, /obj/item/surgicaldrill, /obj/item/circular_saw)
/obj/item/storage/firstaid/surgery/New()
..()
new /obj/item/roller(src)
new /obj/item/bonesetter(src)
new /obj/item/bonegel(src)
new /obj/item/scalpel(src)
new /obj/item/hemostat(src)
new /obj/item/cautery(src)
new /obj/item/retractor(src)
new /obj/item/FixOVein(src)
new /obj/item/surgicaldrill(src)
new /obj/item/circular_saw(src)
/*
* Pill Bottles
*/
/obj/item/storage/pill_bottle
name = "pill bottle"
desc = "It's an airtight container for storing medication."
icon_state = "pill_canister"
icon = 'icons/obj/chemical.dmi'
item_state = "contsolid"
w_class = WEIGHT_CLASS_SMALL
can_hold = list(/obj/item/reagent_containers/food/pill)
cant_hold = list(/obj/item/reagent_containers/food/pill/patch)
allow_quick_gather = TRUE
use_to_pickup = TRUE
storage_slots = 50
max_combined_w_class = 50
display_contents_with_number = TRUE
var/base_name = ""
var/label_text = ""
var/applying_meds = FALSE //To Prevent spam clicking and generating runtimes from apply a deleting pill multiple times.
var/rapid_intake_message = "unscrews the cap on the pill bottle and begins dumping the entire contents down their throat!"
var/rapid_post_instake_message = "downs the entire bottle of pills in one go!"
var/allow_wrap = TRUE
var/wrapper_color = null
/obj/item/storage/pill_bottle/New()
..()
base_name = name
if(allow_wrap)
apply_wrap()
/obj/item/storage/pill_bottle/proc/apply_wrap()
if(wrapper_color)
overlays.Cut()
var/image/I = image(icon, "pillbottle_wrap")
I.color = wrapper_color
overlays += I
/obj/item/storage/pill_bottle/attack(mob/M, mob/user)
if(iscarbon(M) && contents.len)
if(applying_meds)
to_chat(user, "<span class='warning'>You are already applying meds.</span>")
return
applying_meds = TRUE
for(var/obj/item/reagent_containers/food/pill/P in contents)
if(P.attack(M, user))
applying_meds = FALSE
else
applying_meds = FALSE
break
else
return ..()
/obj/item/storage/pill_bottle/ert
wrapper_color = COLOR_MAROON
/obj/item/storage/pill_bottle/ert/New()
..()
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
/obj/item/storage/pill_bottle/MouseDrop(obj/over_object as obj) // Best utilized if you're a cantankerous doctor with a Vicodin habit.
if(iscarbon(over_object))
var/mob/living/carbon/C = over_object
if(loc == C && src == C.get_active_hand())
if(!contents.len)
to_chat(C, "<span class='notice'>There is nothing in [src]!</span>")
return
C.visible_message("<span class='danger'>[C] [rapid_intake_message]</span>")
if(do_mob(C, C, 100)) // 10 seconds
for(var/obj/item/reagent_containers/food/pill/P in contents)
P.attack(C, C)
C.visible_message("<span class='danger'>[C] [rapid_post_instake_message]</span>")
return
return ..()
/obj/item/storage/pill_bottle/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/pen) || istype(I, /obj/item/flashlight/pen))
var/tmp_label = sanitize(input(user, "Enter a label for [name]","Label",label_text))
if(length(tmp_label) > MAX_NAME_LEN)
to_chat(user, "<span class='warning'>The label can be at most [MAX_NAME_LEN] characters long.</span>")
else
to_chat(user, "<span class='notice'>You set the label to \"[tmp_label]\".</span>")
label_text = tmp_label
update_name_label()
else
return ..()
/obj/item/storage/pill_bottle/proc/update_name_label()
if(label_text == "")
name = base_name
else
name = "[base_name] ([label_text])"
/obj/item/storage/pill_bottle/patch_pack
name = "Patch Pack"
desc = "It's a container for storing medical patches."
icon_state = "patch_pack"
can_hold = list(/obj/item/reagent_containers/food/pill/patch)
cant_hold = list()
rapid_intake_message = "flips the lid of the Patch Pack open and begins rapidly stamping patches on themselves!"
rapid_post_instake_message = "stamps the entire contents of the Patch Pack all over their entire body!"
allow_wrap = FALSE
/obj/item/storage/pill_bottle/charcoal
name = "Pill bottle (Charcoal)"
desc = "Contains pills used to counter toxins."
wrapper_color = COLOR_GREEN
New()
..()
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
/obj/item/storage/pill_bottle/painkillers
name = "Pill Bottle (Salicylic Acid)"
desc = "Contains various pills for minor pain relief."
wrapper_color = COLOR_RED
/obj/item/storage/pill_bottle/painkillers/New()
..()
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
/obj/item/storage/pill_bottle/fakedeath
allow_wrap = FALSE
/obj/item/storage/pill_bottle/fakedeath/New()
..()
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
/* First aid storage
* Contains:
* First Aid Kits
* Pill Bottles
* Dice Pack (in a pill bottle)
*/
/*
* First Aid Kits
*/
/obj/item/storage/firstaid
name = "first-aid kit"
desc = "It's an emergency medical kit for those serious boo-boos."
icon_state = "firstaid"
throw_speed = 2
throw_range = 8
var/empty = 0
req_one_access =list(ACCESS_MEDICAL, ACCESS_ROBOTICS) //Access and treatment are utilized for medbots.
var/treatment_brute = "salglu_solution"
var/treatment_oxy = "salbutamol"
var/treatment_fire = "salglu_solution"
var/treatment_tox = "charcoal"
var/treatment_virus = "spaceacillin"
var/med_bot_skin = null
var/syndicate_aligned = FALSE
/obj/item/storage/firstaid/fire
name = "fire first-aid kit"
desc = "A medical kit that contains several medical patches and pills for treating burns. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "ointment"
item_state = "firstaid-ointment"
med_bot_skin = "ointment"
New()
..()
if(empty) return
icon_state = pick("ointment","firefirstaid")
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/healthanalyzer( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/reagent_containers/food/pill/salicylic( src )
return
/obj/item/storage/firstaid/fire/empty
empty = 1
/obj/item/storage/firstaid/regular
desc = "A general medical kit that contains medical patches for both brute damage and burn damage. Also contains an epinephrine syringe for emergency use and a health analyzer"
icon_state = "firstaid"
New()
..()
if(empty) return
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
new /obj/item/reagent_containers/food/pill/patch/styptic( src )
new /obj/item/reagent_containers/food/pill/salicylic( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/reagent_containers/food/pill/patch/silver_sulf( src )
new /obj/item/healthanalyzer( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
return
/obj/item/storage/firstaid/toxin
name = "toxin first aid kit"
desc = "A medical kit designed to counter poisoning by common toxins. Contains three pills and syringes, and a health analyzer to determine the health of the patient."
icon_state = "antitoxin"
item_state = "firstaid-toxin"
med_bot_skin = "tox"
New()
..()
if(empty) return
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/syringe/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/healthanalyzer( src )
return
/obj/item/storage/firstaid/toxin/empty
empty = 1
/obj/item/storage/firstaid/o2
name = "oxygen deprivation first aid kit"
desc = "A first aid kit that contains four pills of salbutamol, which is able to counter injuries caused by suffocation. Also contains a health analyzer to determine the health of the patient."
icon_state = "o2"
item_state = "firstaid-o2"
med_bot_skin = "o2"
New()
..()
if(empty) return
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/reagent_containers/food/pill/salbutamol( src )
new /obj/item/healthanalyzer( src )
return
/obj/item/storage/firstaid/o2/empty
empty = 1
/obj/item/storage/firstaid/brute
name = "brute trauma treatment kit"
desc = "A medical kit that contains several medical patches and pills for treating brute injuries. Contains one epinephrine syringe for emergency use and a health analyzer."
icon_state = "brute"
item_state = "firstaid-brute"
med_bot_skin = "brute"
New()
..()
if(empty) return
icon_state = pick("brute","brute2")
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/reagent_containers/food/pill/patch/styptic(src)
new /obj/item/healthanalyzer(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/stack/medical/bruise_pack(src)
return
/obj/item/storage/firstaid/brute/empty
empty = 1
/obj/item/storage/firstaid/adv
name = "advanced first-aid kit"
desc = "Contains advanced medical treatments."
icon_state = "advfirstaid"
item_state = "firstaid-advanced"
med_bot_skin = "adv"
/obj/item/storage/firstaid/adv/New()
..()
if(empty)
return
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/bruise_pack/advanced(src)
new /obj/item/stack/medical/bruise_pack/advanced(src)
new /obj/item/stack/medical/ointment/advanced(src)
new /obj/item/stack/medical/ointment/advanced(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/healthanalyzer(src)
/obj/item/storage/firstaid/adv/empty
empty = 1
/obj/item/storage/firstaid/machine
name = "machine repair kit"
desc = "A kit that contains supplies to repair IPCs on the go."
icon_state = "machinefirstaid"
item_state = "firstaid-machine"
med_bot_skin = "machine"
/obj/item/storage/firstaid/machine/New()
..()
if(empty)
return
new /obj/item/weldingtool(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/reagent_containers/food/drinks/oilcan/full(src)
new /obj/item/robotanalyzer(src)
/obj/item/storage/firstaid/machine/empty
empty = 1
/obj/item/storage/firstaid/tactical
name = "first-aid kit"
icon_state = "bezerk"
desc = "I hope you've got insurance."
max_w_class = WEIGHT_CLASS_NORMAL
treatment_oxy = "perfluorodecalin"
treatment_brute = "bicaridine"
treatment_fire = "kelotane"
treatment_tox = "charcoal"
req_one_access =list(ACCESS_SYNDICATE)
med_bot_skin = "bezerk"
syndicate_aligned = TRUE
/obj/item/storage/firstaid/tactical/New()
..()
if(empty) return
new /obj/item/reagent_containers/hypospray/combat(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src) // Because you ain't got no time to look at what damage dey taking yo
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/defibrillator/compact/combat/loaded(src)
new /obj/item/clothing/glasses/hud/health/night(src)
return
/obj/item/storage/firstaid/tactical/empty
empty =1
/obj/item/storage/firstaid/surgery
name = "field surgery kit"
icon_state = "duffel-med"
desc = "A kit for surgery in the field."
max_w_class = WEIGHT_CLASS_BULKY
max_combined_w_class = 21
storage_slots = 10
can_hold = list(/obj/item/roller,/obj/item/bonesetter,/obj/item/bonegel, /obj/item/scalpel, /obj/item/hemostat,
/obj/item/cautery, /obj/item/retractor, /obj/item/FixOVein, /obj/item/surgicaldrill, /obj/item/circular_saw)
/obj/item/storage/firstaid/surgery/New()
..()
new /obj/item/roller(src)
new /obj/item/bonesetter(src)
new /obj/item/bonegel(src)
new /obj/item/scalpel(src)
new /obj/item/hemostat(src)
new /obj/item/cautery(src)
new /obj/item/retractor(src)
new /obj/item/FixOVein(src)
new /obj/item/surgicaldrill(src)
new /obj/item/circular_saw(src)
/*
* Pill Bottles
*/
/obj/item/storage/pill_bottle
name = "pill bottle"
desc = "It's an airtight container for storing medication."
icon_state = "pill_canister"
icon = 'icons/obj/chemical.dmi'
item_state = "contsolid"
w_class = WEIGHT_CLASS_SMALL
can_hold = list(/obj/item/reagent_containers/food/pill)
cant_hold = list(/obj/item/reagent_containers/food/pill/patch)
allow_quick_gather = TRUE
use_to_pickup = TRUE
storage_slots = 50
max_combined_w_class = 50
display_contents_with_number = TRUE
var/base_name = ""
var/label_text = ""
var/applying_meds = FALSE //To Prevent spam clicking and generating runtimes from apply a deleting pill multiple times.
var/rapid_intake_message = "unscrews the cap on the pill bottle and begins dumping the entire contents down their throat!"
var/rapid_post_instake_message = "downs the entire bottle of pills in one go!"
var/allow_wrap = TRUE
var/wrapper_color = null
/obj/item/storage/pill_bottle/New()
..()
base_name = name
if(allow_wrap)
apply_wrap()
/obj/item/storage/pill_bottle/proc/apply_wrap()
if(wrapper_color)
overlays.Cut()
var/image/I = image(icon, "pillbottle_wrap")
I.color = wrapper_color
overlays += I
/obj/item/storage/pill_bottle/attack(mob/M, mob/user)
if(iscarbon(M) && contents.len)
if(applying_meds)
to_chat(user, "<span class='warning'>You are already applying meds.</span>")
return
applying_meds = TRUE
for(var/obj/item/reagent_containers/food/pill/P in contents)
if(P.attack(M, user))
applying_meds = FALSE
else
applying_meds = FALSE
break
else
return ..()
/obj/item/storage/pill_bottle/ert
wrapper_color = COLOR_MAROON
/obj/item/storage/pill_bottle/ert/New()
..()
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
new /obj/item/reagent_containers/food/pill/charcoal(src)
/obj/item/storage/pill_bottle/MouseDrop(obj/over_object as obj) // Best utilized if you're a cantankerous doctor with a Vicodin habit.
if(iscarbon(over_object))
var/mob/living/carbon/C = over_object
if(loc == C && src == C.get_active_hand())
if(!contents.len)
to_chat(C, "<span class='notice'>There is nothing in [src]!</span>")
return
C.visible_message("<span class='danger'>[C] [rapid_intake_message]</span>")
if(do_mob(C, C, 100)) // 10 seconds
for(var/obj/item/reagent_containers/food/pill/P in contents)
P.attack(C, C)
C.visible_message("<span class='danger'>[C] [rapid_post_instake_message]</span>")
return
return ..()
/obj/item/storage/pill_bottle/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/pen) || istype(I, /obj/item/flashlight/pen))
var/tmp_label = sanitize(input(user, "Enter a label for [name]","Label",label_text))
if(length(tmp_label) > MAX_NAME_LEN)
to_chat(user, "<span class='warning'>The label can be at most [MAX_NAME_LEN] characters long.</span>")
else
to_chat(user, "<span class='notice'>You set the label to \"[tmp_label]\".</span>")
label_text = tmp_label
update_name_label()
else
return ..()
/obj/item/storage/pill_bottle/proc/update_name_label()
if(label_text == "")
name = base_name
else
name = "[base_name] ([label_text])"
/obj/item/storage/pill_bottle/patch_pack
name = "Patch Pack"
desc = "It's a container for storing medical patches."
icon_state = "patch_pack"
can_hold = list(/obj/item/reagent_containers/food/pill/patch)
cant_hold = list()
rapid_intake_message = "flips the lid of the Patch Pack open and begins rapidly stamping patches on themselves!"
rapid_post_instake_message = "stamps the entire contents of the Patch Pack all over their entire body!"
allow_wrap = FALSE
/obj/item/storage/pill_bottle/charcoal
name = "Pill bottle (Charcoal)"
desc = "Contains pills used to counter toxins."
wrapper_color = COLOR_GREEN
New()
..()
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
new /obj/item/reagent_containers/food/pill/charcoal( src )
/obj/item/storage/pill_bottle/painkillers
name = "Pill Bottle (Salicylic Acid)"
desc = "Contains various pills for minor pain relief."
wrapper_color = COLOR_RED
/obj/item/storage/pill_bottle/painkillers/New()
..()
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
/obj/item/storage/pill_bottle/fakedeath
allow_wrap = FALSE
/obj/item/storage/pill_bottle/fakedeath/New()
..()
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
+137 -137
View File
@@ -1,137 +1,137 @@
/obj/item/storage/lockbox
name = "lockbox"
desc = "A locked box."
icon_state = "lockbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
storage_slots = 4
req_access = list(ACCESS_ARMORY)
var/locked = 1
var/broken = 0
var/icon_locked = "lockbox+l"
var/icon_closed = "lockbox"
var/icon_broken = "lockbox+b"
/obj/item/storage/lockbox/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))
if(broken)
to_chat(user, "<span class='warning'>It appears to be broken.</span>")
return
if(check_access(W))
locked = !locked
if(locked)
icon_state = icon_locked
to_chat(user, "<span class='warning'>You lock \the [src]!</span>")
if(user.s_active)
user.s_active.close(user)
return
else
icon_state = icon_closed
to_chat(user, "<span class='warning'>You unlock \the [src]!</span>")
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
return
else
to_chat(user, "<span class='warning'>Access denied.</span>")
return
else if((istype(W, /obj/item/card/emag) || (istype(W, /obj/item/melee/energy/blade)) && !broken))
emag_act(user)
return
if(!locked)
..()
else
to_chat(user, "<span class='warning'>It's locked!</span>")
return
/obj/item/storage/lockbox/show_to(mob/user as mob)
if(locked)
to_chat(user, "<span class='warning'>It's locked!</span>")
else
..()
return
/obj/item/storage/lockbox/can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(!locked)
return ..()
if(!stop_messages)
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
return 0
/obj/item/storage/lockbox/emag_act(user as mob)
if(!broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = icon_broken
to_chat(user, "<span class='notice'>You unlock \the [src].</span>")
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
return
/obj/item/storage/lockbox/hear_talk(mob/living/M as mob, list/message_pieces)
/obj/item/storage/lockbox/hear_message(mob/living/M as mob, msg)
/obj/item/storage/lockbox/mindshield
name = "Lockbox (Mindshield Implants)"
req_access = list(ACCESS_SECURITY)
/obj/item/storage/lockbox/mindshield/New()
..()
new /obj/item/implantcase/mindshield(src)
new /obj/item/implantcase/mindshield(src)
new /obj/item/implantcase/mindshield(src)
new /obj/item/implanter/mindshield(src)
/obj/item/storage/lockbox/clusterbang
name = "lockbox (clusterbang)"
desc = "You have a bad feeling about opening this."
req_access = list(ACCESS_SECURITY)
/obj/item/storage/lockbox/clusterbang/New()
..()
new /obj/item/grenade/clusterbuster(src)
/obj/item/storage/lockbox/medal
name = "medal box"
desc = "A locked box used to store medals of honor."
icon_state = "medalbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 20
storage_slots = 12
req_access = list(ACCESS_CAPTAIN)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
icon_broken = "medalbox+b"
/obj/item/storage/lockbox/medal/New()
..()
new /obj/item/clothing/accessory/medal/gold/captain(src)
new /obj/item/clothing/accessory/medal/silver/leadership(src)
new /obj/item/clothing/accessory/medal/silver/valor(src)
new /obj/item/clothing/accessory/medal/heart(src)
/obj/item/storage/lockbox/t4
name = "lockbox (T4)"
desc = "Contains three T4 breaching charges."
req_access = list(ACCESS_CENT_SPECOPS)
/obj/item/storage/lockbox/t4/New()
..()
for(var/i in 0 to 2)
new /obj/item/grenade/plastic/x4/thermite(src)
/obj/item/storage/lockbox/research
/obj/item/storage/lockbox/research/deconstruct(disassembled = TRUE) // Get wrecked, Science nerds
qdel(src)
/obj/item/storage/lockbox/research/large
name = "Large lockbox"
desc = "A large lockbox"
max_w_class = WEIGHT_CLASS_BULKY
max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
storage_slots = 1
/obj/item/storage/lockbox
name = "lockbox"
desc = "A locked box."
icon_state = "lockbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
storage_slots = 4
req_access = list(ACCESS_ARMORY)
var/locked = 1
var/broken = 0
var/icon_locked = "lockbox+l"
var/icon_closed = "lockbox"
var/icon_broken = "lockbox+b"
/obj/item/storage/lockbox/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))
if(broken)
to_chat(user, "<span class='warning'>It appears to be broken.</span>")
return
if(check_access(W))
locked = !locked
if(locked)
icon_state = icon_locked
to_chat(user, "<span class='warning'>You lock \the [src]!</span>")
if(user.s_active)
user.s_active.close(user)
return
else
icon_state = icon_closed
to_chat(user, "<span class='warning'>You unlock \the [src]!</span>")
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
return
else
to_chat(user, "<span class='warning'>Access denied.</span>")
return
else if((istype(W, /obj/item/card/emag) || (istype(W, /obj/item/melee/energy/blade)) && !broken))
emag_act(user)
return
if(!locked)
..()
else
to_chat(user, "<span class='warning'>It's locked!</span>")
return
/obj/item/storage/lockbox/show_to(mob/user as mob)
if(locked)
to_chat(user, "<span class='warning'>It's locked!</span>")
else
..()
return
/obj/item/storage/lockbox/can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(!locked)
return ..()
if(!stop_messages)
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
return 0
/obj/item/storage/lockbox/emag_act(user as mob)
if(!broken)
broken = 1
locked = 0
desc = "It appears to be broken."
icon_state = icon_broken
to_chat(user, "<span class='notice'>You unlock \the [src].</span>")
origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D.
return
/obj/item/storage/lockbox/hear_talk(mob/living/M as mob, list/message_pieces)
/obj/item/storage/lockbox/hear_message(mob/living/M as mob, msg)
/obj/item/storage/lockbox/mindshield
name = "Lockbox (Mindshield Implants)"
req_access = list(ACCESS_SECURITY)
/obj/item/storage/lockbox/mindshield/New()
..()
new /obj/item/implantcase/mindshield(src)
new /obj/item/implantcase/mindshield(src)
new /obj/item/implantcase/mindshield(src)
new /obj/item/implanter/mindshield(src)
/obj/item/storage/lockbox/clusterbang
name = "lockbox (clusterbang)"
desc = "You have a bad feeling about opening this."
req_access = list(ACCESS_SECURITY)
/obj/item/storage/lockbox/clusterbang/New()
..()
new /obj/item/grenade/clusterbuster(src)
/obj/item/storage/lockbox/medal
name = "medal box"
desc = "A locked box used to store medals of honor."
icon_state = "medalbox+l"
item_state = "syringe_kit"
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 20
storage_slots = 12
req_access = list(ACCESS_CAPTAIN)
icon_locked = "medalbox+l"
icon_closed = "medalbox"
icon_broken = "medalbox+b"
/obj/item/storage/lockbox/medal/New()
..()
new /obj/item/clothing/accessory/medal/gold/captain(src)
new /obj/item/clothing/accessory/medal/silver/leadership(src)
new /obj/item/clothing/accessory/medal/silver/valor(src)
new /obj/item/clothing/accessory/medal/heart(src)
/obj/item/storage/lockbox/t4
name = "lockbox (T4)"
desc = "Contains three T4 breaching charges."
req_access = list(ACCESS_CENT_SPECOPS)
/obj/item/storage/lockbox/t4/New()
..()
for(var/i in 0 to 2)
new /obj/item/grenade/plastic/x4/thermite(src)
/obj/item/storage/lockbox/research
/obj/item/storage/lockbox/research/deconstruct(disassembled = TRUE) // Get wrecked, Science nerds
qdel(src)
/obj/item/storage/lockbox/research/large
name = "Large lockbox"
desc = "A large lockbox"
max_w_class = WEIGHT_CLASS_BULKY
max_combined_w_class = 4 //The sum of the w_classes of all the items in this storage item.
storage_slots = 1
+250 -250
View File
@@ -1,250 +1,250 @@
/*
* Absorbs /obj/item/secstorage.
* Reimplements it only slightly to use existing storage functionality.
*
* Contains:
* Secure Briefcase
* Wall Safe
*/
// -----------------------------
// Generic Item
// -----------------------------
/obj/item/storage/secure
name = "secstorage"
var/icon_locking = "secureb"
var/icon_sparking = "securespark"
var/icon_opened = "secure0"
var/locked = 1
var/code = ""
var/l_code = null
var/l_set = 0
var/l_setshort = 0
var/l_hacking = 0
var/emagged = 0
var/open = 0
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 14
/obj/item/storage/secure/examine(mob/user)
. = ..()
if(in_range(user, src))
. += "The service panel is [open ? "open" : "closed"]."
/obj/item/storage/secure/attackby(obj/item/W as obj, mob/user as mob, params)
if(locked)
if((istype(W, /obj/item/melee/energy/blade)) && (!emagged))
emag_act(user, W)
if(istype(W, /obj/item/screwdriver))
if(do_after(user, 20 * W.toolspeed, target = src))
open = !open
user.show_message("<span class='notice'>You [open ? "open" : "close"] the service panel.</span>", 1)
return
if((istype(W, /obj/item/multitool)) && (open == 1) && (!l_hacking))
user.show_message("<span class='danger'>Now attempting to reset internal memory, please hold.</span>", 1)
l_hacking = 1
if(do_after(usr, 100 * W.toolspeed, target = src))
if(prob(40))
l_setshort = 1
l_set = 0
user.show_message("<span class='danger'>Internal memory reset. Please give it a few seconds to reinitialize.</span>", 1)
sleep(80)
l_setshort = 0
l_hacking = 0
else
user.show_message("<span class='danger'>Unable to reset internal memory.</span>", 1)
l_hacking = 0
else
l_hacking = 0
return
//At this point you have exhausted all the special things to do when locked
// ... but it's still locked.
return
return ..()
/obj/item/storage/secure/emag_act(user as mob, weapon as obj)
if(!emagged)
emagged = 1
overlays += image('icons/obj/storage.dmi', icon_sparking)
sleep(6)
overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
locked = 0
if(istype(weapon, /obj/item/melee/energy/blade))
do_sparks(5, 0, loc)
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(loc, "sparks", 50, 1)
to_chat(user, "You slice through the lock on [src].")
else
to_chat(user, "You short out the lock on [src].")
return
/obj/item/storage/secure/AltClick(mob/user)
if(!try_to_open())
return FALSE
return ..()
/obj/item/storage/secure/MouseDrop(over_object, src_location, over_location)
if(!try_to_open())
return FALSE
return ..()
/obj/item/storage/secure/proc/try_to_open()
if(locked)
add_fingerprint(usr)
to_chat(usr, "<span class='warning'>It's locked!</span>")
return FALSE
/obj/item/storage/secure/attack_self(mob/user as mob)
user.set_machine(src)
var/dat = text("<TT><B>[]</B><BR>\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED"))
var/message = "Code"
if((l_set == 0) && (!emagged) && (!l_setshort))
dat += text("<p>\n<b>5-DIGIT PASSCODE NOT SET.<br>ENTER NEW PASSCODE.</b>")
if(emagged)
dat += text("<p>\n<font color=red><b>LOCKING SYSTEM ERROR - 1701</b></font>")
if(l_setshort)
dat += text("<p>\n<font color=red><b>ALERT: MEMORY SYSTEM ERROR - 6040 201</b></font>")
message = text("[]", code)
if(!locked)
message = "*****"
dat += {"<HR>\n>[message]<BR>\n
<A href='?src=[UID()];type=1'>1</A>-
<A href='?src=[UID()];type=2'>2</A>-
<A href='?src=[UID()];type=3'>3</A><BR>\n
<A href='?src=[UID()];type=4'>4</A>-
<A href='?src=[UID()];type=5'>5</A>-
<A href='?src=[UID()];type=6'>6</A><BR>\n
<A href='?src=[UID()];type=7'>7</A>-
<A href='?src=[UID()];type=8'>8</A>-
<A href='?src=[UID()];type=9'>9</A><BR>\n
<A href='?src=[UID()];type=R'>R</A>-
<A href='?src=[UID()];type=0'>0</A>-
<A href='?src=[UID()];type=E'>E</A><BR>\n</TT>"}
user << browse(dat, "window=caselock;size=300x280")
/obj/item/storage/secure/Topic(href, href_list)
..()
if(usr.incapacitated() || (get_dist(src, usr) > 1))
return
if(href_list["type"])
if(href_list["type"] == "E")
if((l_set == 0) && (length(code) == 5) && (!l_setshort) && (code != "ERROR"))
l_code = code
l_set = 1
else if((code == l_code) && (emagged == 0) && (l_set == 1))
locked = 0
overlays = null
overlays += image('icons/obj/storage.dmi', icon_opened)
code = null
else
code = "ERROR"
else
if((href_list["type"] == "R") && (emagged == 0) && (!l_setshort))
locked = 1
overlays = null
code = null
close(usr)
else
code += text("[]", href_list["type"])
if(length(code) > 5)
code = "ERROR"
add_fingerprint(usr)
for(var/mob/M in viewers(1, loc))
if((M.client && M.machine == src))
attack_self(M)
return
return
/obj/item/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(!locked)
return ..()
if(!stop_messages)
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
return 0
/obj/item/storage/secure/hear_talk(mob/living/M as mob, list/message_pieces)
return
/obj/item/storage/secure/hear_message(mob/living/M as mob, msg)
return
// -----------------------------
// Secure Briefcase
// -----------------------------
/obj/item/storage/secure/briefcase
name = "secure briefcase"
desc = "A large briefcase with a digital locking system."
icon = 'icons/obj/storage.dmi'
icon_state = "secure"
item_state = "sec-case"
flags = CONDUCT
hitsound = "swing_hit"
force = 8
throw_speed = 2
throw_range = 4
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
/obj/item/storage/secure/briefcase/New()
..()
handle_item_insertion(new /obj/item/paper, 1)
handle_item_insertion(new /obj/item/pen, 1)
/obj/item/storage/secure/briefcase/attack_hand(mob/user as mob)
if((loc == user) && (locked == 1))
to_chat(usr, "<span class='warning'>[src] is locked and cannot be opened!</span>")
else if((loc == user) && !locked)
playsound(loc, "rustle", 50, 1, -5)
if(user.s_active)
user.s_active.close(user) //Close and re-open
show_to(user)
else
..()
for(var/mob/M in range(1))
if(M.s_active == src)
close(M)
orient2hud(user)
add_fingerprint(user)
return
//Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
/obj/item/storage/secure/briefcase/syndie
force = 15
/obj/item/storage/secure/briefcase/syndie/New()
..()
for(var/i = 0, i < storage_slots - 2, i++)
handle_item_insertion(new /obj/item/stack/spacecash/c1000, 1)
// -----------------------------
// Secure Safe
// -----------------------------
/obj/item/storage/secure/safe
name = "secure safe"
icon = 'icons/obj/storage.dmi'
icon_state = "safe"
icon_opened = "safe0"
icon_locking = "safeb"
icon_sparking = "safespark"
force = 8
w_class = WEIGHT_CLASS_HUGE
max_w_class = 8
anchored = 1
density = 0
cant_hold = list(/obj/item/storage/secure/briefcase)
/obj/item/storage/secure/safe/New()
..()
handle_item_insertion(new /obj/item/paper, 1)
handle_item_insertion(new /obj/item/pen, 1)
/obj/item/storage/secure/safe/attack_hand(mob/user as mob)
return attack_self(user)
/*
* Absorbs /obj/item/secstorage.
* Reimplements it only slightly to use existing storage functionality.
*
* Contains:
* Secure Briefcase
* Wall Safe
*/
// -----------------------------
// Generic Item
// -----------------------------
/obj/item/storage/secure
name = "secstorage"
var/icon_locking = "secureb"
var/icon_sparking = "securespark"
var/icon_opened = "secure0"
var/locked = 1
var/code = ""
var/l_code = null
var/l_set = 0
var/l_setshort = 0
var/l_hacking = 0
var/emagged = 0
var/open = 0
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 14
/obj/item/storage/secure/examine(mob/user)
. = ..()
if(in_range(user, src))
. += "The service panel is [open ? "open" : "closed"]."
/obj/item/storage/secure/attackby(obj/item/W as obj, mob/user as mob, params)
if(locked)
if((istype(W, /obj/item/melee/energy/blade)) && (!emagged))
emag_act(user, W)
if(istype(W, /obj/item/screwdriver))
if(do_after(user, 20 * W.toolspeed, target = src))
open = !open
user.show_message("<span class='notice'>You [open ? "open" : "close"] the service panel.</span>", 1)
return
if((istype(W, /obj/item/multitool)) && (open == 1) && (!l_hacking))
user.show_message("<span class='danger'>Now attempting to reset internal memory, please hold.</span>", 1)
l_hacking = 1
if(do_after(usr, 100 * W.toolspeed, target = src))
if(prob(40))
l_setshort = 1
l_set = 0
user.show_message("<span class='danger'>Internal memory reset. Please give it a few seconds to reinitialize.</span>", 1)
sleep(80)
l_setshort = 0
l_hacking = 0
else
user.show_message("<span class='danger'>Unable to reset internal memory.</span>", 1)
l_hacking = 0
else
l_hacking = 0
return
//At this point you have exhausted all the special things to do when locked
// ... but it's still locked.
return
return ..()
/obj/item/storage/secure/emag_act(user as mob, weapon as obj)
if(!emagged)
emagged = 1
overlays += image('icons/obj/storage.dmi', icon_sparking)
sleep(6)
overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
locked = 0
if(istype(weapon, /obj/item/melee/energy/blade))
do_sparks(5, 0, loc)
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(loc, "sparks", 50, 1)
to_chat(user, "You slice through the lock on [src].")
else
to_chat(user, "You short out the lock on [src].")
return
/obj/item/storage/secure/AltClick(mob/user)
if(!try_to_open())
return FALSE
return ..()
/obj/item/storage/secure/MouseDrop(over_object, src_location, over_location)
if(!try_to_open())
return FALSE
return ..()
/obj/item/storage/secure/proc/try_to_open()
if(locked)
add_fingerprint(usr)
to_chat(usr, "<span class='warning'>It's locked!</span>")
return FALSE
/obj/item/storage/secure/attack_self(mob/user as mob)
user.set_machine(src)
var/dat = text("<TT><B>[]</B><BR>\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED"))
var/message = "Code"
if((l_set == 0) && (!emagged) && (!l_setshort))
dat += text("<p>\n<b>5-DIGIT PASSCODE NOT SET.<br>ENTER NEW PASSCODE.</b>")
if(emagged)
dat += text("<p>\n<font color=red><b>LOCKING SYSTEM ERROR - 1701</b></font>")
if(l_setshort)
dat += text("<p>\n<font color=red><b>ALERT: MEMORY SYSTEM ERROR - 6040 201</b></font>")
message = text("[]", code)
if(!locked)
message = "*****"
dat += {"<HR>\n>[message]<BR>\n
<A href='?src=[UID()];type=1'>1</A>-
<A href='?src=[UID()];type=2'>2</A>-
<A href='?src=[UID()];type=3'>3</A><BR>\n
<A href='?src=[UID()];type=4'>4</A>-
<A href='?src=[UID()];type=5'>5</A>-
<A href='?src=[UID()];type=6'>6</A><BR>\n
<A href='?src=[UID()];type=7'>7</A>-
<A href='?src=[UID()];type=8'>8</A>-
<A href='?src=[UID()];type=9'>9</A><BR>\n
<A href='?src=[UID()];type=R'>R</A>-
<A href='?src=[UID()];type=0'>0</A>-
<A href='?src=[UID()];type=E'>E</A><BR>\n</TT>"}
user << browse(dat, "window=caselock;size=300x280")
/obj/item/storage/secure/Topic(href, href_list)
..()
if(usr.incapacitated() || (get_dist(src, usr) > 1))
return
if(href_list["type"])
if(href_list["type"] == "E")
if((l_set == 0) && (length(code) == 5) && (!l_setshort) && (code != "ERROR"))
l_code = code
l_set = 1
else if((code == l_code) && (emagged == 0) && (l_set == 1))
locked = 0
overlays = null
overlays += image('icons/obj/storage.dmi', icon_opened)
code = null
else
code = "ERROR"
else
if((href_list["type"] == "R") && (emagged == 0) && (!l_setshort))
locked = 1
overlays = null
code = null
close(usr)
else
code += text("[]", href_list["type"])
if(length(code) > 5)
code = "ERROR"
add_fingerprint(usr)
for(var/mob/M in viewers(1, loc))
if((M.client && M.machine == src))
attack_self(M)
return
return
/obj/item/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(!locked)
return ..()
if(!stop_messages)
to_chat(usr, "<span class='notice'>[src] is locked!</span>")
return 0
/obj/item/storage/secure/hear_talk(mob/living/M as mob, list/message_pieces)
return
/obj/item/storage/secure/hear_message(mob/living/M as mob, msg)
return
// -----------------------------
// Secure Briefcase
// -----------------------------
/obj/item/storage/secure/briefcase
name = "secure briefcase"
desc = "A large briefcase with a digital locking system."
icon = 'icons/obj/storage.dmi'
icon_state = "secure"
item_state = "sec-case"
flags = CONDUCT
hitsound = "swing_hit"
force = 8
throw_speed = 2
throw_range = 4
w_class = WEIGHT_CLASS_BULKY
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
/obj/item/storage/secure/briefcase/New()
..()
handle_item_insertion(new /obj/item/paper, 1)
handle_item_insertion(new /obj/item/pen, 1)
/obj/item/storage/secure/briefcase/attack_hand(mob/user as mob)
if((loc == user) && (locked == 1))
to_chat(usr, "<span class='warning'>[src] is locked and cannot be opened!</span>")
else if((loc == user) && !locked)
playsound(loc, "rustle", 50, 1, -5)
if(user.s_active)
user.s_active.close(user) //Close and re-open
show_to(user)
else
..()
for(var/mob/M in range(1))
if(M.s_active == src)
close(M)
orient2hud(user)
add_fingerprint(user)
return
//Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
/obj/item/storage/secure/briefcase/syndie
force = 15
/obj/item/storage/secure/briefcase/syndie/New()
..()
for(var/i = 0, i < storage_slots - 2, i++)
handle_item_insertion(new /obj/item/stack/spacecash/c1000, 1)
// -----------------------------
// Secure Safe
// -----------------------------
/obj/item/storage/secure/safe
name = "secure safe"
icon = 'icons/obj/storage.dmi'
icon_state = "safe"
icon_opened = "safe0"
icon_locking = "safeb"
icon_sparking = "safespark"
force = 8
w_class = WEIGHT_CLASS_HUGE
max_w_class = 8
anchored = 1
density = 0
cant_hold = list(/obj/item/storage/secure/briefcase)
/obj/item/storage/secure/safe/New()
..()
handle_item_insertion(new /obj/item/paper, 1)
handle_item_insertion(new /obj/item/pen, 1)
/obj/item/storage/secure/safe/attack_hand(mob/user as mob)
return attack_self(user)
File diff suppressed because it is too large Load Diff
+137 -137
View File
@@ -1,137 +1,137 @@
/obj/item/storage/toolbox
name = "toolbox"
desc = "Danger. Very robust."
icon = 'icons/obj/storage.dmi'
icon_state = "red"
item_state = "toolbox_red"
flags = CONDUCT
force = 10.0
throwforce = 10.0
throw_speed = 2
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
materials = list(MAT_METAL = 500)
origin_tech = "combat=1;engineering=1"
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
icon_state = "red"
item_state = "toolbox_red"
/obj/item/storage/toolbox/emergency/New()
..()
new /obj/item/crowbar/red(src)
new /obj/item/weldingtool/mini(src)
new /obj/item/extinguisher/mini(src)
if(prob(50))
new /obj/item/flashlight(src)
else
new /obj/item/flashlight/flare(src)
new /obj/item/radio(src)
/obj/item/storage/toolbox/emergency/old
name = "rusty red toolbox"
icon_state = "toolbox_red_old"
/obj/item/storage/toolbox/mechanical
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
/obj/item/storage/toolbox/mechanical/New()
..()
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/analyzer(src)
new /obj/item/wirecutters(src)
/obj/item/storage/toolbox/mechanical/greytide
flags = NODROP
/obj/item/storage/toolbox/mechanical/old
name = "rusty blue toolbox"
icon_state = "toolbox_blue_old"
/obj/item/storage/toolbox/electrical
name = "electrical toolbox"
icon_state = "yellow"
item_state = "toolbox_yellow"
/obj/item/storage/toolbox/electrical/New()
..()
var/pickedcolor = pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE)
new /obj/item/screwdriver(src)
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
if(prob(5))
new /obj/item/clothing/gloves/color/yellow(src)
else
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
/obj/item/storage/toolbox/syndicate
name = "suspicious looking toolbox"
icon_state = "syndicate"
item_state = "toolbox_syndi"
origin_tech = "combat=2;syndicate=1;engineering=2"
silent = 1
force = 15.0
throwforce = 18.0
/obj/item/storage/toolbox/syndicate/New()
..()
new /obj/item/screwdriver(src, "red")
new /obj/item/wrench(src)
new /obj/item/weldingtool/largetank(src)
new /obj/item/crowbar/red(src)
new /obj/item/wirecutters(src, "red")
new /obj/item/multitool(src)
new /obj/item/clothing/gloves/combat(src)
/obj/item/storage/toolbox/fakesyndi
name = "suspicous looking toolbox"
icon_state = "syndicate"
item_state = "toolbox_syndi"
desc = "Danger. Very Robust. The paint is still wet."
/obj/item/storage/toolbox/drone
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
/obj/item/storage/toolbox/drone/New()
..()
var/pickedcolor = pick(pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE))
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/wirecutters(src)
new /obj/item/multitool(src)
/obj/item/storage/toolbox/brass
name = "brass box"
desc = "A huge brass box with several indentations in its surface."
icon_state = "brassbox"
item_state = null
resistance_flags = FIRE_PROOF | ACID_PROOF
w_class = WEIGHT_CLASS_HUGE
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 28
storage_slots = 28
attack_verb = list("robusted", "crushed", "smashed")
/obj/item/storage/toolbox/brass/prefilled/New()
..()
new /obj/item/screwdriver/brass(src)
new /obj/item/wirecutters/brass(src)
new /obj/item/wrench/brass(src)
new /obj/item/crowbar/brass(src)
new /obj/item/weldingtool/experimental/brass(src)
/obj/item/storage/toolbox
name = "toolbox"
desc = "Danger. Very robust."
icon = 'icons/obj/storage.dmi'
icon_state = "red"
item_state = "toolbox_red"
flags = CONDUCT
force = 10.0
throwforce = 10.0
throw_speed = 2
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
materials = list(MAT_METAL = 500)
origin_tech = "combat=1;engineering=1"
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
icon_state = "red"
item_state = "toolbox_red"
/obj/item/storage/toolbox/emergency/New()
..()
new /obj/item/crowbar/red(src)
new /obj/item/weldingtool/mini(src)
new /obj/item/extinguisher/mini(src)
if(prob(50))
new /obj/item/flashlight(src)
else
new /obj/item/flashlight/flare(src)
new /obj/item/radio(src)
/obj/item/storage/toolbox/emergency/old
name = "rusty red toolbox"
icon_state = "toolbox_red_old"
/obj/item/storage/toolbox/mechanical
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
/obj/item/storage/toolbox/mechanical/New()
..()
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/analyzer(src)
new /obj/item/wirecutters(src)
/obj/item/storage/toolbox/mechanical/greytide
flags = NODROP
/obj/item/storage/toolbox/mechanical/old
name = "rusty blue toolbox"
icon_state = "toolbox_blue_old"
/obj/item/storage/toolbox/electrical
name = "electrical toolbox"
icon_state = "yellow"
item_state = "toolbox_yellow"
/obj/item/storage/toolbox/electrical/New()
..()
var/pickedcolor = pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE)
new /obj/item/screwdriver(src)
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
if(prob(5))
new /obj/item/clothing/gloves/color/yellow(src)
else
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
/obj/item/storage/toolbox/syndicate
name = "suspicious looking toolbox"
icon_state = "syndicate"
item_state = "toolbox_syndi"
origin_tech = "combat=2;syndicate=1;engineering=2"
silent = 1
force = 15.0
throwforce = 18.0
/obj/item/storage/toolbox/syndicate/New()
..()
new /obj/item/screwdriver(src, "red")
new /obj/item/wrench(src)
new /obj/item/weldingtool/largetank(src)
new /obj/item/crowbar/red(src)
new /obj/item/wirecutters(src, "red")
new /obj/item/multitool(src)
new /obj/item/clothing/gloves/combat(src)
/obj/item/storage/toolbox/fakesyndi
name = "suspicous looking toolbox"
icon_state = "syndicate"
item_state = "toolbox_syndi"
desc = "Danger. Very Robust. The paint is still wet."
/obj/item/storage/toolbox/drone
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
/obj/item/storage/toolbox/drone/New()
..()
var/pickedcolor = pick(pick(COLOR_RED, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_PINK, COLOR_ORANGE, COLOR_CYAN, COLOR_WHITE))
new /obj/item/screwdriver(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool(src)
new /obj/item/crowbar(src)
new /obj/item/stack/cable_coil(src, 30, paramcolor = pickedcolor)
new /obj/item/wirecutters(src)
new /obj/item/multitool(src)
/obj/item/storage/toolbox/brass
name = "brass box"
desc = "A huge brass box with several indentations in its surface."
icon_state = "brassbox"
item_state = null
resistance_flags = FIRE_PROOF | ACID_PROOF
w_class = WEIGHT_CLASS_HUGE
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 28
storage_slots = 28
attack_verb = list("robusted", "crushed", "smashed")
/obj/item/storage/toolbox/brass/prefilled/New()
..()
new /obj/item/screwdriver/brass(src)
new /obj/item/wirecutters/brass(src)
new /obj/item/wrench/brass(src)
new /obj/item/crowbar/brass(src)
new /obj/item/weldingtool/experimental/brass(src)