diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 4fbb941c9a2..bd18d50835d 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -5896,7 +5896,7 @@
"cjt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"cju" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkblue"},/area/medical/surgery1)
"cjv" = (/obj/structure/closet/wardrobe/medic_white,/obj/item/clothing/head/surgery/blue,/obj/item/clothing/head/surgery/blue,/obj/item/clothing/head/surgery/green,/obj/item/clothing/head/surgery/green,/obj/item/clothing/head/surgery/purple,/obj/item/clothing/head/surgery/purple,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/suit/storage/fr_jacket,/obj/item/clothing/under/rank/medical/blue,/obj/item/clothing/under/rank/medical/green,/obj/item/clothing/under/rank/medical/purple,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/medbreak)
-"cjw" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = -5},/obj/machinery/holosign_switch{pixel_x = -23; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/medical/surgery1)
+"cjw" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = -5},/obj/machinery/holosign_switch{id = "surgery1"; pixel_x = -23; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/medical/surgery1)
"cjx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/surgery1)
"cjy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkblue"},/area/medical/surgery1)
"cjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/ward)
diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm
index 1ca1fe01036..13ee3c9e5ef 100644
--- a/code/__HELPERS/mobs.dm
+++ b/code/__HELPERS/mobs.dm
@@ -372,6 +372,27 @@ This is always put in the attack log.
if(progress)
qdel(progbar)
+#define DOAFTERONCE_MAGIC "Magic~~"
+GLOBAL_LIST_INIT(do_after_once_tracker, list())
+/proc/do_after_once(mob/user, delay, needhand = 1, atom/target = null, progress = 1, attempt_cancel_message = "Attempt cancelled.")
+ if(!user || !target)
+ return
+
+ var/cache_key = "[user.UID()][target.UID()]"
+ if(GLOB.do_after_once_tracker[cache_key])
+ GLOB.do_after_once_tracker[cache_key] = DOAFTERONCE_MAGIC
+ to_chat(user, "[attempt_cancel_message]")
+ return FALSE
+ GLOB.do_after_once_tracker[cache_key] = TRUE
+ . = do_after(user, delay, needhand, target, progress, extra_checks = CALLBACK(GLOBAL_PROC, .proc/do_after_once_checks, cache_key))
+ GLOB.do_after_once_tracker[cache_key] = FALSE
+
+/proc/do_after_once_checks(cache_key)
+ if(GLOB.do_after_once_tracker[cache_key] && GLOB.do_after_once_tracker[cache_key] == DOAFTERONCE_MAGIC)
+ GLOB.do_after_once_tracker[cache_key] = FALSE
+ return FALSE
+ return TRUE
+
/proc/is_species(A, species_datum)
. = FALSE
if(ishuman(A))
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 2db64b30bdb..4d8bd9432f4 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -923,6 +923,14 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
containername = "machine prototype crate"
access = access_research
+/datum/supply_packs/science/oil
+ name = "Oil Tank Crate"
+ contains = list(/obj/structure/reagent_dispensers/oil,
+ /obj/item/reagent_containers/food/drinks/oilcan)
+ cost = 10
+ containertype = /obj/structure/largecrate
+ containername = "oil tank crate"
+
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Organic /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm
index 96d4a784f45..a950ec7a9c9 100644
--- a/code/game/gamemodes/changeling/powers/headcrab.dm
+++ b/code/game/gamemodes/changeling/powers/headcrab.dm
@@ -30,9 +30,9 @@
for(var/mob/living/silicon/S in range(2,user))
to_chat(S, "Your sensors are disabled by a shower of blood!")
S.Weaken(3)
- var/turf = get_turf(user)
+ var/new_location = user.drop_location()
spawn(5) // So it's not killed in explosion
- var/mob/living/simple_animal/hostile/headcrab/crab = new(turf)
+ var/mob/living/simple_animal/hostile/headcrab/crab = new(new_location)
for(var/obj/item/organ/internal/I in organs)
I.loc = crab
crab.origin = M
diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm
index bfa2820d9b3..f49d91c53b3 100644
--- a/code/game/machinery/computer/store.dm
+++ b/code/game/machinery/computer/store.dm
@@ -145,6 +145,9 @@ th.cost.toomuch {background:maroon;}
var/itemID = text2num(href_list["buy"])
var/datum/storeitem/item = centcomm_store.items[itemID]
var/sure = alert(usr,"Are you sure you wish to purchase [item.name] for $[item.cost]?","You sure?","Yes","No") in list("Yes","No")
+ if(!Adjacent(usr))
+ to_chat(usr, "You are not close enough to do that.")
+ return
if(sure=="No")
updateUsrDialog()
return
diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm
index 556cba8e330..279a3e197dc 100644
--- a/code/game/machinery/door_control.dm
+++ b/code/game/machinery/door_control.dm
@@ -82,7 +82,7 @@
add_fingerprint(user)
if(normaldoorcontrol)
- for(var/obj/machinery/door/airlock/D in range(range))
+ for(var/obj/machinery/door/airlock/D in range(range, src))
if(D.id_tag == id)
if(specialfunctions & OPEN)
if(D.density)
@@ -113,7 +113,7 @@
D.safe = 1
else
- for(var/obj/machinery/door/poddoor/M in range(range))
+ for(var/obj/machinery/door/poddoor/M in range(range, src))
if(M.id_tag == id)
if(M.density)
spawn( 0 )
diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm
index 4fff66a43e7..17fae9df6f6 100644
--- a/code/game/machinery/poolcontroller.dm
+++ b/code/game/machinery/poolcontroller.dm
@@ -62,7 +62,7 @@
continue
handleTemp(M) //handles pool temp effects on the swimmers
if(ishuman(M)) //Only human types will drown, to keep things simple for non-human mobs that live in the water
- handleDrowning(M)
+ handleDrowning(M)
/obj/machinery/poolcontroller/proc/cleanPool()
for(var/obj/effect/decal/cleanable/decal in decalinpool) //Cleans up cleanable decals like blood and such
@@ -79,11 +79,11 @@
to_chat(M, "The water is searing hot!")
if(WARM) //Warm the mob.
- if(prob(50)) //inform the mob of warm water half the time
+ if(prob(5)) //inform the mob of warm water occasionally
to_chat(M, "The water is quite warm.")//Inform the mob it's warm water.
if(COOL) //Cool the mob.
- if(prob(50)) //inform the mob of cold water half the time
+ if(prob(5)) //inform the mob of cold water occasionally
to_chat(M, "The water is chilly.")//Inform the mob it's chilly water.
if(FRIGID) //YOU'RE AS COLD AS ICE
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 1cdecf3f2a1..c3c89231664 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -838,20 +838,21 @@
else if(iswelder(W) && user.a_intent != INTENT_HARM)
var/obj/item/weldingtool/WT = W
- if(healthYou repair the damaged gas tank.")
- else
- user.visible_message("[user] repairs some damage to [name].")
- health += min(10, initial(health)-health)
+ user.visible_message("[user] starts repairing some damage to [name].", "You start repairing some damage to [name]")
+ if(do_after_once(user, 15 * WT.toolspeed, target = src, attempt_cancel_message = "You stop repairing [name]."))
+ if(internal_damage & MECHA_INT_TANK_BREACH)
+ clearInternalDamage(MECHA_INT_TANK_BREACH)
+ user.visible_message("[user] repairs the damaged gas tank.", "You repair the damaged gas tank.")
+ else
+ user.visible_message("[user] repairs some damage to [name].", "You repair some damage to [name].")
+ health += min(20, initial(health) - health)
else
to_chat(user, "The welder must be on for this task!")
- return 1
else
to_chat(user, "The [name] is at full integrity!")
- return 1
+ return TRUE
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
if(!user.unEquip(W))
@@ -1494,4 +1495,4 @@
visual_effect_icon = ATTACK_EFFECT_MECHFIRE
else if(damtype == TOX)
visual_effect_icon = ATTACK_EFFECT_MECHTOXIN
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 8b53e3d8ed7..43515ed5241 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -47,6 +47,7 @@
message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN))
if(!message)
return
+ message = user.handle_speech_problems(message)[1]
message = capitalize(message)
if((loc == user && !user.incapacitated()))
if(emagged)
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 4bef1cbb324..064b66b78f4 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -207,7 +207,7 @@
/obj/item/borg/upgrade/syndicate
name = "illegal equipment module"
- desc = "Unlocks the hidden, deadlier functions of a cyborg"
+ desc = "Unlocks the hidden, deadlier functions of a cyborg. Also prevents emag subversion."
icon_state = "cyborg_upgrade3"
origin_tech = "combat=4;syndicate=1"
require_module = 1
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index e38350a0136..faf86394dba 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -64,26 +64,26 @@
if(C == user)
do_climb(user)
+/obj/structure/proc/density_check()
+ for(var/obj/O in orange(0, src))
+ if(O.density && !istype(O, /obj/machinery/door/window)) //Ignores windoors, as those already block climbing, otherwise a windoor on the opposite side of a table would prevent climbing.
+ return O
+ var/turf/T = get_turf(src)
+ if(T.density)
+ return T
+ return null
/obj/structure/proc/do_climb(var/mob/living/user)
-
if(!can_touch(user) || !climbable)
return
+ var/blocking_object = density_check()
+ if(blocking_object)
+ to_chat(user, "You cannot climb [src], as it is blocked by \a [blocking_object]!")
+ return
- for(var/obj/O in range(0, src))
- if(O.density == 1 && O != src && !istype(O, /obj/machinery/door/window)) //Ignores windoors, as those already block climbing, otherwise a windoor on the opposite side of a table would prevent climbing.
- to_chat(user, "You cannot climb [src], as it is blocked by \a [O]!")
- return
- for(var/turf/T in range(0, src))
- if(T.density == 1)
- to_chat(user, "You cannot climb [src], as it is blocked by \a [T]!")
- return
var/turf/T = src.loc
if(!T || !istype(T)) return
- var/obj/machinery/door/poddoor/shutters/S = locate() in T.contents
- if(S && S.density) return
-
usr.visible_message("[user] starts climbing onto \the [src]!")
climber = user
if(!do_after(user, 50, target = src))
@@ -94,11 +94,6 @@
climber = null
return
- S = locate() in T.contents
- if(S && S.density)
- climber = null
- return
-
usr.loc = get_turf(src)
if(get_turf(user) == get_turf(src))
usr.visible_message("[user] climbs onto \the [src]!")
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 3ec50187bfb..999e90cd89f 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -180,12 +180,16 @@
var/obj/item/grab/G = I
if(G.affecting.buckled)
to_chat(user, "[G.affecting] is buckled to [G.affecting.buckled]!")
- return 0
+ return FALSE
if(G.state < GRAB_AGGRESSIVE)
to_chat(user, "You need a better grip to do that!")
- return 0
+ return FALSE
if(!G.confirm())
- return 0
+ return FALSE
+ var/blocking_object = density_check()
+ if(blocking_object)
+ to_chat(user, "You cannot do this there is \a [blocking_object] in the way!")
+ return FALSE
G.affecting.forceMove(get_turf(src))
G.affecting.Weaken(2)
item_placed(G.affecting)
@@ -193,7 +197,7 @@
"[G.assailant] pushes [G.affecting] onto [src].")
add_attack_logs(G.assailant, G.affecting, "Pushed onto a table")
qdel(I)
- return 1
+ return TRUE
qdel(I)
/obj/structure/table/attackby(obj/item/I, mob/user, params)
diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm
index a2209a172ff..ef1512858d4 100644
--- a/code/modules/arcade/prize_datums.dm
+++ b/code/modules/arcade/prize_datums.dm
@@ -9,6 +9,9 @@ var/global/datum/prizes/global_prizes = new
prizes += new itempath()
/datum/prizes/proc/PlaceOrder(var/obj/machinery/prize_counter/prize_counter, var/itemID)
+ if(!prize_counter.Adjacent(usr))
+ to_chat(usr, "You need to be closer!")
+ return
if(!prize_counter)
return 0
var/datum/prize_item/item = global_prizes.prizes[itemID]
diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm
index 01e05762eba..f8bf515ce6b 100644
--- a/code/modules/hydroponics/grown/chili.dm
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -28,11 +28,11 @@
// Ice Chili
/obj/item/seeds/chili/ice
- name = "pack of ice pepper seeds"
- desc = "These seeds grow into ice pepper plants."
+ name = "pack of chilly pepper seeds"
+ desc = "These seeds grow into chilly pepper plants."
icon_state = "seed-icepepper"
species = "chiliice"
- plantname = "Ice Pepper Plants"
+ plantname = "Chilly Pepper Plants"
product = /obj/item/reagent_containers/food/snacks/grown/icepepper
lifespan = 25
maturation = 4
@@ -43,7 +43,7 @@
/obj/item/reagent_containers/food/snacks/grown/icepepper
seed = /obj/item/seeds/chili/ice
- name = "ice pepper"
+ name = "chilly pepper"
desc = "It's a mutant strain of chili"
icon_state = "icepepper"
filling_color = "#0000CD"
@@ -73,4 +73,4 @@
icon_state = "ghostchilipepper"
filling_color = "#F8F8FF"
bitesize_mod = 4
- origin_tech = "biotech=4;magnets=5"
\ No newline at end of file
+ origin_tech = "biotech=4;magnets=5"
diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm
index 55c4db791ac..473715367b4 100644
--- a/code/modules/mob/living/carbon/give.dm
+++ b/code/modules/mob/living/carbon/give.dm
@@ -29,7 +29,7 @@
if("Yes")
if(!I)
return
- if(!Adjacent(usr))
+ if(!Adjacent(target))
to_chat(usr, " You need to stay in reaching distance while giving an object.")
to_chat(target, " [usr.name] moved too far away.")
return
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 0a24b6414ca..76ac7ab9886 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -132,7 +132,7 @@
to_chat(user, "The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.")
return
- if(!allowed(usr))
+ if(!allowed(W))
to_chat(user, "Access denied.")
return
@@ -158,7 +158,7 @@
if(emagged)
return
- if(allowed(usr))
+ if(allowed(W))
shut_down()
else
to_chat(user, "Access denied.")
@@ -223,6 +223,10 @@
health = 35 - (getBruteLoss() + getFireLoss())
update_stat("updatehealth([reason])")
+/mob/living/silicon/robot/drone/death(gibbed)
+ . = ..(gibbed)
+ ghostize(can_reenter_corpse = 0)
+
//CONSOLE PROCS
/mob/living/silicon/robot/drone/proc/law_resync()
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 73c9f9459dc..900d3d4bdb8 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -71,7 +71,8 @@
update_icon()
- attack_self(usr) //Update the browsed page.
+ if(winget(usr, "[name]", "is-visible") == "true") // NOT MY FAULT IT IS A BUILT IN PROC PLEASE DO NOT HIT ME
+ attack_self(usr) //Update the browsed page.
add_fingerprint(usr)
return
diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm
index 1a7be3748b8..35b67fa2a8b 100644
--- a/code/modules/reagents/chemistry/reagents/drink_cold.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm
@@ -163,12 +163,12 @@
/datum/reagent/consumable/drink/cold/rewriter
name = "Rewriter"
- description = "The secert of the sanctuary of the Libarian..."
+ description = "The secret of the sanctuary of the Librarian..."
id = "rewriter"
color = "#485000" // rgb:72, 080, 0
drink_icon = "rewriter"
drink_name = "Rewriter"
- drink_desc = "The secert of the sanctuary of the Libarian..."
+ drink_desc = "The secret of the sanctuary of the Librarian..."
taste_message = "coffee...soda?"
/datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M)
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index daf799f31d2..f6474c4a16b 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -46,7 +46,7 @@
T.nicely_link_to_other_stuff(src)
//When the disposalsoutlet is forcefully moved. Due to meteorshot (not the recall spell)
-/obj/machinery/disposal/Moved(atom/OldLoc, Dir)
+/obj/machinery/disposal/Moved(atom/OldLoc, Dir)
. = ..()
eject()
var/ptype = istype(src, /obj/machinery/disposal/deliveryChute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is
@@ -1220,24 +1220,27 @@
// if not entering from disposal bin,
// transfer to linked object (outlet or bin)
-/obj/structure/disposalpipe/trunk/transfer(var/obj/structure/disposalholder/H)
-
+/obj/structure/disposalpipe/trunk/transfer(obj/structure/disposalholder/H)
+ if(!H)
+ return
if(H.dir == DOWN) // we just entered from a disposer
return ..() // so do base transfer proc
// otherwise, go to the linked object
- if(linked)
- var/obj/structure/disposaloutlet/O = linked
- if(istype(O) && (H))
- O.expel(H) // expel at outlet
- else
- var/obj/machinery/disposal/D = linked
- if(H)
- D.expel(H) // expel at disposal
- else
- if(H)
- src.expel(H, src.loc, 0) // expel at turf
- return null
-
+ if(!linked)
+ expel(H, loc, FALSE) // expel at turf
+ else if(istype(linked, /obj/structure/disposaloutlet))
+ var/obj/structure/disposaloutlet/DO = linked
+ for(var/atom/movable/AM in H)
+ AM.forceMove(DO)
+ qdel(H)
+ H.vent_gas(loc)
+ DO.expel()
+ else if(istype(linked, /obj/machinery/disposal))
+ var/obj/machinery/disposal/D = linked
+ H.forceMove(D)
+ D.expel(H) // expel at disposal
+ else //just in case
+ expel(H, loc, FALSE)
// nextdir
/obj/structure/disposalpipe/trunk/nextdir(var/fromdir)
@@ -1283,24 +1286,29 @@
if(T)
T.nicely_link_to_other_stuff(src)
- // expel the contents of the holder object, then delete it
- // called when the holder exits the outlet
-/obj/structure/disposaloutlet/proc/expel(var/obj/structure/disposalholder/H, animation = 1)
+/obj/structure/disposaloutlet/Destroy()
+ if(linkedtrunk)
+ linkedtrunk.remove_trunk_links()
+ expel(FALSE)
+ return ..()
+
+
+// expel the contents of the outlet
+/obj/structure/disposaloutlet/proc/expel(animation = TRUE)
if(animation)
flick("outlet-open", src)
playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0)
sleep(20) //wait until correct animation frame
playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0)
- if(H)
- for(var/atom/movable/AM in H)
- AM.forceMove(loc)
- AM.pipe_eject(dir)
- if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z
- spawn(5)
- if(AM)
- AM.throw_at(target, 3, 1)
- H.vent_gas(src.loc)
- qdel(H)
+ for(var/atom/movable/AM in contents)
+ AM.forceMove(loc)
+ AM.pipe_eject(dir)
+ if(istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z
+ return
+ spawn(5)
+ if(QDELETED(AM))
+ return
+ AM.throw_at(target, 3, 1)
/obj/structure/disposaloutlet/attackby(var/obj/item/I, var/mob/user, params)
@@ -1339,7 +1347,7 @@
return
//When the disposalsoutlet is forcefully moved. Due to meteorshot or the recall item spell for instance
-/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir)
+/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir)
. = ..()
var/turf/T = OldLoc
if(T.intact)
@@ -1356,11 +1364,6 @@
C.density = 1
qdel(src)
-/obj/structure/disposaloutlet/Destroy()
- if(linkedtrunk)
- linkedtrunk.remove_trunk_links()
- return ..()
-
// called when movable is expelled from a disposal pipe or outlet
// by default does nothing, override for special behaviour
diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm
index ed2e9154a10..bb9c2d41fa1 100644
--- a/code/modules/spacepods/spacepod.dm
+++ b/code/modules/spacepods/spacepod.dm
@@ -199,6 +199,9 @@
deal_damage(P.damage)
P.on_hit(src)
+/obj/spacepod/AllowDrop()
+ return TRUE
+
/obj/spacepod/blob_act()
deal_damage(30)
return
diff --git a/html/changelog.html b/html/changelog.html
index 5b33bff5da7..d4f91352c4f 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,64 @@
-->
+
01 November 2018
+
Citinited updated:
+
+ - A disposal nullspace bug.
+
+
Farie82 updated:
+
+ - Repairing a mech now says you're doing it to the others balance: Mechs now take time to repair. No more spam repairing
+
+
Mitchs98 updated:
+
+ - Lowers the spam you receive from entering a warm or cold pool. You will no longer receive 'The water is quite warm.' nearly every few seconds.
+ - Headslugs no longer teleport out of closed lockers upon bursting.
+
+
Warior4356 updated:
+
+ - Ghosts can no longer re-enter a drone that has been shut down.
+
+
+
31 October 2018
+
Arkatos updated:
+
+ - Fixes Rewriter drink description typo.
+
+
Jountax updated:
+
+ - Renamed Ice Peppers to Chilly Peppers.
+
+
TatsumakiMagi updated:
+
+ - fixed merch shop, arcade shop and the give command working from a distance
+
+
+
30 October 2018
+
Dave-TH updated:
+
+ - Adding a paper to a paper bundle no longer automatically opens the bundle.
+
+
Farie82 updated:
+
+ - Items dropped in a space pod are now under the seat. No more magical dropping out of the pod
+ - Cargo can now buy oil tanks.
+
+
Warior4356 updated:
+
+ - Megaphone now handle speech impediments properly
+ - Swiping an ID through a drone no longer causes a runtime and correctly shuts it down
+ - Silicons are now able to open a door linked to a button regardless of proximity
+
+
uc_guy updated:
+
+ - You can no longer table people through walls/doors/shutters.
+
+
warior4356 updated:
+
+ - fixed the holosign in surgery1
+
+
29 October 2018
Farie82 updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index c30a1d16165..4df1eaa1708 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -7776,3 +7776,39 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- bugfix: Mech speech bubbles should now follow the mech.
gatchapod:
- bugfix: Fixed airlocks electrocuting people remotely through open UI
+2018-10-30:
+ Dave-TH:
+ - bugfix: Adding a paper to a paper bundle no longer automatically opens the bundle.
+ Farie82:
+ - bugfix: Items dropped in a space pod are now under the seat. No more magical dropping
+ out of the pod
+ - rscadd: Cargo can now buy oil tanks.
+ Warior4356:
+ - bugfix: Megaphone now handle speech impediments properly
+ - bugfix: Swiping an ID through a drone no longer causes a runtime and correctly
+ shuts it down
+ - bugfix: Silicons are now able to open a door linked to a button regardless of
+ proximity
+ uc_guy:
+ - bugfix: You can no longer table people through walls/doors/shutters.
+ warior4356:
+ - bugfix: fixed the holosign in surgery1
+2018-10-31:
+ Arkatos:
+ - spellcheck: Fixes Rewriter drink description typo.
+ Jountax:
+ - tweak: Renamed Ice Peppers to Chilly Peppers.
+ TatsumakiMagi:
+ - bugfix: fixed merch shop, arcade shop and the give command working from a distance
+2018-11-01:
+ Citinited:
+ - bugfix: A disposal nullspace bug.
+ Farie82:
+ - tweak: 'Repairing a mech now says you''re doing it to the others balance: Mechs
+ now take time to repair. No more spam repairing'
+ Mitchs98:
+ - tweak: Lowers the spam you receive from entering a warm or cold pool. You will
+ no longer receive 'The water is quite warm.' nearly every few seconds.
+ - bugfix: Headslugs no longer teleport out of closed lockers upon bursting.
+ Warior4356:
+ - bugfix: Ghosts can no longer re-enter a drone that has been shut down.