mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Merge remote-tracking branch 'upstream/master' into LightShit
Conflicts: code/modules/hydroponics/trays/tray.dm code/modules/hydroponics/vines.dm
This commit is contained in:
@@ -171,6 +171,16 @@
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_pie")
|
||||
|
||||
/obj/effect/decal/cleanable/fruit_smudge
|
||||
name = "smudge"
|
||||
desc = "Some kind of fruit smear."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mfloor1"
|
||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||
|
||||
/obj/effect/decal/cleanable/fungus
|
||||
name = "space fungus"
|
||||
desc = "A fungal growth. Looks pretty nasty."
|
||||
|
||||
@@ -79,6 +79,9 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
/obj/effect/effect/water/Bump(atom/A)
|
||||
if(reagents)
|
||||
reagents.reaction(A)
|
||||
if(istype(A,/atom/movable))
|
||||
var/atom/movable/AM = A
|
||||
AM.water_act(life, 310.15, src)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -423,6 +426,28 @@ steam.start() -- spawns the effect
|
||||
|
||||
return
|
||||
|
||||
// Spores
|
||||
/datum/effect/effect/system/chem_smoke_spread/spores
|
||||
var/datum/seed/seed
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread/spores/New(seed_name)
|
||||
if(seed_name && plant_controller)
|
||||
seed = plant_controller.seeds[seed_name]
|
||||
if(!seed)
|
||||
del(src)
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread/New()
|
||||
..()
|
||||
chemholder = new/obj()
|
||||
var/datum/reagents/R = new/datum/reagents(500)
|
||||
chemholder.reagents = R
|
||||
R.my_atom = chemholder
|
||||
|
||||
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
var/direction
|
||||
@@ -460,16 +485,20 @@ steam.start() -- spawns the effect
|
||||
var/where = "[A.name] | [location.x], [location.y]"
|
||||
var/whereLink = "<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>[where]</a>"
|
||||
|
||||
if(carry.my_atom.fingerprintslast)
|
||||
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
|
||||
var/more = ""
|
||||
if(M)
|
||||
more = "(<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</a>)"
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
|
||||
if(carry && carry.my_atom)
|
||||
if(carry.my_atom.fingerprintslast)
|
||||
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
|
||||
var/more = ""
|
||||
if(M)
|
||||
more = "(<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</a>)"
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
|
||||
else
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
|
||||
else
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
|
||||
msg_admin_attack("A chemical smoke reaction has taken place in ([whereLink]). No associated key. CODERS: carry.my_atom may be null.", 0, 1)
|
||||
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key. CODERS: carry.my_atom may be null.")
|
||||
|
||||
start(effect_range = 2)
|
||||
var/i = 0
|
||||
@@ -482,6 +511,13 @@ steam.start() -- spawns the effect
|
||||
var/mob/living/carbon/C = A
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
chemholder.reagents.copy_to(C, chemholder.reagents.total_volume)
|
||||
if(istype(A, /obj/machinery/portable_atmospherics/hydroponics))
|
||||
var/obj/machinery/portable_atmospherics/hydroponics/tray = A
|
||||
chemholder.reagents.copy_to(tray, chemholder.reagents.total_volume)
|
||||
if(istype(A, /obj/effect/plant))
|
||||
var/obj/effect/plant/plant = A
|
||||
if(chemholder.reagents.has_reagent("atrazine"))
|
||||
plant.die_off()
|
||||
qdel(smokeholder)
|
||||
for(i=0, i<src.number, i++)
|
||||
if(src.total_smoke > 20)
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
B.desc = "Looks like the label fell off."
|
||||
// B.identify_probability = 0
|
||||
|
||||
|
||||
/*
|
||||
/obj/structure/closet/crate/bin/flowers
|
||||
name = "flower barrel"
|
||||
desc = "A bin full of fresh flowers for the bereaved."
|
||||
@@ -211,7 +211,6 @@
|
||||
AM.pixel_x = rand(-10,10)
|
||||
AM.pixel_y = rand(-5,5)
|
||||
|
||||
|
||||
/obj/structure/closet/crate/bin/plants
|
||||
name = "plant barrel"
|
||||
desc = "Caution: Contents may contain vitamins and minerals. It is recommended that you deep fry them before eating."
|
||||
@@ -234,6 +233,7 @@
|
||||
var/obj/O = new ptype(src)
|
||||
O.pixel_x = rand(-10,10)
|
||||
O.pixel_y = rand(-5,5)
|
||||
*/
|
||||
|
||||
/obj/structure/closet/secure_closet/random_drinks
|
||||
name = "Unlabelled Booze"
|
||||
|
||||
@@ -245,6 +245,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/handroll
|
||||
name = "hand-rolled cigarette"
|
||||
desc = "A roll of tobacco and nicotine, freshly rolled by hand."
|
||||
icon_state = "hr_cigoff"
|
||||
item_state = "hr_cigoff"
|
||||
icon_on = "hr_cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
icon_off = "hr_cigoff"
|
||||
type_butt = /obj/item/weapon/cigbutt
|
||||
chem_volume = 50
|
||||
|
||||
////////////
|
||||
// CIGARS //
|
||||
////////////
|
||||
@@ -485,7 +495,7 @@ obj/item/weapon/rollingpaper
|
||||
name = "rolling paper"
|
||||
desc = "A thin piece of paper used to make fine smokeables."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig paper"
|
||||
icon_state = "cig_paper"
|
||||
w_class = 1
|
||||
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
if(!user.gloves)
|
||||
user << "\red The [name] burns your bare hand!"
|
||||
user.adjustFireLoss(rand(1,5))
|
||||
|
||||
/*
|
||||
/*
|
||||
* Nettle
|
||||
*/
|
||||
@@ -237,3 +237,4 @@
|
||||
new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
|
||||
del(src)
|
||||
return
|
||||
*/
|
||||
@@ -146,8 +146,10 @@
|
||||
if (M.loc == loc)
|
||||
wash(M)
|
||||
check_heat(M)
|
||||
M.water_act(100, convertHeat(), src)
|
||||
for (var/atom/movable/G in src.loc)
|
||||
G.clean_blood()
|
||||
G.water_act(100, convertHeat(), src)
|
||||
|
||||
/obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(I.type == /obj/item/device/analyzer)
|
||||
@@ -163,6 +165,8 @@
|
||||
if("boiling")
|
||||
watertemp = "normal"
|
||||
user.visible_message("<span class='notice'>[user] adjusts the shower with the [I].</span>", "<span class='notice'>You adjust the shower with the [I].</span>")
|
||||
if(on)
|
||||
I.water_act(100, convertHeat(), src)
|
||||
|
||||
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up
|
||||
overlays.Cut() //once it's been on for a while, in addition to handling the water overlay.
|
||||
@@ -201,10 +205,21 @@
|
||||
mobpresent -= 1
|
||||
..()
|
||||
|
||||
/obj/machinery/shower/proc/convertHeat()
|
||||
switch(watertemp)
|
||||
if("boiling")
|
||||
return 340.15
|
||||
if("normal")
|
||||
return 310.15
|
||||
if("freezing")
|
||||
return 230.15
|
||||
|
||||
//Yes, showers are super powerful as far as washing goes.
|
||||
/obj/machinery/shower/proc/wash(atom/movable/O as obj|mob)
|
||||
if(!on) return
|
||||
|
||||
O.water_act(100, convertHeat(), src)
|
||||
|
||||
if(isliving(O))
|
||||
var/mob/living/L = O
|
||||
L.ExtinguishMob()
|
||||
@@ -293,22 +308,22 @@
|
||||
check_heat(C)
|
||||
|
||||
/obj/machinery/shower/proc/check_heat(mob/M as mob)
|
||||
M.water_act(100, convertHeat(), src) //convenience
|
||||
if(!on || watertemp == "normal") return
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
|
||||
if(watertemp == "freezing")
|
||||
C.bodytemperature = max(80, C.bodytemperature - 80)
|
||||
//C.bodytemperature = max(80, C.bodytemperature - 80)
|
||||
C << "<span class='warning'>The water is freezing!</span>"
|
||||
return
|
||||
if(watertemp == "boiling")
|
||||
C.bodytemperature = min(500, C.bodytemperature + 35)
|
||||
//C.bodytemperature = min(500, C.bodytemperature + 35)
|
||||
C.adjustFireLoss(5)
|
||||
C << "<span class='danger'>The water is searing!</span>"
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/bikehorn/rubberducky
|
||||
name = "rubber ducky"
|
||||
desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl
|
||||
@@ -372,7 +387,9 @@
|
||||
user.visible_message("\blue [user] fills the [RG] using \the [src].","\blue You fill the [RG] using \the [src].")
|
||||
return
|
||||
|
||||
else if (istype(O, /obj/item/weapon/melee/baton))
|
||||
O.water_act(20,310.15,src)
|
||||
|
||||
if (istype(O, /obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = O
|
||||
if (B.bcell.charge > 0 && B.status == 1)
|
||||
flick("baton_active", src)
|
||||
|
||||
Reference in New Issue
Block a user