diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index b7cb7faecfc..4cdadbd3552 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -35,7 +35,7 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/stack/cable_coil(src, 1) RefreshParts() - + /obj/machinery/atmospherics/unary/cryo_cell/New() ..() component_parts = list() @@ -53,7 +53,7 @@ for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) C += M.rating current_heat_capacity = 50 * C - efficiency = C + efficiency = C /obj/machinery/atmospherics/unary/cryo_cell/initialize() if(node) return @@ -115,6 +115,11 @@ /obj/machinery/atmospherics/unary/cryo_cell/process() ..() + if(occupant) + if(occupant.health >= 100) + on = 0 + go_out() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) if(!node) return if(!on) @@ -153,7 +158,7 @@ return ui_interact(user) - + /** * The ui_interact proc is used to open and update Nano UIs @@ -268,15 +273,15 @@ if (istype(G, /obj/item/weapon/screwdriver)) if(occupant || on) user << "The maintenance panel is locked." - return + return default_deconstruction_screwdriver(user, "cell-o", "cell-off", G) - return - + return + if(exchange_parts(user, G)) return default_deconstruction_crowbar(G) - + if(istype(G, /obj/item/weapon/grab)) if(panel_open) user << "\blue Close the maintenance panel first." diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 2c728b50b3c..6cc4ae4352d 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1105,8 +1105,9 @@ /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress = 1, /obj/item/clothing/under/sailordress = 1, /obj/item/clothing/under/redeveninggown = 1, /obj/item/clothing/under/blacktango=1,/obj/item/clothing/suit/jacket=3, /obj/item/clothing/glasses/regular=2,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1, /obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/black=4, - /obj/item/clothing/shoes/sandal=1) - contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1) + /obj/item/clothing/shoes/sandal=1, + /obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1) + contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=1) premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/under/pants/mustangjeans=1) refill_canister = /obj/item/weapon/vending_refill/clothing diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 601e4d5a8f7..f1ccf4a20f5 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -68,7 +68,10 @@ if (M.ear_damage >= 5) M << "Your ears start to ring!" -/obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve +//////////////////// +//Clusterbang +//////////////////// +/obj/item/weapon/grenade/flashbang/clusterbang desc = "Use of this weapon may constiute a war crime in your area, consult your local captain." name = "clusterbang" icon = 'icons/obj/grenade.dmi' @@ -78,60 +81,60 @@ update_mob() var/numspawned = rand(4,8) var/again = 0 + for(var/more = numspawned,more > 0,more--) if(prob(35)) again++ - numspawned -- + numspawned-- - for(,numspawned > 0, numspawned--) - spawn(0) - new /obj/item/weapon/grenade/flashbang/cluster(src.loc)//Launches flashbangs - playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + for(var/loop = numspawned, loop > 0, loop--) + new /obj/item/weapon/grenade/flashbang/cluster(loc)//Launches flashbangs + + for(var/loop = again ,loop > 0, loop--) + new /obj/item/weapon/grenade/flashbang/clusterbang/segment(loc)//Creates a 'segment' that launches a few more flashbangs + + playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - for(,again > 0, again--) - spawn(0) - new /obj/item/weapon/grenade/flashbang/clusterbang/segment(src.loc)//Creates a 'segment' that launches a few more flashbangs - playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) del(src) + +////////////////////// +//Clusterbang segment +////////////////////// /obj/item/weapon/grenade/flashbang/clusterbang/segment desc = "A smaller segment of a clusterbang. Better run." name = "clusterbang segment" icon = 'icons/obj/grenade.dmi' icon_state = "clusterbang_segment" -/obj/item/weapon/grenade/flashbang/clusterbang/segment/New()//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode +/obj/item/weapon/grenade/flashbang/clusterbang/segment/New() + ..() icon_state = "clusterbang_segment_active" active = 1 - var/stepdist = rand(1,4)//How far to step - var/temploc = src.loc//Saves the current location to know where to step away from - walk_away(src,temploc,stepdist)//I must go, my people need me - var/dettime = rand(15,60) - spawn(dettime) + walk_away(src,loc,rand(1,4)) + spawn(rand(15,60)) prime() - ..() + /obj/item/weapon/grenade/flashbang/clusterbang/segment/prime() update_mob() var/numspawned = rand(4,8) - for(var/more = numspawned,more > 0,more--) - if(prob(35)) - numspawned -- - for(,numspawned > 0, numspawned--) - spawn(0) - new /obj/item/weapon/grenade/flashbang/cluster(src.loc) - playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + for(var/loop = numspawned ,loop > 0, loop--) + new /obj/item/weapon/grenade/flashbang/cluster(loc) + + playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + del(src) -/obj/item/weapon/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang +//////////////////////////////// +//Clusterbang spawned flashbang +//////////////////////////////// +/obj/item/weapon/grenade/flashbang/cluster/New() ..() icon_state = "flashbang_active" active = 1 banglet = 1 - var/stepdist = rand(1,3) - var/temploc = src.loc - walk_away(src,temploc,stepdist) - var/dettime = rand(15,60) - spawn(dettime) - prime() \ No newline at end of file + walk_away(src,loc,rand(1,3)) + spawn(rand(15,60)) + prime() \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 2718fbec8ec..cfe383edf21 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -217,20 +217,22 @@ icon_override = 'icons/mob/in-hand/duffelbag.dmi' icon_state = "duffel" item_state = "duffel" - storage_slots = 10 // Duffelbags can hold more items. - max_combined_w_class = 25 + storage_slots = 9 // Duffelbags can hold more items. + slowdown = 1 /obj/item/weapon/storage/backpack/duffel/syndimed name = "suspicious duffelbag" desc = "A black and red duffelbag with a red and white cross sewn onto it." icon_state = "duffel-syndimed" item_state = "duffel-syndimed" + slowdown = 0 /obj/item/weapon/storage/backpack/duffel/syndiammo name = "suspicious duffelbag" desc = "A black and red duffelbag with a patch depicting shotgun shells sewn onto it." icon_state = "duffel-syndiammo" item_state = "duffel-syndiammo" + slowdown = 0 /obj/item/weapon/storage/backpack/duffel/captain name = "captain's duffelbag" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 4c88b7b2b46..01f5385686e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -47,7 +47,8 @@ "/obj/item/stack/cable_coil", "/obj/item/device/t_scanner", "/obj/item/device/analyzer", - "/obj/item/taperoll/engineering") + "/obj/item/taperoll/engineering", + "/obj/item/weapon/extinguisher/mini") /obj/item/weapon/storage/belt/utility/full/New() @@ -198,6 +199,18 @@ new /obj/item/ammo_casing/shotgun/beanbag(src) new /obj/item/ammo_casing/shotgun/beanbag(src) +/obj/item/weapon/storage/belt/holster + name = "shoulder holster" + desc = "A holster to conceal a carried handgun. WARNING: Badasses only." + icon_state = "holster" + item_state = "holster" + storage_slots = 1 + max_w_class = 3 + can_hold = list( + "/obj/item/weapon/gun/projectile/automatic/pistol", + "/obj/item/weapon/gun/projectile/revolver/detective" + ) + /obj/item/weapon/storage/belt/wands name = "wand belt" desc = "A belt designed to hold various rods of power. A veritable fanny pack of exotic magic." @@ -220,3 +233,61 @@ for(var/obj/item/weapon/gun/magic/wand/W in contents) //All wands in this pack come in the best possible condition W.max_charges = initial(W.max_charges) W.charges = W.max_charges + +/obj/item/weapon/storage/belt/fannypack + name = "fannypack" + desc = "A dorky fannypack for keeping small items in." + icon_state = "fannypack_leather" + item_state = "fannypack_leather" + storage_slots = 3 + max_w_class = 2 + +/obj/item/weapon/storage/belt/fannypack/black + name = "black fannypack" + icon_state = "fannypack_black" + item_state = "fannypack_black" + +/obj/item/weapon/storage/belt/fannypack/red + name = "red fannypack" + icon_state = "fannypack_red" + item_state = "fannypack_red" + +/obj/item/weapon/storage/belt/fannypack/purple + name = "purple fannypack" + icon_state = "fannypack_purple" + item_state = "fannypack_purple" + +/obj/item/weapon/storage/belt/fannypack/blue + name = "blue fannypack" + icon_state = "fannypack_blue" + item_state = "fannypack_blue" + +/obj/item/weapon/storage/belt/fannypack/orange + name = "orange fannypack" + icon_state = "fannypack_orange" + item_state = "fannypack_orange" + +/obj/item/weapon/storage/belt/fannypack/white + name = "white fannypack" + icon_state = "fannypack_white" + item_state = "fannypack_white" + +/obj/item/weapon/storage/belt/fannypack/green + name = "green fannypack" + icon_state = "fannypack_green" + item_state = "fannypack_green" + +/obj/item/weapon/storage/belt/fannypack/pink + name = "pink fannypack" + icon_state = "fannypack_pink" + item_state = "fannypack_pink" + +/obj/item/weapon/storage/belt/fannypack/cyan + name = "cyan fannypack" + icon_state = "fannypack_cyan" + item_state = "fannypack_cyan" + +/obj/item/weapon/storage/belt/fannypack/yellow + name = "yellow fannypack" + icon_state = "fannypack_yellow" + item_state = "fannypack_yellow" \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 0bf9b7570f3..6515018e541 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -16,10 +16,7 @@ new /obj/item/weapon/storage/backpack/industrial(src) else new /obj/item/weapon/storage/backpack/satchel_eng(src) - if (prob(70)) - new /obj/item/clothing/tie/storage/brown_vest(src) - else - new /obj/item/clothing/tie/storage/webbing(src) + new /obj/item/weapon/storage/backpack/duffel/engineering(src) new /obj/item/blueprints(src) new /obj/item/clothing/under/rank/chief_engineer(src) new /obj/item/clothing/head/hardhat/white(src) @@ -109,10 +106,7 @@ new /obj/item/weapon/storage/backpack/industrial(src) else new /obj/item/weapon/storage/backpack/satchel_eng(src) - if (prob(70)) - new /obj/item/clothing/tie/storage/brown_vest(src) - else - new /obj/item/clothing/tie/storage/webbing(src) + new /obj/item/weapon/storage/backpack/duffel/engineering(src) new /obj/item/weapon/storage/toolbox/mechanical(src) new /obj/item/device/radio/headset/headset_eng(src) new /obj/item/clothing/under/rank/engineer(src) @@ -145,10 +139,7 @@ new /obj/item/weapon/storage/backpack/industrial(src) else new /obj/item/weapon/storage/backpack/satchel_eng(src) - if (prob(70)) - new /obj/item/clothing/tie/storage/brown_vest(src) - else - new /obj/item/clothing/tie/storage/webbing(src) + new /obj/item/weapon/storage/backpack/duffel/engineering(src) new /obj/item/weapon/extinguisher(src) new /obj/item/clothing/suit/storage/hazardvest(src) new /obj/item/clothing/mask/gas(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 58eaf2bac09..940fb1409f4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -69,6 +69,7 @@ new /obj/item/weapon/storage/backpack/medic(src) else new /obj/item/weapon/storage/backpack/satchel_med(src) + new /obj/item/weapon/storage/backpack/duffel/medical(src) new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/white(src) @@ -128,6 +129,7 @@ new /obj/item/weapon/storage/backpack/medic(src) else new /obj/item/weapon/storage/backpack/satchel_med(src) + new /obj/item/weapon/storage/backpack/duffel/medical(src) new /obj/item/clothing/suit/bio_suit/cmo(src) new /obj/item/clothing/head/bio_hood/cmo(src) new /obj/item/clothing/shoes/white(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index f4a3d553d9d..f48a0e69e4f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -7,6 +7,8 @@ /obj/structure/closet/secure_closet/personal/New() ..() spawn(2) + if(prob(50)) + new /obj/item/weapon/storage/backpack/duffel(src) if(prob(50)) new /obj/item/weapon/storage/backpack(src) else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 917c8feb815..b227b11df05 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -15,6 +15,7 @@ new /obj/item/weapon/storage/backpack/captain(src) else new /obj/item/weapon/storage/backpack/satchel_cap(src) + new /obj/item/weapon/storage/backpack/duffel/captain(src) new /obj/item/clothing/suit/captunic(src) new /obj/item/clothing/suit/captunic/capjacket(src) new /obj/item/clothing/head/caphat/parade(src) @@ -116,7 +117,6 @@ new /obj/item/weapon/gun/energy/advtaser(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/taperoll/police(src) - new /obj/item/clothing/tie/holster/armpit(src) return @@ -308,7 +308,7 @@ new /obj/item/ammo_box/c38(src) new /obj/item/weapon/gun/projectile/revolver/detective(src) new /obj/item/taperoll/police(src) - new /obj/item/clothing/tie/holster/armpit(src) + new /obj/item/weapon/storage/belt/holster(src) return /obj/structure/closet/secure_closet/detective/update_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 6b166ae729c..01fceded7e6 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -43,6 +43,8 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/weapon/storage/box/teargas(src) new /obj/item/weapon/storage/box/flashbangs(src) + new /obj/item/weapon/storage/backpack/duffel/syndimed(src) + new /obj/item/weapon/storage/backpack/duffel/syndiammo(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 4f04a5aa85d..7a7accadd10 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -20,6 +20,8 @@ icon_closed = "red" /obj/structure/closet/wardrobe/red/New() + new /obj/item/weapon/storage/backpack/duffel/security(src) + new /obj/item/weapon/storage/backpack/duffel/security(src) new /obj/item/clothing/under/rank/security(src) new /obj/item/clothing/under/rank/security(src) new /obj/item/clothing/under/rank/security(src) @@ -377,6 +379,8 @@ new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) + if(prob(50)) + new /obj/item/weapon/storage/backpack/duffel(src) return diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index a129d887128..ef7c9e94f17 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -10,11 +10,11 @@ var/max_fire_temperature_sustained = 0 //The max temperature of the fire which it was subjected to var/dirt = 0 var/dirtoverlay = null - + /turf/simulated/New() ..() levelupdate() - + /turf/simulated/proc/MakeSlippery(var/wet_setting = 1) // 1 = Water, 2 = Lube if(wet >= wet_setting) return @@ -32,7 +32,7 @@ if(wet > wet_setting) return wet = 0 if(wet_overlay) - overlays -= wet_overlay + overlays -= wet_overlay /turf/simulated/proc/AddTracks(var/typepath,var/mob,var/bloodDNA,var/comingdir,var/goingdir) var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src @@ -45,14 +45,15 @@ if (istype(A,/mob/living/carbon)) var/mob/living/carbon/M = A if(M.lying) return - dirt++ - if (dirt >= 50) - var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, src) - if (!dirtoverlay) + if(prob(80)) + dirt++ + var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, src) + if(dirt >= 100) + if(!dirtoverlay) dirtoverlay = new/obj/effect/decal/cleanable/dirt(src) - dirtoverlay.alpha = 15 - else if (dirt > 50) - dirtoverlay.alpha = min(dirtoverlay.alpha+5, 255) + dirtoverlay.alpha = 10 + else if(dirt > 100) + dirtoverlay.alpha = min(dirtoverlay.alpha+10, 200) if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M if(istype(H.shoes, /obj/item/clothing/shoes/clown_shoes)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e5a8cb3c170..791c1b64d88 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -322,15 +322,16 @@ on_fire = 0 suiciding = 0 buckled = initial(src.buckled) - + if(iscarbon(src)) var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) - // restore all of the human's blood + // restore all of the human's blood and reset their shock stage if(ishuman(src)) var/mob/living/carbon/human/human_mob = src human_mob.restore_blood() + human_mob.shock_stage = 0 restore_all_organs() if(stat == 2) @@ -757,6 +758,6 @@ else if(!on && floating) animate(src, pixel_y = initial(pixel_y), time = 10) floating = 0 - + /mob/living/proc/can_use_vents() return "You can't fit into that vent." diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index e6d7f2db875..353ea877b4c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -516,7 +516,12 @@ else if(M_TK in user.mutations) user << "You telekinetically remove the light [fitting]." else - user << "You try to remove the light [fitting], but it's too hot and you don't want to burn your hand." + user << "You try to remove the light [fitting], but you burn your hand on it!" + + var/datum/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") + if(affecting.take_damage( 0, 5 )) // 5 burn damage + H.UpdateDamageIcon() + H.updatehealth() return // if burned, don't remove the light else user << "You remove the light [fitting]." diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 8d6a342c995..bbad97bf8bd 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 361478ff073..1dbc7fc6642 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ