mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-25 13:06:38 +01:00
@@ -15,4 +15,10 @@
|
||||
/obj/effect/decal/spraystill
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 50
|
||||
layer = 50
|
||||
|
||||
//Used by spraybottles.
|
||||
/obj/effect/decal/chempuff
|
||||
name = "chemicals"
|
||||
icon = 'icons/obj/chempuff.dmi'
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
@@ -1030,19 +1030,10 @@ steam.start() -- spawns the effect
|
||||
|
||||
|
||||
proc/update_nearby_tiles(need_rebuild)
|
||||
if(!air_master) return 0
|
||||
if(!air_master)
|
||||
return 0
|
||||
|
||||
var/turf/simulated/source = get_turf(src)
|
||||
var/turf/simulated/north = get_step(source,NORTH)
|
||||
var/turf/simulated/south = get_step(source,SOUTH)
|
||||
var/turf/simulated/east = get_step(source,EAST)
|
||||
var/turf/simulated/west = get_step(source,WEST)
|
||||
|
||||
if(istype(source)) air_master.tiles_to_update |= source
|
||||
if(istype(north)) air_master.tiles_to_update |= north
|
||||
if(istype(south)) air_master.tiles_to_update |= south
|
||||
if(istype(east)) air_master.tiles_to_update |= east
|
||||
if(istype(west)) air_master.tiles_to_update |= west
|
||||
air_master.AddTurfToUpdate(get_turf(src))
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -460,11 +460,21 @@
|
||||
if( !(slot_flags & SLOT_HEAD) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_ears)
|
||||
if(H.ears)
|
||||
if(slot_l_ear)
|
||||
if(H.l_ear)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if( (slot_flags & SLOT_TWOEARS) && H.r_ear )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_ear)
|
||||
if(H.r_ear)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_EARS) )
|
||||
return 0
|
||||
if( (slot_flags & SLOT_TWOEARS) && H.l_ear )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_w_uniform)
|
||||
if(H.w_uniform)
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
/obj/item/bodybag/cryobag
|
||||
name = "stasis bag"
|
||||
desc = "A folded, non-reusable bag designed for the preservation of an occupant's brain by stasis."
|
||||
desc = "A folded, non-reusable bag designed to prevent additional damage to an occupant at the cost of genetic damage."
|
||||
icon = 'icons/obj/cryobag.dmi'
|
||||
icon_state = "bodybag_folded"
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag
|
||||
name = "stasis bag"
|
||||
desc = "A non-reusable plastic bag designed for the preservation of an occupant's brain by stasis."
|
||||
desc = "A non-reusable plastic bag designed to prevent additional damage to an occupant at the cost of genetic damage."
|
||||
icon = 'icons/obj/cryobag.dmi'
|
||||
item_path = /obj/item/bodybag/cryobag
|
||||
var/used = 0
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/obj/item/device/megaphone
|
||||
name = "megaphone"
|
||||
desc = "A device used to project your voice. Loudly."
|
||||
icon_state = "megaphone"
|
||||
item_state = "radio"
|
||||
w_class = 1.0
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
|
||||
var/spamcheck = 0
|
||||
var/emagged = 0
|
||||
var/insults = 0
|
||||
var/list/insultmsg = list("FUCK EVERYONE!", "I'M A TATER!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!")
|
||||
|
||||
/obj/item/device/megaphone/attack_self(mob/living/user as mob)
|
||||
if (user.client)
|
||||
if(user.client.prefs.muted & MUTE_IC)
|
||||
src << "\red You cannot speak in IC (muted)."
|
||||
return
|
||||
if(!ishuman(user))
|
||||
user << "\red You don't know how to use this!"
|
||||
return
|
||||
if(user.silent)
|
||||
return
|
||||
if(spamcheck)
|
||||
user << "\red \The [src] needs to recharge!"
|
||||
return
|
||||
|
||||
var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN)
|
||||
if(!message)
|
||||
return
|
||||
|
||||
if ((src.loc == user && usr.stat == 0))
|
||||
if(emagged)
|
||||
if(insults)
|
||||
for(var/mob/O in (viewers(user)))
|
||||
O.show_message("<B>[user]</B> broadcasts, <FONT size=3>\"[pick(insultmsg)]\"</FONT>",2) // 2 stands for hearable message
|
||||
insults--
|
||||
else
|
||||
user << "\red *BZZZZzzzzzt*"
|
||||
else
|
||||
for(var/mob/O in (viewers(user)))
|
||||
O.show_message("<B>[user]</B> broadcasts, <FONT size=3>\"[message]\"</FONT>",2) // 2 stands for hearable message
|
||||
|
||||
spamcheck = 1
|
||||
spawn(20)
|
||||
spamcheck = 0
|
||||
return
|
||||
|
||||
/obj/item/device/megaphone/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/card/emag) && !emagged)
|
||||
user << "\red You overload \the [src]'s voice synthesizer."
|
||||
emagged = 1
|
||||
insults = rand(1, 3)//to prevent dickflooding
|
||||
return
|
||||
return
|
||||
@@ -23,7 +23,7 @@
|
||||
/obj/item/device/radio/headset/receive_range(freq, level)
|
||||
if(ishuman(src.loc))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.ears == src)
|
||||
if(H.l_ear == src || H.r_ear == src)
|
||||
return ..(freq, level)
|
||||
return -1
|
||||
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
if(emagged)
|
||||
if(insults >= 1)
|
||||
playsound(get_turf(src), 'sound/voice/binsult.ogg', 100, 1, vary = 0)//hueheuheuheuheuheuhe
|
||||
user.visible_message("<span class='warning'>[user]'s [name] gurgles, \"FUCK YOUR CUNT YOU SHIT EATING CUNT TILL YOU ARE A MASS EATING SHIT CUNT. EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS TO FUCK UP SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FROM THE DEPTHS OF SHIT\"</span>")
|
||||
user.show_message("<span class='warning'>[user]'s [name] gurgles, \"FUCK YOUR CUNT YOU SHIT EATING CUNT TILL YOU ARE A MASS EATING SHIT CUNT. EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS TO FUCK UP SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FROM THE DEPTHS OF SHIT\"</span>",2) //It's a hearable message silly!
|
||||
insults--
|
||||
else
|
||||
user << "\red *BZZZZcuntZZZZT*"
|
||||
else
|
||||
playsound(get_turf(src), 'sound/voice/halt.ogg', 100, 1, vary = 0)
|
||||
user.visible_message("<span class='warning'>[user]'s [name] rasps, \"Halt! Security!\"</span>")
|
||||
user.show_message("<span class='warning'>[user]'s [name] rasps, \"Halt! Security!\"</span>",1)
|
||||
|
||||
spamcheck = 1
|
||||
spawn(20)
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
/obj/item/device/lightreplacer,
|
||||
/obj/item/device/taperecorder,
|
||||
/obj/item/device/hailer,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/clothing/tie/holobadge,
|
||||
/obj/structure/closet/crate/secure,
|
||||
/obj/structure/closet/secure_closet,
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
icon_state = "grenade"
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
name = "Cleaner Grenade"
|
||||
name = "cleaner grenade"
|
||||
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
||||
stage = 2
|
||||
path = 1
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
if(iscarbon(M))
|
||||
eye_safety = M.eyecheck()
|
||||
if(ishuman(M))
|
||||
if(istype(M:ears, /obj/item/clothing/ears/earmuffs))
|
||||
if(istype(M:l_ear, /obj/item/clothing/ears/earmuffs) || istype(M:r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
ear_safety += 2
|
||||
if(HULK in M.mutations)
|
||||
ear_safety += 1
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/tracking
|
||||
name = "tracking"
|
||||
name = "tracking implant"
|
||||
desc = "Track with this."
|
||||
var/id = 1.0
|
||||
|
||||
@@ -219,7 +219,7 @@ Implant Specifics:<BR>"}
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/implant/chem
|
||||
name = "chem"
|
||||
name = "chemical implant"
|
||||
desc = "Injects things."
|
||||
allow_reagents = 1
|
||||
|
||||
@@ -283,7 +283,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
malfunction--
|
||||
|
||||
/obj/item/weapon/implant/loyalty
|
||||
name = "loyalty"
|
||||
name = "loyalty implant"
|
||||
desc = "Makes you loyal or such."
|
||||
|
||||
get_data()
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
icon_state ="bookEngineering"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Station Repairs and Construction"
|
||||
/*dat = {"
|
||||
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
</head>
|
||||
@@ -23,16 +24,16 @@
|
||||
|
||||
</html>
|
||||
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_particle_accelerator
|
||||
name = "Particle Accelerator User's Guide"
|
||||
icon_state ="bookParticleAccelerator"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Particle Accelerator User's Guide"
|
||||
//big pile of shit below.
|
||||
|
||||
/*dat = {"<html>
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -65,7 +66,7 @@
|
||||
</ol>
|
||||
|
||||
</body>
|
||||
</html>"}*/
|
||||
</html>"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_hacking
|
||||
@@ -73,29 +74,28 @@
|
||||
icon_state ="bookHacking"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Hacking"
|
||||
//big pile of shit below.
|
||||
|
||||
/*dat = {"
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe width='100%' height='97%' src="http://wiki.nanotrasen.com/index.php?title=Hacking&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
<iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Hacking&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_singularity_safety
|
||||
name = "Singularity Safety in Special Circumstances"
|
||||
icon_state ="bookEngineeringSingularitySafety"
|
||||
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Singularity Safety in Special Circumstances"
|
||||
//big pile of shit below.
|
||||
|
||||
/*dat = {"<html>
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -134,14 +134,16 @@
|
||||
Step one: <b>GET THE FUCK OUT OF THERE!!! FORGET THE WOMEN AND CHILDREN, SAVE YOURSELF!!!</b><br>
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/hydroponics_pod_people
|
||||
name = "The Human Harvest - From seed to market"
|
||||
name = "The Diona Harvest - From seed to market"
|
||||
icon_state ="bookHydroponicsPodPeople"
|
||||
author = "Farmer John"
|
||||
title = "The Human Harvest - From seed to market"
|
||||
/*dat = {"<html>
|
||||
title = "The Diona Harvest - From seed to market"
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -152,33 +154,29 @@
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h3>Growing Humans</h3>
|
||||
<h3>Growing Diona</h3>
|
||||
|
||||
Why would you want to grow humans? Well I'm expecting most readers to be in the slave trade, but a few might actually
|
||||
want to revive fallen comrades. Growing pod people is easy, but prone to disaster.
|
||||
Growing Diona is easy!
|
||||
<p>
|
||||
<ol>
|
||||
<li>Find a dead person who is in need of cloning. </li>
|
||||
<li>Take a blood sample with a syringe. </li>
|
||||
<li>Inject a seed pack with the blood sample. </li>
|
||||
<li>Plant the seeds. </li>
|
||||
<li>Tend to the plants water and nutrition levels until it is time to harvest the cloned human.</li>
|
||||
<li>Tend to the plants water and nutrition levels until it is time to harvest the Diona.</li>
|
||||
</ol>
|
||||
<p>
|
||||
It really is that easy! Good luck!
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/medical_cloning
|
||||
name = "Cloning techniques of the 26th century"
|
||||
icon_state ="bookCloning"
|
||||
author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "Cloning techniques of the 26th century"
|
||||
//big pile of shit below.
|
||||
|
||||
/*dat = {"<html>
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -202,7 +200,7 @@
|
||||
<li><a href='#6'>Get clean Structurel Enzymes for the body</a></li>
|
||||
<li><a href='#7'>Put body in morgue</a></li>
|
||||
<li><a href='#8'>Await cloned body</a></li>
|
||||
<li><a href='#9'>Use the clean SW injector</a></li>
|
||||
<li><a href='#9'>Cryo and use the clean SE injector</a></li>
|
||||
<li><a href='#10'>Give person clothes back</a></li>
|
||||
<li><a href='#11'>Send person on their way</a></li>
|
||||
</ol>
|
||||
@@ -231,8 +229,8 @@
|
||||
<a name='8'><H4>Step 8: Await cloned body</H4>
|
||||
Now go back to the lab and wait for your patient to be cloned. It won’t be long now, I promise.
|
||||
|
||||
<a name='9'><H4>Step 9: Use the clean SE injector on person</H4>
|
||||
Has your body been cloned yet? Great! As soon as the guy pops out, grab your injector and jab it in them. Once you’ve injected them, they now have clean Structural Enzymes and their defects, if any, will disappear in a short while.
|
||||
<a name='9'><H4>Step 9: Cyo and clean clean SE injector on person</H4>
|
||||
Has your body been cloned yet? Great! As soon as the guy pops out, grab them and stick them in cryo. Clonexadone and Cryoxadone help rebuild their genetic material. Then grab your cleanr SE injector and jab it in them. Once you’ve injected them, they now have clean Structural Enzymes and their defects, if any, will disappear in a short while.
|
||||
|
||||
<a name='10'><H4>Step 10: Give person clothes back</H4>
|
||||
Obviously the person will be naked after they have been cloned. Provided you weren’t an irresponsible little shit, you should have protected their possessions from thieves and should be able to give them back to the patient. No matter how cruel you are, it’s simply against protocol to force your patients to walk outside naked.
|
||||
@@ -242,11 +240,9 @@
|
||||
|
||||
<p>If you’ve gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target.
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/ripley_build_and_repair
|
||||
@@ -254,9 +250,8 @@
|
||||
icon_state ="book"
|
||||
author = "Weyland-Yutani Corp" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
|
||||
title = "APLU \"Ripley\" Construction and Operation Manual"
|
||||
//big pile of shit below.
|
||||
|
||||
/*dat = {"<html>
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -320,9 +315,7 @@
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<h2>Operation</h2>
|
||||
Coming soon...
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/research_and_development
|
||||
@@ -330,8 +323,8 @@
|
||||
icon_state = "rdbook"
|
||||
author = "Dr. L. Ight"
|
||||
title = "Research and Development 101"
|
||||
/*dat = {"
|
||||
<html>
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -373,7 +366,7 @@
|
||||
Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, its attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine.
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/robotics_cyborgs
|
||||
@@ -381,7 +374,8 @@
|
||||
icon_state = "borgbook"
|
||||
author = "XISC"
|
||||
title = "Cyborgs for Dummies"
|
||||
/*dat = {"<html>
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 21px; margin: 15px 0px 5px;}
|
||||
@@ -576,7 +570,8 @@
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/security_space_law
|
||||
name = "Space Law"
|
||||
@@ -584,6 +579,7 @@
|
||||
icon_state = "bookSpaceLaw"
|
||||
author = "Nanotrasen"
|
||||
title = "Space Law"
|
||||
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
@@ -596,22 +592,24 @@
|
||||
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_guide
|
||||
name = "Engineering Textbook"
|
||||
icon_state ="bookEngineering2"
|
||||
author = "Engineering Encyclopedia"
|
||||
title = "Engineering Textbook"
|
||||
/*dat = {"
|
||||
|
||||
dat = {"
|
||||
|
||||
<html><head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe width='100%' height='97%' src="http://wiki.nanotrasen.com/index.php?title=Guide_to_engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> </body>
|
||||
<iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Guide_to_Engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe> </body>
|
||||
|
||||
</html>
|
||||
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/chef_recipes
|
||||
@@ -619,7 +617,8 @@
|
||||
icon_state = "cooked_book"
|
||||
author = "Lord Frenrir Cageth"
|
||||
title = "Chef Recipes"
|
||||
/*dat = {"<html>
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -664,14 +663,16 @@
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/barman_recipes
|
||||
name = "Barman Recipes"
|
||||
icon_state = "barbook"
|
||||
author = "Sir John Rose"
|
||||
title = "Barman Recipes"
|
||||
/*dat = {"<html>
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -716,7 +717,7 @@
|
||||
|
||||
</body>
|
||||
</html>
|
||||
"}*/
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/book/manual/detective
|
||||
@@ -724,7 +725,8 @@
|
||||
icon_state ="bookDetective"
|
||||
author = "Nanotrasen"
|
||||
title = "The Film Noir: Proper Procedures for Investigations"
|
||||
/*dat = {"<html>
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
@@ -758,14 +760,15 @@
|
||||
It really is that easy! Good luck!
|
||||
|
||||
</body>
|
||||
</html>"}*/
|
||||
</html>"}
|
||||
|
||||
/obj/item/weapon/book/manual/nuclear
|
||||
name = "Fission Mailed: Nuclear Sabotage 101"
|
||||
icon_state ="bookNuclear"
|
||||
author = "Syndicate"
|
||||
title = "Fission Mailed: Nuclear Sabotage 101"
|
||||
/*dat = {"<html>
|
||||
|
||||
dat = {"<html>
|
||||
Nuclear Explosives 101:<br>
|
||||
Hello and thank you for choosing the Syndicate for your nuclear information needs.<br>
|
||||
Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.<br>
|
||||
@@ -793,4 +796,4 @@
|
||||
<b>Disk, Code, Safety, Timer, Disk, RUN!</b><br>
|
||||
Intelligence Analysts believe that normal Nanotrasen procedure is for the Captain to secure the nuclear authorisation disk.<br>
|
||||
Good luck!
|
||||
</html>"}*/
|
||||
</html>"}
|
||||
@@ -15,40 +15,34 @@
|
||||
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
var/datum/reagents/R = new/datum/reagents(5)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
create_reagents(5)
|
||||
|
||||
|
||||
obj/item/weapon/mop/proc/clean(turf/simulated/A as turf)
|
||||
reagents.reaction(A,1,10)
|
||||
A.clean_blood()
|
||||
for(var/obj/effect/O in A)
|
||||
if( istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay) )
|
||||
del(O)
|
||||
obj/item/weapon/mop/proc/clean(turf/simulated/A)
|
||||
if(reagents.has_reagent("water", 1))
|
||||
A.clean_blood()
|
||||
for(var/obj/effect/O in A)
|
||||
if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay))
|
||||
del(O)
|
||||
reagents.reaction(A, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly.
|
||||
reagents.remove_any(1) //reaction() doesn't use up the reagents
|
||||
|
||||
|
||||
/obj/effect/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/mop))
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user as mob)
|
||||
if(reagents.total_volume < 1 || mopcount >= 5)
|
||||
user << "<span class='notice'>Your mop is dry!</span>"
|
||||
return
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user)
|
||||
if(istype(A, /turf/simulated) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='notice'>Your mop is dry!</span>"
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'>[user] begins to clean \the [get_turf(A)].</span>")
|
||||
|
||||
if(do_after(user, 40))
|
||||
if(A)
|
||||
clean(get_turf(A))
|
||||
user << "<span class='notice'>You have finished mopping!</span>"
|
||||
mopcount++
|
||||
|
||||
if(mopcount >= 5) //Okay this stuff is an ugly hack and i feel bad about it.
|
||||
spawn(5)
|
||||
reagents.clear_reagents()
|
||||
mopcount = 0
|
||||
return
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap))
|
||||
return
|
||||
..()
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/weapon/storage/bag/trash
|
||||
name = "trash bag"
|
||||
desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "trashbag0"
|
||||
item_state = "trashbag"
|
||||
|
||||
|
||||
@@ -290,43 +290,33 @@
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
|
||||
/obj/item/weapon/storage/box/farwacubes
|
||||
if(src.type == /obj/item/weapon/storage/box/monkeycubes)
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/farwacubes
|
||||
name = "farwa cube box"
|
||||
desc = "Drymate brand farwa cubes. Just add water!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/farwacube")
|
||||
desc = "Drymate brand farwa cubes, shipped from Ahdomai. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/farwacube/wrapped(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/stokcubes
|
||||
/obj/item/weapon/storage/box/monkeycubes/stokcubes
|
||||
name = "stok cube box"
|
||||
desc = "Drymate brand stok cubes. Just add water!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/stokcube")
|
||||
desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/stokcube/wrapped(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/neaeracubes
|
||||
/obj/item/weapon/storage/box/monkeycubes/neaeracubes
|
||||
name = "neaera cube box"
|
||||
desc = "Drymate brand neaera cubes. Just add water!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/stokcube")
|
||||
desc = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/neaeracube/wrapped(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/ids
|
||||
name = "spare IDs"
|
||||
|
||||
@@ -44,18 +44,16 @@
|
||||
sleep(2)
|
||||
new /obj/item/clothing/under/rank/janitor(src)
|
||||
new /obj/item/weapon/cartridge/janitor(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/clothing/shoes/galoshes(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/storage/bag/trash(src)
|
||||
new /obj/item/device/lightreplacer(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/head/soft/purple(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/device/lightreplacer(src)
|
||||
new /obj/item/weapon/storage/bag/trash(src)
|
||||
new /obj/item/clothing/shoes/galoshes(src)
|
||||
|
||||
/*
|
||||
* Lawyer
|
||||
|
||||
@@ -1,3 +1,162 @@
|
||||
/obj/structure/janitorialcart
|
||||
name = "janitorial cart"
|
||||
desc = "The ultimate in janitorial carts! Has space for water, mops, signs, trash bags, and more!"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "cart"
|
||||
anchored = 0
|
||||
density = 1
|
||||
flags = OPENCONTAINER
|
||||
//copypaste sorry
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
var/obj/item/weapon/storage/bag/trash/mybag = null
|
||||
var/obj/item/weapon/mop/mymop = null
|
||||
var/obj/item/weapon/reagent_containers/spray/myspray = null
|
||||
var/obj/item/device/lightreplacer/myreplacer = null
|
||||
var/signs = 0 //maximum capacity hardcoded below
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/New()
|
||||
create_reagents(100)
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/examine()
|
||||
set src in usr
|
||||
usr << "[src] \icon[src] contains [reagents.total_volume] unit\s of liquid!"
|
||||
..()
|
||||
//everything else is visible, so doesn't need to be mentioned
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/storage/bag/trash) && !mybag)
|
||||
user.drop_item()
|
||||
mybag = I
|
||||
I.loc = src
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
user << "<span class='notice'>You put [I] into [src].</span>"
|
||||
|
||||
else if(istype(I, /obj/item/weapon/mop))
|
||||
if(I.reagents.total_volume < I.reagents.maximum_volume) //if it's not completely soaked we assume they want to wet it, otherwise store it
|
||||
if(reagents.total_volume < 1)
|
||||
user << "[src] is out of water!</span>"
|
||||
else
|
||||
reagents.trans_to(I, 5) //
|
||||
user << "<span class='notice'>You wet [I] in [src].</span>"
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
return
|
||||
if(!mymop)
|
||||
user.drop_item()
|
||||
mymop = I
|
||||
I.loc = src
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
user << "<span class='notice'>You put [I] into [src].</span>"
|
||||
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/spray) && !myspray)
|
||||
user.drop_item()
|
||||
myspray = I
|
||||
I.loc = src
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
user << "<span class='notice'>You put [I] into [src].</span>"
|
||||
|
||||
else if(istype(I, /obj/item/device/lightreplacer) && !myreplacer)
|
||||
user.drop_item()
|
||||
myreplacer = I
|
||||
I.loc = src
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
user << "<span class='notice'>You put [I] into [src].</span>"
|
||||
|
||||
else if(istype(I, /obj/item/weapon/caution))
|
||||
if(signs < 4)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
signs++
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
user << "<span class='notice'>You put [I] into [src].</span>"
|
||||
else
|
||||
user << "<span class='notice'>[src] can't hold any more signs.</span>"
|
||||
|
||||
else if(mybag)
|
||||
mybag.attackby(I, user)
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if(mybag)
|
||||
dat += "<a href='?src=\ref[src];garbage=1'>[mybag.name]</a><br>"
|
||||
if(mymop)
|
||||
dat += "<a href='?src=\ref[src];mop=1'>[mymop.name]</a><br>"
|
||||
if(myspray)
|
||||
dat += "<a href='?src=\ref[src];spray=1'>[myspray.name]</a><br>"
|
||||
if(myreplacer)
|
||||
dat += "<a href='?src=\ref[src];replacer=1'>[myreplacer.name]</a><br>"
|
||||
if(signs)
|
||||
dat += "<a href='?src=\ref[src];sign=1'>[signs] sign\s</a><br>"
|
||||
var/datum/browser/popup = new(user, "janicart", name, 240, 160)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/Topic(href, href_list)
|
||||
if(!in_range(src, usr))
|
||||
return
|
||||
if(!isliving(usr))
|
||||
return
|
||||
var/mob/living/user = usr
|
||||
if(href_list["garbage"])
|
||||
if(mybag)
|
||||
user.put_in_hands(mybag)
|
||||
user << "<span class='notice'>You take [mybag] from [src].</span>"
|
||||
mybag = null
|
||||
if(href_list["mop"])
|
||||
if(mymop)
|
||||
user.put_in_hands(mymop)
|
||||
user << "<span class='notice'>You take [mymop] from [src].</span>"
|
||||
mymop = null
|
||||
if(href_list["spray"])
|
||||
if(myspray)
|
||||
user.put_in_hands(myspray)
|
||||
user << "<span class='notice'>You take [myspray] from [src].</span>"
|
||||
myspray = null
|
||||
if(href_list["replacer"])
|
||||
if(myreplacer)
|
||||
user.put_in_hands(myreplacer)
|
||||
user << "<span class='notice'>You take [myreplacer] from [src].</span>"
|
||||
myreplacer = null
|
||||
if(href_list["sign"])
|
||||
if(signs)
|
||||
var/obj/item/weapon/caution/Sign = locate() in src
|
||||
if(Sign)
|
||||
user.put_in_hands(Sign)
|
||||
user << "<span class='notice'>You take \a [Sign] from [src].</span>"
|
||||
signs--
|
||||
else
|
||||
warning("[src] signs ([signs]) didn't match contents")
|
||||
signs = 0
|
||||
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/update_icon()
|
||||
overlays = null
|
||||
if(mybag)
|
||||
overlays += "cart_garbage"
|
||||
if(mymop)
|
||||
overlays += "cart_mop"
|
||||
if(myspray)
|
||||
overlays += "cart_spray"
|
||||
if(myreplacer)
|
||||
overlays += "cart_replacer"
|
||||
if(signs)
|
||||
overlays += "cart_sign[signs]"
|
||||
|
||||
|
||||
//old style retardo-cart
|
||||
/obj/structure/stool/bed/chair/janicart
|
||||
name = "janicart"
|
||||
icon = 'icons/obj/vehicles.dmi'
|
||||
@@ -8,36 +167,36 @@
|
||||
//copypaste sorry
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
var/obj/item/weapon/storage/bag/trash/mybag = null
|
||||
var/callme = "pimpin' ride" //how do people refer to it?
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/New()
|
||||
handle_rotation()
|
||||
|
||||
var/datum/reagents/R = new/datum/reagents(100)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
create_reagents(100)
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/examine()
|
||||
set src in usr
|
||||
usr << "\icon[src] This pimpin' ride contains [reagents.total_volume] unit\s of water!"
|
||||
usr << "\icon[src] This [callme] contains [reagents.total_volume] unit\s of water!"
|
||||
if(mybag)
|
||||
usr << "\A [mybag] is hanging on the pimpin' ride."
|
||||
usr << "\A [mybag] is hanging on the [callme]."
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume >= 2)
|
||||
reagents.trans_to(W, 2)
|
||||
user << "<span class='notice'>You wet the mop in the pimpin' ride.</span>"
|
||||
playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='notice'>This pimpin' ride is out of water!</span>"
|
||||
else if(istype(W, /obj/item/key))
|
||||
user << "Hold [W] in one of your hands while you drive this pimpin' ride."
|
||||
else if(istype(W, /obj/item/weapon/storage/bag/trash))
|
||||
user << "<span class='notice'>You hook the trashbag onto the pimpin' ride.</span>"
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume > 1)
|
||||
reagents.trans_to(I, 2)
|
||||
user << "<span class='notice'>You wet [I] in the [callme].</span>"
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
else
|
||||
user << "<span class='notice'>This [callme] is out of water!</span>"
|
||||
else if(istype(I, /obj/item/key))
|
||||
user << "Hold [I] in one of your hands while you drive this [callme]."
|
||||
else if(istype(I, /obj/item/weapon/storage/bag/trash))
|
||||
user << "<span class='notice'>You hook the trashbag onto the [callme].</span>"
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
mybag = W
|
||||
I.loc = src
|
||||
mybag = I
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/attack_hand(mob/user)
|
||||
@@ -57,7 +216,8 @@
|
||||
update_mob()
|
||||
handle_rotation()
|
||||
else
|
||||
user << "<span class='notice'>You'll need the keys in one of your hands to drive this pimpin' ride.</span>"
|
||||
user << "<span class='notice'>You'll need the keys in one of your hands to drive this [callme].</span>"
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/Move()
|
||||
..()
|
||||
@@ -65,6 +225,7 @@
|
||||
if(buckled_mob.buckled == src)
|
||||
buckled_mob.loc = loc
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/buckle_mob(mob/M, mob/user)
|
||||
if(M != user || !ismob(M) || get_dist(src, user) > 1 || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon))
|
||||
return
|
||||
@@ -72,8 +233,8 @@
|
||||
unbuckle()
|
||||
|
||||
M.visible_message(\
|
||||
"<span class='notice'>[M] climbs onto the pimpin' ride!</span>",\
|
||||
"<span class='notice'>You climb onto the pimpin' ride!</span>")
|
||||
"<span class='notice'>[M] climbs onto the [callme]!</span>",\
|
||||
"<span class='notice'>You climb onto the [callme]!</span>")
|
||||
M.buckled = src
|
||||
M.loc = loc
|
||||
M.dir = dir
|
||||
@@ -81,7 +242,7 @@
|
||||
buckled_mob = M
|
||||
update_mob()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/unbuckle()
|
||||
if(buckled_mob)
|
||||
@@ -89,6 +250,7 @@
|
||||
buckled_mob.pixel_y = 0
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/handle_rotation()
|
||||
if(dir == SOUTH)
|
||||
layer = FLY_LAYER
|
||||
@@ -102,6 +264,7 @@
|
||||
|
||||
update_mob()
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/proc/update_mob()
|
||||
if(buckled_mob)
|
||||
buckled_mob.dir = dir
|
||||
@@ -119,11 +282,13 @@
|
||||
buckled_mob.pixel_x = -13
|
||||
buckled_mob.pixel_y = 7
|
||||
|
||||
|
||||
/obj/structure/stool/bed/chair/janicart/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(buckled_mob)
|
||||
if(prob(65))
|
||||
if(prob(85))
|
||||
return buckled_mob.bullet_act(Proj)
|
||||
visible_message("<span class='warning'>[Proj] ricochets off the pimpin' ride!</span>")
|
||||
visible_message("<span class='warning'>[Proj] ricochets off the [callme]!</span>")
|
||||
|
||||
|
||||
/obj/item/key
|
||||
name = "key"
|
||||
|
||||
@@ -156,20 +156,9 @@
|
||||
return
|
||||
|
||||
proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code
|
||||
if(!air_master) return 0
|
||||
|
||||
var/turf/simulated/source = loc
|
||||
var/turf/simulated/north = get_step(source,NORTH)
|
||||
var/turf/simulated/south = get_step(source,SOUTH)
|
||||
var/turf/simulated/east = get_step(source,EAST)
|
||||
var/turf/simulated/west = get_step(source,WEST)
|
||||
|
||||
if(istype(source)) air_master.tiles_to_update += source
|
||||
if(istype(north)) air_master.tiles_to_update += north
|
||||
if(istype(south)) air_master.tiles_to_update += south
|
||||
if(istype(east)) air_master.tiles_to_update += east
|
||||
if(istype(west)) air_master.tiles_to_update += west
|
||||
|
||||
if(!air_master)
|
||||
return 0
|
||||
air_master.AddTurfToUpdate(get_turf(src))
|
||||
return 1
|
||||
|
||||
/obj/structure/mineral_door/iron
|
||||
|
||||
@@ -1,44 +1,28 @@
|
||||
/obj/structure/mopbucket
|
||||
desc = "Fill it with water, but don't forget a mop!"
|
||||
name = "mop bucket"
|
||||
desc = "Fill it with water, but don't forget a mop!"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "mopbucket"
|
||||
density = 1
|
||||
pressure_resistance = 5
|
||||
flags = FPRINT | TABLEPASS | OPENCONTAINER
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
|
||||
|
||||
|
||||
/obj/structure/mopbucket/New()
|
||||
var/datum/reagents/R = new/datum/reagents(100)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
create_reagents(100)
|
||||
|
||||
|
||||
/obj/structure/mopbucket/examine()
|
||||
set src in usr
|
||||
usr << text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume)
|
||||
usr << "[src] \icon[src] contains [reagents.total_volume] unit\s of water!"
|
||||
..()
|
||||
|
||||
/obj/structure/mopbucket/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/mop))
|
||||
if (src.reagents.total_volume >= 2)
|
||||
src.reagents.trans_to(W, 2)
|
||||
user << "\blue You wet the mop"
|
||||
playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
if (src.reagents.total_volume < 1)
|
||||
user << "\blue Out of water!"
|
||||
return
|
||||
|
||||
/obj/structure/mopbucket/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
return
|
||||
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "[src] is out of water!</span>"
|
||||
else
|
||||
reagents.trans_to(I, 5)
|
||||
user << "<span class='notice'>You wet [I] in [src].</span>"
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
@@ -258,8 +258,11 @@
|
||||
if(H.glasses && washglasses)
|
||||
if(H.glasses.clean_blood())
|
||||
H.update_inv_glasses(0)
|
||||
if(H.ears && washears)
|
||||
if(H.ears.clean_blood())
|
||||
if(H.l_ear && washears)
|
||||
if(H.l_ear.clean_blood())
|
||||
H.update_inv_ears(0)
|
||||
if(H.r_ear && washears)
|
||||
if(H.r_ear.clean_blood())
|
||||
H.update_inv_ears(0)
|
||||
if(H.belt)
|
||||
if(H.belt.clean_blood())
|
||||
|
||||
@@ -294,12 +294,9 @@ obj/structure/windoor_assembly/Del()
|
||||
return
|
||||
|
||||
/obj/structure/windoor_assembly/proc/update_nearby_tiles(need_rebuild)
|
||||
if(!air_master) return 0
|
||||
if(!air_master)
|
||||
return 0
|
||||
|
||||
var/turf/simulated/source = loc
|
||||
var/turf/simulated/target = get_step(source,dir)
|
||||
|
||||
if(istype(source)) air_master.tiles_to_update += source
|
||||
if(istype(target)) air_master.tiles_to_update += target
|
||||
air_master.AddTurfToUpdate(loc)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -316,21 +316,9 @@
|
||||
|
||||
//This proc has to do with airgroups and atmos, it has nothing to do with smoothwindows, that's update_nearby_tiles().
|
||||
/obj/structure/window/proc/update_nearby_tiles(need_rebuild)
|
||||
if(!air_master) return 0
|
||||
if(!dir in cardinal)
|
||||
var/turf/simulated/source = get_turf(src)
|
||||
if(istype(source))
|
||||
air_master.tiles_to_update |= source
|
||||
for(var/dir in cardinal)
|
||||
var/turf/simulated/target = get_step(source,dir)
|
||||
if(istype(target)) air_master.tiles_to_update |= target
|
||||
return 1
|
||||
|
||||
var/turf/simulated/source = get_turf(src)
|
||||
var/turf/simulated/target = get_step(source,dir)
|
||||
|
||||
if(istype(source)) air_master.tiles_to_update |= source
|
||||
if(istype(target)) air_master.tiles_to_update |= target
|
||||
if(!air_master)
|
||||
return 0
|
||||
air_master.AddTurfToUpdate(get_turf(src))
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user