From 0e8619a2028af421b382b14ed16afd9d4f4232ab Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 03:39:52 -0400 Subject: [PATCH 01/44] Destroy Pass III --- code/game/atoms.dm | 7 ------- code/game/atoms_movable.dm | 10 +++++++++- code/game/objects/effects/effect_system.dm | 3 +-- code/game/objects/items.dm | 14 +++----------- code/modules/events/tgevents/vent_clog.dm | 2 +- code/modules/projectiles/guns/projectile.dm | 2 +- code/modules/reagents/Chemistry-Holder.dm | 19 +++++++------------ code/modules/reagents/Chemistry-Reagents.dm | 5 +---- code/modules/reagents/reagent_containers.dm | 4 ---- 9 files changed, 23 insertions(+), 43 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 67e148b32b3..1be033e2a4b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -31,13 +31,6 @@ /atom/Destroy() set_opacity(0) - - - if(reagents) - qdel(reagents) - reagents = null - - // Idea by ChuckTheSheep to make the object even more unreferencable. invisibility = 101 return ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index cceb4db37c3..86f9fd93271 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -23,8 +23,16 @@ /atom/movable/Destroy() - ..() + if(reagents) + qdel(reagents) + for(var/atom/movable/AM in contents) + qdel(AM) loc = null + if (pulledby) + if (pulledby.pulling == src) + pulledby.pulling = null + pulledby = null + ..() return QDEL_HINT_QUEUE // Used in shuttle movement and AI eye stuff. diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3e4abc7c5b7..47cffd8561b 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -42,8 +42,7 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/proc/delete() loc = null if(reagents) - reagents.my_atom = null - reagents.delete() + qdel(reagents) return diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e1b8e41baf8..c8056e3d9d5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -52,17 +52,9 @@ var/list/species_fit = null //This object has a different appearance when worn by these species /obj/item/Destroy() - if(istype(src.loc, /mob)) - var/mob/H = src.loc - H.unEquip(src) // items at the very least get unequipped from their mob before being deleted - if(reagents && istype(reagents)) - reagents.my_atom = null - reagents.delete() - if(hasvar(src, "holder")) - src:holder = null - /* BROKEN, FUCK BYOND - if(hasvar(src, "my_atom")) - src:my_atom = null*/ + if(ismob(loc)) + var/mob/m = loc + m.unEquip(src, 1) return ..() /obj/item/device diff --git a/code/modules/events/tgevents/vent_clog.dm b/code/modules/events/tgevents/vent_clog.dm index 4fac3d0f9fa..092bc544484 100755 --- a/code/modules/events/tgevents/vent_clog.dm +++ b/code/modules/events/tgevents/vent_clog.dm @@ -33,4 +33,4 @@ smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start(3) - R.delete() //GC the reagents + qdel(R) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 94d4869c5ec..81e47aaceed 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -41,7 +41,7 @@ if(AC.reagents && AC.BB.reagents) var/datum/reagents/casting_reagents = AC.reagents casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts/bullets - casting_reagents.delete() + qdel(casting_reagents) in_chamber = AC.BB //Load projectile into chamber. AC.BB.loc = src //Set projectile loc to gun. AC.update_icon() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 2acbe837400..680669079b2 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -601,12 +601,6 @@ datum //world << "reagent data set ([reagent_id])" D.data = new_data - delete() - for(var/datum/reagent/R in reagent_list) - R.holder = null - if(my_atom) - my_atom.reagents = null - copy_data(var/datum/reagent/current_reagent) if (!current_reagent || !current_reagent.data) return null if (!istype(current_reagent.data, /list)) return current_reagent.data @@ -636,10 +630,11 @@ atom/proc/create_reagents(var/max_vol) reagents.my_atom = src /datum/reagents/Destroy() - for(var/datum/reagent/reagent in reagent_list) - qdel(reagent) - - if(my_atom) - my_atom = null - + processing_objects.Remove(src) + for(var/datum/reagent/R in reagent_list) + qdel(R) + reagent_list.Cut() + reagent_list = null + if(my_atom && my_atom.reagents == src) + my_atom.reagents = null return ..() \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9ce3ac077ba..c3191029e4a 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3235,8 +3235,5 @@ datum /datum/reagent/Destroy() - if(holder) - holder.reagent_list -= src - holder = null - + holder = null return ..() diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 017216887f4..aeda3fcbec3 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -27,10 +27,6 @@ R.my_atom = src processing_objects.Add(src) -/obj/item/weapon/reagent_containers/Destroy() - processing_objects.Remove(src) - return ..() - /obj/item/weapon/reagent_containers/process() if(reagents) reagents.reagent_on_tick() From fa4fa1237e9689816fab6fc2e8bf60e1a574cc20 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Wed, 8 Jul 2015 04:34:25 -0400 Subject: [PATCH 02/44] Cold Reactions and Applejack Adds the ability to make a chemical reaction only occur when at or below a specified temperature. Adds new reaction for freezing water into ice - Must be at or below 270K to turn water to ice Adds two new reagents/drinks: Applejack and Jack Rose cocktail -Applejack is obtained by freezing cider at or below 270K - Applejack is slightly more potent than cider, due to it's alcohol concentration being higher - Jack Rose is a new mixed drink that is 4 parts Applejack, 1 part Lemon Juice Only Ice and Applejack utilize the cold reactions at this time, but the functionality is in place for future reactions. - This should allow coders more flexibility with defining new reactions that may realistically occur at low temperatures. Renamed the existing "required_temp" variable for reactions to "min_temp" to better communicate it's purpose and differentiate it from the new "max_temp" variable for cold reactions. --- code/modules/reagents/Chemistry-Holder.dm | 9 ++--- code/modules/reagents/Chemistry-Recipes.dm | 14 ++++++-- code/modules/reagents/newchem/drinks.dm | 35 +++++++++++++++++-- code/modules/reagents/newchem/drugs.dm | 8 ++--- code/modules/reagents/newchem/food.dm | 6 ++-- code/modules/reagents/newchem/medicine.dm | 10 +++--- code/modules/reagents/newchem/other.dm | 6 ++-- code/modules/reagents/newchem/pyro.dm | 14 ++++---- code/modules/reagents/newchem/toxins.dm | 10 +++--- .../food/drinks/drinkingglass.dm | 8 +++++ .../research/xenoarchaeology/chemistry.dm | 2 +- 11 files changed, 86 insertions(+), 36 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 2acbe837400..09a6233abeb 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -257,7 +257,8 @@ datum var/matching_container = 0 var/matching_other = 0 var/list/multipliers = new/list() - var/required_temp = C.required_temp + var/min_temp = C.min_temp //Minimum temperature required for the reaction to occur (heat to/above this) + var/max_temp = C.max_temp //Maximum temperature allowed for the reaction to occur (cool to/below this) for(var/B in C.required_reagents) if(!has_reagent(B, C.required_reagents[B])) break total_matching_reagents++ @@ -288,10 +289,10 @@ datum if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this matching_other = 1 - if(required_temp == 0) - required_temp = chem_temp + if(min_temp == 0) + min_temp = chem_temp - if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp >= required_temp) + if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp <= max_temp && chem_temp >= min_temp) var/multiplier = min(multipliers) var/preserved_data = null for(var/B in C.required_reagents) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 533ceb1b555..537eac4f6cc 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -14,7 +14,8 @@ datum var/result_amount = 0 var/secondary = 0 // set to nonzero if secondary reaction var/list/secondary_results = list() //additional reagents produced by the reaction - var/required_temp = 0 + var/min_temp = 0 //Minimum temperature required for the reaction to occur (heat to/above this). min_temp = 0 means no requirement + var/max_temp = 9999 //Maximum temperature allowed for the reaction to occur (cool to/below this). var/mix_message = "The solution begins to bubble." var/mix_sound = 'sound/effects/bubbles.ogg' var/no_message = 0 @@ -64,6 +65,15 @@ datum result_amount = 3 */ + ice + name = "Ice" + id = "ice" + result = "ice" + required_reagents = list("water" = 1) + result_amount = 1 + max_temp = 273 + mix_message = "Ice forms as the water freezes." + sterilizine name = "Sterilizine" id = "sterilizine" @@ -352,7 +362,7 @@ datum result = "diethylamine" required_reagents = list ("ammonia" = 1, "ethanol" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "A horrible smell pours forth from the mixture." space_cleaner diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm index b126d460184..fe920178acf 100644 --- a/code/modules/reagents/newchem/drinks.dm +++ b/code/modules/reagents/newchem/drinks.dm @@ -1,4 +1,4 @@ -datum/reagent/ginsonic +/datum/reagent/ginsonic name = "Gin and sonic" id = "ginsonic" description = "GOTTA GET CRUNK FAST BUT LIQUOR TOO SLOW" @@ -13,7 +13,7 @@ datum/reagent/ginsonic result_amount = 2 mix_message = "The drink turns electric blue and starts quivering violently." -datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) +/datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(prob(10)) M.reagents.add_reagent("methamphetamine",1.2) @@ -30,3 +30,34 @@ datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) M << "Way Past Cool!" ..() return + +/datum/reagent/ethanol/applejack + name = "Applejack" + id = "applejack" + description = "A highly concentrated alcoholic beverage made by repeatedly freezing cider and removing the ice." + color = "#997A00" + slur_start = 30 + brawl_start = 40 + confused_start = 100 + +/datum/chemical_reaction/applejack + name = "applejack" + id = "applejack" + result = "applejack" + required_reagents = list("cider" = 2) + max_temp = 270 + result_amount = 1 + mix_message = "The drink darkens as the water freezes, leaving the concentrated cider behind." + +/datum/reagent/ethanol/jackrose + name = "Jack Rose" + id = "jackrose" + description = "A classic cocktail that had fallen out of fashion, but never out of taste," + color = "#664300" + +/datum/chemical_reaction/jackrose + name = "jackrose" + id = "jackrose" + result = "jackrose" + required_reagents = list("applejack" = 4, "lemonjuice" = 1) + result_amount = 5 diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 3ace84f1a5c..c33bf039808 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -85,7 +85,7 @@ required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "fuel" = 1) result_amount = 5 mix_message = "The mixture violently reacts, leaving behind a few crystalline shards." - required_temp = 390 + min_temp = 390 /datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) @@ -150,7 +150,7 @@ required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "fuel" = 1) result_amount = 6 mix_message = "The mixture dries into a pale blue powder." - required_temp = 380 + min_temp = 380 /datum/reagent/methamphetamine name = "Methamphetamine" @@ -228,7 +228,7 @@ result = "methamphetamine" required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) result_amount = 4 - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/saltpetre name = "saltpetre" @@ -279,7 +279,7 @@ result = "bath_salts" required_reagents = list("????" = 1, "saltpetre" = 1, "msg" = 1, "cleaner" = 1, "enzyme" = 1, "mugwort" = 1, "mercury" = 1) result_amount = 6 - required_temp = 374 + min_temp = 374 mix_message = "Tiny cubic crystals precipitate out of the mixture. Huh." /datum/reagent/bath_salts/overdose_process(var/mob/living/M as mob) diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index 39f2a5b6234..5c3c6e5547f 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -61,7 +61,7 @@ datum/reagent/corn_starch result = "corn_syrup" required_reagents = list("corn_starch" = 1, "sacid" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "The mixture forms a viscous, clear fluid!" datum/reagent/corn_syrup @@ -391,7 +391,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume) result = "hydrogenated_soybeanoil" required_reagents = list("soybeanoil" = 1, "hydrogen" = 1) result_amount = 2 - required_temp = 520 + min_temp = 520 mix_message = "The mixture emits a burnt, oily smell." /datum/reagent/meatslurry @@ -430,7 +430,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume) result = "gravy" required_reagents = list("porktonium" = 1, "corn_starch" = 1, "milk" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 mix_message = "The substance thickens and takes on a meaty odor." /datum/reagent/beff diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index ebba2e3c969..98e3bc2cc16 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -124,7 +124,7 @@ datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob) required_reagents = list("ash" = 1, "sodiumchloride" = 1) result_amount = 2 mix_message = "The mixture yields a fine black powder." - required_temp = 380 + min_temp = 380 /datum/chemical_reaction/silver_sulfadiazine name = "Silver Sulfadiazine" @@ -210,7 +210,7 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob) result = "calomel" required_reagents = list("mercury" = 1, "chlorine" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "Stinging vapors rise from the solution." datum/reagent/potass_iodide @@ -349,7 +349,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob) result = "perfluorodecalin" required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1) result_amount = 3 - required_temp = 370 + min_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." datum/reagent/ephedrine @@ -687,7 +687,7 @@ datum/reagent/life result = null required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/life/on_reaction(var/datum/reagents/holder, var/created_volume) chemical_mob_spawn(holder, 1, "Life") @@ -1007,5 +1007,5 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob) result = "liquid_solder" required_reagents = list("ethanol" = 1, "copper" = 1, "silver" = 1) result_amount = 3 - required_temp = 370 + min_temp = 370 mix_message = "The solution gently swirls with a metallic sheen." diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm index 64f2fa56419..17245f0a9ee 100644 --- a/code/modules/reagents/newchem/other.dm +++ b/code/modules/reagents/newchem/other.dm @@ -100,7 +100,7 @@ datum/reagent/acetone result = "ash" required_reagents = list("oil" = 1) result_amount = 0.5 - required_temp = 480 + min_temp = 480 mix_sound = null no_message = 1 @@ -142,7 +142,7 @@ datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume) result = null required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 datum/reagent/corgium name = "Corgium" @@ -164,7 +164,7 @@ datum/reagent/corgium result = null required_reagents = list("egg" = 1, "colorful_reagent" = 1, "chicken_soup" = 1, "strange_reagent" = 1, "blood" = 1) result_amount = 5 - required_temp = 374 + min_temp = 374 mix_message = "The substance turns an airy sky-blue and foams up into a new shape." /datum/chemical_reaction/flaptonium/on_reaction(var/datum/reagents/holder, var/created_volume) diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 2f245243bb5..9a978acc26f 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -34,7 +34,7 @@ result = "clf3" required_reagents = list("chlorine" = 1, "fluorine" = 3) result_amount = 2 - required_temp = 424 + min_temp = 424 /datum/reagent/clf3/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -94,7 +94,7 @@ id = "sorium_vortex" result = null required_reagents = list("sorium" = 1) - required_temp = 474 + min_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -126,7 +126,7 @@ id = "ldm_vortex" result = null required_reagents = list("liquid_dark_matter" = 1) - required_temp = 474 + min_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -177,7 +177,7 @@ result = null required_reagents = list("blackpowder" = 1) result_amount = 1 - required_temp = 474 + min_temp = 474 no_message = 1 mix_sound = null @@ -240,7 +240,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit id = "flash_powder_flash" result = null required_reagents = list("flash_powder" = 1) - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/flash_powder_flash/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) @@ -324,7 +324,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit name = "smoke_powder_smoke" id = "smoke_powder_smoke" required_reagents = list("smoke_powder" = 1) - required_temp = 374 + min_temp = 374 secondary = 1 result_amount = 1 forbidden_reagents = list() @@ -350,7 +350,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit id = "sonic_powder_deafen" result = null required_reagents = list("sonic_powder" = 1) - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/sonic_powder_deafen/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index f7b7d3c3977..4902d8d0eee 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -80,7 +80,7 @@ datum/reagent/formaldehyde/on_mob_life(var/mob/living/M as mob) result = "formaldehyde" required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) result_amount = 3 - required_temp = 420 + min_temp = 420 mix_message = "Ugh, it smells like the morgue in here." datum/reagent/venom @@ -141,7 +141,7 @@ datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob) result = "neurotoxin2" required_reagents = list("space_drugs" = 1) result_amount = 1 - required_temp = 674 + min_temp = 674 mix_sound = null no_message = 1 @@ -175,7 +175,7 @@ datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob) result = "cyanide" required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) result_amount = 3 - required_temp = 380 + min_temp = 380 mix_message = "The mixture gives off a faint scent of almonds." @@ -287,7 +287,7 @@ datum/reagent/facid/reaction_obj(var/obj/O, var/volume) result = "facid" required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) result_amount = 4 - required_temp = 380 + min_temp = 380 mix_message = "The mixture deepens to a dark blue, and slowly begins to corrode its container." datum/reagent/initropidril @@ -519,7 +519,7 @@ datum/reagent/tabun required_reagents = list("phenol" = 1, "diethylamine" = 1, "phosphorus" = 1, "oxygen" = 1, "chlorine" = 1, "sodiumchloride" = 1, "ethanol" = 1, "cyanide" = 1) result_amount = 8 mix_message = "The mixture yields a colorless, odorless liquid." - required_temp = 374 + min_temp = 374 datum/reagent/tabun/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 74d1d6e775a..43fcf939996 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -556,6 +556,14 @@ icon_state = "rewriter" name = "Rewriter" desc = "The secert of the sanctuary of the Libarian..." + if("applejack") + icon_state = "cognacglass" + name = "Glass of applejack" + desc = "When cider isn't strong enough, you gotta jack it." + if("jackrose") + icon_state = "patronglass" + name = "Jack Rose" + desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s." else icon_state ="glass_brown" name = "Glass of ..what?" diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index 53c688d54ad..b9ab6fc0b60 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -74,7 +74,7 @@ datum secondary_results = list("chemical_waste" = 1) required_reagents = list("density_separated_sample" = 5) result_amount = 4 - required_temp = 375 + min_temp = 375 /obj/item/weapon/reagent_containers/glass/solution_tray name = "solution tray" From ba163bef39c51fc52d03da9338a8deec79a06409 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 09:30:03 -0400 Subject: [PATCH 03/44] Makes Cables GC Better --- code/_globalvars/station.dm | 2 -- code/game/gamemodes/meteor/meteor.dm | 1 - code/game/objects/explosion.dm | 8 -------- code/modules/power/cable.dm | 13 ++----------- code/modules/power/singularity/narsie.dm | 4 ---- 5 files changed, 2 insertions(+), 26 deletions(-) diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index 3a077a48948..4e7bd8e2766 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,7 +1,5 @@ var/global/obj/effect/datacore/data_core = null -var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event - var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second) var/CHARGELEVEL = 0.0005 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second) diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index 95f5dc8b7ff..c5af55acef9 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -17,7 +17,6 @@ /datum/game_mode/meteor/post_setup() - defer_powernet_rebuild = 2//Might help with the lag spawn (rand(waittime_l, waittime_h)) send_intercept() spawn(initialmeteordelay) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index f6167259e0b..765d35d4b30 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -78,10 +78,6 @@ var/datum/controller/process/lighting = processScheduler.getProcess("lighting") lighting.disable() - var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 - if(heavy_impact_range > 1) var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() E.set_up(epicenter) @@ -153,10 +149,6 @@ lighting.enable() - if(!powernet_rebuild_was_deferred_already) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 - return 1 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e5951e82c79..928491a322c 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -86,18 +86,9 @@ /obj/structure/cable/Destroy() // called when a cable is deleted - if(!defer_powernet_rebuild) // set if network will be rebuilt manually - if(powernet) - powernet.cut_cable(src) // update the powernets + if(powernet) + powernet.cut_cable(src) // update the powernets cable_list -= src -/* if(istype(attached)) - attached.set_light(0) - attached.icon_state = "powersink0" - attached.mode = 0 - processing_objects.Remove(attached) - attached.anchored = 0 - attached.attached = null - attached = null*/ return ..() // then go ahead and delete the cable /obj/structure/cable/hide(var/i) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 9498a78d1c9..f74837f314d 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -139,13 +139,9 @@ /obj/singularity/narsie/wizard/eat() set background = BACKGROUND_ENABLED -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 1 for(var/atom/X in orange(consume_range,src)) if(isturf(X) || istype(X, /atom/movable)) consume(X) -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 0 return From a117067123f2f31c0613148e132a88790554dc04 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 18:09:27 -0400 Subject: [PATCH 04/44] Updates Chameleon Projector --- .../objects/items/devices/chameleonproj.dm | 221 ++++++++++-------- 1 file changed, 123 insertions(+), 98 deletions(-) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 0e83d0fa1ce..034fdb53ebc 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -5,82 +5,85 @@ slot_flags = SLOT_BELT item_state = "electronic" throwforce = 5.0 - throw_speed = 1 + throw_speed = 3 throw_range = 5 w_class = 2.0 origin_tech = "syndicate=4;magnets=4" var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null - var/saved_item = "/obj/item/weapon/cigbutt" + var/saved_item = /obj/item/weapon/cigbutt + var/saved_icon = 'icons/obj/clothing/masks.dmi' + var/saved_icon_state = "cigbutt" + var/saved_overlays = null + var/saved_underlays = null - dropped() - disrupt() +/obj/item/device/chameleon/dropped() + disrupt() - attack_self() - toggle() +/obj/item/device/chameleon/equipped() + disrupt() - afterattack(atom/target, mob/user, proximity) - if(!proximity) return - if(istype(target,/obj/item/toy/cards/singlecard)) - user << "\red Unable to scan [target]." - return - if(istype(target,/obj/item)) - playsound(src, 'sound/weapons/flash.ogg', 100, 1, 1) - user << "\blue Scanned [target]." +/obj/item/device/chameleon/attack_self() + toggle() + +/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity) + if(!proximity) return + if(!active_dummy) + if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear)) + playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6) + user << "Scanned [target]." saved_item = target.type + saved_icon = target.icon + saved_icon_state = target.icon_state + saved_overlays = target.overlays + saved_underlays = target.underlays - proc/toggle() - if(!can_use || !saved_item) return - if(active_dummy) - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A - del(active_dummy) - active_dummy = null - usr << "\blue You deactivate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() - else - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - var/obj/O = new saved_item(src) - if(!O) return - var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) - C.name = O.name - C.desc = O.desc - C.icon = O.icon - C.icon_state = O.icon_state - C.dir = O.dir - usr.loc = C - C.master = src - src.active_dummy = C - del(O) - usr << "\blue You activate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() +/obj/item/device/chameleon/proc/toggle() + if(!can_use || !saved_item) return + if(active_dummy) + eject_all() + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + qdel(active_dummy) + active_dummy = null + usr << "You deactivate \the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) + qdel(T) + else + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + var/obj/O = new saved_item(src) + if(!O) return + var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) + C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, saved_underlays, src) + qdel(O) + usr << "You activate \the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) + qdel(T) - proc/disrupt() - if(active_dummy) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread - spark_system.set_up(5, 0, src) - spark_system.attach(src) - spark_system.start() - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A - del(active_dummy) - active_dummy = null - can_use = 0 - spawn(100) can_use = 1 +/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1) + if(active_dummy) + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, src) + spark_system.attach(src) + spark_system.start() + eject_all() + if(delete_dummy) + qdel(active_dummy) + active_dummy = null + can_use = 0 + spawn(50) can_use = 1 +/obj/item/device/chameleon/proc/eject_all() + for(var/atom/movable/A in active_dummy) + A.loc = active_dummy.loc + if(ismob(A)) + var/mob/M = A + M.reset_view(null) /obj/effect/dummy/chameleon name = "" @@ -89,38 +92,60 @@ anchored = 1 var/can_move = 1 var/obj/item/device/chameleon/master = null - attackby() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - attack_hand() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - ex_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - bullet_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - ..() - master.disrupt() - relaymove(var/mob/user, direction) - if(istype(loc, /turf/space)) return //No magical space movement! - if(can_move) - can_move = 0 - switch(usr.bodytemperature) - if(300 to INFINITY) - spawn(10) can_move = 1 - if(295 to 300) - spawn(13) can_move = 1 - if(280 to 295) - spawn(16) can_move = 1 - if(260 to 280) - spawn(20) can_move = 1 - else - spawn(25) can_move = 1 - step(src,direction) - return +/obj/effect/dummy/chameleon/proc/activate(var/obj/O, var/mob/M, new_icon, new_iconstate, new_overlays, new_underlays, var/obj/item/device/chameleon/C) + name = O.name + desc = O.desc + icon = new_icon + icon_state = new_iconstate + overlays = new_overlays + underlays = new_underlays + dir = O.dir + M.loc = src + master = C + master.active_dummy = src + +/obj/effect/dummy/chameleon/attackby() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/attack_hand() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/ex_act() //ok now THATS some serious protection against explosions right here + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/bullet_act() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + ..() + master.disrupt() + +/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction) + if(istype(loc, /turf/space) || !direction) + return //No magical space movement! + + if(can_move) + can_move = 0 + switch(user.bodytemperature) + if(300 to INFINITY) + spawn(10) can_move = 1 + if(295 to 300) + spawn(13) can_move = 1 + if(280 to 295) + spawn(16) can_move = 1 + if(260 to 280) + spawn(20) can_move = 1 + else + spawn(25) can_move = 1 + step(src, direction) + return + +/obj/effect/dummy/chameleon/Destroy() + master.disrupt(0) + return ..() \ No newline at end of file From d614145f40f535734142432819d25409b09b3f8f Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Wed, 8 Jul 2015 15:43:24 -0700 Subject: [PATCH 05/44] Clean up pipecode and split huge file into folder structure This commit cleans up any remaining relative pathing in the ATMOSPHERICS/ folder, and splits the absolutely huge pipes.dm file into 6-7 files in the pipes/ folder tree. --- .../binary_devices/binary_atmos_base.dm | 230 +-- .../components/trinary_devices/mixer.dm | 14 +- .../trinary_devices/trinary_base.dm | 270 ++-- .../components/unary/cold_sink.dm | 42 +- .../components/unary/generator_input.dm | 17 +- .../components/unary/heat_exchanger.dm | 124 +- .../components/unary/heat_source.dm | 42 +- .../components/unary/oxygen_generator.dm | 48 +- .../components/unary/thermal_plate.dm | 155 +- .../components/unary/unary_base.dm | 146 +- code/ATMOSPHERICS/datum_pipe_network.dm | 224 +-- code/ATMOSPHERICS/datum_pipeline.dm | 288 ++-- code/ATMOSPHERICS/he_pipes.dm | 119 -- code/ATMOSPHERICS/pipes.dm | 1380 +---------------- code/ATMOSPHERICS/pipes/cap.dm | 122 ++ code/ATMOSPHERICS/pipes/manifold.dm | 251 +++ code/ATMOSPHERICS/pipes/manifold4w.dm | 256 +++ code/ATMOSPHERICS/pipes/pipe.dm | 138 ++ code/ATMOSPHERICS/pipes/simple/pipe_simple.dm | 181 +++ .../pipes/simple/pipe_simple_he.dm | 118 ++ .../pipes/simple/pipe_simple_hidden.dm | 69 + .../pipes/simple/pipe_simple_insulated.dm | 11 + .../pipes/simple/pipe_simple_visible.dm | 66 + code/ATMOSPHERICS/pipes/tank.dm | 166 ++ code/ATMOSPHERICS/pipes/vent.dm | 105 ++ paradise.dme | 11 + 26 files changed, 2294 insertions(+), 2299 deletions(-) create mode 100644 code/ATMOSPHERICS/pipes/cap.dm create mode 100644 code/ATMOSPHERICS/pipes/manifold.dm create mode 100644 code/ATMOSPHERICS/pipes/manifold4w.dm create mode 100644 code/ATMOSPHERICS/pipes/pipe.dm create mode 100644 code/ATMOSPHERICS/pipes/simple/pipe_simple.dm create mode 100644 code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm create mode 100644 code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm create mode 100644 code/ATMOSPHERICS/pipes/simple/pipe_simple_insulated.dm create mode 100644 code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm create mode 100644 code/ATMOSPHERICS/pipes/tank.dm create mode 100644 code/ATMOSPHERICS/pipes/vent.dm diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index 1b801ad3e13..aeb146fe57a 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/binary +/obj/machinery/atmospherics/binary dir = SOUTH initialize_directions = SOUTH|NORTH use_power = 1 @@ -12,131 +12,131 @@ obj/machinery/atmospherics/binary var/datum/pipe_network/network1 var/datum/pipe_network/network2 - New() - ..() - switch(dir) - if(NORTH) - initialize_directions = NORTH|SOUTH - if(SOUTH) - initialize_directions = NORTH|SOUTH - if(EAST) - initialize_directions = EAST|WEST - if(WEST) - initialize_directions = EAST|WEST - air1 = new - air2 = new +/obj/machinery/atmospherics/binary/New() + ..() + switch(dir) + if(NORTH) + initialize_directions = NORTH|SOUTH + if(SOUTH) + initialize_directions = NORTH|SOUTH + if(EAST) + initialize_directions = EAST|WEST + if(WEST) + initialize_directions = EAST|WEST + air1 = new + air2 = new - air1.volume = 200 - air2.volume = 200 + air1.volume = 200 + air2.volume = 200 + +/obj/machinery/atmospherics/binary/Destroy() + loc = null + + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) + + node1 = null + node2 = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/binary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/binary/initialize() + if(node1 && node2) return - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) + var/node2_connect = dir + var/node1_connect = turn(dir, 180) + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node2 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/binary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + +/obj/machinery/atmospherics/binary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + return null + +/obj/machinery/atmospherics/binary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + + return 1 + +/obj/machinery/atmospherics/binary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + + return results + +/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + del(network1) node1 = null + + else if(reference==node2) + del(network2) node2 = null - return ..() + update_icon() + update_underlays() - initialize() - if(node1 && node2) return - - var/node2_connect = dir - var/node1_connect = turn(dir, 180) - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node2 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - del(network1) - node1 = null - - else if(reference==node2) - del(network2) - node2 = null - - update_icon() - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 841e9761231..23a44b376e6 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -19,7 +19,7 @@ icon_state = "t" else icon_state = "" - + if(!powered()) icon_state += "off" else if(node2 && node3 && node1) @@ -183,7 +183,7 @@ src.updateUsrDialog() return -obj/machinery/atmospherics/trinary/mixer/t_mixer +/obj/machinery/atmospherics/trinary/mixer/t_mixer icon_state = "tmap" dir = SOUTH @@ -191,7 +191,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer //node 3 is the outlet, nodes 1 & 2 are intakes -obj/machinery/atmospherics/trinary/mixer/t_mixer/New() +/obj/machinery/atmospherics/trinary/mixer/t_mixer/New() ..() switch(dir) if(NORTH) @@ -203,7 +203,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer/New() if(WEST) initialize_directions = WEST|NORTH|SOUTH -obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() +/obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() if(node1 && node2 && node3) return var/node1_connect = turn(dir, -90) @@ -228,7 +228,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() update_icon() update_underlays() -obj/machinery/atmospherics/trinary/mixer/m_mixer +/obj/machinery/atmospherics/trinary/mixer/m_mixer icon_state = "mmap" dir = SOUTH @@ -236,7 +236,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer //node 3 is the outlet, nodes 1 & 2 are intakes -obj/machinery/atmospherics/trinary/mixer/m_mixer/New() +/obj/machinery/atmospherics/trinary/mixer/m_mixer/New() ..() switch(dir) if(NORTH) @@ -248,7 +248,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer/New() if(WEST) initialize_directions = WEST|SOUTH|EAST -obj/machinery/atmospherics/trinary/mixer/m_mixer/initialize() +/obj/machinery/atmospherics/trinary/mixer/m_mixer/initialize() if(node1 && node2 && node3) return var/node1_connect = turn(dir, -180) diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index a2ab2ad9163..2486f38d45f 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/trinary +/obj/machinery/atmospherics/trinary dir = SOUTH initialize_directions = SOUTH|NORTH|WEST use_power = 1 @@ -17,153 +17,153 @@ obj/machinery/atmospherics/trinary var/datum/pipe_network/network2 var/datum/pipe_network/network3 - New() - ..() - switch(dir) - if(NORTH) - initialize_directions = EAST|NORTH|SOUTH - if(SOUTH) - initialize_directions = SOUTH|WEST|NORTH - if(EAST) - initialize_directions = EAST|WEST|SOUTH - if(WEST) - initialize_directions = WEST|NORTH|EAST - air1 = new - air2 = new - air3 = new +/obj/machinery/atmospherics/trinary/New() + ..() + switch(dir) + if(NORTH) + initialize_directions = EAST|NORTH|SOUTH + if(SOUTH) + initialize_directions = SOUTH|WEST|NORTH + if(EAST) + initialize_directions = EAST|WEST|SOUTH + if(WEST) + initialize_directions = WEST|NORTH|EAST + air1 = new + air2 = new + air3 = new - air1.volume = 200 - air2.volume = 200 - air3.volume = 200 + air1.volume = 200 + air2.volume = 200 + air3.volume = 200 + +/obj/machinery/atmospherics/trinary/Destroy() + loc = null + + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) + if(node3) + node3.disconnect(src) + qdel(network3) + + node1 = null + node2 = null + node3 = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - else if (reference == node3) - network3 = new_network + else if (reference == node3) + network3 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/trinary/initialize() + if(node1 && node2 && node3) return - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) - if(node3) - node3.disconnect(src) - qdel(network3) + var/node1_connect = turn(dir, -180) + var/node2_connect = turn(dir, -90) + var/node3_connect = dir + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + node2 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) + if(target.initialize_directions & get_dir(target,src)) + node3 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/trinary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + if(!network3 && node3) + network3 = new /datum/pipe_network() + network3.normal_members += src + network3.build_network(node3, src) + + +/obj/machinery/atmospherics/trinary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + if(reference==node3) + return network3 + + return null + +/obj/machinery/atmospherics/trinary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + if(network3 == old_network) + network3 = new_network + + return 1 + +/obj/machinery/atmospherics/trinary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + if(network3 == reference) + results += air3 + + return results + +/obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + del(network1) node1 = null + + else if(reference==node2) + del(network2) node2 = null + + else if(reference==node3) + del(network3) node3 = null - return ..() + update_underlays() - initialize() - if(node1 && node2 && node3) return - - var/node1_connect = turn(dir, -180) - var/node2_connect = turn(dir, -90) - var/node3_connect = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - node2 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) - if(target.initialize_directions & get_dir(target,src)) - node3 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - if(!network3 && node3) - network3 = new /datum/pipe_network() - network3.normal_members += src - network3.build_network(node3, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - if(reference==node3) - return network3 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - if(network3 == old_network) - network3 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - if(network3 == reference) - results += air3 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - del(network1) - node1 = null - - else if(reference==node2) - del(network2) - node2 = null - - else if(reference==node3) - del(network3) - node3 = null - - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index b1fa6a21b47..6e0a6e53259 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -12,30 +12,30 @@ var/current_temperature = T20C var/current_heat_capacity = 50000 //totally random - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/cold_sink/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed" - on = 0 + on = 0 - return + return - process() - ..() - if(!on || !network) - return 0 - var/air_heat_capacity = air_contents.heat_capacity() - var/combined_heat_capacity = current_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature +/obj/machinery/atmospherics/unary/cold_sink/process() + ..() + if(!on || !network) + return 0 + var/air_heat_capacity = air_contents.heat_capacity() + var/combined_heat_capacity = current_heat_capacity + air_heat_capacity + var/old_temperature = air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature - air_contents.temperature = combined_energy/combined_heat_capacity + if(combined_heat_capacity > 0) + var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature + air_contents.temperature = combined_energy/combined_heat_capacity - //todo: have current temperature affected. require power to bring down current temperature again + //todo: have current temperature affected. require power to bring down current temperature again - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 - return 1 \ No newline at end of file + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/generator_input.dm b/code/ATMOSPHERICS/components/unary/generator_input.dm index 2b31097dc41..bcbd124eca5 100644 --- a/code/ATMOSPHERICS/components/unary/generator_input.dm +++ b/code/ATMOSPHERICS/components/unary/generator_input.dm @@ -8,14 +8,13 @@ var/update_cycle - update_icon() - if(node) - icon_state = "intact" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/generator_input/update_icon() + if(node) + icon_state = "intact" + else + icon_state = "exposed" - return + return - proc - return_exchange_air() - return air_contents \ No newline at end of file +/obj/machinery/atmospherics/unary/generator_input/proc/return_exchange_air() + return air_contents diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index 54e49e89378..bfa2b08f908 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -10,80 +10,80 @@ var/obj/machinery/atmospherics/unary/heat_exchanger/partner = null var/update_cycle - update_icon() - if(node) - icon_state = "intact" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/heat_exchanger/update_icon() + if(node) + icon_state = "intact" + else + icon_state = "exposed" - return + return - initialize() - if(!partner) - var/partner_connect = turn(dir,180) +/obj/machinery/atmospherics/unary/heat_exchanger/initialize() + if(!partner) + var/partner_connect = turn(dir,180) - for(var/obj/machinery/atmospherics/unary/heat_exchanger/target in get_step(src,partner_connect)) - if(target.dir & get_dir(src,target)) - partner = target - partner.partner = src - break + for(var/obj/machinery/atmospherics/unary/heat_exchanger/target in get_step(src,partner_connect)) + if(target.dir & get_dir(src,target)) + partner = target + partner.partner = src + break - ..() + ..() - process() - ..() - if(!partner) - return 0 +/obj/machinery/atmospherics/unary/heat_exchanger/process() + ..() + if(!partner) + return 0 - if(!air_master || air_master.current_cycle <= update_cycle) - return 0 + if(!air_master || air_master.current_cycle <= update_cycle) + return 0 - update_cycle = air_master.current_cycle - partner.update_cycle = air_master.current_cycle + update_cycle = air_master.current_cycle + partner.update_cycle = air_master.current_cycle - var/air_heat_capacity = air_contents.heat_capacity() - var/other_air_heat_capacity = partner.air_contents.heat_capacity() - var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity + var/air_heat_capacity = air_contents.heat_capacity() + var/other_air_heat_capacity = partner.air_contents.heat_capacity() + var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature - var/other_old_temperature = partner.air_contents.temperature + var/old_temperature = air_contents.temperature + var/other_old_temperature = partner.air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = partner.air_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature + if(combined_heat_capacity > 0) + var/combined_energy = partner.air_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature - var/new_temperature = combined_energy/combined_heat_capacity - air_contents.temperature = new_temperature - partner.air_contents.temperature = new_temperature + var/new_temperature = combined_energy/combined_heat_capacity + air_contents.temperature = new_temperature + partner.air_contents.temperature = new_temperature - if(network) - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 + if(network) + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 - if(partner.network) - if(abs(other_old_temperature-partner.air_contents.temperature) > 1) - partner.network.update = 1 + if(partner.network) + if(abs(other_old_temperature-partner.air_contents.temperature) > 1) + partner.network.update = 1 + return 1 + +/obj/machinery/atmospherics/unary/heat_exchanger/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && T.intact) + user << "\red You must remove the plating first." return 1 - - attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = src.loc - if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "\blue You have unfastened \the [src].", \ + "You hear ratchet.") + new /obj/item/pipe(loc, make_from=src) + del(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index 2d3e9b67a8e..2837bcf188d 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -14,30 +14,30 @@ var/current_temperature = T20C var/current_heat_capacity = 50000 //totally random - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/heat_reservoir/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed" - on = 0 + on = 0 - return + return - process() - ..() - if(!on || !network) - return 0 - var/air_heat_capacity = air_contents.heat_capacity() - var/combined_heat_capacity = current_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature +/obj/machinery/atmospherics/unary/heat_reservoir/process() + ..() + if(!on || !network) + return 0 + var/air_heat_capacity = air_contents.heat_capacity() + var/combined_heat_capacity = current_heat_capacity + air_heat_capacity + var/old_temperature = air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature - air_contents.temperature = combined_energy/combined_heat_capacity + if(combined_heat_capacity > 0) + var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature + air_contents.temperature = combined_energy/combined_heat_capacity - //todo: have current temperature affected. require power to bring up current temperature again + //todo: have current temperature affected. require power to bring up current temperature again - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 - return 1 \ No newline at end of file + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/oxygen_generator.dm b/code/ATMOSPHERICS/components/unary/oxygen_generator.dm index 9a58be7c302..805079db234 100644 --- a/code/ATMOSPHERICS/components/unary/oxygen_generator.dm +++ b/code/ATMOSPHERICS/components/unary/oxygen_generator.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/unary/oxygen_generator +/obj/machinery/atmospherics/unary/oxygen_generator icon = 'icons/obj/atmospherics/oxygen_generator.dmi' icon_state = "intact_off" density = 1 @@ -13,37 +13,37 @@ obj/machinery/atmospherics/unary/oxygen_generator var/oxygen_content = 10 - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed_off" +/obj/machinery/atmospherics/unary/oxygen_generator/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed_off" - on = 0 + on = 0 - return + return - New() - ..() +/obj/machinery/atmospherics/unary/oxygen_generator/New() + ..() - air_contents.volume = 50 + air_contents.volume = 50 - process() - ..() - if(!on) - return 0 +/obj/machinery/atmospherics/unary/oxygen_generator/process() + ..() + if(!on) + return 0 - var/total_moles = air_contents.total_moles() + var/total_moles = air_contents.total_moles() - if(total_moles < oxygen_content) - var/current_heat_capacity = air_contents.heat_capacity() + if(total_moles < oxygen_content) + var/current_heat_capacity = air_contents.heat_capacity() - var/added_oxygen = oxygen_content - total_moles + var/added_oxygen = oxygen_content - total_moles - air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen) - air_contents.oxygen += added_oxygen + air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen) + air_contents.oxygen += added_oxygen - if(network) - network.update = 1 + if(network) + network.update = 1 - return 1 \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/thermal_plate.dm b/code/ATMOSPHERICS/components/unary/thermal_plate.dm index 1f5c78de6cf..60fb9571d53 100644 --- a/code/ATMOSPHERICS/components/unary/thermal_plate.dm +++ b/code/ATMOSPHERICS/components/unary/thermal_plate.dm @@ -12,102 +12,101 @@ name = "Thermal Transfer Plate" desc = "Transfers heat to and from an area" - update_icon() - var/prefix="" - //var/suffix="_idle" // Also available: _heat, _cool - if(level == 1 && istype(loc, /turf/simulated)) - prefix="h" - icon_state = "[prefix]off" +/obj/machinery/atmospherics/unary/thermal_plate/update_icon() + var/prefix="" + //var/suffix="_idle" // Also available: _heat, _cool + if(level == 1 && istype(loc, /turf/simulated)) + prefix="h" + icon_state = "[prefix]off" - process() - ..() +/obj/machinery/atmospherics/unary/thermal_plate/process() + ..() - var/datum/gas_mixture/environment = loc.return_air() + var/datum/gas_mixture/environment = loc.return_air() - //Get processable air sample and thermal info from environment + //Get processable air sample and thermal info from environment - var/transfer_moles = 0.25 * environment.total_moles() - var/datum/gas_mixture/external_removed = environment.remove(transfer_moles) + var/transfer_moles = 0.25 * environment.total_moles() + var/datum/gas_mixture/external_removed = environment.remove(transfer_moles) - if (!external_removed) - return radiate() + if (!external_removed) + return radiate() - if (external_removed.total_moles() < 10) - return radiate() + if (external_removed.total_moles() < 10) + return radiate() - //Get same info from connected gas + //Get same info from connected gas - var/internal_transfer_moles = 0.25 * air_contents.total_moles() - var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) + var/internal_transfer_moles = 0.25 * air_contents.total_moles() + var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) - if (!internal_removed) - environment.merge(external_removed) - return 1 - - var/combined_heat_capacity = internal_removed.heat_capacity() + external_removed.heat_capacity() - var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + external_removed.heat_capacity() * external_removed.temperature - - if(!combined_heat_capacity) combined_heat_capacity = 1 - var/final_temperature = combined_energy / combined_heat_capacity - - external_removed.temperature = final_temperature + if (!internal_removed) environment.merge(external_removed) - - internal_removed.temperature = final_temperature - air_contents.merge(internal_removed) - - network.update = 1 - return 1 - hide(var/i) //to make the little pipe section invisible, the icon changes. - var/prefix="" - //var/suffix="_idle" // Also available: _heat, _cool - if(i == 1 && istype(loc, /turf/simulated)) - prefix="h" - icon_state = "[prefix]off" - return + var/combined_heat_capacity = internal_removed.heat_capacity() + external_removed.heat_capacity() + var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + external_removed.heat_capacity() * external_removed.temperature - attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = src.loc - if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - new /obj/item/pipe(loc, make_from=src) - del(src) + if(!combined_heat_capacity) combined_heat_capacity = 1 + var/final_temperature = combined_energy / combined_heat_capacity - proc/radiate() + external_removed.temperature = final_temperature + environment.merge(external_removed) - var/internal_transfer_moles = 0.25 * air_contents.total_moles() - var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) + internal_removed.temperature = final_temperature + air_contents.merge(internal_removed) - if (!internal_removed) - return 1 + network.update = 1 - var/combined_heat_capacity = internal_removed.heat_capacity() + RADIATION_CAPACITY - var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + (RADIATION_CAPACITY * 6.4) + return 1 - var/final_temperature = combined_energy / combined_heat_capacity +/obj/machinery/atmospherics/unary/thermal_plate/hide(var/i) //to make the little pipe section invisible, the icon changes. + var/prefix="" + //var/suffix="_idle" // Also available: _heat, _cool + if(i == 1 && istype(loc, /turf/simulated)) + prefix="h" + icon_state = "[prefix]off" + return - internal_removed.temperature = final_temperature - air_contents.merge(internal_removed) +/obj/machinery/atmospherics/unary/thermal_plate/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && T.intact) + user << "\red You must remove the plating first." + return 1 + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "\blue You have unfastened \the [src].", \ + "You hear ratchet.") + new /obj/item/pipe(loc, make_from=src) + del(src) - if (network) - network.update = 1 +/obj/machinery/atmospherics/unary/thermal_plate/proc/radiate() + var/internal_transfer_moles = 0.25 * air_contents.total_moles() + var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) - return 1 \ No newline at end of file + if (!internal_removed) + return 1 + + var/combined_heat_capacity = internal_removed.heat_capacity() + RADIATION_CAPACITY + var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + (RADIATION_CAPACITY * 6.4) + + var/final_temperature = combined_energy / combined_heat_capacity + + internal_removed.temperature = final_temperature + air_contents.merge(internal_removed) + + if (network) + network.update = 1 + + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 5ec065f4ebd..65f6c7f2edb 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -9,88 +9,88 @@ var/datum/pipe_network/network - New() - ..() - initialize_directions = dir - air_contents = new +/obj/machinery/atmospherics/unary/New() + ..() + initialize_directions = dir + air_contents = new - air_contents.volume = 200 + air_contents.volume = 200 + +/obj/machinery/atmospherics/unary/Destroy() + loc = null + + if(node) + node.disconnect(src) + qdel(network) + + node = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node) - network = new_network +/obj/machinery/atmospherics/unary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node) + network = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/unary/initialize() + if(node) return - if(node) - node.disconnect(src) - qdel(network) + var/node_connect = dir + for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/unary/build_network() + if(!network && node) + network = new /datum/pipe_network() + network.normal_members += src + network.build_network(node, src) + + +/obj/machinery/atmospherics/unary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference == node || reference == src) + return network + + return null + +/obj/machinery/atmospherics/unary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network == old_network) + network = new_network + + return 1 + +/obj/machinery/atmospherics/unary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network == reference) + results += air_contents + + return results + +/obj/machinery/atmospherics/unary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node) + del(network) node = null - return ..() + update_icon() + update_underlays() - initialize() - if(node) return - - var/node_connect = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node = target - break - - update_icon() - update_underlays() - - build_network() - if(!network && node) - network = new /datum/pipe_network() - network.normal_members += src - network.build_network(node, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference == node || reference == src) - return network - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network == old_network) - network = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network == reference) - results += air_contents - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node) - del(network) - node = null - - update_icon() - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index 3b4cbb996e4..0b81de0ead0 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -1,6 +1,6 @@ var/global/list/datum/pipe_network/pipe_networks = list() -datum/pipe_network +/datum/pipe_network var/list/datum/gas_mixture/gases = list() //All of the gas_mixtures continuously connected in this network var/list/obj/machinery/atmospherics/normal_members = list() @@ -10,134 +10,134 @@ datum/pipe_network var/update = 1 var/datum/gas_mixture/air_transient = null - New() - air_transient = new() +/datum/pipe_network/New() + air_transient = new() - ..() + ..() - proc/process() - //Equalize gases amongst pipe if called for - if(update) - update = 0 - reconcile_air() //equalize_gases(gases) +/datum/pipe_network/proc/process() + //Equalize gases amongst pipe if called for + if(update) + update = 0 + reconcile_air() //equalize_gases(gases) - //Give pipelines their process call for pressure checking and what not. Have to remove pressure checks for the time being as pipes dont radiate heat - Mport - //for(var/datum/pipeline/line_member in line_members) - // line_member.process() + //Give pipelines their process call for pressure checking and what not. Have to remove pressure checks for the time being as pipes dont radiate heat - Mport + //for(var/datum/pipeline/line_member in line_members) + // line_member.process() - proc/build_network(obj/machinery/atmospherics/start_normal, obj/machinery/atmospherics/reference) - //Purpose: Generate membership roster - //Notes: Assuming that members will add themselves to appropriate roster in network_expand() +/datum/pipe_network/proc/build_network(obj/machinery/atmospherics/start_normal, obj/machinery/atmospherics/reference) + //Purpose: Generate membership roster + //Notes: Assuming that members will add themselves to appropriate roster in network_expand() - if(!start_normal) - qdel(src) + if(!start_normal) + qdel(src) - start_normal.network_expand(src, reference) + start_normal.network_expand(src, reference) - update_network_gases() + update_network_gases() + + if((normal_members.len>0)||(line_members.len>0)) + pipe_networks += src + else + qdel(src) + +/datum/pipe_network/proc/merge(datum/pipe_network/giver) + if(giver==src) return 0 + + normal_members |= giver.normal_members + + line_members |= giver.line_members + + for(var/obj/machinery/atmospherics/normal_member in giver.normal_members) + normal_member.reassign_network(giver, src) + + for(var/datum/pipeline/line_member in giver.line_members) + line_member.network = src + + update_network_gases() + return 1 + +/datum/pipe_network/proc/update_network_gases() + //Go through membership roster and make sure gases is up to date + + gases = list() + + for(var/obj/machinery/atmospherics/normal_member in normal_members) + var/result = normal_member.return_network_air(src) + if(result) gases += result + + for(var/datum/pipeline/line_member in line_members) + gases += line_member.air + +/datum/pipe_network/proc/reconcile_air() + //Perfectly equalize all gases members instantly + + //Calculate totals from individual components + var/total_thermal_energy = 0 + var/total_heat_capacity = 0 + + air_transient.volume = 0 + + air_transient.oxygen = 0 + air_transient.nitrogen = 0 + air_transient.toxins = 0 + air_transient.carbon_dioxide = 0 + + + air_transient.trace_gases = list() + + for(var/datum/gas_mixture/gas in gases) + air_transient.volume += gas.volume + var/temp_heatcap = gas.heat_capacity() + total_thermal_energy += gas.temperature*temp_heatcap + total_heat_capacity += temp_heatcap + + air_transient.oxygen += gas.oxygen + air_transient.nitrogen += gas.nitrogen + air_transient.toxins += gas.toxins + air_transient.carbon_dioxide += gas.carbon_dioxide + + if(gas.trace_gases.len) + for(var/datum/gas/trace_gas in gas.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases + if(!corresponding) + corresponding = new trace_gas.type() + air_transient.trace_gases += corresponding + + corresponding.moles += trace_gas.moles + + if(air_transient.volume > 0) + + if(total_heat_capacity > 0) + air_transient.temperature = total_thermal_energy/total_heat_capacity + + //Allow air mixture to react + if(air_transient.react()) + update = 1 - if((normal_members.len>0)||(line_members.len>0)) - pipe_networks += src else - qdel(src) - - proc/merge(datum/pipe_network/giver) - if(giver==src) return 0 - - normal_members |= giver.normal_members - - line_members |= giver.line_members - - for(var/obj/machinery/atmospherics/normal_member in giver.normal_members) - normal_member.reassign_network(giver, src) - - for(var/datum/pipeline/line_member in giver.line_members) - line_member.network = src - - update_network_gases() - return 1 - - proc/update_network_gases() - //Go through membership roster and make sure gases is up to date - - gases = list() - - for(var/obj/machinery/atmospherics/normal_member in normal_members) - var/result = normal_member.return_network_air(src) - if(result) gases += result - - for(var/datum/pipeline/line_member in line_members) - gases += line_member.air - - proc/reconcile_air() - //Perfectly equalize all gases members instantly - - //Calculate totals from individual components - var/total_thermal_energy = 0 - var/total_heat_capacity = 0 - - air_transient.volume = 0 - - air_transient.oxygen = 0 - air_transient.nitrogen = 0 - air_transient.toxins = 0 - air_transient.carbon_dioxide = 0 - - - air_transient.trace_gases = list() + air_transient.temperature = 0 + //Update individual gas_mixtures by volume ratio for(var/datum/gas_mixture/gas in gases) - air_transient.volume += gas.volume - var/temp_heatcap = gas.heat_capacity() - total_thermal_energy += gas.temperature*temp_heatcap - total_heat_capacity += temp_heatcap + gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume + gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume + gas.toxins = air_transient.toxins*gas.volume/air_transient.volume + gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume - air_transient.oxygen += gas.oxygen - air_transient.nitrogen += gas.nitrogen - air_transient.toxins += gas.toxins - air_transient.carbon_dioxide += gas.carbon_dioxide + gas.temperature = air_transient.temperature - if(gas.trace_gases.len) - for(var/datum/gas/trace_gas in gas.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases + if(air_transient.trace_gases.len) + for(var/datum/gas/trace_gas in air_transient.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases if(!corresponding) corresponding = new trace_gas.type() - air_transient.trace_gases += corresponding + gas.trace_gases += corresponding - corresponding.moles += trace_gas.moles + corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume + return 1 - if(air_transient.volume > 0) - - if(total_heat_capacity > 0) - air_transient.temperature = total_thermal_energy/total_heat_capacity - - //Allow air mixture to react - if(air_transient.react()) - update = 1 - - else - air_transient.temperature = 0 - - //Update individual gas_mixtures by volume ratio - for(var/datum/gas_mixture/gas in gases) - gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume - gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume - gas.toxins = air_transient.toxins*gas.volume/air_transient.volume - gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume - - gas.temperature = air_transient.temperature - - if(air_transient.trace_gases.len) - for(var/datum/gas/trace_gas in air_transient.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - gas.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume - return 1 - -proc/equalize_gases(datum/gas_mixture/list/gases) +/proc/equalize_gases(datum/gas_mixture/list/gases) //Perfectly equalize all gases members instantly //Calculate totals from individual components diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 4b056c645e4..533633e9e14 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -1,6 +1,6 @@ #define STEFAN_BOLTZMANN_CONSTANT 0.0000000567 -datum/pipeline +/datum/pipeline var/datum/gas_mixture/air var/list/obj/machinery/atmospherics/pipe/members @@ -10,187 +10,187 @@ datum/pipeline var/alert_pressure = 0 - Destroy() - if(network) - qdel(network) +/datum/pipeline/Destroy() + if(network) + qdel(network) - if(air && air.volume) - temporarily_store_air() - qdel(air) + if(air && air.volume) + temporarily_store_air() + qdel(air) - return ..() + return ..() - proc/process()//This use to be called called from the pipe networks - - //Check to see if pressure is within acceptable limits - var/pressure = air.return_pressure() - if(pressure > alert_pressure) - for(var/obj/machinery/atmospherics/pipe/member in members) - if(!member.check_pressure(pressure)) - break //Only delete 1 pipe per process - - //Allow for reactions - //air.react() //Should be handled by pipe_network now - - proc/temporarily_store_air() - //Update individual gas_mixtures by volume ratio +/datum/pipeline/proc/process()//This use to be called called from the pipe networks + //Check to see if pressure is within acceptable limits + var/pressure = air.return_pressure() + if(pressure > alert_pressure) for(var/obj/machinery/atmospherics/pipe/member in members) - member.air_temporary = new - member.air_temporary.volume = member.volume + if(!member.check_pressure(pressure)) + break //Only delete 1 pipe per process - member.air_temporary.oxygen = air.oxygen*member.volume/air.volume - member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume - member.air_temporary.toxins = air.toxins*member.volume/air.volume - member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume + //Allow for reactions + //air.react() //Should be handled by pipe_network now - member.air_temporary.temperature = air.temperature +/datum/pipeline/proc/temporarily_store_air() + //Update individual gas_mixtures by volume ratio - if(air.trace_gases.len) - for(var/datum/gas/trace_gas in air.trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - member.air_temporary.trace_gases += corresponding + for(var/obj/machinery/atmospherics/pipe/member in members) + member.air_temporary = new + member.air_temporary.volume = member.volume - corresponding.moles = trace_gas.moles*member.volume/air.volume + member.air_temporary.oxygen = air.oxygen*member.volume/air.volume + member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume + member.air_temporary.toxins = air.toxins*member.volume/air.volume + member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume - proc/build_pipeline(obj/machinery/atmospherics/pipe/base) + member.air_temporary.temperature = air.temperature + + if(air.trace_gases.len) + for(var/datum/gas/trace_gas in air.trace_gases) + var/datum/gas/corresponding = new trace_gas.type() + member.air_temporary.trace_gases += corresponding + + corresponding.moles = trace_gas.moles*member.volume/air.volume + +/datum/pipeline/proc/build_pipeline(obj/machinery/atmospherics/pipe/base) + air = new + + var/list/possible_expansions = list(base) + members = list(base) + edges = list() + + var/volume = base.volume + base.parent = src + alert_pressure = base.alert_pressure + + if(base.air_temporary) + air = base.air_temporary + base.air_temporary = null + else air = new - var/list/possible_expansions = list(base) - members = list(base) - edges = list() + while(possible_expansions.len>0) + for(var/obj/machinery/atmospherics/pipe/borderline in possible_expansions) - var/volume = base.volume - base.parent = src - alert_pressure = base.alert_pressure + var/list/result = borderline.pipeline_expansion() + var/edge_check = result.len - if(base.air_temporary) - air = base.air_temporary - base.air_temporary = null - else - air = new + if(result.len>0) + for(var/obj/machinery/atmospherics/pipe/item in result) + if(!members.Find(item)) + members += item + possible_expansions += item - while(possible_expansions.len>0) - for(var/obj/machinery/atmospherics/pipe/borderline in possible_expansions) + volume += item.volume + item.parent = src - var/list/result = borderline.pipeline_expansion() - var/edge_check = result.len + alert_pressure = min(alert_pressure, item.alert_pressure) - if(result.len>0) - for(var/obj/machinery/atmospherics/pipe/item in result) - if(!members.Find(item)) - members += item - possible_expansions += item + if(item.air_temporary) + air.merge(item.air_temporary) - volume += item.volume - item.parent = src + edge_check-- - alert_pressure = min(alert_pressure, item.alert_pressure) + if(edge_check>0) + edges += borderline - if(item.air_temporary) - air.merge(item.air_temporary) + possible_expansions -= borderline - edge_check-- + air.volume = volume - if(edge_check>0) - edges += borderline +/datum/pipeline/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - possible_expansions -= borderline + if(new_network.line_members.Find(src)) + return 0 - air.volume = volume + new_network.line_members += src - proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + network = new_network - if(new_network.line_members.Find(src)) - return 0 + for(var/obj/machinery/atmospherics/pipe/edge in edges) + for(var/obj/machinery/atmospherics/result in edge.pipeline_expansion()) + if(!istype(result,/obj/machinery/atmospherics/pipe) && (result!=reference)) + result.network_expand(new_network, edge) - new_network.line_members += src + return 1 - network = new_network +/datum/pipeline/proc/return_network(obj/machinery/atmospherics/reference) + if(!network) + network = new /datum/pipe_network() + network.build_network(src, null) + //technically passing these parameters should not be allowed + //however pipe_network.build_network(..) and pipeline.network_extend(...) + // were setup to properly handle this case - for(var/obj/machinery/atmospherics/pipe/edge in edges) - for(var/obj/machinery/atmospherics/result in edge.pipeline_expansion()) - if(!istype(result,/obj/machinery/atmospherics/pipe) && (result!=reference)) - result.network_expand(new_network, edge) + return network - return 1 +/datum/pipeline/proc/mingle_with_turf(turf/simulated/target, mingle_volume) + var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume) + air_sample.volume = mingle_volume - proc/return_network(obj/machinery/atmospherics/reference) - if(!network) - network = new /datum/pipe_network() - network.build_network(src, null) - //technically passing these parameters should not be allowed - //however pipe_network.build_network(..) and pipeline.network_extend(...) - // were setup to properly handle this case + var/datum/gas_mixture/turf_air = target.return_air() - return network + equalize_gases(list(air_sample, turf_air)) + air.merge(air_sample) + //turf_air already modified by equalize_gases() - proc/mingle_with_turf(turf/simulated/target, mingle_volume) - var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume) - air_sample.volume = mingle_volume + if(istype(target)) + if(target.air) + if(target.air.check_tile_graphic()) + target.update_visuals(target.air) + if(network) + network.update = 1 - var/datum/gas_mixture/turf_air = target.return_air() +/datum/pipeline/proc/temperature_interact(turf/target, share_volume, thermal_conductivity) + var/total_heat_capacity = air.heat_capacity() + var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) - equalize_gases(list(air_sample, turf_air)) - air.merge(air_sample) - //turf_air already modified by equalize_gases() + if(istype(target, /turf/simulated)) + var/turf/simulated/modeled_location = target - if(istype(target)) - if(target.air) - if(target.air.check_tile_graphic()) - target.update_visuals(target.air) - if(network) - network.update = 1 + if(modeled_location.blocks_air) - proc/temperature_interact(turf/target, share_volume, thermal_conductivity) - var/total_heat_capacity = air.heat_capacity() - var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) - - if(istype(target, /turf/simulated)) - var/turf/simulated/modeled_location = target - - if(modeled_location.blocks_air) - - if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) - var/delta_temperature = air.temperature - modeled_location.temperature - - var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*modeled_location.heat_capacity/(partial_heat_capacity+modeled_location.heat_capacity)) - - air.temperature -= heat/total_heat_capacity - modeled_location.temperature += heat/modeled_location.heat_capacity - - else - var/delta_temperature = 0 - var/sharer_heat_capacity = 0 - - delta_temperature = (air.temperature - modeled_location.air.temperature) - sharer_heat_capacity = modeled_location.air.heat_capacity() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity>0) && (partial_heat_capacity>0)) - var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*sharer_heat_capacity/(partial_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/total_heat_capacity - sharer_temperature_delta = heat/sharer_heat_capacity - else - return 1 - - air.temperature += self_temperature_delta - - modeled_location.air.temperature += sharer_temperature_delta - - - else - if((target.heat_capacity>0) && (partial_heat_capacity>0)) - var/delta_temperature = air.temperature - target.temperature + if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) + var/delta_temperature = air.temperature - modeled_location.temperature var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) + (partial_heat_capacity*modeled_location.heat_capacity/(partial_heat_capacity+modeled_location.heat_capacity)) air.temperature -= heat/total_heat_capacity - if(network) - network.update = 1 \ No newline at end of file + modeled_location.temperature += heat/modeled_location.heat_capacity + + else + var/delta_temperature = 0 + var/sharer_heat_capacity = 0 + + delta_temperature = (air.temperature - modeled_location.air.temperature) + sharer_heat_capacity = modeled_location.air.heat_capacity() + + var/self_temperature_delta = 0 + var/sharer_temperature_delta = 0 + + if((sharer_heat_capacity>0) && (partial_heat_capacity>0)) + var/heat = thermal_conductivity*delta_temperature* \ + (partial_heat_capacity*sharer_heat_capacity/(partial_heat_capacity+sharer_heat_capacity)) + + self_temperature_delta = -heat/total_heat_capacity + sharer_temperature_delta = heat/sharer_heat_capacity + else + return 1 + + air.temperature += self_temperature_delta + + modeled_location.air.temperature += sharer_temperature_delta + + + else + if((target.heat_capacity>0) && (partial_heat_capacity>0)) + var/delta_temperature = air.temperature - target.temperature + + var/heat = thermal_conductivity*delta_temperature* \ + (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) + + air.temperature -= heat/total_heat_capacity + if(network) + network.update = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index ab6e2e2c8eb..e69de29bb2d 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -1,119 +0,0 @@ - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging - icon = 'icons/atmos/heat.dmi' - icon_state = "intact" - pipe_icon = "hepipe" - level = 2 - var/initialize_directions_he - var/surface = 2 - - minimum_temperature_difference = 20 - thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/process() - if(!parent) - ..() - else - var/environment_temperature = 0 - if(istype(loc, /turf/simulated/)) - if(loc:blocks_air) - environment_temperature = loc:temperature - else - var/datum/gas_mixture/environment = loc.return_air() - environment_temperature = environment.temperature - else - environment_temperature = loc:temperature - var/datum/gas_mixture/pipe_air = return_air() - if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) - parent.temperature_interact(loc, volume, thermal_conductivity) - - - -// BubbleWrap -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/New() - ..() - initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe - // BubbleWrap END - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/initialize() - normalize_dir() - var/node1_dir - var/node2_dir - - for(var/direction in cardinal) - if(direction&initialize_directions_he) - if (!node1_dir) - node1_dir = direction - else if (!node2_dir) - node2_dir = direction - - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node1_dir)) - if(target.initialize_directions_he & get_dir(target,src)) - node1 = target - break - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node2_dir)) - if(target.initialize_directions_he & get_dir(target,src)) - node2 = target - break - - if(!node1 && !node2) - del(src) - return - - update_icon() - return - - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/hidden - level=1 - icon_state="intact-f" - -///////////////////////////////// -// JUNCTION -///////////////////////////////// -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction - icon = 'icons/atmos/junction.dmi' - icon_state = "intact" - pipe_icon = "hejunction" - level = 2 - minimum_temperature_difference = 300 - thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT - - // BubbleWrap -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/New() - .. () - switch ( dir ) - if ( SOUTH ) - initialize_directions = NORTH - initialize_directions_he = SOUTH - if ( NORTH ) - initialize_directions = SOUTH - initialize_directions_he = NORTH - if ( EAST ) - initialize_directions = WEST - initialize_directions_he = EAST - if ( WEST ) - initialize_directions = EAST - initialize_directions_he = WEST - // BubbleWrap END - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/initialize() - for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions)) - if(target.initialize_directions & get_dir(target,src)) - node1 = target - break - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,initialize_directions_he)) - if(target.initialize_directions_he & get_dir(target,src)) - node2 = target - break - - if(!node1 && !node2) - qdel(src) - return - - update_icon() - return - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/hidden - level=1 - icon_state="intact-f" diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index e01ca491233..7ef76d8dc0e 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -1,128 +1,3 @@ -/obj/machinery/atmospherics/pipe - - var/datum/gas_mixture/air_temporary //used when reconstructing a pipeline that broke - var/datum/pipeline/parent - - var/volume = 0 - var/frozen = 0 // used by the pipe freezer - force = 20 - - layer = 2.4 //under wires with their 2.44 - use_power = 0 - - var/alert_pressure = 80*ONE_ATMOSPHERE - //minimum pressure before check_pressure(...) should be called -/obj/machinery/atmospherics/pipe/New() - ..() - //so pipes under walls are hidden - if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall)) - level = 1 - -/obj/machinery/atmospherics/pipe/proc/pipeline_expansion() - return null - -/obj/machinery/atmospherics/pipe/proc/check_pressure(pressure) - //Return 1 if parent should continue checking other pipes - //Return null if parent should stop checking other pipes. Recall: del(src) will by default return null - - return 1 - -/obj/machinery/atmospherics/pipe/return_air() - if(!parent) - parent = new /datum/pipeline() - parent.build_pipeline(src) - - return parent.air - -/obj/machinery/atmospherics/pipe/build_network() - if(!parent) - parent = new /datum/pipeline() - parent.build_pipeline(src) - - return parent.return_network() - -/obj/machinery/atmospherics/pipe/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(!parent) - parent = new /datum/pipeline() - parent.build_pipeline(src) - - return parent.network_expand(new_network, reference) - -/obj/machinery/atmospherics/pipe/return_network(obj/machinery/atmospherics/reference) - if(!parent) - parent = new /datum/pipeline() - parent.build_pipeline(src) - - return parent.return_network(reference) - - -/obj/machinery/atmospherics/pipe/Destroy() - qdel(parent) - if(air_temporary && loc) - loc.assume_air(air_temporary) - - return ..() - -/obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) - if (istype(src, /obj/machinery/atmospherics/pipe/tank)) - return ..() - if (istype(src, /obj/machinery/atmospherics/pipe/vent)) - return ..() - - if(istype(W,/obj/item/device/pipe_painter)) - return 0 - - if (istype(W, /obj/item/device/pipe_freezer)) - if(!src.frozen) // If the pipe is not already frozen - user << "\red You begin to freeze the [src]" - if (do_after(user, 60)) - user.visible_message( \ - "[user] freezes \the [src].", \ - "\blue You finished freezing \the [src].", \ - "You hear the hiss of gas.") - src.frozen = 1 - spawn (200) - src.frozen = 0 - src.visible_message( \ - "\the ice arounds the [src] melts.", \ - "\blue Your frozen [src] has thawed.", \ - "You hear dripping water.") - - add_fingerprint(user) - return 1 - - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = src.loc - if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - if (!src.frozen) // If the pipe is not frozen - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - var/obj/item/P = new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - del(meter) - if(P) - transfer_fingerprints_to(P) - P.add_fingerprint(user) - qdel(src) - return 1 - /obj/machinery/atmospherics/proc/change_color(var/new_color) //only pass valid pipe colors please ~otherwise your pipe will turn invisible if(!pipe_color_check(new_color)) @@ -146,329 +21,6 @@ return null */ -/obj/machinery/atmospherics/pipe/color_cache_name(var/obj/machinery/atmospherics/node) - if(istype(src, /obj/machinery/atmospherics/pipe/tank)) - return ..() - - if(istype(node, /obj/machinery/atmospherics/pipe/manifold) || istype(node, /obj/machinery/atmospherics/pipe/manifold4w)) - if(pipe_color == node.pipe_color) - return node.pipe_color - else - return null - else if(istype(node, /obj/machinery/atmospherics/pipe/simple)) - return node.pipe_color - else - return pipe_color - -/obj/machinery/atmospherics/pipe/simple - icon = 'icons/atmos/pipes.dmi' - icon_state = "" - var/pipe_icon = "" //what kind of pipe it is and from which dmi is the icon manager getting its icons, "" for simple pipes, "hepipe" for HE pipes, "hejunction" for HE junctions - name = "pipe" - desc = "A one meter section of regular pipe" - - volume = 70 - - dir = SOUTH - initialize_directions = SOUTH|NORTH - - var/obj/machinery/atmospherics/node1 - var/obj/machinery/atmospherics/node2 - - var/minimum_temperature_difference = 300 - var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No - - var/maximum_pressure = 70*ONE_ATMOSPHERE - var/fatigue_pressure = 55*ONE_ATMOSPHERE - alert_pressure = 55*ONE_ATMOSPHERE - - level = 1 - -/obj/machinery/atmospherics/pipe/simple/New() - ..() - - // Pipe colors and icon states are handled by an image cache - so color and icon should - // be null. For mapping purposes color is defined in the object definitions. - icon = null - alpha = 255 - - switch(dir) - if(SOUTH || NORTH) - initialize_directions = SOUTH|NORTH - if(EAST || WEST) - initialize_directions = EAST|WEST - if(NORTHEAST) - initialize_directions = NORTH|EAST - if(NORTHWEST) - initialize_directions = NORTH|WEST - if(SOUTHEAST) - initialize_directions = SOUTH|EAST - if(SOUTHWEST) - initialize_directions = SOUTH|WEST - -/obj/machinery/atmospherics/pipe/simple/hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - -/obj/machinery/atmospherics/pipe/simple/process() - if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle - ..() - else - . = PROCESS_KILL - -/obj/machinery/atmospherics/pipe/simple/check_pressure(pressure) - var/datum/gas_mixture/environment = loc.return_air() - - var/pressure_difference = pressure - environment.return_pressure() - - if(pressure_difference > maximum_pressure) - burst() - - else if(pressure_difference > fatigue_pressure) - //TODO: leak to turf, doing pfshhhhh - if(prob(5)) - burst() - - else return 1 - -/obj/machinery/atmospherics/pipe/simple/proc/burst() - src.visible_message("\red \bold [src] bursts!"); - playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new - smoke.set_up(1,0, src.loc, 0) - smoke.start() - del(src) - -/obj/machinery/atmospherics/pipe/simple/proc/normalize_dir() - if(dir==3) - dir = 1 - else if(dir==12) - dir = 4 - -/obj/machinery/atmospherics/pipe/simple/Destroy() - if(node1) - node1.disconnect(src) - if(node2) - node2.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/simple/pipeline_expansion() - return list(node1, node2) - -/obj/machinery/atmospherics/pipe/simple/change_color(var/new_color) - ..() - //for updating connected atmos device pipes (i.e. vents, manifolds, etc) - if(node1) - node1.update_underlays() - if(node2) - node2.update_underlays() - -/obj/machinery/atmospherics/pipe/simple/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - overlays.Cut() - - if(!node1 && !node2) - var/turf/T = get_turf(src) - new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - del(meter) - qdel(src) - else if(node1 && node2) - overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) - else - overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) - -/obj/machinery/atmospherics/pipe/simple/update_underlays() - return - -/obj/machinery/atmospherics/pipe/simple/initialize() - normalize_dir() - var/node1_dir - var/node2_dir - - for(var/direction in cardinal) - if(direction&initialize_directions) - if (!node1_dir) - node1_dir = direction - else if (!node2_dir) - node2_dir = direction - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_dir)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - for(var/obj/machinery/atmospherics/target in get_step(src,node2_dir)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node2 = target - break - - if(!node1 && !node2) - qdel(src) - return - - var/turf/T = get_turf(src) - if(istype(T)) - hide(T.intact) - update_icon() - -/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - if(reference == node2) - if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) - node2 = null - - update_icon() - - return null - -/obj/machinery/atmospherics/pipe/simple/visible - icon_state = "intact" - level = 2 - -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers - name = "Scrubbers pipe" - desc = "A one meter section of scrubbers pipe" - icon_state = "intact-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/simple/visible/supply - name = "Air supply pipe" - desc = "A one meter section of supply pipe" - icon_state = "intact-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/simple/visible/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/simple/visible/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/simple/visible/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/simple/visible/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/simple/hidden - icon_state = "intact" - level = 1 - alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game - -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers - name = "Scrubbers pipe" - desc = "A one meter section of scrubbers pipe" - icon_state = "intact-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/simple/hidden/supply - name = "Air supply pipe" - desc = "A one meter section of supply pipe" - icon_state = "intact-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/simple/visible/universal - name="Universal pipe adapter" - desc = "An adapter for regular, supply and scrubbers pipes" - connect_types = list(1,2,3) - icon_state = "map_universal" - -/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - overlays.Cut() - overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") - underlays.Cut() - - if (node1) - universal_underlays(node1) - if(node2) - universal_underlays(node2) - else - var/node1_dir = get_dir(node1,src) - universal_underlays(,node1_dir) - else if (node2) - universal_underlays(node2) - else - universal_underlays(,dir) - universal_underlays(,turn(dir, -180)) - -/obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays() - ..() - update_icon() - - - -/obj/machinery/atmospherics/pipe/simple/hidden/universal - name="Universal pipe adapter" - desc = "An adapter for regular, supply and scrubbers pipes" - connect_types = list(1,2,3) - icon_state = "map_universal" - -/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - overlays.Cut() - overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") - underlays.Cut() - - if (node1) - universal_underlays(node1) - if(node2) - universal_underlays(node2) - else - var/node2_dir = turn(get_dir(src,node1),-180) - universal_underlays(,node2_dir) - else if (node2) - universal_underlays(node2) - var/node1_dir = turn(get_dir(src,node2),-180) - universal_underlays(,node1_dir) - else - universal_underlays(,dir) - universal_underlays(,turn(dir, -180)) - -/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_underlays() - ..() - update_icon() - /obj/machinery/atmospherics/proc/universal_underlays(var/obj/machinery/atmospherics/node, var/direction) var/turf/T = get_turf(src) if(!istype(T)) return @@ -498,934 +50,4 @@ else underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) - -/obj/machinery/atmospherics/pipe/simple/hidden/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/simple/hidden/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/simple/hidden/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/simple/hidden/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/simple/insulated - icon = 'icons/obj/atmospherics/red_pipe.dmi' - icon_state = "intact" - - minimum_temperature_difference = 10000 - thermal_conductivity = 0 - maximum_pressure = 1000*ONE_ATMOSPHERE - fatigue_pressure = 900*ONE_ATMOSPHERE - alert_pressure = 900*ONE_ATMOSPHERE - - level = 2 - - -/obj/machinery/atmospherics/pipe/manifold - icon = 'icons/atmos/manifold.dmi' - icon_state = "" - name = "pipe manifold" - desc = "A manifold composed of regular pipes" - - volume = 105 - - dir = SOUTH - initialize_directions = EAST|NORTH|WEST - - var/obj/machinery/atmospherics/node1 - var/obj/machinery/atmospherics/node2 - var/obj/machinery/atmospherics/node3 - - level = 1 - layer = 2.4 //under wires with their 2.44 - -/obj/machinery/atmospherics/pipe/manifold/New() - ..() - alpha = 255 - icon = null - - switch(dir) - if(NORTH) - initialize_directions = EAST|SOUTH|WEST - if(SOUTH) - initialize_directions = WEST|NORTH|EAST - if(EAST) - initialize_directions = SOUTH|WEST|NORTH - if(WEST) - initialize_directions = NORTH|EAST|SOUTH - -/obj/machinery/atmospherics/pipe/manifold/hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - -/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion() - return list(node1, node2, node3) - -/obj/machinery/atmospherics/pipe/manifold/process() - if(!parent) - ..() - else - . = PROCESS_KILL - -/obj/machinery/atmospherics/pipe/manifold/Destroy() - if(node1) - node1.disconnect(src) - if(node2) - node2.disconnect(src) - if(node3) - node3.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - if(reference == node2) - if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) - node2 = null - - if(reference == node3) - if(istype(node3, /obj/machinery/atmospherics/pipe)) - del(parent) - node3 = null - - update_icon() - - ..() - -/obj/machinery/atmospherics/pipe/manifold/change_color(var/new_color) - ..() - //for updating connected atmos device pipes (i.e. vents, manifolds, etc) - if(node1) - node1.update_underlays() - if(node2) - node2.update_underlays() - if(node3) - node3.update_underlays() - -/obj/machinery/atmospherics/pipe/manifold/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - if(!node1 && !node2 && !node3) - var/turf/T = get_turf(src) - new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - del(meter) - qdel(src) - else - overlays.Cut() - overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) - overlays += icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) - underlays.Cut() - - var/turf/T = get_turf(src) - if(!istype(T)) return - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - var/node1_direction = get_dir(src, node1) - var/node2_direction = get_dir(src, node2) - var/node3_direction = get_dir(src, node3) - - directions -= dir - - directions -= add_underlay(T,node1,node1_direction,icon_connect_type) - directions -= add_underlay(T,node2,node2_direction,icon_connect_type) - directions -= add_underlay(T,node3,node3_direction,icon_connect_type) - - for(var/D in directions) - add_underlay(T,,D,icon_connect_type) - -/obj/machinery/atmospherics/pipe/manifold/update_underlays() - ..() - update_icon() - -/obj/machinery/atmospherics/pipe/manifold/initialize() - var/connect_directions = (NORTH|SOUTH|EAST|WEST)&(~dir) - - for(var/direction in cardinal) - if(direction&connect_directions) - for(var/obj/machinery/atmospherics/target in get_step(src,direction)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - connect_directions &= ~direction - break - if (node1) - break - - - for(var/direction in cardinal) - if(direction&connect_directions) - for(var/obj/machinery/atmospherics/target in get_step(src,direction)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node2 = target - connect_directions &= ~direction - break - if (node2) - break - - - for(var/direction in cardinal) - if(direction&connect_directions) - for(var/obj/machinery/atmospherics/target in get_step(src,direction)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node3 = target - connect_directions &= ~direction - break - if (node3) - break - - if(!node1 && !node2 && !node3) - del(src) - return - - var/turf/T = get_turf(src) - if(istype(T)) - hide(T.intact) - update_icon() - -/obj/machinery/atmospherics/pipe/manifold/visible - icon_state = "map" - level = 2 - -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers - name="Scrubbers pipe manifold" - desc = "A manifold composed of scrubbers pipes" - icon_state = "map-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/manifold/visible/supply - name="Air supply pipe manifold" - desc = "A manifold composed of supply pipes" - icon_state = "map-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/manifold/visible/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/manifold/visible/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/manifold/visible/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/manifold/visible/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/manifold/hidden - icon_state = "map" - level = 1 - alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game - -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers - name="Scrubbers pipe manifold" - desc = "A manifold composed of scrubbers pipes" - icon_state = "map-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/manifold/hidden/supply - name="Air supply pipe manifold" - desc = "A manifold composed of supply pipes" - icon_state = "map-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/manifold/hidden/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/manifold/hidden/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/manifold4w - icon = 'icons/atmos/manifold.dmi' - icon_state = "" - name = "4-way pipe manifold" - desc = "A manifold composed of regular pipes" - - volume = 140 - - dir = SOUTH - initialize_directions = NORTH|SOUTH|EAST|WEST - - var/obj/machinery/atmospherics/node1 - var/obj/machinery/atmospherics/node2 - var/obj/machinery/atmospherics/node3 - var/obj/machinery/atmospherics/node4 - - level = 1 - layer = 2.4 //under wires with their 2.44 - -/obj/machinery/atmospherics/pipe/manifold4w/New() - ..() - alpha = 255 - icon = null - -/obj/machinery/atmospherics/pipe/manifold4w/pipeline_expansion() - return list(node1, node2, node3, node4) - -/obj/machinery/atmospherics/pipe/manifold4w/process() - if(!parent) - ..() - else - . = PROCESS_KILL - -/obj/machinery/atmospherics/pipe/manifold4w/Destroy() - if(node1) - node1.disconnect(src) - if(node2) - node2.disconnect(src) - if(node3) - node3.disconnect(src) - if(node4) - node4.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - if(reference == node2) - if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) - node2 = null - - if(reference == node3) - if(istype(node3, /obj/machinery/atmospherics/pipe)) - del(parent) - node3 = null - - if(reference == node4) - if(istype(node4, /obj/machinery/atmospherics/pipe)) - del(parent) - node4 = null - - update_icon() - - ..() - -/obj/machinery/atmospherics/pipe/manifold4w/change_color(var/new_color) - ..() - //for updating connected atmos device pipes (i.e. vents, manifolds, etc) - if(node1) - node1.update_underlays() - if(node2) - node2.update_underlays() - if(node3) - node3.update_underlays() - if(node4) - node4.update_underlays() - -/obj/machinery/atmospherics/pipe/manifold4w/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - if(!node1 && !node2 && !node3 && !node4) - var/turf/T = get_turf(src) - new /obj/item/pipe(loc, make_from=src) - for (var/obj/machinery/meter/meter in T) - if (meter.target == src) - new /obj/item/pipe_meter(T) - del(meter) - qdel(src) - else - overlays.Cut() - overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) - overlays += icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) - underlays.Cut() - - /* - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - - directions -= add_underlay(node1) - directions -= add_underlay(node2) - directions -= add_underlay(node3) - directions -= add_underlay(node4) - - for(var/D in directions) - add_underlay(,D) - */ - - var/turf/T = get_turf(src) - if(!istype(T)) return - var/list/directions = list(NORTH, SOUTH, EAST, WEST) - var/node1_direction = get_dir(src, node1) - var/node2_direction = get_dir(src, node2) - var/node3_direction = get_dir(src, node3) - var/node4_direction = get_dir(src, node4) - - directions -= dir - - directions -= add_underlay(T,node1,node1_direction,icon_connect_type) - directions -= add_underlay(T,node2,node2_direction,icon_connect_type) - directions -= add_underlay(T,node3,node3_direction,icon_connect_type) - directions -= add_underlay(T,node4,node4_direction,icon_connect_type) - - for(var/D in directions) - add_underlay(T,,D,icon_connect_type) - -/obj/machinery/atmospherics/pipe/manifold4w/update_underlays() - ..() - update_icon() - -/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - -/obj/machinery/atmospherics/pipe/manifold4w/initialize() - - for(var/obj/machinery/atmospherics/target in get_step(src,1)) - if(target.initialize_directions & 2) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,2)) - if(target.initialize_directions & 1) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node2 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,4)) - if(target.initialize_directions & 8) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node3 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,8)) - if(target.initialize_directions & 4) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node4 = target - break - - if(!node1 && !node2 && !node3&& !node4) - del(src) - return - - var/turf/T = get_turf(src) - if(istype(T)) - hide(T.intact) - update_icon() - -/obj/machinery/atmospherics/pipe/manifold4w/visible - icon_state = "map_4way" - level = 2 - -/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers - name="4-way scrubbers pipe manifold" - desc = "A manifold composed of scrubbers pipes" - icon_state = "map_4way-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/manifold4w/visible/supply - name="4-way air supply pipe manifold" - desc = "A manifold composed of supply pipes" - icon_state = "map_4way-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/manifold4w/visible/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/manifold4w/visible/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/manifold4w/hidden - icon_state = "map_4way" - level = 1 - alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers - name="4-way scrubbers pipe manifold" - desc = "A manifold composed of scrubbers pipes" - icon_state = "map_4way-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply - name="4-way air supply pipe manifold" - desc = "A manifold composed of supply pipes" - icon_state = "map_4way-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow - color = PIPE_COLOR_YELLOW - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/cyan - color = PIPE_COLOR_CYAN - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/green - color = PIPE_COLOR_GREEN - -/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple - color = PIPE_COLOR_PURPLE - -/obj/machinery/atmospherics/pipe/cap - name = "pipe endcap" - desc = "An endcap for pipes" - icon = 'icons/atmos/pipes.dmi' - icon_state = "cap" - level = 2 - layer = 2.4 //under wires with their 2.44 - - volume = 35 - - dir = SOUTH - initialize_directions = SOUTH - - var/obj/machinery/atmospherics/node - -/obj/machinery/atmospherics/pipe/cap/New() - ..() - initialize_directions = dir - -/obj/machinery/atmospherics/pipe/cap/hide(var/i) - if(level == 1 && istype(loc, /turf/simulated)) - invisibility = i ? 101 : 0 - update_icon() - -/obj/machinery/atmospherics/pipe/cap/pipeline_expansion() - return list(node) - -/obj/machinery/atmospherics/pipe/cap/process() - if(!parent) - ..() - else - . = PROCESS_KILL -/obj/machinery/atmospherics/pipe/cap/Destroy() - if(node) - node.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference) - if(reference == node) - if(istype(node, /obj/machinery/atmospherics/pipe)) - del(parent) - node = null - - update_icon() - - ..() - -/obj/machinery/atmospherics/pipe/cap/change_color(var/new_color) - ..() - //for updating connected atmos device pipes (i.e. vents, manifolds, etc) - if(node) - node.update_underlays() - -/obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0) - if(!check_icon_cache()) - return - - alpha = 255 - - overlays.Cut() - overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) - -/obj/machinery/atmospherics/pipe/cap/initialize() - for(var/obj/machinery/atmospherics/target in get_step(src, dir)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node = target - break - - var/turf/T = get_turf(src) // hide if turf is not intact - if(!istype(T)) return - hide(T.intact) - update_icon() - -/obj/machinery/atmospherics/pipe/cap/visible - level = 2 - icon_state = "cap" - -/obj/machinery/atmospherics/pipe/cap/visible/scrubbers - name = "scrubbers pipe endcap" - desc = "An endcap for scrubbers pipes" - icon_state = "cap-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/cap/visible/supply - name = "supply pipe endcap" - desc = "An endcap for supply pipes" - icon_state = "cap-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/cap/hidden - level = 1 - icon_state = "cap" - alpha = 128 - -/obj/machinery/atmospherics/pipe/cap/hidden/scrubbers - name = "scrubbers pipe endcap" - desc = "An endcap for scrubbers pipes" - icon_state = "cap-scrubbers" - connect_types = list(3) - layer = 2.38 - icon_connect_type = "-scrubbers" - color = PIPE_COLOR_RED - -/obj/machinery/atmospherics/pipe/cap/hidden/supply - name = "supply pipe endcap" - desc = "An endcap for supply pipes" - icon_state = "cap-supply" - connect_types = list(2) - layer = 2.39 - icon_connect_type = "-supply" - color = PIPE_COLOR_BLUE - -/obj/machinery/atmospherics/pipe/tank - icon = 'icons/atmos/tank.dmi' - icon_state = "air_map" - - name = "Pressure Tank" - desc = "A large vessel containing pressurized gas." - - volume = 10000 //in liters, 1 meters by 1 meters by 2 meters ~tweaked it a little to simulate a pressure tank without needing to recode them yet - - level = 1 - dir = SOUTH - initialize_directions = SOUTH - density = 1 - - var/obj/machinery/atmospherics/node1 - -/obj/machinery/atmospherics/pipe/tank/New() - icon_state = "air" - initialize_directions = dir - ..() - -/obj/machinery/atmospherics/pipe/tank/process() - if(!parent) - ..() - else - . = PROCESS_KILL - -/obj/machinery/atmospherics/pipe/tank/Destroy() - if(node1) - node1.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/tank/pipeline_expansion() - return list(node1) - -/obj/machinery/atmospherics/pipe/tank/update_underlays() - if(..()) - underlays.Cut() - var/turf/T = get_turf(src) - if(!istype(T)) - return - add_underlay(T, node1, dir) - -/obj/machinery/atmospherics/pipe/tank/hide() - update_underlays() - -/obj/machinery/atmospherics/pipe/tank/initialize() - var/connect_direction = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - - update_underlays() - -/obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - update_underlays() - - return null - -/obj/machinery/atmospherics/pipe/tank/attackby(var/obj/item/W as obj, var/mob/user as mob, params) - if(istype(W, /obj/item/device/pipe_painter)) - return - - if(istype(W, /obj/item/device/analyzer)) - atmosanalyzer_scan(parent.air, user) - return - -/obj/machinery/atmospherics/pipe/tank/air - name = "Pressure Tank (Air)" - icon_state = "air_map" - -/obj/machinery/atmospherics/pipe/tank/air/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T20C - - air_temporary.oxygen = (25*ONE_ATMOSPHERE*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - air_temporary.nitrogen = (25*ONE_ATMOSPHERE*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - ..() - icon_state = "air" - -/obj/machinery/atmospherics/pipe/tank/oxygen - name = "Pressure Tank (Oxygen)" - icon_state = "o2_map" - -/obj/machinery/atmospherics/pipe/tank/oxygen/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T20C - - air_temporary.oxygen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - ..() - icon_state = "o2" - -/obj/machinery/atmospherics/pipe/tank/nitrogen - name = "Pressure Tank (Nitrogen)" - icon_state = "n2_map" - -/obj/machinery/atmospherics/pipe/tank/nitrogen/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T20C - - air_temporary.nitrogen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - ..() - icon_state = "n2" - -/obj/machinery/atmospherics/pipe/tank/carbon_dioxide - name = "Pressure Tank (Carbon Dioxide)" - icon_state = "co2_map" - -/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T20C - - air_temporary.carbon_dioxide = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - ..() - icon_state = "co2" - -/obj/machinery/atmospherics/pipe/tank/toxins - name = "Pressure Tank (Toxins)" - icon_state = "toxins_map" - -/obj/machinery/atmospherics/pipe/tank/toxins/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T20C - - air_temporary.toxins = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - ..() - icon_state = "toxins" - -/obj/machinery/atmospherics/pipe/tank/nitrous_oxide - name = "Pressure Tank (Nitrous Oxide)" - icon_state = "n2o_map" - -/obj/machinery/atmospherics/pipe/tank/nitrous_oxide/New() - air_temporary = new - air_temporary.volume = volume - air_temporary.temperature = T0C - - var/datum/gas/sleeping_agent/trace_gas = new - trace_gas.moles = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) - - air_temporary.trace_gases += trace_gas - - ..() - icon_state = "n2o" - -/obj/machinery/atmospherics/pipe/vent - icon = 'icons/obj/atmospherics/pipe_vent.dmi' - icon_state = "intact" - - name = "Vent" - desc = "A large air vent" - - level = 1 - - volume = 250 - - dir = SOUTH - initialize_directions = SOUTH - - var/build_killswitch = 1 - - var/obj/machinery/atmospherics/node1 - -/obj/machinery/atmospherics/pipe/vent/New() - initialize_directions = dir - ..() - -/obj/machinery/atmospherics/pipe/vent/high_volume - name = "Larger vent" - volume = 1000 - -/obj/machinery/atmospherics/pipe/vent/process() - if(!parent) - if(build_killswitch <= 0) - . = PROCESS_KILL - else - build_killswitch-- - ..() - return - else - parent.mingle_with_turf(loc, volume) - -/obj/machinery/atmospherics/pipe/vent/Destroy() - if(node1) - node1.disconnect(src) - - return ..() - -/obj/machinery/atmospherics/pipe/vent/pipeline_expansion() - return list(node1) - -/obj/machinery/atmospherics/pipe/vent/update_icon() - if(node1) - icon_state = "intact" - - dir = get_dir(src, node1) - - else - icon_state = "exposed" - -/obj/machinery/atmospherics/pipe/vent/initialize() - var/connect_direction = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - - update_icon() - -/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference) - if(reference == node1) - if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) - node1 = null - - update_icon() - - return null - -/obj/machinery/atmospherics/pipe/vent/hide(var/i) //to make the little pipe section invisible, the icon changes. - if(node1) - icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact" - dir = get_dir(src, node1) - else - icon_state = "exposed" - -/obj/machinery/atmospherics/pipe/vent/attackby(var/obj/item/weapon/W, var/mob/user) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = get_turf(src) - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = T.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(T, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - new /obj/item/pipe(T, make_from=src) - del(src) + underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm new file mode 100644 index 00000000000..aebf3f951ac --- /dev/null +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -0,0 +1,122 @@ +/obj/machinery/atmospherics/pipe/cap + name = "pipe endcap" + desc = "An endcap for pipes" + icon = 'icons/atmos/pipes.dmi' + icon_state = "cap" + level = 2 + layer = 2.4 //under wires with their 2.44 + + volume = 35 + + dir = SOUTH + initialize_directions = SOUTH + + var/obj/machinery/atmospherics/node + +/obj/machinery/atmospherics/pipe/cap/New() + ..() + initialize_directions = dir + +/obj/machinery/atmospherics/pipe/cap/hide(var/i) + if(level == 1 && istype(loc, /turf/simulated)) + invisibility = i ? 101 : 0 + update_icon() + +/obj/machinery/atmospherics/pipe/cap/pipeline_expansion() + return list(node) + +/obj/machinery/atmospherics/pipe/cap/process() + if(!parent) + ..() + else + . = PROCESS_KILL +/obj/machinery/atmospherics/pipe/cap/Destroy() + if(node) + node.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference) + if(reference == node) + if(istype(node, /obj/machinery/atmospherics/pipe)) + del(parent) + node = null + + update_icon() + + ..() + +/obj/machinery/atmospherics/pipe/cap/change_color(var/new_color) + ..() + //for updating connected atmos device pipes (i.e. vents, manifolds, etc) + if(node) + node.update_underlays() + +/obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + overlays.Cut() + overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) + +/obj/machinery/atmospherics/pipe/cap/initialize() + for(var/obj/machinery/atmospherics/target in get_step(src, dir)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node = target + break + + var/turf/T = get_turf(src) // hide if turf is not intact + if(!istype(T)) return + hide(T.intact) + update_icon() + +/obj/machinery/atmospherics/pipe/cap/visible + level = 2 + icon_state = "cap" + +/obj/machinery/atmospherics/pipe/cap/visible/scrubbers + name = "scrubbers pipe endcap" + desc = "An endcap for scrubbers pipes" + icon_state = "cap-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/cap/visible/supply + name = "supply pipe endcap" + desc = "An endcap for supply pipes" + icon_state = "cap-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/cap/hidden + level = 1 + icon_state = "cap" + alpha = 128 + +/obj/machinery/atmospherics/pipe/cap/hidden/scrubbers + name = "scrubbers pipe endcap" + desc = "An endcap for scrubbers pipes" + icon_state = "cap-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/cap/hidden/supply + name = "supply pipe endcap" + desc = "An endcap for supply pipes" + icon_state = "cap-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm new file mode 100644 index 00000000000..eb55f3944e1 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -0,0 +1,251 @@ +/obj/machinery/atmospherics/pipe/manifold + icon = 'icons/atmos/manifold.dmi' + icon_state = "" + name = "pipe manifold" + desc = "A manifold composed of regular pipes" + + volume = 105 + + dir = SOUTH + initialize_directions = EAST|NORTH|WEST + + var/obj/machinery/atmospherics/node1 + var/obj/machinery/atmospherics/node2 + var/obj/machinery/atmospherics/node3 + + level = 1 + layer = 2.4 //under wires with their 2.44 + +/obj/machinery/atmospherics/pipe/manifold/New() + ..() + alpha = 255 + icon = null + + switch(dir) + if(NORTH) + initialize_directions = EAST|SOUTH|WEST + if(SOUTH) + initialize_directions = WEST|NORTH|EAST + if(EAST) + initialize_directions = SOUTH|WEST|NORTH + if(WEST) + initialize_directions = NORTH|EAST|SOUTH + +/obj/machinery/atmospherics/pipe/manifold/hide(var/i) + if(level == 1 && istype(loc, /turf/simulated)) + invisibility = i ? 101 : 0 + update_icon() + +/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion() + return list(node1, node2, node3) + +/obj/machinery/atmospherics/pipe/manifold/process() + if(!parent) + ..() + else + . = PROCESS_KILL + +/obj/machinery/atmospherics/pipe/manifold/Destroy() + if(node1) + node1.disconnect(src) + if(node2) + node2.disconnect(src) + if(node3) + node3.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null + + if(reference == node2) + if(istype(node2, /obj/machinery/atmospherics/pipe)) + del(parent) + node2 = null + + if(reference == node3) + if(istype(node3, /obj/machinery/atmospherics/pipe)) + del(parent) + node3 = null + + update_icon() + + ..() + +/obj/machinery/atmospherics/pipe/manifold/change_color(var/new_color) + ..() + //for updating connected atmos device pipes (i.e. vents, manifolds, etc) + if(node1) + node1.update_underlays() + if(node2) + node2.update_underlays() + if(node3) + node3.update_underlays() + +/obj/machinery/atmospherics/pipe/manifold/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + if(!node1 && !node2 && !node3) + var/turf/T = get_turf(src) + new /obj/item/pipe(loc, make_from=src) + for (var/obj/machinery/meter/meter in T) + if (meter.target == src) + new /obj/item/pipe_meter(T) + del(meter) + qdel(src) + else + overlays.Cut() + overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) + overlays += icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) + underlays.Cut() + + var/turf/T = get_turf(src) + if(!istype(T)) return + var/list/directions = list(NORTH, SOUTH, EAST, WEST) + var/node1_direction = get_dir(src, node1) + var/node2_direction = get_dir(src, node2) + var/node3_direction = get_dir(src, node3) + + directions -= dir + + directions -= add_underlay(T,node1,node1_direction,icon_connect_type) + directions -= add_underlay(T,node2,node2_direction,icon_connect_type) + directions -= add_underlay(T,node3,node3_direction,icon_connect_type) + + for(var/D in directions) + add_underlay(T,,D,icon_connect_type) + +/obj/machinery/atmospherics/pipe/manifold/update_underlays() + ..() + update_icon() + +/obj/machinery/atmospherics/pipe/manifold/initialize() + var/connect_directions = (NORTH|SOUTH|EAST|WEST)&(~dir) + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/target in get_step(src,direction)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + connect_directions &= ~direction + break + if (node1) + break + + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/target in get_step(src,direction)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node2 = target + connect_directions &= ~direction + break + if (node2) + break + + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/target in get_step(src,direction)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node3 = target + connect_directions &= ~direction + break + if (node3) + break + + if(!node1 && !node2 && !node3) + del(src) + return + + var/turf/T = get_turf(src) + if(istype(T)) + hide(T.intact) + update_icon() + +/obj/machinery/atmospherics/pipe/manifold/visible + icon_state = "map" + level = 2 + +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers + name="Scrubbers pipe manifold" + desc = "A manifold composed of scrubbers pipes" + icon_state = "map-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/manifold/visible/supply + name="Air supply pipe manifold" + desc = "A manifold composed of supply pipes" + icon_state = "map-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/manifold/visible/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold/visible/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/manifold/visible/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/manifold/visible/purple + color = PIPE_COLOR_PURPLE + +/obj/machinery/atmospherics/pipe/manifold/hidden + icon_state = "map" + level = 1 + alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game + +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers + name="Scrubbers pipe manifold" + desc = "A manifold composed of scrubbers pipes" + icon_state = "map-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/manifold/hidden/supply + name="Air supply pipe manifold" + desc = "A manifold composed of supply pipes" + icon_state = "map-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/manifold/hidden/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/manifold/hidden/purple + color = PIPE_COLOR_PURPLE diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm new file mode 100644 index 00000000000..93a029ac2ca --- /dev/null +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -0,0 +1,256 @@ +/obj/machinery/atmospherics/pipe/manifold4w + icon = 'icons/atmos/manifold.dmi' + icon_state = "" + name = "4-way pipe manifold" + desc = "A manifold composed of regular pipes" + + volume = 140 + + dir = SOUTH + initialize_directions = NORTH|SOUTH|EAST|WEST + + var/obj/machinery/atmospherics/node1 + var/obj/machinery/atmospherics/node2 + var/obj/machinery/atmospherics/node3 + var/obj/machinery/atmospherics/node4 + + level = 1 + layer = 2.4 //under wires with their 2.44 + +/obj/machinery/atmospherics/pipe/manifold4w/New() + ..() + alpha = 255 + icon = null + +/obj/machinery/atmospherics/pipe/manifold4w/pipeline_expansion() + return list(node1, node2, node3, node4) + +/obj/machinery/atmospherics/pipe/manifold4w/process() + if(!parent) + ..() + else + . = PROCESS_KILL + +/obj/machinery/atmospherics/pipe/manifold4w/Destroy() + if(node1) + node1.disconnect(src) + if(node2) + node2.disconnect(src) + if(node3) + node3.disconnect(src) + if(node4) + node4.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null + + if(reference == node2) + if(istype(node2, /obj/machinery/atmospherics/pipe)) + del(parent) + node2 = null + + if(reference == node3) + if(istype(node3, /obj/machinery/atmospherics/pipe)) + del(parent) + node3 = null + + if(reference == node4) + if(istype(node4, /obj/machinery/atmospherics/pipe)) + del(parent) + node4 = null + + update_icon() + + ..() + +/obj/machinery/atmospherics/pipe/manifold4w/change_color(var/new_color) + ..() + //for updating connected atmos device pipes (i.e. vents, manifolds, etc) + if(node1) + node1.update_underlays() + if(node2) + node2.update_underlays() + if(node3) + node3.update_underlays() + if(node4) + node4.update_underlays() + +/obj/machinery/atmospherics/pipe/manifold4w/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + if(!node1 && !node2 && !node3 && !node4) + var/turf/T = get_turf(src) + new /obj/item/pipe(loc, make_from=src) + for (var/obj/machinery/meter/meter in T) + if (meter.target == src) + new /obj/item/pipe_meter(T) + del(meter) + qdel(src) + else + overlays.Cut() + overlays += icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) + overlays += icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) + underlays.Cut() + + /* + var/list/directions = list(NORTH, SOUTH, EAST, WEST) + + directions -= add_underlay(node1) + directions -= add_underlay(node2) + directions -= add_underlay(node3) + directions -= add_underlay(node4) + + for(var/D in directions) + add_underlay(,D) + */ + + var/turf/T = get_turf(src) + if(!istype(T)) return + var/list/directions = list(NORTH, SOUTH, EAST, WEST) + var/node1_direction = get_dir(src, node1) + var/node2_direction = get_dir(src, node2) + var/node3_direction = get_dir(src, node3) + var/node4_direction = get_dir(src, node4) + + directions -= dir + + directions -= add_underlay(T,node1,node1_direction,icon_connect_type) + directions -= add_underlay(T,node2,node2_direction,icon_connect_type) + directions -= add_underlay(T,node3,node3_direction,icon_connect_type) + directions -= add_underlay(T,node4,node4_direction,icon_connect_type) + + for(var/D in directions) + add_underlay(T,,D,icon_connect_type) + +/obj/machinery/atmospherics/pipe/manifold4w/update_underlays() + ..() + update_icon() + +/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i) + if(level == 1 && istype(loc, /turf/simulated)) + invisibility = i ? 101 : 0 + update_icon() + +/obj/machinery/atmospherics/pipe/manifold4w/initialize() + + for(var/obj/machinery/atmospherics/target in get_step(src,1)) + if(target.initialize_directions & 2) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,2)) + if(target.initialize_directions & 1) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node2 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,4)) + if(target.initialize_directions & 8) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node3 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,8)) + if(target.initialize_directions & 4) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node4 = target + break + + if(!node1 && !node2 && !node3&& !node4) + del(src) + return + + var/turf/T = get_turf(src) + if(istype(T)) + hide(T.intact) + update_icon() + +/obj/machinery/atmospherics/pipe/manifold4w/visible + icon_state = "map_4way" + level = 2 + +/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers + name="4-way scrubbers pipe manifold" + desc = "A manifold composed of scrubbers pipes" + icon_state = "map_4way-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/manifold4w/visible/supply + name="4-way air supply pipe manifold" + desc = "A manifold composed of supply pipes" + icon_state = "map_4way-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/manifold4w/visible/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/manifold4w/visible/purple + color = PIPE_COLOR_PURPLE + +/obj/machinery/atmospherics/pipe/manifold4w/hidden + icon_state = "map_4way" + level = 1 + alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers + name="4-way scrubbers pipe manifold" + desc = "A manifold composed of scrubbers pipes" + icon_state = "map_4way-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply + name="4-way air supply pipe manifold" + desc = "A manifold composed of supply pipes" + icon_state = "map_4way-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple + color = PIPE_COLOR_PURPLE \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm new file mode 100644 index 00000000000..6ccecd64d11 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/pipe.dm @@ -0,0 +1,138 @@ +/obj/machinery/atmospherics/pipe + + var/datum/gas_mixture/air_temporary //used when reconstructing a pipeline that broke + var/datum/pipeline/parent + + var/volume = 0 + var/frozen = 0 // used by the pipe freezer + force = 20 + + layer = 2.4 //under wires with their 2.44 + use_power = 0 + + var/alert_pressure = 80*ONE_ATMOSPHERE + //minimum pressure before check_pressure(...) should be called +/obj/machinery/atmospherics/pipe/New() + ..() + //so pipes under walls are hidden + if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall)) + level = 1 + +/obj/machinery/atmospherics/pipe/proc/pipeline_expansion() + return null + +/obj/machinery/atmospherics/pipe/proc/check_pressure(pressure) + //Return 1 if parent should continue checking other pipes + //Return null if parent should stop checking other pipes. Recall: del(src) will by default return null + + return 1 + +/obj/machinery/atmospherics/pipe/return_air() + if(!parent) + parent = new /datum/pipeline() + parent.build_pipeline(src) + + return parent.air + +/obj/machinery/atmospherics/pipe/build_network() + if(!parent) + parent = new /datum/pipeline() + parent.build_pipeline(src) + + return parent.return_network() + +/obj/machinery/atmospherics/pipe/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(!parent) + parent = new /datum/pipeline() + parent.build_pipeline(src) + + return parent.network_expand(new_network, reference) + +/obj/machinery/atmospherics/pipe/return_network(obj/machinery/atmospherics/reference) + if(!parent) + parent = new /datum/pipeline() + parent.build_pipeline(src) + + return parent.return_network(reference) + + +/obj/machinery/atmospherics/pipe/Destroy() + qdel(parent) + if(air_temporary && loc) + loc.assume_air(air_temporary) + + return ..() + +/obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) + if (istype(src, /obj/machinery/atmospherics/pipe/tank)) + return ..() + if (istype(src, /obj/machinery/atmospherics/pipe/vent)) + return ..() + + if(istype(W,/obj/item/device/pipe_painter)) + return 0 + + if (istype(W, /obj/item/device/pipe_freezer)) + if(!src.frozen) // If the pipe is not already frozen + user << "\red You begin to freeze the [src]" + if (do_after(user, 60)) + user.visible_message( \ + "[user] freezes \the [src].", \ + "\blue You finished freezing \the [src].", \ + "You hear the hiss of gas.") + src.frozen = 1 + spawn (200) + src.frozen = 0 + src.visible_message( \ + "\the ice arounds the [src] melts.", \ + "\blue Your frozen [src] has thawed.", \ + "You hear dripping water.") + + add_fingerprint(user) + return 1 + + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && T.intact) + user << "\red You must remove the plating first." + return 1 + + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + if (!src.frozen) // If the pipe is not frozen + user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "\blue You have unfastened \the [src].", \ + "You hear ratchet.") + var/obj/item/P = new /obj/item/pipe(loc, make_from=src) + for (var/obj/machinery/meter/meter in T) + if (meter.target == src) + new /obj/item/pipe_meter(T) + del(meter) + if(P) + transfer_fingerprints_to(P) + P.add_fingerprint(user) + qdel(src) + return 1 + +/obj/machinery/atmospherics/pipe/color_cache_name(var/obj/machinery/atmospherics/node) + if(istype(src, /obj/machinery/atmospherics/pipe/tank)) + return ..() + + if(istype(node, /obj/machinery/atmospherics/pipe/manifold) || istype(node, /obj/machinery/atmospherics/pipe/manifold4w)) + if(pipe_color == node.pipe_color) + return node.pipe_color + else + return null + else if(istype(node, /obj/machinery/atmospherics/pipe/simple)) + return node.pipe_color + else + return pipe_color \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm new file mode 100644 index 00000000000..be68ec30287 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -0,0 +1,181 @@ +/obj/machinery/atmospherics/pipe/simple + icon = 'icons/atmos/pipes.dmi' + icon_state = "" + var/pipe_icon = "" //what kind of pipe it is and from which dmi is the icon manager getting its icons, "" for simple pipes, "hepipe" for HE pipes, "hejunction" for HE junctions + name = "pipe" + desc = "A one meter section of regular pipe" + + volume = 70 + + dir = SOUTH + initialize_directions = SOUTH|NORTH + + var/obj/machinery/atmospherics/node1 + var/obj/machinery/atmospherics/node2 + + var/minimum_temperature_difference = 300 + var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No + + var/maximum_pressure = 70*ONE_ATMOSPHERE + var/fatigue_pressure = 55*ONE_ATMOSPHERE + alert_pressure = 55*ONE_ATMOSPHERE + + level = 1 + +/obj/machinery/atmospherics/pipe/simple/New() + ..() + + // Pipe colors and icon states are handled by an image cache - so color and icon should + // be null. For mapping purposes color is defined in the object definitions. + icon = null + alpha = 255 + + switch(dir) + if(SOUTH || NORTH) + initialize_directions = SOUTH|NORTH + if(EAST || WEST) + initialize_directions = EAST|WEST + if(NORTHEAST) + initialize_directions = NORTH|EAST + if(NORTHWEST) + initialize_directions = NORTH|WEST + if(SOUTHEAST) + initialize_directions = SOUTH|EAST + if(SOUTHWEST) + initialize_directions = SOUTH|WEST + +/obj/machinery/atmospherics/pipe/simple/hide(var/i) + if(level == 1 && istype(loc, /turf/simulated)) + invisibility = i ? 101 : 0 + update_icon() + +/obj/machinery/atmospherics/pipe/simple/process() + if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle + ..() + else + . = PROCESS_KILL + +/obj/machinery/atmospherics/pipe/simple/check_pressure(pressure) + var/datum/gas_mixture/environment = loc.return_air() + + var/pressure_difference = pressure - environment.return_pressure() + + if(pressure_difference > maximum_pressure) + burst() + + else if(pressure_difference > fatigue_pressure) + //TODO: leak to turf, doing pfshhhhh + if(prob(5)) + burst() + + else return 1 + +/obj/machinery/atmospherics/pipe/simple/proc/burst() + src.visible_message("\red \bold [src] bursts!"); + playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) + var/datum/effect/effect/system/harmless_smoke_spread/smoke = new + smoke.set_up(1,0, src.loc, 0) + smoke.start() + del(src) + +/obj/machinery/atmospherics/pipe/simple/proc/normalize_dir() + if(dir==3) + dir = 1 + else if(dir==12) + dir = 4 + +/obj/machinery/atmospherics/pipe/simple/Destroy() + if(node1) + node1.disconnect(src) + if(node2) + node2.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/simple/pipeline_expansion() + return list(node1, node2) + +/obj/machinery/atmospherics/pipe/simple/change_color(var/new_color) + ..() + //for updating connected atmos device pipes (i.e. vents, manifolds, etc) + if(node1) + node1.update_underlays() + if(node2) + node2.update_underlays() + +/obj/machinery/atmospherics/pipe/simple/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + overlays.Cut() + + if(!node1 && !node2) + var/turf/T = get_turf(src) + new /obj/item/pipe(loc, make_from=src) + for (var/obj/machinery/meter/meter in T) + if (meter.target == src) + new /obj/item/pipe_meter(T) + del(meter) + qdel(src) + else if(node1 && node2) + overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) + else + overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) + +/obj/machinery/atmospherics/pipe/simple/update_underlays() + return + +/obj/machinery/atmospherics/pipe/simple/initialize() + normalize_dir() + var/node1_dir + var/node2_dir + + for(var/direction in cardinal) + if(direction&initialize_directions) + if (!node1_dir) + node1_dir = direction + else if (!node2_dir) + node2_dir = direction + + for(var/obj/machinery/atmospherics/target in get_step(src,node1_dir)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + for(var/obj/machinery/atmospherics/target in get_step(src,node2_dir)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node2 = target + break + + if(!node1 && !node2) + qdel(src) + return + + var/turf/T = get_turf(src) + if(istype(T)) + hide(T.intact) + update_icon() + +/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null + + if(reference == node2) + if(istype(node2, /obj/machinery/atmospherics/pipe)) + del(parent) + node2 = null + + update_icon() + + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm new file mode 100644 index 00000000000..e94f8c46aaf --- /dev/null +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm @@ -0,0 +1,118 @@ +/obj/machinery/atmospherics/pipe/simple/heat_exchanging + icon = 'icons/atmos/heat.dmi' + icon_state = "intact" + pipe_icon = "hepipe" + level = 2 + var/initialize_directions_he + var/surface = 2 + + minimum_temperature_difference = 20 + thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/process() + if(!parent) + ..() + else + var/environment_temperature = 0 + if(istype(loc, /turf/simulated/)) + if(loc:blocks_air) + environment_temperature = loc:temperature + else + var/datum/gas_mixture/environment = loc.return_air() + environment_temperature = environment.temperature + else + environment_temperature = loc:temperature + var/datum/gas_mixture/pipe_air = return_air() + if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) + parent.temperature_interact(loc, volume, thermal_conductivity) + + + +// BubbleWrap +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/New() + ..() + initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe + // BubbleWrap END + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/initialize() + normalize_dir() + var/node1_dir + var/node2_dir + + for(var/direction in cardinal) + if(direction&initialize_directions_he) + if (!node1_dir) + node1_dir = direction + else if (!node2_dir) + node2_dir = direction + + for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node1_dir)) + if(target.initialize_directions_he & get_dir(target,src)) + node1 = target + break + for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node2_dir)) + if(target.initialize_directions_he & get_dir(target,src)) + node2 = target + break + + if(!node1 && !node2) + del(src) + return + + update_icon() + return + + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/hidden + level=1 + icon_state="intact-f" + +///////////////////////////////// +// JUNCTION +///////////////////////////////// +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction + icon = 'icons/atmos/junction.dmi' + icon_state = "intact" + pipe_icon = "hejunction" + level = 2 + minimum_temperature_difference = 300 + thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT + + // BubbleWrap +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/New() + .. () + switch ( dir ) + if ( SOUTH ) + initialize_directions = NORTH + initialize_directions_he = SOUTH + if ( NORTH ) + initialize_directions = SOUTH + initialize_directions_he = NORTH + if ( EAST ) + initialize_directions = WEST + initialize_directions_he = EAST + if ( WEST ) + initialize_directions = EAST + initialize_directions_he = WEST + // BubbleWrap END + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/initialize() + for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions)) + if(target.initialize_directions & get_dir(target,src)) + node1 = target + break + for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,initialize_directions_he)) + if(target.initialize_directions_he & get_dir(target,src)) + node2 = target + break + + if(!node1 && !node2) + qdel(src) + return + + update_icon() + return + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/hidden + level=1 + icon_state="intact-f" diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm new file mode 100644 index 00000000000..7cf983e0e32 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm @@ -0,0 +1,69 @@ +/obj/machinery/atmospherics/pipe/simple/hidden + icon_state = "intact" + level = 1 + alpha = 128 //set for the benefit of mapping - this is reset to opaque when the pipe is spawned in game + +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers + name = "Scrubbers pipe" + desc = "A one meter section of scrubbers pipe" + icon_state = "intact-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/simple/hidden/supply + name = "Air supply pipe" + desc = "A one meter section of supply pipe" + icon_state = "intact-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/simple/hidden/universal + name="Universal pipe adapter" + desc = "An adapter for regular, supply and scrubbers pipes" + connect_types = list(1,2,3) + icon_state = "map_universal" + +/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + overlays.Cut() + overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + underlays.Cut() + + if (node1) + universal_underlays(node1) + if(node2) + universal_underlays(node2) + else + var/node2_dir = turn(get_dir(src,node1),-180) + universal_underlays(,node2_dir) + else if (node2) + universal_underlays(node2) + var/node1_dir = turn(get_dir(src,node2),-180) + universal_underlays(,node1_dir) + else + universal_underlays(,dir) + universal_underlays(,turn(dir, -180)) + +/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_underlays() + ..() + update_icon() + +/obj/machinery/atmospherics/pipe/simple/hidden/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/simple/hidden/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/simple/hidden/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/simple/hidden/purple + color = PIPE_COLOR_PURPLE \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_insulated.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_insulated.dm new file mode 100644 index 00000000000..ce6ff78b2d0 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_insulated.dm @@ -0,0 +1,11 @@ +/obj/machinery/atmospherics/pipe/simple/insulated + icon = 'icons/obj/atmospherics/red_pipe.dmi' + icon_state = "intact" + + minimum_temperature_difference = 10000 + thermal_conductivity = 0 + maximum_pressure = 1000*ONE_ATMOSPHERE + fatigue_pressure = 900*ONE_ATMOSPHERE + alert_pressure = 900*ONE_ATMOSPHERE + + level = 2 \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm new file mode 100644 index 00000000000..a93351b29c7 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm @@ -0,0 +1,66 @@ +/obj/machinery/atmospherics/pipe/simple/visible + icon_state = "intact" + level = 2 + +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers + name = "Scrubbers pipe" + desc = "A one meter section of scrubbers pipe" + icon_state = "intact-scrubbers" + connect_types = list(3) + layer = 2.38 + icon_connect_type = "-scrubbers" + color = PIPE_COLOR_RED + +/obj/machinery/atmospherics/pipe/simple/visible/supply + name = "Air supply pipe" + desc = "A one meter section of supply pipe" + icon_state = "intact-supply" + connect_types = list(2) + layer = 2.39 + icon_connect_type = "-supply" + color = PIPE_COLOR_BLUE + +/obj/machinery/atmospherics/pipe/simple/visible/yellow + color = PIPE_COLOR_YELLOW + +/obj/machinery/atmospherics/pipe/simple/visible/cyan + color = PIPE_COLOR_CYAN + +/obj/machinery/atmospherics/pipe/simple/visible/green + color = PIPE_COLOR_GREEN + +/obj/machinery/atmospherics/pipe/simple/visible/purple + color = PIPE_COLOR_PURPLE + +/obj/machinery/atmospherics/pipe/simple/visible/universal + name="Universal pipe adapter" + desc = "An adapter for regular, supply and scrubbers pipes" + connect_types = list(1,2,3) + icon_state = "map_universal" + +/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0) + if(!check_icon_cache()) + return + + alpha = 255 + + overlays.Cut() + overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + underlays.Cut() + + if (node1) + universal_underlays(node1) + if(node2) + universal_underlays(node2) + else + var/node1_dir = get_dir(node1,src) + universal_underlays(,node1_dir) + else if (node2) + universal_underlays(node2) + else + universal_underlays(,dir) + universal_underlays(,turn(dir, -180)) + +/obj/machinery/atmospherics/pipe/simple/visible/universal/update_underlays() + ..() + update_icon() \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm new file mode 100644 index 00000000000..a5b71068411 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -0,0 +1,166 @@ +/obj/machinery/atmospherics/pipe/tank + icon = 'icons/atmos/tank.dmi' + icon_state = "air_map" + + name = "Pressure Tank" + desc = "A large vessel containing pressurized gas." + + volume = 10000 //in liters, 1 meters by 1 meters by 2 meters ~tweaked it a little to simulate a pressure tank without needing to recode them yet + + level = 1 + dir = SOUTH + initialize_directions = SOUTH + density = 1 + + var/obj/machinery/atmospherics/node1 + +/obj/machinery/atmospherics/pipe/tank/New() + icon_state = "air" + initialize_directions = dir + ..() + +/obj/machinery/atmospherics/pipe/tank/process() + if(!parent) + ..() + else + . = PROCESS_KILL + +/obj/machinery/atmospherics/pipe/tank/Destroy() + if(node1) + node1.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/tank/pipeline_expansion() + return list(node1) + +/obj/machinery/atmospherics/pipe/tank/update_underlays() + if(..()) + underlays.Cut() + var/turf/T = get_turf(src) + if(!istype(T)) + return + add_underlay(T, node1, dir) + +/obj/machinery/atmospherics/pipe/tank/hide() + update_underlays() + +/obj/machinery/atmospherics/pipe/tank/initialize() + var/connect_direction = dir + + for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + + update_underlays() + +/obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null + + update_underlays() + + return null + +/obj/machinery/atmospherics/pipe/tank/attackby(var/obj/item/W as obj, var/mob/user as mob, params) + if(istype(W, /obj/item/device/pipe_painter)) + return + + if(istype(W, /obj/item/device/analyzer)) + atmosanalyzer_scan(parent.air, user) + return + +/obj/machinery/atmospherics/pipe/tank/air + name = "Pressure Tank (Air)" + icon_state = "air_map" + +/obj/machinery/atmospherics/pipe/tank/air/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T20C + + air_temporary.oxygen = (25*ONE_ATMOSPHERE*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + air_temporary.nitrogen = (25*ONE_ATMOSPHERE*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + ..() + icon_state = "air" + +/obj/machinery/atmospherics/pipe/tank/oxygen + name = "Pressure Tank (Oxygen)" + icon_state = "o2_map" + +/obj/machinery/atmospherics/pipe/tank/oxygen/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T20C + + air_temporary.oxygen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + ..() + icon_state = "o2" + +/obj/machinery/atmospherics/pipe/tank/nitrogen + name = "Pressure Tank (Nitrogen)" + icon_state = "n2_map" + +/obj/machinery/atmospherics/pipe/tank/nitrogen/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T20C + + air_temporary.nitrogen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + ..() + icon_state = "n2" + +/obj/machinery/atmospherics/pipe/tank/carbon_dioxide + name = "Pressure Tank (Carbon Dioxide)" + icon_state = "co2_map" + +/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T20C + + air_temporary.carbon_dioxide = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + ..() + icon_state = "co2" + +/obj/machinery/atmospherics/pipe/tank/toxins + name = "Pressure Tank (Toxins)" + icon_state = "toxins_map" + +/obj/machinery/atmospherics/pipe/tank/toxins/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T20C + + air_temporary.toxins = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + ..() + icon_state = "toxins" + +/obj/machinery/atmospherics/pipe/tank/nitrous_oxide + name = "Pressure Tank (Nitrous Oxide)" + icon_state = "n2o_map" + +/obj/machinery/atmospherics/pipe/tank/nitrous_oxide/New() + air_temporary = new + air_temporary.volume = volume + air_temporary.temperature = T0C + + var/datum/gas/sleeping_agent/trace_gas = new + trace_gas.moles = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature) + + air_temporary.trace_gases += trace_gas + + ..() + icon_state = "n2o" \ No newline at end of file diff --git a/code/ATMOSPHERICS/pipes/vent.dm b/code/ATMOSPHERICS/pipes/vent.dm new file mode 100644 index 00000000000..63470bc9aa9 --- /dev/null +++ b/code/ATMOSPHERICS/pipes/vent.dm @@ -0,0 +1,105 @@ +/obj/machinery/atmospherics/pipe/vent + icon = 'icons/obj/atmospherics/pipe_vent.dmi' + icon_state = "intact" + + name = "Vent" + desc = "A large air vent" + + level = 1 + + volume = 250 + + dir = SOUTH + initialize_directions = SOUTH + + var/build_killswitch = 1 + + var/obj/machinery/atmospherics/node1 + +/obj/machinery/atmospherics/pipe/vent/New() + initialize_directions = dir + ..() + +/obj/machinery/atmospherics/pipe/vent/high_volume + name = "Larger vent" + volume = 1000 + +/obj/machinery/atmospherics/pipe/vent/process() + if(!parent) + if(build_killswitch <= 0) + . = PROCESS_KILL + else + build_killswitch-- + ..() + return + else + parent.mingle_with_turf(loc, volume) + +/obj/machinery/atmospherics/pipe/vent/Destroy() + if(node1) + node1.disconnect(src) + + return ..() + +/obj/machinery/atmospherics/pipe/vent/pipeline_expansion() + return list(node1) + +/obj/machinery/atmospherics/pipe/vent/update_icon() + if(node1) + icon_state = "intact" + + dir = get_dir(src, node1) + + else + icon_state = "exposed" + +/obj/machinery/atmospherics/pipe/vent/initialize() + var/connect_direction = dir + + for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + + update_icon() + +/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference) + if(reference == node1) + if(istype(node1, /obj/machinery/atmospherics/pipe)) + del(parent) + node1 = null + + update_icon() + + return null + +/obj/machinery/atmospherics/pipe/vent/hide(var/i) //to make the little pipe section invisible, the icon changes. + if(node1) + icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact" + dir = get_dir(src, node1) + else + icon_state = "exposed" + +/obj/machinery/atmospherics/pipe/vent/attackby(var/obj/item/weapon/W, var/mob/user) + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = get_turf(src) + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = T.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(T, 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "\blue You have unfastened \the [src].", \ + "You hear ratchet.") + new /obj/item/pipe(T, make_from=src) + del(src) \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 9e9c95e47c4..d0d80f66029 100644 --- a/paradise.dme +++ b/paradise.dme @@ -124,6 +124,17 @@ #include "code\ATMOSPHERICS\components\unary\unary_base.dm" #include "code\ATMOSPHERICS\components\unary\vent_pump.dm" #include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" +#include "code\ATMOSPHERICS\pipes\cap.dm" +#include "code\ATMOSPHERICS\pipes\manifold.dm" +#include "code\ATMOSPHERICS\pipes\manifold4w.dm" +#include "code\ATMOSPHERICS\pipes\pipe.dm" +#include "code\ATMOSPHERICS\pipes\tank.dm" +#include "code\ATMOSPHERICS\pipes\vent.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_he.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_hidden.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_insulated.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_visible.dm" #include "code\controllers\communications.dm" #include "code\controllers\configuration.dm" #include "code\controllers\emergency_shuttle_controller.dm" From 3725c7cc7d8999f0a4de6dabda91a706bc68da08 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Wed, 8 Jul 2015 16:04:51 -0700 Subject: [PATCH 06/44] Change a bunch of del's in pipecode to qdel's --- .../components/binary_devices/binary_atmos_base.dm | 4 ++-- .../components/trinary_devices/trinary_base.dm | 6 +++--- code/ATMOSPHERICS/components/unary/heat_exchanger.dm | 2 +- code/ATMOSPHERICS/components/unary/thermal_plate.dm | 2 +- code/ATMOSPHERICS/components/unary/unary_base.dm | 2 +- code/ATMOSPHERICS/pipes/cap.dm | 2 +- code/ATMOSPHERICS/pipes/manifold.dm | 10 +++++----- code/ATMOSPHERICS/pipes/manifold4w.dm | 12 ++++++------ code/ATMOSPHERICS/pipes/pipe.dm | 2 +- code/ATMOSPHERICS/pipes/simple/pipe_simple.dm | 8 ++++---- code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm | 2 +- code/ATMOSPHERICS/pipes/tank.dm | 2 +- code/ATMOSPHERICS/pipes/vent.dm | 4 ++-- 13 files changed, 29 insertions(+), 29 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index aeb146fe57a..8aabd24722b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -129,11 +129,11 @@ /obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network1) + qdel(network1) node1 = null else if(reference==node2) - del(network2) + qdel(network2) node2 = null update_icon() diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index 2486f38d45f..8b166799ec0 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -153,15 +153,15 @@ /obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network1) + qdel(network1) node1 = null else if(reference==node2) - del(network2) + qdel(network2) node2 = null else if(reference==node3) - del(network3) + qdel(network3) node3 = null update_underlays() diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index bfa2b08f908..61da39f846b 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -86,4 +86,4 @@ "\blue You have unfastened \the [src].", \ "You hear ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/thermal_plate.dm b/code/ATMOSPHERICS/components/unary/thermal_plate.dm index 60fb9571d53..0e9c72bf16f 100644 --- a/code/ATMOSPHERICS/components/unary/thermal_plate.dm +++ b/code/ATMOSPHERICS/components/unary/thermal_plate.dm @@ -89,7 +89,7 @@ "\blue You have unfastened \the [src].", \ "You hear ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/unary/thermal_plate/proc/radiate() var/internal_transfer_moles = 0.25 * air_contents.total_moles() diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 65f6c7f2edb..b1fbdb29937 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -87,7 +87,7 @@ /obj/machinery/atmospherics/unary/disconnect(obj/machinery/atmospherics/reference) if(reference==node) - del(network) + qdel(network) node = null update_icon() diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm index aebf3f951ac..6f70cf52465 100644 --- a/code/ATMOSPHERICS/pipes/cap.dm +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -39,7 +39,7 @@ /obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference) if(reference == node) if(istype(node, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node = null update_icon() diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index eb55f3944e1..2dd6cb1ef7e 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -58,17 +58,17 @@ /obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference) if(reference == node1) if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node1 = null if(reference == node2) if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node2 = null if(reference == node3) if(istype(node3, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node3 = null update_icon() @@ -97,7 +97,7 @@ for (var/obj/machinery/meter/meter in T) if (meter.target == src) new /obj/item/pipe_meter(T) - del(meter) + qdel(meter) qdel(src) else overlays.Cut() @@ -173,7 +173,7 @@ break if(!node1 && !node2 && !node3) - del(src) + qdel(src) return var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index 93a029ac2ca..a9bbbfc4738 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -46,22 +46,22 @@ /obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference) if(reference == node1) if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node1 = null if(reference == node2) if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node2 = null if(reference == node3) if(istype(node3, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node3 = null if(reference == node4) if(istype(node4, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node4 = null update_icon() @@ -92,7 +92,7 @@ for (var/obj/machinery/meter/meter in T) if (meter.target == src) new /obj/item/pipe_meter(T) - del(meter) + qdel(meter) qdel(src) else overlays.Cut() @@ -178,7 +178,7 @@ break if(!node1 && !node2 && !node3&& !node4) - del(src) + qdel(src) return var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm index 6ccecd64d11..8a0fca2ddec 100644 --- a/code/ATMOSPHERICS/pipes/pipe.dm +++ b/code/ATMOSPHERICS/pipes/pipe.dm @@ -116,7 +116,7 @@ for (var/obj/machinery/meter/meter in T) if (meter.target == src) new /obj/item/pipe_meter(T) - del(meter) + qdel(meter) if(P) transfer_fingerprints_to(P) P.add_fingerprint(user) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm index be68ec30287..c8993efb20a 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -76,7 +76,7 @@ var/datum/effect/effect/system/harmless_smoke_spread/smoke = new smoke.set_up(1,0, src.loc, 0) smoke.start() - del(src) + qdel(src) /obj/machinery/atmospherics/pipe/simple/proc/normalize_dir() if(dir==3) @@ -117,7 +117,7 @@ for (var/obj/machinery/meter/meter in T) if (meter.target == src) new /obj/item/pipe_meter(T) - del(meter) + qdel(meter) qdel(src) else if(node1 && node2) overlays += icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) @@ -168,12 +168,12 @@ /obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference) if(reference == node1) if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node1 = null if(reference == node2) if(istype(node2, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node2 = null update_icon() diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm index e94f8c46aaf..d567067ba79 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_he.dm @@ -56,7 +56,7 @@ break if(!node1 && !node2) - del(src) + qdel(src) return update_icon() diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm index a5b71068411..4de1c272838 100644 --- a/code/ATMOSPHERICS/pipes/tank.dm +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -62,7 +62,7 @@ /obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference) if(reference == node1) if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node1 = null update_underlays() diff --git a/code/ATMOSPHERICS/pipes/vent.dm b/code/ATMOSPHERICS/pipes/vent.dm index 63470bc9aa9..538d97fc048 100644 --- a/code/ATMOSPHERICS/pipes/vent.dm +++ b/code/ATMOSPHERICS/pipes/vent.dm @@ -70,7 +70,7 @@ /obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference) if(reference == node1) if(istype(node1, /obj/machinery/atmospherics/pipe)) - del(parent) + qdel(parent) node1 = null update_icon() @@ -102,4 +102,4 @@ "\blue You have unfastened \the [src].", \ "You hear ratchet.") new /obj/item/pipe(T, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file From a78a0323b21cb4ae1acb312190729b68cdf0f690 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Wed, 8 Jul 2015 16:35:31 -0700 Subject: [PATCH 07/44] Remove every usage of \red, \blue in code/ATMOSPHERICS/ And one qdel that I missed. --- code/ATMOSPHERICS/chiller.dm | 10 +++++----- .../components/binary_devices/circulator.dm | 2 +- .../components/binary_devices/dp_vent_pump.dm | 18 +++++++++--------- .../components/binary_devices/passive_gate.dm | 12 ++++++------ .../components/binary_devices/pump.dm | 12 ++++++------ .../components/binary_devices/volume_pump.dm | 12 ++++++------ .../components/omni_devices/omni_base.dm | 6 +++--- .../components/portables_connector.dm | 10 +++++----- .../components/trinary_devices/filter.dm | 14 +++++++------- .../components/trinary_devices/mixer.dm | 10 +++++----- code/ATMOSPHERICS/components/tvalve.dm | 14 +++++++------- .../components/unary/heat_exchanger.dm | 10 +++++----- .../components/unary/outlet_injector.dm | 14 +++++++------- .../components/unary/thermal_plate.dm | 10 +++++----- .../ATMOSPHERICS/components/unary/vent_pump.dm | 18 +++++++++--------- .../components/unary/vent_scrubber.dm | 12 ++++++------ code/ATMOSPHERICS/components/valve.dm | 10 +++++----- code/ATMOSPHERICS/mainspipe.dm | 2 +- code/ATMOSPHERICS/pipes/pipe.dm | 18 +++++++++--------- code/ATMOSPHERICS/pipes/simple/pipe_simple.dm | 2 +- code/ATMOSPHERICS/pipes/vent.dm | 8 ++++---- 21 files changed, 112 insertions(+), 112 deletions(-) diff --git a/code/ATMOSPHERICS/chiller.dm b/code/ATMOSPHERICS/chiller.dm index 80b0a06e9c6..e2e4bd471e6 100644 --- a/code/ATMOSPHERICS/chiller.dm +++ b/code/ATMOSPHERICS/chiller.dm @@ -62,13 +62,13 @@ C.loc = src C.add_fingerprint(usr) - user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].") + user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].") else user << "The hatch must be open to insert a power cell." return else if(istype(I, /obj/item/weapon/screwdriver)) open = !open - user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].") + user.visible_message("[user] [open ? "opens" : "closes"] the hatch on the [src].", "You [open ? "open" : "close"] the hatch on the [src].") update_icon() if(!open && user.machine == src) user << browse(null, "window=aircond") @@ -106,7 +106,7 @@ onclose(user, "aircond") else on = !on - user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].") + user.visible_message("[user] switches [on ? "on" : "off"] the [src].","You switch [on ? "on" : "off"] the [src].") update_icon() return @@ -131,7 +131,7 @@ usr.put_in_hands(cell) cell.add_fingerprint(usr) cell = null - usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].") + usr.visible_message("[usr] removes the power cell from \the [src].", "You remove the power cell from \the [src].") if("cellinstall") @@ -143,7 +143,7 @@ C.loc = src C.add_fingerprint(usr) - usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].") + usr.visible_message("[usr] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") src.updateDialog() else diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 843b7dc6518..19d9d097936 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -73,7 +73,7 @@ /obj/machinery/atmospherics/binary/circulator/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) anchored = !anchored - user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + user << "You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." if(anchored) if(dir & (NORTH|SOUTH)) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 38f7af1a658..c9b9cd89168 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -265,7 +265,7 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user << "\blue Now welding the vent." + user << "Now welding the vent." if(do_after(user, 20)) if(!src || !WT.isOn()) return playsound(get_turf(src), 'sound/items/Welder2.ogg', 50, 1) @@ -278,9 +278,9 @@ welded = 0 update_icon() else - user << "\blue The welding tool needs to be on to start this task." + user << "The welding tool needs to be on to start this task." else - user << "\blue You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." return 1*/ if(istype(W, /obj/item/device/multitool)) update_multitool_menu(user) @@ -288,24 +288,24 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 9da08d5b117..0056a5666dc 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -134,7 +134,7 @@ return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -156,20 +156,20 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 6091f7240cc..f8c9a2569cb 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -160,7 +160,7 @@ Thus, the two variables affect pump operation are set in New(): return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -188,20 +188,20 @@ Thus, the two variables affect pump operation are set in New(): if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index cd30bf8cd2f..15e3ee67a3f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -147,7 +147,7 @@ Thus, the two variables affect pump operation are set in New(): return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -175,20 +175,20 @@ Thus, the two variables affect pump operation are set in New(): if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index d7756ee51ca..a95186dc7b3 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -79,15 +79,15 @@ int_pressure += P.air.return_pressure() var/datum/gas_mixture/env_air = loc.return_air() if ((int_pressure - env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench [src], it is too exerted due to internal pressure." + user << "You cannot unwrench [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ + "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index b2d51336007..d2f374262e0 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -137,22 +137,22 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (connected_device) - user << "\red You cannot unwrench this [src], detach [connected_device] first." + user << "You cannot unwrench this [src], detach [connected_device] first." return 1 if (locate(/obj/machinery/portable_atmospherics, src.loc)) return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 24ce446edb7..19740df1e46 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -41,7 +41,7 @@ Filter types: icon_state = "m" else icon_state = "" - + if(!powered()) icon_state += "off" else if(node2 && node3 && node1) @@ -162,16 +162,16 @@ Filter types: var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) @@ -181,7 +181,7 @@ Filter types: return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return var/dat @@ -272,7 +272,7 @@ obj/machinery/atmospherics/trinary/filter/m_filter/New() /obj/machinery/atmospherics/trinary/filter/m_filter/initialize() set_frequency(frequency) - + if(node1 && node2 && node3) return var/node1_connect = turn(dir, -180) diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 23a44b376e6..73c8de1fd2c 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -120,16 +120,16 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) @@ -138,7 +138,7 @@ return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) var/dat = {"Power: [on?"On":"Off"]
diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index 70be99d73c3..71a77589d20 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -317,7 +317,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() @@ -359,21 +359,21 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (istype(src, /obj/machinery/atmospherics/tvalve/digital)) - user << "\red You cannot unwrench this [src], it's too complicated." + user << "You cannot unwrench this [src], it's too complicated." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) @@ -457,7 +457,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index 61da39f846b..a3f61f986fb 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -70,20 +70,20 @@ return ..() var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 990fba75e02..fb7fa8a0e7f 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -174,27 +174,27 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/unary/outlet_injector/interact(mob/user as mob) update_multitool_menu(user) diff --git a/code/ATMOSPHERICS/components/unary/thermal_plate.dm b/code/ATMOSPHERICS/components/unary/thermal_plate.dm index 0e9c72bf16f..2ab6f24cb2b 100644 --- a/code/ATMOSPHERICS/components/unary/thermal_plate.dm +++ b/code/ATMOSPHERICS/components/unary/thermal_plate.dm @@ -73,21 +73,21 @@ return ..() var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 6e8377ab2db..8fa1bd4aaf8 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -324,7 +324,7 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user << "\blue Now welding the vent." + user << "Now welding the vent." if(do_after(user, 20)) if(!src || !WT.isOn()) return playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) @@ -338,9 +338,9 @@ update_icon() else - user << "\blue The welding tool needs to be on to start this task." + user << "The welding tool needs to be on to start this task." else - user << "\blue You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." return 1 else if(istype(W, /obj/item/device/multitool)) update_multitool_menu(user) @@ -399,25 +399,25 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (node && node.level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 2d2f87c7935..86e60a1cfb0 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -348,25 +348,25 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (node && node.level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 88a83d13b13..a57d2254be0 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -250,7 +250,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() @@ -319,16 +319,16 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm index 2c0a7989533..3dea472524d 100644 --- a/code/ATMOSPHERICS/mainspipe.dm +++ b/code/ATMOSPHERICS/mainspipe.dm @@ -649,7 +649,7 @@ obj/machinery/atmospherics/mains_pipe/valve attack_hand(mob/user as mob) if(!src.allowed(user)) - user << "\red Access denied." + user << "You begin to freeze the [src]." if (do_after(user, 60)) user.visible_message( \ "[user] freezes \the [src].", \ - "\blue You finished freezing \the [src].", \ + "You finished freezing \the [src].", \ "You hear the hiss of gas.") src.frozen = 1 spawn (200) src.frozen = 0 src.visible_message( \ - "\the ice arounds the [src] melts.", \ - "\blue Your frozen [src] has thawed.", \ + "\The ice arounds \the [src] melts.", \ + "Your frozen [src] has thawed.", \ "You hear dripping water.") add_fingerprint(user) @@ -95,23 +95,23 @@ return ..() var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) if (!src.frozen) // If the pipe is not frozen - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") var/obj/item/P = new /obj/item/pipe(loc, make_from=src) for (var/obj/machinery/meter/meter in T) if (meter.target == src) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm index c8993efb20a..daab1dc2d38 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -71,7 +71,7 @@ else return 1 /obj/machinery/atmospherics/pipe/simple/proc/burst() - src.visible_message("\red \bold [src] bursts!"); + src.visible_message("\The [src] bursts!"); playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) var/datum/effect/effect/system/harmless_smoke_spread/smoke = new smoke.set_up(1,0, src.loc, 0) diff --git a/code/ATMOSPHERICS/pipes/vent.dm b/code/ATMOSPHERICS/pipes/vent.dm index 538d97fc048..9a435693de6 100644 --- a/code/ATMOSPHERICS/pipes/vent.dm +++ b/code/ATMOSPHERICS/pipes/vent.dm @@ -91,15 +91,15 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = T.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench this [src], it too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(T, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(T, make_from=src) qdel(src) \ No newline at end of file From 5ef171cf48bb955e66e4733deaaa2831aca4db6c Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Wed, 8 Jul 2015 16:37:58 -0700 Subject: [PATCH 08/44] Fix horrible message in atmospherics unwrenching stuff You cannot unwrench this [src], it too exerted due to internal pressure. IT TOO EXERTED and this [src] it's now You cannot unwrench \the [src], it is too exerted due to internal pressure. --- code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm | 2 +- code/ATMOSPHERICS/components/binary_devices/passive_gate.dm | 2 +- code/ATMOSPHERICS/components/binary_devices/pump.dm | 2 +- code/ATMOSPHERICS/components/binary_devices/volume_pump.dm | 2 +- code/ATMOSPHERICS/components/portables_connector.dm | 2 +- code/ATMOSPHERICS/components/trinary_devices/filter.dm | 2 +- code/ATMOSPHERICS/components/trinary_devices/mixer.dm | 2 +- code/ATMOSPHERICS/components/tvalve.dm | 2 +- code/ATMOSPHERICS/components/unary/heat_exchanger.dm | 2 +- code/ATMOSPHERICS/components/unary/outlet_injector.dm | 2 +- code/ATMOSPHERICS/components/unary/thermal_plate.dm | 2 +- code/ATMOSPHERICS/components/unary/vent_pump.dm | 2 +- code/ATMOSPHERICS/components/unary/vent_scrubber.dm | 2 +- code/ATMOSPHERICS/components/valve.dm | 2 +- code/ATMOSPHERICS/pipes/pipe.dm | 2 +- code/ATMOSPHERICS/pipes/vent.dm | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index c9b9cd89168..b71a55644e5 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -297,7 +297,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 0056a5666dc..da9f1aba444 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -161,7 +161,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index f8c9a2569cb..0e6c8ffa345 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -193,7 +193,7 @@ Thus, the two variables affect pump operation are set in New(): var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index 15e3ee67a3f..e26396b08fe 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -180,7 +180,7 @@ Thus, the two variables affect pump operation are set in New(): var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index d2f374262e0..1ce9130dc71 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -144,7 +144,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 19740df1e46..9a66d184612 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -162,7 +162,7 @@ Filter types: var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 73c8de1fd2c..bc3440e4589 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -120,7 +120,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index 71a77589d20..5b64a2c83bb 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -364,7 +364,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index a3f61f986fb..7e3509d2979 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -75,7 +75,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index fb7fa8a0e7f..43c9a84d988 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -183,7 +183,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/thermal_plate.dm b/code/ATMOSPHERICS/components/unary/thermal_plate.dm index 2ab6f24cb2b..65e37feff34 100644 --- a/code/ATMOSPHERICS/components/unary/thermal_plate.dm +++ b/code/ATMOSPHERICS/components/unary/thermal_plate.dm @@ -78,7 +78,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 8fa1bd4aaf8..307b98f0ad7 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -408,7 +408,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 86e60a1cfb0..5a6220a48ee 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -357,7 +357,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index a57d2254be0..1fddc3b4c39 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -319,7 +319,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm index d48b2957f5e..07af3328013 100644 --- a/code/ATMOSPHERICS/pipes/pipe.dm +++ b/code/ATMOSPHERICS/pipes/pipe.dm @@ -102,7 +102,7 @@ var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) if (!src.frozen) // If the pipe is not frozen - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) diff --git a/code/ATMOSPHERICS/pipes/vent.dm b/code/ATMOSPHERICS/pipes/vent.dm index 9a435693de6..78813a950dc 100644 --- a/code/ATMOSPHERICS/pipes/vent.dm +++ b/code/ATMOSPHERICS/pipes/vent.dm @@ -91,7 +91,7 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = T.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(T, 'sound/items/Ratchet.ogg', 50, 1) From 2b842d13302c2e9927ea5dcabf3b62370db89fbe Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 21:33:08 -0400 Subject: [PATCH 09/44] Laser Projectile Sprite Changes --- icons/obj/projectiles.dmi | Bin 27509 -> 26322 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 73177afd0bd91f531983b97bf6bfb170f3d42c7f..e68aa9cd2747fdffeed3e5097d4c4ab56574f3ee 100644 GIT binary patch literal 26322 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

D4$d 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 Mg4**6d6S_31E(Gj^8f$< literal 27509 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

w|PPO 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 Date: Wed, 8 Jul 2015 21:44:26 -0400 Subject: [PATCH 10/44] update 2.0 --- icons/obj/projectiles.dmi | Bin 26322 -> 26589 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index e68aa9cd2747fdffeed3e5097d4c4ab56574f3ee..f8a84ff5cb1acf9d56206e9aff3618ba25d9fe5b 100644 GIT binary patch delta 6540 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 aiNZqcRPH)d7J~EuZqroPRjX04j`$y(pt_>~ delta 6271 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 X;{opuoske;5b@K68EVyNJdgN)Bmh}{ From 6ca4791571f927e4c630306a82e1e285332168e6 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 8 Jul 2015 23:09:57 -0400 Subject: [PATCH 11/44] tweaks --- code/game/atoms.dm | 3 +++ code/game/atoms_movable.dm | 2 -- code/game/objects/effects/effect_system.dm | 5 +---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 1be033e2a4b..c2b5c8e9844 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -30,6 +30,9 @@ var/allow_spin = 1 //Set this to 1 for a _target_ that is being thrown at; if an atom has this set to 1 then atoms thrown AT it will not spin; currently used for the singularity. -Fox /atom/Destroy() + if(reagents) + qdel(reagents) + reagents = null set_opacity(0) invisibility = 101 return ..() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 86f9fd93271..70e78c96fc2 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -23,8 +23,6 @@ /atom/movable/Destroy() - if(reagents) - qdel(reagents) for(var/atom/movable/AM in contents) qdel(AM) loc = null diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 47cffd8561b..0af6865e0f8 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -40,10 +40,7 @@ would spawn and follow the beaker, even if it is carried or thrown. var/amount = 8.0 /obj/effect/proc/delete() - loc = null - if(reagents) - qdel(reagents) - return + qdel(src) /obj/effect/effect/water/New() From 0dbea7621fbe1a789cf5c02f3648aad19e2339de Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 9 Jul 2015 02:48:34 -0400 Subject: [PATCH 12/44] The Great Del() Cull of 2015 --- .../components/binary_devices/circulator.dm | 4 +- .../components/binary_devices/dp_vent_pump.dm | 2 +- .../components/binary_devices/passive_gate.dm | 2 +- .../components/binary_devices/pump.dm | 2 +- .../components/binary_devices/volume_pump.dm | 2 +- .../components/omni_devices/omni_base.dm | 4 +- .../components/portables_connector.dm | 4 +- .../components/trinary_devices/filter.dm | 2 +- .../components/trinary_devices/mixer.dm | 2 +- code/ATMOSPHERICS/components/tvalve.dm | 16 ++++---- code/ATMOSPHERICS/components/valve.dm | 10 ++--- code/__HELPERS/unsorted.dm | 4 +- code/_onclick/click.dm | 2 +- code/_onclick/telekinesis.dm | 8 ++-- code/controllers/communications.dm | 6 +-- .../emergency_shuttle_controller.dm | 4 +- code/datums/ai_laws.dm | 4 +- code/datums/spell.dm | 2 +- code/datums/spells/charge.dm | 2 +- code/datums/spells/conjure.dm | 2 +- code/datums/spells/dumbfire.dm | 4 +- code/datums/spells/projectile.dm | 6 +-- code/defines/procs/records.dm | 2 +- code/game/atoms.dm | 6 +-- code/game/dna/genes/vg_powers.dm | 4 +- code/game/gamemodes/blob/blobs/core.dm | 2 +- code/game/gamemodes/blob/theblob.dm | 2 +- .../gamemodes/changeling/powers/mutations.dm | 22 +++++----- .../gamemodes/changeling/powers/revive.dm | 2 +- code/game/gamemodes/cult/cult.dm | 6 +-- code/game/gamemodes/cult/ritual.dm | 4 +- code/game/gamemodes/cult/runes.dm | 36 ++++++++--------- code/game/gamemodes/cult/talisman.dm | 6 +-- code/game/gamemodes/events/biomass.dm | 6 +-- code/game/gamemodes/events/black_hole.dm | 8 ++-- code/game/gamemodes/events/clang.dm | 4 +- code/game/gamemodes/events/wormholes.dm | 2 +- code/game/gamemodes/gameticker.dm | 4 +- code/game/gamemodes/heist/heist.dm | 4 +- code/game/gamemodes/mutiny/auth_key.dm | 2 +- code/game/gamemodes/mutiny/mutiny.dm | 10 ++--- code/game/gamemodes/nations/nations.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 6 +-- code/game/gamemodes/nuclear/pinpointer.dm | 2 +- code/game/gamemodes/objective.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 10 ++--- code/game/gamemodes/setupgame.dm | 2 +- code/game/gamemodes/shadowling/shadowling.dm | 6 +-- code/game/gamemodes/traitor/traitor.dm | 6 +-- code/game/gamemodes/vampire/vampire.dm | 6 +-- code/game/gamemodes/vampire/vampire_powers.dm | 6 +-- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/gamemodes/wizard/soulstone.dm | 16 ++++---- code/game/gamemodes/wizard/spellbook.dm | 4 +- code/game/gamemodes/wizard/wizard.dm | 14 +++---- code/game/machinery/OpTable.dm | 6 +-- code/game/machinery/Sleeper.dm | 6 +-- code/game/machinery/adv_med.dm | 8 ++-- code/game/machinery/alarm.dm | 10 ++--- code/game/machinery/atmo_control.dm | 2 +- code/game/machinery/atmoalter/meter.dm | 2 +- code/game/machinery/bees_items.dm | 2 +- code/game/machinery/cloning.dm | 4 +- .../machinery/computer/HolodeckControl.dm | 14 +++---- code/game/machinery/computer/ai_core.dm | 10 ++--- code/game/machinery/computer/arcade.dm | 2 +- .../game/machinery/computer/buildandrepair.dm | 12 +++--- code/game/machinery/computer/cloning.dm | 8 ++-- code/game/machinery/computer/computer.dm | 2 +- code/game/machinery/computer/hologram.dm | 2 +- code/game/machinery/computer/honkputer.dm | 2 +- code/game/machinery/computer/medical.dm | 4 +- code/game/machinery/computer/power.dm | 4 +- code/game/machinery/computer/prisonshuttle.dm | 6 +-- code/game/machinery/computer/security.dm | 12 +++--- code/game/machinery/computer/shuttle.dm | 2 +- code/game/machinery/computer/skills.dm | 8 ++-- .../machinery/computer/specops_shuttle.dm | 8 ++-- .../computer/syndicate_specops_shuttle.dm | 2 +- code/game/machinery/computer/xenos_shuttle.dm | 2 +- code/game/machinery/constructable_frame.dm | 2 +- code/game/machinery/cryo.dm | 2 +- code/game/machinery/cryopod.dm | 22 +++++----- code/game/machinery/deployable.dm | 4 +- code/game/machinery/door_control.dm | 2 +- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/doors/door.dm | 2 +- .../embedded_controller_base.dm | 2 +- .../embedded_program_base.dm | 2 +- code/game/machinery/hologram.dm | 4 +- code/game/machinery/kitchen/gibber.dm | 4 +- code/game/machinery/kitchen/juicer.dm | 2 +- code/game/machinery/kitchen/microwave.dm | 4 +- code/game/machinery/kitchen/monkeyrecycler.dm | 2 +- code/game/machinery/kitchen/processor.dm | 2 +- code/game/machinery/machinery.dm | 4 +- code/game/machinery/magnet.dm | 2 +- code/game/machinery/mass_driver.dm | 6 +-- code/game/machinery/pipe/construction.dm | 6 +-- code/game/machinery/pipe/pipe_dispenser.dm | 4 +- code/game/machinery/portable_tag_turret.dm | 4 +- code/game/machinery/portable_turret.dm | 2 +- code/game/machinery/recycler.dm | 4 +- code/game/machinery/robot_fabricator.dm | 2 +- code/game/machinery/seed_extractor.dm | 2 +- code/game/machinery/shieldgen.dm | 24 +++++------ code/game/machinery/suit_storage_unit.dm | 4 +- code/game/machinery/syndicatebomb.dm | 10 ++--- code/game/machinery/telecomms/logbrowser.dm | 6 +-- .../telecomms/machine_interactions.dm | 4 +- .../machinery/telecomms/telecomunications.dm | 2 +- code/game/machinery/telecomms/telemonitor.dm | 4 +- .../machinery/telecomms/traffic_control.dm | 4 +- code/game/machinery/turntable.dm | 14 +++---- code/game/machinery/turrets.dm | 4 +- code/game/machinery/vending.dm | 10 ++--- code/game/machinery/washing_machine.dm | 26 ++++++------ code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/equipment/tools/tools.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 2 +- code/game/mecha/mecha.dm | 6 +-- code/game/mecha/mecha_construction_paths.dm | 8 ++-- code/game/mecha/mecha_control_console.dm | 2 +- .../effects/decals/Cleanable/humans.dm | 2 +- code/game/objects/effects/effect_system.dm | 8 ++-- code/game/objects/effects/glowshroom.dm | 2 +- code/game/objects/effects/manifest.dm | 2 +- code/game/objects/effects/mines.dm | 14 +++---- code/game/objects/effects/portals.dm | 2 +- code/game/objects/items.dm | 2 +- code/game/objects/items/ashtray.dm | 2 +- code/game/objects/items/bodybag.dm | 6 +-- code/game/objects/items/candle.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/game/objects/items/devices/aicard.dm | 2 +- .../objects/items/devices/lightreplacer.dm | 6 +-- code/game/objects/items/devices/modkit.dm | 4 +- .../objects/items/devices/radio/beacon.dm | 8 ++-- .../game/objects/items/devices/radio/radio.dm | 2 +- code/game/objects/items/flag.dm | 6 +-- code/game/objects/items/policetape.dm | 4 +- code/game/objects/items/robot/robot_parts.dm | 8 ++-- .../objects/items/robot/robot_upgrades.dm | 2 +- code/game/objects/items/shooting_range.dm | 2 +- code/game/objects/items/toys.dm | 40 +++++++++---------- code/game/objects/items/weapons/AI_modules.dm | 2 +- code/game/objects/items/weapons/RCD.dm | 2 +- code/game/objects/items/weapons/RSF.dm | 2 +- .../objects/items/weapons/chrono_eraser.dm | 16 ++++---- code/game/objects/items/weapons/cigs.dm | 8 ++-- .../game/objects/items/weapons/clown_items.dm | 4 +- .../objects/items/weapons/dna_injector.dm | 2 +- code/game/objects/items/weapons/fireworks.dm | 4 +- .../objects/items/weapons/gift_wrappaper.dm | 6 +-- code/game/objects/items/weapons/grenades.dm | 4 +- .../items/weapons/grenades/bananade.dm | 6 +-- .../items/weapons/grenades/chem_grenade.dm | 4 +- .../items/weapons/grenades/clowngrenade.dm | 2 +- .../items/weapons/grenades/emgrenade.dm | 2 +- .../items/weapons/grenades/flashbang.dm | 6 +-- .../items/weapons/grenades/ghettobomb.dm | 4 +- .../items/weapons/grenades/smokebomb.dm | 2 +- .../items/weapons/grenades/spawnergrenade.dm | 2 +- .../objects/items/weapons/implants/implant.dm | 16 ++++---- .../items/weapons/implants/implantchair.dm | 2 +- code/game/objects/items/weapons/mop.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 6 +-- .../objects/items/weapons/storage/belt.dm | 2 +- .../objects/items/weapons/storage/storage.dm | 4 +- .../objects/items/weapons/storage/toolbox.dm | 2 +- .../objects/items/weapons/swords_axes_etc.dm | 8 ++-- .../objects/items/weapons/table_rack_parts.dm | 22 +++++----- .../objects/items/weapons/tanks/jetpack.dm | 2 +- .../game/objects/items/weapons/tanks/tanks.dm | 4 +- code/game/objects/items/weapons/twohanded.dm | 4 +- code/game/objects/items/weapons/weaponry.dm | 8 ++-- code/game/objects/structures.dm | 2 +- .../structures/crates_lockers/closets.dm | 8 ++-- .../crates_lockers/closets/statue.dm | 6 +-- .../crates_lockers/closets/utility_closets.dm | 2 +- .../structures/crates_lockers/crates.dm | 2 +- .../structures/crates_lockers/largecrate.dm | 2 +- code/game/objects/structures/curtains.dm | 2 +- code/game/objects/structures/displaycase.dm | 10 ++--- code/game/objects/structures/door_assembly.dm | 2 +- code/game/objects/structures/electricchair.dm | 3 +- code/game/objects/structures/girders.dm | 30 +++++++------- code/game/objects/structures/inflatable.dm | 14 +++---- code/game/objects/structures/kitchen_spike.dm | 4 +- code/game/objects/structures/lattice.dm | 2 +- code/game/objects/structures/mineral_doors.dm | 4 +- code/game/objects/structures/morgue.dm | 20 +++++----- code/game/objects/structures/signs.dm | 4 +- .../stool_bed_chair_nest/alien_nests.dm | 2 +- .../structures/stool_bed_chair_nest/bed.dm | 10 ++--- .../structures/stool_bed_chair_nest/chairs.dm | 4 +- .../structures/stool_bed_chair_nest/stools.dm | 4 +- code/game/objects/structures/watercloset.dm | 6 +-- code/game/objects/structures/window.dm | 4 +- code/game/supplyshuttle.dm | 2 +- code/game/turfs/simulated/floor.dm | 4 +- code/game/turfs/simulated/walls.dm | 2 +- code/game/turfs/simulated/walls_reinforced.dm | 4 +- code/game/turfs/space/space.dm | 12 +++--- code/game/vehicles/spacepods/spacepod.dm | 2 +- code/game/verbs/atom_verbs.dm | 2 +- code/modules/admin/buildmode.dm | 2 +- code/modules/admin/topic.dm | 16 ++++---- code/modules/admin/verbs/BrokenInhands.dm | 2 +- code/modules/admin/verbs/debug.dm | 8 ++-- code/modules/admin/verbs/one_click_antag.dm | 2 +- code/modules/admin/verbs/onlyone.dm | 2 +- code/modules/admin/verbs/onlyoneteam.dm | 2 +- code/modules/assembly/holder.dm | 2 +- code/modules/assembly/shock_kit.dm | 2 +- code/modules/awaymissions/trigger.dm | 4 +- code/modules/clothing/clothing.dm | 4 +- code/modules/clothing/shoes/colour.dm | 2 +- code/modules/clothing/spacesuits/breaches.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 10 ++--- code/modules/computer3/buildandrepair.dm | 6 +-- .../computer3/computers/HolodeckControl.dm | 6 +-- code/modules/computer3/computers/medical.dm | 4 +- code/modules/computer3/computers/security.dm | 12 +++--- code/modules/computer3/lapvend.dm | 8 ++-- code/modules/crafting/guncrafting.dm | 8 ++-- code/modules/customitems/item_spawning.dm | 2 +- code/modules/events/carp_migration.dm | 2 +- code/modules/events/rogue_drones.dm | 2 +- code/modules/events/sayuevents/meaty_ores.dm | 2 +- code/modules/events/tear.dm | 4 +- code/modules/events/tgevents/dust.dm | 2 +- code/modules/events/tgevents/immovable_rod.dm | 4 +- code/modules/food/candy_maker.dm | 4 +- code/modules/food/cooker.dm | 2 +- code/modules/food/grill_new.dm | 4 +- code/modules/food/oven_new.dm | 4 +- code/modules/holiday/christmas.dm | 2 +- code/modules/jungle/jungle.dm | 8 ++-- code/modules/jungle/jungle_animals.dm | 2 +- code/modules/jungle/jungle_plants.dm | 2 +- code/modules/jungle/jungle_temple.dm | 10 ++--- code/modules/jungle/jungle_turfs.dm | 2 +- code/modules/library/lib_machines.dm | 2 +- code/modules/mob/dead/observer/logout.dm | 2 +- code/modules/mob/death.dm | 12 +++--- code/modules/mob/inventory.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 2 +- code/modules/mob/living/carbon/alien/death.dm | 8 ++-- .../carbon/alien/humanoid/caste/drone.dm | 2 +- .../carbon/alien/humanoid/update_icons.dm | 2 +- .../mob/living/carbon/alien/larva/powers.dm | 2 +- .../carbon/alien/special/alien_embryo.dm | 2 +- code/modules/mob/living/carbon/brain/MMI.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 6 +-- code/modules/mob/living/carbon/human/death.dm | 12 +++--- code/modules/mob/living/carbon/human/human.dm | 6 +-- .../living/carbon/human/human_attackhand.dm | 4 +- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/human/human_organs.dm | 2 +- .../mob/living/carbon/human/inventory.dm | 38 +++++++++--------- code/modules/mob/living/carbon/human/life.dm | 2 +- .../mob/living/carbon/human/species/apollo.dm | 4 +- .../living/carbon/human/species/species.dm | 2 +- .../mob/living/carbon/human/whisper.dm | 2 +- .../mob/living/carbon/metroid/metroid.dm | 12 +++--- .../mob/living/carbon/metroid/powers.dm | 2 +- .../mob/living/carbon/primitive/dionaold.dm | 4 +- code/modules/mob/living/living.dm | 6 +-- code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 4 +- code/modules/mob/living/silicon/death.dm | 8 ++-- code/modules/mob/living/silicon/pai/life.dm | 2 +- .../modules/mob/living/silicon/robot/death.dm | 10 ++--- .../living/silicon/robot/drone/drone_items.dm | 6 +-- .../modules/mob/living/silicon/robot/robot.dm | 8 ++-- code/modules/mob/living/simple_animal/bees.dm | 6 +-- .../modules/mob/living/simple_animal/borer.dm | 4 +- .../simple_animal/friendly/farm_animals.dm | 8 ++-- .../living/simple_animal/friendly/slime.dm | 2 +- .../living/simple_animal/hostile/hivebot.dm | 2 +- .../simple_animal/hostile/retaliate/drone.dm | 2 +- .../mob/living/simple_animal/hostile/tree.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- .../mob/living/simple_animal/tribbles.dm | 6 +-- code/modules/mob/mob.dm | 4 +- code/modules/mob/mob_movement.dm | 6 +-- code/modules/mob/spirit/mask/respawn.dm | 4 +- code/modules/mob/transform_procs.dm | 28 ++++++------- code/modules/organs/blood.dm | 4 +- code/modules/organs/organ.dm | 2 +- code/modules/organs/organ_alien.dm | 2 +- code/modules/organs/organ_external.dm | 6 +-- code/modules/organs/organ_stump.dm | 2 +- code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paper_bundle.dm | 8 ++-- code/modules/paperwork/photocopier.dm | 2 +- code/modules/paperwork/photography.dm | 12 +++--- code/modules/paperwork/silicon_photography.dm | 2 +- code/modules/power/apc.dm | 14 +++---- code/modules/power/cable.dm | 10 ++--- code/modules/power/engine.dm | 2 +- code/modules/power/lighting.dm | 8 ++-- code/modules/power/port_gen.dm | 2 +- code/modules/power/power.dm | 4 +- .../power/singularity/containment_field.dm | 2 +- .../power/singularity/field_generator.dm | 2 +- code/modules/power/smes.dm | 4 +- .../projectiles/guns/projectile/crossbow.dm | 2 +- .../projectiles/guns/projectile/pneumatic.dm | 6 +-- .../projectiles/guns/projectile/revolver.dm | 2 +- .../projectiles/guns/projectile/rocket.dm | 2 +- code/modules/projectiles/projectile/beams.dm | 10 ++--- code/modules/projectiles/projectile/magic.dm | 12 +++--- .../modules/projectiles/projectile/special.dm | 8 ++-- code/modules/projectiles/targeting.dm | 6 +-- code/modules/reagents/Chemistry-Holder.dm | 2 +- code/modules/reagents/Chemistry-Machinery.dm | 6 +-- code/modules/reagents/Chemistry-Reagents.dm | 10 ++--- code/modules/reagents/dartgun.dm | 8 ++-- code/modules/reagents/newchem/toxins.dm | 4 +- .../reagent_containers/food/drinks/bottle.dm | 2 +- .../food/drinks/drinkingglass.dm | 2 +- .../reagent_containers/food/snacks.dm | 28 ++++++------- .../reagent_containers/food/snacks/meat.dm | 2 +- .../reagent_containers/glass_containers.dm | 2 +- .../reagents/reagent_containers/spray.dm | 4 +- .../reagents/reagent_containers/syringes.dm | 2 +- code/modules/reagents/syringe_gun.dm | 2 +- .../recycling/disposal-construction.dm | 2 +- code/modules/recycling/disposal.dm | 24 +++++------ code/modules/recycling/sortingmachinery.dm | 2 +- code/modules/research/message_server.dm | 2 +- code/modules/research/rdconsole.dm | 6 +-- .../xenoarchaeology/genetics/reconstitutor.dm | 4 +- .../machinery/artifact_harvester.dm | 2 +- .../tools/suspension_generator.dm | 2 +- .../tools/tools_coresampler.dm | 2 +- .../tools/tools_depthscanner.dm | 4 +- code/modules/shuttles/shuttle.dm | 2 +- code/modules/surgery/robolimbs.dm | 2 +- code/modules/vehicle/vehicle.dm | 2 +- 342 files changed, 915 insertions(+), 916 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 19d9d097936..3d45a89d791 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -92,10 +92,10 @@ else if(node1) node1.disconnect(src) - del(network1) + qdel(network1) if(node2) node2.disconnect(src) - del(network2) + qdel(network2) node1 = null node2 = null diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index b71a55644e5..c13d0f5580c 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -308,4 +308,4 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index da9f1aba444..78fcd687b8f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -172,4 +172,4 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 0e6c8ffa345..e191bb85b9a 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -204,4 +204,4 @@ Thus, the two variables affect pump operation are set in New(): "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index e26396b08fe..6ea82979dcd 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -191,4 +191,4 @@ Thus, the two variables affect pump operation are set in New(): "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index a95186dc7b3..6f4d880a67d 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -90,7 +90,7 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/omni/attack_hand(user as mob) if(..()) @@ -283,7 +283,7 @@ /obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference) for(var/datum/omni_port/P in ports) if(reference == P.node) - del(P.network) + qdel(P.network) P.node = null P.update = 1 break diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index 1ce9130dc71..64c0cdec852 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -125,7 +125,7 @@ /obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference) if(reference==node) - del(network) + qdel(network) node = null update_underlays() @@ -155,4 +155,4 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 9a66d184612..5e1fabcebd3 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -173,7 +173,7 @@ Filter types: "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index bc3440e4589..796ec44afb9 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -131,7 +131,7 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob) if(..()) diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index 5b64a2c83bb..ce4dcf1fb48 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -128,9 +128,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node3) - del(network_node3) + qdel(network_node3) build_network() if(network_node1&&network_node2) @@ -153,9 +153,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node2) - del(network_node2) + qdel(network_node2) build_network() if(network_node1&&network_node3) @@ -271,15 +271,15 @@ /obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network_node1) + qdel(network_node1) node1 = null else if(reference==node2) - del(network_node2) + qdel(network_node2) node2 = null else if(reference==node3) - del(network_node3) + qdel(network_node3) node2 = null update_underlays() @@ -375,7 +375,7 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/tvalve/mirrored icon_state = "map_tvalvem0" diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 1fddc3b4c39..3706560e15c 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -115,9 +115,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node2) - del(network_node2) + qdel(network_node2) build_network() @@ -222,11 +222,11 @@ /obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network_node1) + qdel(network_node1) node1 = null else if(reference==node2) - del(network_node2) + qdel(network_node2) node2 = null update_underlays() @@ -330,7 +330,7 @@ "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/valve/digital/multitool_menu(var/mob/user,var/obj/item/device/multitool/P) return {" diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 17a35c9ba7d..29838e443ba 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -756,7 +756,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl animation.master = target flick(flick_anim, animation) sleep(max(sleeptime, 15)) - del(animation) + qdel(animation) //Will return the contents of an atom recursivly to a depth of 'searchDepth' /atom/proc/GetAllContents(searchDepth = 5) @@ -1017,7 +1017,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl X.icon = 'icons/turf/shuttle.dmi' X.icon_state = replacetext(O.icon_state, "_f", "_s") // revert the turf to the old icon_state X.name = "wall" - del(O) // prevents multiple shuttle corners from stacking + qdel(O) // prevents multiple shuttle corners from stacking continue if(!istype(O,/obj)) continue O.loc.Exited(O) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index c00a79e1e6b..6f31c627f96 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -351,7 +351,7 @@ s.set_up(5, 1, src) s.start() if(L.damage <= 0) - del(L) + qdel(L) if(L) playsound(get_turf(src), 'sound/effects/eleczap.ogg', 75, 1) L.tang = L.adjustAngle(get_angle(U,T)) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 46662142fba..30d4fc58223 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -80,14 +80,14 @@ var/const/tk_maxrange = 15 if(focus.Adjacent(loc)) focus.loc = loc - del(src) + qdel(src) return //stops TK grabs being equipped anywhere but into hands equipped(var/mob/user, var/slot) if( (slot == slot_l_hand) || (slot== slot_r_hand) ) return - del(src) + qdel(src) return @@ -99,10 +99,10 @@ var/const/tk_maxrange = 15 if(!target || !user) return if(last_throw+3 > world.time) return if(!host || host != user) - del(src) + qdel(src) return if(!(TK in host.mutations)) - del(src) + qdel(src) return if(isobj(target) && !isturf(target.loc)) return diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 6fc3faab894..6f47d5c8542 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -226,7 +226,7 @@ var/global/datum/controller/radio/radio_controller frequency.remove_listener(device) if(frequency.devices.len == 0) - del(frequency) + qdel(frequency) frequencies -= f_text return 1 @@ -251,7 +251,7 @@ var/global/datum/controller/radio/radio_controller if(range) start_point = get_turf(source) if(!start_point) - del(signal) + qdel(signal) return 0 if (filter) send_to_filter(source, signal, filter, start_point, range) @@ -300,7 +300,7 @@ var/global/datum/controller/radio/radio_controller devices_line -= null if (devices_line.len==0) devices -= devices_filter - del(devices_line) + qdel(devices_line) /datum/signal var/obj/source diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 94ab1f5be40..4194567ae10 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -215,7 +215,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if (online()) if (is_stranded()) return "ETA-ERR" - + if (waiting_to_leave()) if (shuttle.moving_status == SHUTTLE_WARMUP) return "Departing..." @@ -256,7 +256,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle sleep(speed) step(src, direction) for(var/obj/effect/starender/E in loc) - del(src) + qdel(src) /obj/effect/starender diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index e1fc26d1709..02c4304cf30 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -165,7 +165,7 @@ datum/ai_laws/tyrant //This probably shouldn't be a default lawset. src.ion += law /datum/ai_laws/proc/clear_inherent_laws() - del(src.inherent) + qdel(src.inherent) src.inherent = list() /datum/ai_laws/proc/add_supplied_law(var/number, var/law) @@ -179,7 +179,7 @@ datum/ai_laws/tyrant //This probably shouldn't be a default lawset. /datum/ai_laws/proc/clear_ion_laws() src.ion = list() - + /datum/ai_laws/proc/clear_zeroth_law(var/law_borg = null) src.zeroth = null if(law_borg) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 2111c200148..d4ea02baea9 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -172,7 +172,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin spell.anchored = 1 spell.density = 0 spawn(overlay_lifespan) - del(spell) + qdel(spell) /obj/effect/proc_holder/spell/wizard/proc/after_cast(list/targets) for(var/atom/target in targets) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index cabde8c7181..2a1663f503b 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -35,7 +35,7 @@ var/obj/item/weapon/spellbook/oneuse/I = item if(prob(80)) user.visible_message("[I] catches fire!") - del(I) + qdel(I) else I.used = 0 charged_item = I diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index be246ac21b3..182597240b8 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -46,7 +46,7 @@ if(summon_lifespan) spawn(summon_lifespan) if(summoned_object) - del(summoned_object) + qdel(summoned_object) else switch(charge_type) if("recharge") diff --git a/code/datums/spells/dumbfire.dm b/code/datums/spells/dumbfire.dm index 902e35eb257..6265b757c5f 100644 --- a/code/datums/spells/dumbfire.dm +++ b/code/datums/spells/dumbfire.dm @@ -76,11 +76,11 @@ trail.icon_state = proj_trail_icon_state trail.density = 0 spawn(proj_trail_lifespan) - del(trail) + qdel(trail) current_loc = projectile.loc sleep(proj_step_delay) if(projectile) - del(projectile) \ No newline at end of file + qdel(projectile) \ No newline at end of file diff --git a/code/datums/spells/projectile.dm b/code/datums/spells/projectile.dm index d5392c465ae..0db35126322 100644 --- a/code/datums/spells/projectile.dm +++ b/code/datums/spells/projectile.dm @@ -61,7 +61,7 @@ break if(!proj_lingering && projectile.loc == current_loc) //if it didn't move since last time - del(projectile) + qdel(projectile) break if(proj_trail && projectile) @@ -72,7 +72,7 @@ trail.icon_state = proj_trail_icon_state trail.density = 0 spawn(proj_trail_lifespan) - del(trail) + qdel(trail) if(projectile.loc in range(target.loc,proj_trigger_range)) projectile.perform(list(target)) @@ -83,4 +83,4 @@ sleep(proj_step_delay) if(projectile) - del(projectile) \ No newline at end of file + qdel(projectile) \ No newline at end of file diff --git a/code/defines/procs/records.dm b/code/defines/procs/records.dm index 4e9fbcc9afc..256ae51dbf2 100644 --- a/code/defines/procs/records.dm +++ b/code/defines/procs/records.dm @@ -22,7 +22,7 @@ G.fields["photo_side"] = side data_core.general += G - del(dummy) + qdel(dummy) return G /proc/CreateSecurityRecord(var/name as text, var/id as text) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index c2b5c8e9844..1d4c97c506c 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -201,7 +201,7 @@ its easier to just keep the beam vertical. X.pixel_y=Pixel_y var/turf/TT = get_turf(X.loc) if(TT.density) - del(X) + qdel(X) break for(var/obj/O in TT) if(!O.CanPass(light)) @@ -211,7 +211,7 @@ its easier to just keep the beam vertical. broken = 1 break if(broken) - del(X) + qdel(X) break sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy. //I've found that 3 ticks provided a nice balance for my use. @@ -402,7 +402,7 @@ its easier to just keep the beam vertical. /atom/proc/clean_blood() src.germ_level = 0 if(istype(blood_DNA, /list)) - del(blood_DNA) + qdel(blood_DNA) return 1 /atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index 7410abd2445..5fc65bc9fc9 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -161,7 +161,7 @@ Obviously, requires DNA2. for(var/x in all_hairs) var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x hairs.Add(H.name) // add hair name to hairs - del(H) // delete the hair after it's all done + qdel(H) // delete the hair after it's all done var/new_style = input("Please select hair style", "Character Generation",M.h_style) as null|anything in hairs @@ -176,7 +176,7 @@ Obviously, requires DNA2. for(var/x in all_fhairs) var/datum/sprite_accessory/facial_hair/H = new x fhairs.Add(H.name) - del(H) + qdel(H) new_style = input("Please select facial style", "Character Generation",M.f_style) as null|anything in fhairs diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index fc96912fadf..f56a5951fd5 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -65,7 +65,7 @@ overmind_get_delay = world.time + 300 // 30 seconds if(overmind) - del(overmind) + qdel(overmind) var/client/C = null var/list/candidates = list() diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index b6656b349db..5e17610c16d 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -167,7 +167,7 @@ return proc/Delete() - del(src) + qdel(src) /obj/effect/blob/normal icon_state = "blob" diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index dc85a82d195..ae9bce1e1bc 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -22,12 +22,12 @@ /obj/effect/proc_holder/changeling/weapon/try_to_sting(var/mob/user, var/mob/target) if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh - del(user.l_hand) + qdel(user.l_hand) user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!") - del(H.wear_suit) - del(H.head) + qdel(H.wear_suit) + qdel(H.head) H.update_inv_wear_suit() H.update_inv_head() H.update_hair() @@ -140,7 +140,7 @@ /obj/item/weapon/melee/arm_blade/dropped(mob/user) user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass!", "We inflate our hand into a strong shield.", "You hear organic matter ripping and tearing!") /obj/item/weapon/shield/changeling/dropped() - del(src) + qdel(src) /obj/item/weapon/shield/changeling/IsShield() if(remaining_uses < 1) @@ -224,7 +224,7 @@ var/mob/living/carbon/human/H = loc H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!", "We harden our flesh, creating a suit of armor!", "You hear organic matter ripping and tearing!") /obj/item/clothing/suit/armor/changeling/dropped() - del(src) + qdel(src) /obj/item/clothing/head/helmet/changeling name = "chitinous mass" @@ -332,4 +332,4 @@ flags_inv = HIDEEARS /obj/item/clothing/head/helmet/changeling/dropped() - del(src) + qdel(src) diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 501aecae5d3..3fc888f8cac 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -44,7 +44,7 @@ if(istype(s)) O.implants -= s H.contents -= s - del(s) + qdel(s) O.brute_dam = 0 O.burn_dam = 0 O.damage_state = "00" diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index e2a7798c8c7..392441428d1 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -200,7 +200,7 @@ // remove the cult viewpoint object var/obj/viewpoint = getCultViewpoint(cult_mind.current) - del(viewpoint) + qdel(viewpoint) update_cult_icons_removed(cult_mind) if(show_message) @@ -243,13 +243,13 @@ /datum/game_mode/proc/remove_cult_icon(client/target_client,mob/target_mob) for(var/image/I in target_client.images) if(I.icon_state == "cult" && I.loc == target_mob) - del(I) + qdel(I) /datum/game_mode/proc/remove_all_cult_icons_from_client(client/target) for(var/image/I in target.images) if(I.icon_state == "cult") - del(I) + qdel(I) /datum/game_mode/proc/remove_all_cult_icons(target) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 5bb92c6c748..98451fe2ee7 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -95,11 +95,11 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", /obj/effect/rune/attackby(I as obj, user as mob, params) if(istype(I, /obj/item/weapon/tome) && iscultist(user)) user << "You retrace your steps, carefully undoing the lines of the rune." - del(src) + qdel(src) return else if(istype(I, /obj/item/weapon/nullrod)) user << "\blue You disrupt the vile magic with the deadening field of the null rod!" - del(src) + qdel(src) return return diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index a8ebc32995d..d6343e88142 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -22,7 +22,7 @@ var/list/sacrificed = list() user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" if (istype(user, /mob/living)) user.take_overall_damage(5, 0) - del(src) + qdel(src) if(allrunesloc && index != 0) if(istype(src,/obj/effect/rune)) user.say("Sas[pick("'","`")]so c'arta forbici!")//Only you can stop auto-muting @@ -60,7 +60,7 @@ var/list/sacrificed = list() user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric" if (istype(user, /mob/living)) user.take_overall_damage(5, 0) - del(src) + qdel(src) for(var/mob/living/carbon/C in orange(1,src)) if(iscultist(C) && !C.stat) culcount++ @@ -93,7 +93,7 @@ var/list/sacrificed = list() new /obj/item/weapon/tome(src.loc) else new /obj/item/weapon/tome(usr.loc) - del(src) + qdel(src) return @@ -158,7 +158,7 @@ var/list/sacrificed = list() T.hotspot_expose(700,125) var/rune = src // detaching the proc - in theory empulse(U, (range_red - 2), range_red) - del(rune) + qdel(rune) return /////////////////////////////////////////SIXTH RUNE @@ -320,7 +320,7 @@ var/list/sacrificed = list() usr.say("Kla[pick("'","`")]atu barada nikt'o!") for (var/mob/V in viewers(src)) V.show_message("\red The rune turns into gray dust, veiling the surrounding runes.", 3) - del(src) + qdel(src) else usr.whisper("Kla[pick("'","`")]atu barada nikt'o!") usr << "\red Your talisman turns into gray dust, veiling the surrounding runes." @@ -495,8 +495,8 @@ var/list/sacrificed = list() for (var/mob/V in viewers(src)) V.show_message("\red The runes turn into dust, which then forms into an arcane image on the paper.", 3) usr.say("H'drak v[pick("'","`")]loso, mir'kanas verbot!") - del(imbued_from) - del(newtalisman) + qdel(imbued_from) + qdel(newtalisman) else return fizzle() @@ -565,7 +565,7 @@ var/list/sacrificed = list() for(var/mob/spirit/spirit in spirits) spirit << "[displayName]: [input]" - del(src) + qdel(src) return 1 /////////////////////////////////////////FIFTEENTH RUNE @@ -711,7 +711,7 @@ var/list/sacrificed = list() usr.say("Nikt[pick("'","`")]o barada kla'atu!") for (var/mob/V in viewers(src)) V.show_message("\red The rune turns into red dust, reveaing the surrounding runes.", 3) - del(src) + qdel(src) return if(istype(W,/obj/item/weapon/paper/talisman)) usr.whisper("Nikt[pick("'","`")]o barada kla'atu!") @@ -787,7 +787,7 @@ var/list/sacrificed = list() for(var/mob/living/carbon/C in users) user.take_overall_damage(15, 0) C.say("Khari[pick("'","`")]d! Gual'te nikka!") - del(src) + qdel(src) return fizzle() /////////////////////////////////////////NINETEENTH RUNE @@ -821,7 +821,7 @@ var/list/sacrificed = list() user.visible_message("\red Rune disappears with a flash of red light, and in its place now a body lies.", \ "\red You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \ "\red You hear a pop and smell ozone.") - del(src) + qdel(src) return fizzle() /////////////////////////////////////////TWENTIETH RUNES @@ -843,7 +843,7 @@ var/list/sacrificed = list() if(affected) usr.say("Sti[pick("'","`")] kaliedir!") usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust." - del(src) + qdel(src) else return fizzle() else @@ -886,7 +886,7 @@ var/list/sacrificed = list() if(affected) usr.say("Sti[pick("'","`")] kaliesin!") usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust." - del(src) + qdel(src) else return fizzle() else @@ -940,7 +940,7 @@ var/list/sacrificed = list() if(iscultist(C) && !C.stat) C.say("Dedo ol[pick("'","`")]btoh!") C.take_overall_damage(15, 0) - del(src) + qdel(src) else return fizzle() return @@ -970,8 +970,8 @@ var/list/sacrificed = list() M << "\red Blood suddenly ignites, burning you!" var/turf/T = get_turf(B) T.hotspot_expose(700,125) - del(B) - del(src) + qdel(B) + qdel(src) ////////// Rune 24 (counting burningblood, which kinda doesnt work yet.) @@ -993,7 +993,7 @@ var/list/sacrificed = list() var/mob/living/silicon/S = L S.Weaken(5) S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3) - del(src) + qdel(src) else ///When invoked as talisman, stun and mute the target mob. usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!") var/obj/item/weapon/nullrod/N = locate() in T @@ -1035,5 +1035,5 @@ var/list/sacrificed = list() //the below calls update_icons() at the end, which will update overlay icons by using the (now updated) cache user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) //put in hands or on floor - del(src) + qdel(src) return diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 2276eccbfac..bb5378cfac3 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -41,7 +41,7 @@ user.take_organ_damage(5, 0) if(src && src.imbue!="supply" && src.imbue!="runestun") if(delete) - del(src) + qdel(src) return else user << "You see strange symbols on the paper. Are they supposed to mean something?" @@ -53,7 +53,7 @@ if(imbue == "runestun") user.take_organ_damage(5, 0) call(/obj/effect/rune/proc/runestun)(T) - del(src) + qdel(src) else ..() ///If its some other talisman, use the generic attack code, is this supposed to work this way? else @@ -62,7 +62,7 @@ proc/supply(var/key) if (!src.uses) - del(src) + qdel(src) return var/dat = "There are [src.uses] bloody runes on the parchment.
" diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index c338c34815e..c8641e65726 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -55,7 +55,7 @@ New() if(!istype(src.loc,/turf/simulated/floor)) - del(src) + qdel(src) spawn_biomass_piece(src.loc) processing_objects.Add(src) @@ -72,10 +72,10 @@ process() if(!vines) - del(src) //space vines exterminated. Remove the controller + qdel(src) //space vines exterminated. Remove the controller return if(!growth_queue) - del(src) //Sanity check + qdel(src) //Sanity check return if(vines.len >= 250 && !reached_collapse_size) reached_collapse_size = 1 diff --git a/code/game/gamemodes/events/black_hole.dm b/code/game/gamemodes/events/black_hole.dm index 6ff7babbeba..582e0d08234 100644 --- a/code/game/gamemodes/events/black_hole.dm +++ b/code/game/gamemodes/events/black_hole.dm @@ -16,14 +16,14 @@ while(src) if(!isturf(loc)) - del(src) + qdel(src) return //DESTROYING STUFF AT THE EPICENTER for(var/mob/living/M in orange(1,src)) - del(M) + qdel(M) for(var/obj/O in orange(1,src)) - del(O) + qdel(O) for(var/turf/simulated/ST in orange(1,src)) ST.ChangeTurf(/turf/space) @@ -57,7 +57,7 @@ /obj/effect/bhole/proc/grav(var/r, var/ex_act_force, var/pull_chance, var/turf_removal_chance) if(!isturf(loc)) //blackhole cannot be contained inside anything. Weird stuff might happen - del(src) + qdel(src) return for(var/t = -r, t < r, t++) affect_coord(x+t, y-r, ex_act_force, pull_chance, turf_removal_chance) diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm index 560e86ec8bb..3f2117d6a8b 100644 --- a/code/game/gamemodes/events/clang.dm +++ b/code/game/gamemodes/events/clang.dm @@ -36,7 +36,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(clong.density || prob(10)) clong.ex_act(2) else - del(src) + qdel(src) if(clong && prob(25)) src.loc = clong.loc @@ -81,7 +81,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if ((immrod.z in config.station_levels)) immrod.z = 1 if(immrod.loc == end) - del(immrod) + qdel(immrod) sleep(10) for(var/obj/effect/immovablerod/imm in world) return diff --git a/code/game/gamemodes/events/wormholes.dm b/code/game/gamemodes/events/wormholes.dm index 83eb7ad882d..bf14237639b 100644 --- a/code/game/gamemodes/events/wormholes.dm +++ b/code/game/gamemodes/events/wormholes.dm @@ -62,4 +62,4 @@ P.icon_state = "anom" P.name = "wormhole" spawn(rand(300,600)) - del(P) \ No newline at end of file + qdel(P) \ No newline at end of file diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index a56351e2e94..26c88144d78 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -340,8 +340,8 @@ var/global/datum/controller/gameticker/ticker //If its actually the end of the round, wait for it to end. //Otherwise if its a verb it will continue on afterwards. spawn(300) - if(cinematic) del(cinematic) //end the cinematic - if(temp_buckle) del(temp_buckle) //release everybody + if(cinematic) qdel(cinematic) //end the cinematic + if(temp_buckle) qdel(temp_buckle) //release everybody return diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 16a452ac651..965b81c2c5e 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -287,6 +287,6 @@ datum/game_mode/proc/auto_declare_completion_heist() var/area/skipjack = locate(/area/shuttle/vox/station) for (var/mob/living/M in skipjack.contents) //maybe send the player a message that they've gone home/been kidnapped? Someone responsible for vox lore should write that. - del(M) + qdel(M) for (var/obj/O in skipjack.contents) - del(O) //no hiding in lockers or anything \ No newline at end of file + qdel(O) //no hiding in lockers or anything \ No newline at end of file diff --git a/code/game/gamemodes/mutiny/auth_key.dm b/code/game/gamemodes/mutiny/auth_key.dm index 1f7ea3c888b..90f7b2c23e2 100644 --- a/code/game/gamemodes/mutiny/auth_key.dm +++ b/code/game/gamemodes/mutiny/auth_key.dm @@ -26,7 +26,7 @@ else if (in_space && time_entered_space + (10 SECONDS) < world.time) // Time is up radio.autosay("This device has left the station's perimeter. Triggering emergency activation failsafe.", name) - del(src) + qdel(src) return spawn(10 SECONDS) diff --git a/code/game/gamemodes/mutiny/mutiny.dm b/code/game/gamemodes/mutiny/mutiny.dm index 2068f4ac09d..6e63263c75b 100644 --- a/code/game/gamemodes/mutiny/mutiny.dm +++ b/code/game/gamemodes/mutiny/mutiny.dm @@ -135,11 +135,11 @@ datum/game_mode/mutiny var/slots = get_equipment_slots() switch(faction) if("loyalist") - if(captains_key) del(captains_key) + if(captains_key) qdel(captains_key) captains_key = new(H) H.equip_in_one_of_slots(captains_key, slots) if("mutineer") - if(secondary_key) del(secondary_key) + if(secondary_key) qdel(secondary_key) secondary_key = new(H) H.equip_in_one_of_slots(secondary_key, slots) @@ -190,7 +190,7 @@ datum/game_mode/mutiny proc/replace_nuke_with_ead() for(var/obj/machinery/nuclearbomb/N in world) ead = new(N.loc, src) - del(N) + qdel(N) proc/unbolt_vault_door() var/obj/machinery/door/airlock/vault = locate(/obj/machinery/door/airlock/vault) @@ -247,11 +247,11 @@ datum/game_mode/mutiny for(var/image/I in head_loyalist.current.client.images) if(I.loc == M.current && (I.icon_state == "loyalist" || I.icon_state == "mutineer")) - del(I) + qdel(I) for(var/image/I in head_mutineer.current.client.images) if(I.loc == M.current && (I.icon_state == "loyalist" || I.icon_state == "mutineer")) - del(I) + qdel(I) if(M in loyalists) var/I = image('icons/mob/mob.dmi', loc=M.current, icon_state = "loyalist") diff --git a/code/game/gamemodes/nations/nations.dm b/code/game/gamemodes/nations/nations.dm index afaab542d73..52df698a96f 100644 --- a/code/game/gamemodes/nations/nations.dm +++ b/code/game/gamemodes/nations/nations.dm @@ -40,7 +40,7 @@ datum/game_mode/nations /datum/game_mode/nations/proc/remove_flags() for(var/obj/item/flag/F in world) - del(F) + qdel(F) /datum/game_mode/nations/proc/spawn_flags() diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index c49f75a4737..096b3d72bcb 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -73,7 +73,7 @@ proc/issyndicate(mob/living/M as mob) if(synd_mind.current.client) for(var/image/I in synd_mind.current.client.images) if(I.icon_state == "synd") - del(I) + qdel(I) for(var/datum/mind/synd_mind in syndicates) if(synd_mind.current) @@ -97,13 +97,13 @@ proc/issyndicate(mob/living/M as mob) if(synd.current.client) for(var/image/I in synd.current.client.images) if(I.icon_state == "synd" && I.loc == synd_mind.current) - del(I) + qdel(I) if(synd_mind.current) if(synd_mind.current.client) for(var/image/I in synd_mind.current.client.images) if(I.icon_state == "synd") - del(I) + qdel(I) //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 833f161f541..bc29494d6ea 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -159,7 +159,7 @@ var/n="[tmp_object]" item_names+=n item_paths[n]=typepath - del(tmp_object) + qdel(tmp_object) var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in potential_theft_objectives if(!targetitem) return diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index e49914896ad..ad9b8390253 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -598,7 +598,7 @@ datum/objective/steal if (!O.typepath) return var/tmp_obj = new O.typepath var/custom_name = tmp_obj:name - del(tmp_obj) + qdel(tmp_obj) O.name = sanitize(copytext(input("Enter target name:", "Objective target", custom_name) as text|null,1,MAX_NAME_LEN)) if (!O.name) return steal_target = O diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index a3a434b6926..591d5f8f5ba 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -277,14 +277,14 @@ if(head_rev_mind.current.client) for(var/image/I in head_rev_mind.current.client.images) if(I.icon_state == "rev" || I.icon_state == "rev_head") - del(I) + qdel(I) for(var/datum/mind/rev_mind in revolutionaries) if(rev_mind.current) if(rev_mind.current.client) for(var/image/I in rev_mind.current.client.images) if(I.icon_state == "rev" || I.icon_state == "rev_head") - del(I) + qdel(I) for(var/datum/mind/head_rev in head_revolutionaries) if(head_rev.current) @@ -346,20 +346,20 @@ if(head_rev_mind.current.client) for(var/image/I in head_rev_mind.current.client.images) if((I.icon_state == "rev" || I.icon_state == "rev_head") && I.loc == rev_mind.current) - del(I) + qdel(I) for(var/datum/mind/rev_mind_1 in revolutionaries) if(rev_mind_1.current) if(rev_mind_1.current.client) for(var/image/I in rev_mind_1.current.client.images) if((I.icon_state == "rev" || I.icon_state == "rev_head") && I.loc == rev_mind.current) - del(I) + qdel(I) if(rev_mind.current) if(rev_mind.current.client) for(var/image/I in rev_mind.current.client.images) if(I.icon_state == "rev" || I.icon_state == "rev_head") - del(I) + qdel(I) ////////////////////////// //Checks for rev victory// diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index cfbc8491fc5..da997300aa1 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -141,7 +141,7 @@ for(var/x in typesof(/datum/faction)) var/datum/faction/F = new x if(!F.name) - del(F) + qdel(F) continue else ticker.factions.Add(F) diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 42a4a4ee3e5..c1acd926c97 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -279,17 +279,17 @@ Made by Xhuis if(shadowling.current.client) for(var/image/I in shadowling.current.client.images) if((I.icon_state == "thrall" || I.icon_state == "shadowling") && I.loc == shadow_mind.current) - del(I) + qdel(I) for(var/datum/mind/thrall in thralls) if(thrall.current) if(thrall.current.client) for(var/image/I in thrall.current.client.images) if((I.icon_state == "thrall" || I.icon_state == "shadowling") && I.loc == shadow_mind.current) - del(I) + qdel(I) if(shadow_mind.current) if(shadow_mind.current.client) for(var/image/I in shadow_mind.current.client.images) if(I.icon_state == "thrall" || I.icon_state == "shadowling") - del(I) + qdel(I) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 81550b232d6..ae4e41babed 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -375,7 +375,7 @@ for(var/image/I in t_mind.current.client.images) if((I.icon_state == "greytide" || I.icon_state == "greytide_head") && I.loc == traitor_mind.current) //world.log << "deleting [traitor_mind] overlay" - del(I) + qdel(I) if(head) //world.log << "found [head.name]" if(head.current) @@ -383,12 +383,12 @@ for(var/image/I in head.current.client.images) if((I.icon_state == "greytide" || I.icon_state == "greytide_head") && I.loc == traitor_mind.current) //world.log << "deleting [traitor_mind] overlay" - del(I) + qdel(I) if(traitor_mind.current) if(traitor_mind.current.client) for(var/image/I in traitor_mind.current.client.images) if(I.icon_state == "greytide" || I.icon_state == "greytide_head") - del(I) + qdel(I) /datum/game_mode/proc/remove_traitor_mind(datum/mind/traitor_mind, datum/mind/head) //var/list/removal diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 87d862e1aa4..e9757a4a83b 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -417,7 +417,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha for(var/image/I in t_mind.current.client.images) if((I.icon_state == "vampthrall" || I.icon_state == "vampire") && I.loc == vampire_mind.current) //world.log << "deleting [vampire_mind] overlay" - del(I) + qdel(I) if(head) //world.log << "found [head.name]" if(head.current) @@ -425,12 +425,12 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha for(var/image/I in head.current.client.images) if((I.icon_state == "vampthrall" || I.icon_state == "vampire") && I.loc == vampire_mind.current) //world.log << "deleting [vampire_mind] overlay" - del(I) + qdel(I) if(vampire_mind.current) if(vampire_mind.current.client) for(var/image/I in vampire_mind.current.client.images) if(I.icon_state == "vampthrall" || I.icon_state == "vampire") - del(I) + qdel(I) /datum/game_mode/proc/remove_vampire_mind(datum/mind/vampire_mind, datum/mind/head) //var/list/removal diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 8b0797a8d7a..009126c5731 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -412,8 +412,8 @@ break M.current.canmove = 1 M.current.client.eye = M.current - del(animation) - del(holder) + qdel(animation) + qdel(holder) M.current.remove_vampire_blood(30) M.current.verbs -= /client/vampire/proc/vampire_jaunt spawn(600) M.current.verbs += /client/vampire/proc/vampire_jaunt @@ -473,7 +473,7 @@ //animation.master = src usr.loc = picked spawn(10) - del(animation) + qdel(animation) M.current.remove_vampire_blood(30) M.current.verbs -= /client/vampire/proc/vampire_shadowstep spawn(20) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 80b7aa10e81..43c85164a2f 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -133,7 +133,7 @@ /obj/effect/rend/New() spawn(50) new /obj/singularity/narsie/wizard(get_turf(src)) - del(src) + qdel(src) return return diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 0a1f21dd430..66f412bdfa8 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -124,7 +124,7 @@ animation.icon = 'icons/mob/mob.dmi' animation.master = T flick("dust-h", animation) - del(animation) + qdel(animation) var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) S.loc = C //put shade in stone S.status_flags |= GODMODE //So they won't die inside the stone somehow @@ -141,7 +141,7 @@ U << "\blue Capture successful!: \black [T.real_name]'s soul has been ripped from their body and stored within the soul stone." U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." C.imprinted = "[S.name]" - del T + qdel(T) if("SHADE") var/mob/living/simple_animal/shade/T = target var/obj/item/device/soulstone/C = src @@ -179,11 +179,11 @@ else ticker.mode.cult+=Z.mind ticker.mode.update_cult_icons_added(Z.mind) - del(T) + qdel(T) Z << "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike." Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." Z.cancel_camera() - del(C) + qdel(C) if("Wraith") var/mob/living/simple_animal/construct/wraith/Z = new /mob/living/simple_animal/construct/wraith (get_turf(T.loc)) @@ -195,11 +195,11 @@ else ticker.mode.cult+=Z.mind ticker.mode.update_cult_icons_added(Z.mind) - del(T) + qdel(T) Z << "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls." Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." Z.cancel_camera() - del(C) + qdel(C) if("Artificer") var/mob/living/simple_animal/construct/builder/Z = new /mob/living/simple_animal/construct/builder (get_turf(T.loc)) @@ -211,11 +211,11 @@ else ticker.mode.cult+=Z.mind ticker.mode.update_cult_icons_added(Z.mind) - del(T) + qdel(T) Z << "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone)." Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." Z.cancel_camera() - del(C) + qdel(C) else U << "\red Creation failed!: \black The soul stone is empty! Go kill someone!" return diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index d126c6c164e..483966e0ca1 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -77,7 +77,7 @@ if(initial(S.name) == initial(aspell.name)) spell_levels = aspell.spell_level user.mind.spell_list.Remove(aspell) - del(S) + qdel(S) return cost * (spell_levels+1) return -1 @@ -373,7 +373,7 @@ entries |= E categories |= E.category else - del(E) + qdel(E) tab = categories[1] /obj/item/weapon/spellbook/attackby(obj/item/O as obj, mob/user as mob, params) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index cf6f6717765..2455637e61b 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -155,12 +155,12 @@ return //So zards properly get their items when they are admin-made. - del(wizard_mob.wear_suit) - del(wizard_mob.head) - del(wizard_mob.shoes) - del(wizard_mob.r_hand) - del(wizard_mob.r_store) - del(wizard_mob.l_store) + qdel(wizard_mob.wear_suit) + qdel(wizard_mob.head) + qdel(wizard_mob.shoes) + qdel(wizard_mob.r_hand) + qdel(wizard_mob.r_store) + qdel(wizard_mob.l_store) wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_l_ear) wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform) @@ -276,7 +276,7 @@ /mob/proc/spellremove(var/mob/M as mob, var/removeallspells=1) for(var/obj/effect/proc_holder/spell/wizard/spell_to_remove in src.spell_list) if (spell_to_remove.name == "Artificer" && !removeallspells) continue - del(spell_to_remove) + qdel(spell_to_remove) /*Checks if the wizard can cast spells. Made a proc so this is not repeated 14 (or more) times.*/ diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 6369ed99eee..a5881156f80 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -40,14 +40,14 @@ /obj/machinery/optable/blob_act() if(prob(75)) - del(src) + qdel(src) /obj/machinery/optable/attack_hand(mob/user as mob) if (HULK in usr.mutations) usr << text("\blue You destroy the table.") visible_message("\red [usr] destroys the operating table!") src.density = 0 - del(src) + qdel(src) return /obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -121,7 +121,7 @@ if (istype(W, /obj/item/weapon/grab)) if(iscarbon(W:affecting)) take_victim(W:affecting,usr) - del(W) + qdel(W) return diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 13482b9b525..9943e446f8c 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -285,7 +285,7 @@ for(var/atom/movable/A as mob|obj in src) A.loc = src.loc A.blob_act() - del(src) + qdel(src) return @@ -360,7 +360,7 @@ M << "\blue You feel cool air surround you. You go numb as your senses turn inward." src.add_fingerprint(user) - del(G) + qdel(G) return return @@ -601,7 +601,7 @@ src.icon_state = "sleeper" for(var/obj/O in src) - del(O) + qdel(O) src.add_fingerprint(usr) return return \ No newline at end of file diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index e0c10366f77..f3090cdfb67 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -82,7 +82,7 @@ src.icon_state = "body_scanner_1" src.add_fingerprint(user) //G = null - del(G) + qdel(G) return /obj/machinery/bodyscanner/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) @@ -178,7 +178,7 @@ src.icon_state = "bodyscanner" for(var/obj/O in src) //O = null - del(O) + qdel(O) //Foreach goto(124) src.add_fingerprint(usr) return @@ -229,7 +229,7 @@ if(prob(50)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) /obj/machinery/body_scanconsole var/obj/machinery/bodyscanner/connected @@ -286,7 +286,7 @@ /obj/machinery/body_scanconsole/blob_act() if(prob(50)) - del(src) + qdel(src) /obj/machinery/body_scanconsole/proc/findscanner() spawn( 5 ) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index ccc40f29e84..5965a7c8182 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -989,7 +989,7 @@ user << "You wire \the [src]!" coil.amount -= 5 if(!coil.amount) - del(coil) + qdel(coil) buildstage = 2 update_icon() @@ -1009,7 +1009,7 @@ if(0) if(istype(W, /obj/item/weapon/airalarm_electronics)) user << "You insert the circuit!" - del(W) + qdel(W) buildstage = 1 update_icon() return @@ -1154,7 +1154,7 @@ FIRE ALARM coil.amount -= 5 if(!coil.amount) - del(coil) + qdel(coil) buildstage = 2 user << "You wire \the [src]!" @@ -1171,7 +1171,7 @@ FIRE ALARM if(0) if(istype(W, /obj/item/weapon/firealarm_electronics)) user << "You insert the circuit!" - del(W) + qdel(W) buildstage = 1 update_icon() @@ -1179,7 +1179,7 @@ FIRE ALARM user << "You remove the fire alarm assembly from the wall!" new /obj/item/mounted/frame/firealarm(get_turf(user)) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - del(src) + qdel(src) return src.alarm() diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 941e520a3d5..b9005987fc3 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -80,7 +80,7 @@ obj/machinery/air_sensor if(do_after(user, 40)) user.visible_message("[user] unfastens \the [src].", "\blue You have unfastened \the [src].", "You hear ratchet.") new /obj/item/pipe_gsensor(src.loc) - del(src) + qdel(src) return 1 if(..()) return 1 diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 0c6deb622a9..f4e38aea3e9 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -130,7 +130,7 @@ "\blue You have unfastened \the [src].", \ "You hear ratchet.") new /obj/item/pipe_meter(src.loc) - del(src) + qdel(src) // TURF METER - REPORTS A TILE'S AIR CONTENTS diff --git a/code/game/machinery/bees_items.dm b/code/game/machinery/bees_items.dm index e8c9014a3ba..0a008eb819e 100644 --- a/code/game/machinery/bees_items.dm +++ b/code/game/machinery/bees_items.dm @@ -20,7 +20,7 @@ for(var/mob/living/simple_animal/bee/B in T) if(B.feral < 0) caught_bees += B.strength - del(B) + qdel(B) user.visible_message("\blue [user] nets some bees.","\blue You net up some of the becalmed bees.") else user.visible_message("\red [user] swings at some bees, they don't seem to like it.","\red You swing at some bees, they don't seem to like it.") diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 08e60558d38..ff6eccaa2a6 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -372,7 +372,7 @@ user << "\blue \The [src] processes \the [W]." biomass += 50 user.drop_item() - del(W) + qdel(W) return else if (istype(W, /obj/item/weapon/wrench)) if(src.locked && (src.anchored || src.occupant)) @@ -458,7 +458,7 @@ src.icon_state = "pod_g" src.occupant.ghostize() spawn(5) - del(src.occupant) + qdel(src.occupant) return /obj/machinery/clonepod/relaymove(mob/user as mob) diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index b6381ea5eb0..a0111fabfbf 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -240,7 +240,7 @@ if(!silent) var/obj/oldobj = obj visible_message("The [oldobj.name] fades away!") - del(obj) + qdel(obj) /obj/machinery/computer/HolodeckControl/proc/checkInteg(var/area/A) for(var/turf/T in A) @@ -293,10 +293,10 @@ derez(item) for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) - del(B) + qdel(B) for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck) - del(C) + qdel(C) holographic_items = A.copy_contents_to(linkedholodeck , 1) @@ -402,7 +402,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(5) visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) + qdel(W) return if (istype(W, /obj/item/weapon/wrench)) @@ -522,7 +522,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(5) visible_message("\red [G.assailant] dunks [G.affecting] into the [src]!", 3) - del(W) + qdel(W) return else if (istype(W, /obj/item) && get_dist(src,user)<2) user.drop_item(src) @@ -577,7 +577,7 @@ currentarea = get_area(src.loc) if(!currentarea) - del(src) + qdel(src) if(eventstarted) usr << "The event has already begun!" @@ -608,7 +608,7 @@ eventstarted = 1 for(var/obj/structure/holowindow/W in currentarea) - del(W) + qdel(W) for(var/mob/M in currentarea) M << "FIGHT!" \ No newline at end of file diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 92a47bad1a4..8aa64e18b6b 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -29,7 +29,7 @@ if(!src || !WT.remove_fuel(0, user)) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/plasteel( loc, 4) - del(src) + qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -67,7 +67,7 @@ playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 20)) P:amount -= 5 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You add cables to the frame." state = 3 icon_state = "3" @@ -89,7 +89,7 @@ if(do_after(user, 20)) if (P) P:amount -= 2 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You put in the glass panel." state = 4 icon_state = "4" @@ -166,7 +166,7 @@ if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created A.rename_self("ai", 1) feedback_inc("cyborg_ais_created",1) - del(src) + qdel(src) /obj/structure/AIcore/deactivated name = "Inactive AI" @@ -301,7 +301,7 @@ That prevents a few funky behaviors. A.cancel_camera() A << "You have been uploaded to a stationary terminal. Remote device connection restored." U << "\blue Transfer successful: \black [A.name] ([rand(1000,9999)].exe) installed and executed succesfully. Local copy has been removed." - del(T) + qdel(T) /*if("NINJASUIT") var/obj/item/clothing/suit/space/space_ninja/C = src var/mob/living/silicon/ai/A = C.AI diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7a732bac213..55e5d8bc4db 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -59,7 +59,7 @@ ..() var/choice = pick(typesof(/obj/machinery/computer/arcade) - /obj/machinery/computer/arcade) new choice(loc) - del(src) + qdel(src) /obj/machinery/computer/arcade/proc/prizevend() if(!contents.len) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 8864fa8bba2..620ad17e21d 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -301,7 +301,7 @@ if(!src || !WT.isOn()) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/metal( src.loc, 5 ) - del(src) + qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -344,7 +344,7 @@ if(do_after(user, 20)) if(P) P:amount -= 5 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You add cables to the frame." src.state = 3 src.icon_state = "3" @@ -385,7 +385,7 @@ var/obj/machinery/computer/supplycomp/SC = B var/obj/item/weapon/circuitboard/supplycomp/C = circuit SC.can_order_contraband = C.contraband_enabled - del(src) + qdel(src) @@ -412,7 +412,7 @@ if(!src || !WT.isOn()) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/mineral/clown( src.loc, 5 ) - del(src) + qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -455,7 +455,7 @@ if(do_after(user, 20)) if(P) P:amount -= 5 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You add cables to the frame." src.state = 3 src.icon_state = "3" @@ -492,4 +492,4 @@ if(circuit.id) B:id = circuit.id if(circuit.records) B:records = circuit.records if(circuit.frequency) B:frequency = circuit.frequency - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 9bdaec41633..bb0cfb2d1bc 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -194,7 +194,7 @@ src.active_record = locate(href_list["view_rec"]) if(istype(src.active_record,/datum/dna2/record)) if ((isnull(src.active_record.ckey))) - del(src.active_record) + qdel(src.active_record) src.temp = "Error: Record corrupt." else src.menu = 3 @@ -215,7 +215,7 @@ if (istype(C)||istype(C, /obj/item/device/pda)) if(src.check_access(C)) src.records.Remove(src.active_record) - del(src.active_record) + qdel(src.active_record) src.temp = "Record deleted." src.menu = 2 else @@ -286,7 +286,7 @@ else if(pod1.growclone(C)) temp = "Initiating cloning cycle..." records.Remove(C) - del(C) + qdel(C) menu = 1 else var/mob/selected = find_dead_player("[C.ckey]") @@ -295,7 +295,7 @@ if(answer != "No" && pod1.growclone(C)) temp = "Initiating cloning cycle..." records.Remove(C) - del(C) + qdel(C) menu = 1 else temp = "Initiating cloning cycle...
Error: Post-initialisation failed. Cloning cycle aborted." diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index bb377cca260..16c5faf54f8 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -127,7 +127,7 @@ user << "\blue You disconnect the monitor." A.state = 4 A.icon_state = "4" - del(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/computer/hologram.dm b/code/game/machinery/computer/hologram.dm index 4b799535f23..c21e3cf8b4f 100644 --- a/code/game/machinery/computer/hologram.dm +++ b/code/game/machinery/computer/hologram.dm @@ -65,7 +65,7 @@ if (src.projector.hologram) src.projector.icon_state = "hologram0" //src.projector.hologram = null - del(src.projector.hologram) + qdel(src.projector.hologram) else src.projector.hologram = new(src.projector.loc) src.projector.hologram.icon = 'icons/mob/human.dmi' diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm index aba29ec0802..abf8880b125 100644 --- a/code/game/machinery/computer/honkputer.dm +++ b/code/game/machinery/computer/honkputer.dm @@ -112,7 +112,7 @@ user << "\blue You disconnect the monitor." A.state = 4 A.icon_state = "4" - del(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 4c61d7d705f..f63748d81e2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -385,7 +385,7 @@ if (href_list["del_r2"]) if (src.active2) //src.active2 = null - del(src.active2) + qdel(src.active2) if (href_list["d_rec"]) var/datum/data/record/R = locate(href_list["d_rec"]) @@ -510,7 +510,7 @@ continue else if(prob(1)) - del(R) + qdel(R) continue ..(severity) diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm index 9eff8165eb5..50ce7f6f98c 100644 --- a/code/game/machinery/computer/power.dm +++ b/code/game/machinery/computer/power.dm @@ -54,7 +54,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -65,7 +65,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 8d9c206e97f..0857b599d78 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -54,7 +54,7 @@ var/prison_shuttle_timeleft = 0 A.state = 4 A.icon_state = "4" - del(src) + qdel(src) else if(istype(I,/obj/item/weapon/card/emag) && (!hacked)) hacked = 1 user << "\blue You disable the lock." @@ -203,7 +203,7 @@ var/prison_shuttle_timeleft = 0 for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) start_location.move_contents_to(end_location) if(1) @@ -233,7 +233,7 @@ var/prison_shuttle_timeleft = 0 for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index a9599578d0f..7a757556122 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -343,7 +343,7 @@ What a mess.*/ if ("Purge All Records") for(var/datum/data/record/R in data_core.security) - del(R) + qdel(R) temp = "All Security records deleted." if ("Add Entry") @@ -527,17 +527,17 @@ What a mess.*/ if ("Delete Record (Security) Execute") if (active2) - del(active2) + qdel(active2) if ("Delete Record (ALL) Execute") if (active1) for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) - del(R) + qdel(R) else - del(active1) + qdel(active1) if (active2) - del(active2) + qdel(active2) else temp = "This function does not appear to be working at the moment. Our apologies." @@ -568,7 +568,7 @@ What a mess.*/ continue else if(prob(1)) - del(R) + qdel(R) continue ..(severity) diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 96949ac7fa0..d9f3dcd996e 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -46,7 +46,7 @@ world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" emergency_shuttle.set_launch_countdown(10) //src.authorized = null - del(src.authorized) + qdel(src.authorized) src.authorized = list( ) if("Repeal") diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index b5c49c4b165..50c2adca3f4 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -276,7 +276,7 @@ What a mess.*/ if(PDA_Manifest.len) PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.security) - del(R) + qdel(R) temp = "All Employment records deleted." if ("Delete Record (ALL)") @@ -373,9 +373,9 @@ What a mess.*/ PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) - del(R) + qdel(R) else - del(active1) + qdel(active1) else temp = "This function does not appear to be working at the moment. Our apologies." @@ -406,7 +406,7 @@ What a mess.*/ continue else if(prob(1)) - del(R) + qdel(R) continue ..(severity) diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index 9b455111d6d..6bd58e74e4f 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -77,7 +77,7 @@ var/specops_shuttle_timeleft = 0 for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() @@ -96,7 +96,7 @@ var/specops_shuttle_timeleft = 0 for(var/obj/machinery/computer/specops_shuttle/S in world) S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY - del(announcer) + qdel(announcer) /proc/specops_process() var/area/centcom/specops/special_ops = locate()//Where is the specops area located? @@ -226,7 +226,7 @@ var/specops_shuttle_timeleft = 0 for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) start_location.move_contents_to(end_location) @@ -237,7 +237,7 @@ var/specops_shuttle_timeleft = 0 for(var/obj/machinery/computer/specops_shuttle/S in world) S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY - del(announcer) + qdel(announcer) /proc/specops_can_move() if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index ba547692036..a0bcff2139a 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -160,7 +160,7 @@ var/syndicate_elite_shuttle_timeleft = 0 for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() diff --git a/code/game/machinery/computer/xenos_shuttle.dm b/code/game/machinery/computer/xenos_shuttle.dm index fd58beadaf4..4f63578e51b 100644 --- a/code/game/machinery/computer/xenos_shuttle.dm +++ b/code/game/machinery/computer/xenos_shuttle.dm @@ -72,7 +72,7 @@ for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in dest_location) // If someone somehow is still in the shuttle's docking area... bug.gib() diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a2042720a7f..59a784233c1 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -80,7 +80,7 @@ user << "\blue You add the glass to the frame." playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) new /obj/structure/displaycase_frame(src.loc) - del(src) + qdel(src) return if(istype(P, /obj/item/weapon/wrench)) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 982f0e415ff..5d2e551f64f 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -303,7 +303,7 @@ return var/mob/M = G:affecting if(put_mob(M)) - del(G) + qdel(G) return /obj/machinery/atmospherics/unary/cryo_cell/update_icon() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 14a461474e1..c5d51c46527 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -289,12 +289,12 @@ if(!istype(R)) return ..() R.contents -= R.mmi - del(R.mmi) + qdel(R.mmi) for(var/obj/item/I in R.module) // the tools the borg has; metal, glass, guns etc for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags O.loc = R - del(I) - del(R.module) + qdel(I) + qdel(R.module) return ..() @@ -333,7 +333,7 @@ break if(!preserve) - del(W) + qdel(W) else if(control_computer && control_computer.allow_items) control_computer.frozen_items += W @@ -346,7 +346,7 @@ // We don't want revs to get objectives that aren't for heads of staff. Letting // them win or lose based on cryo is silly so we remove the objective. if(istype(O,/datum/objective/mutiny) && O.target == occupant.mind) - del(O) + qdel(O) else if(O.target && istype(O.target,/datum/mind)) if(O.target == occupant.mind) if(O.owner && O.owner.current) @@ -358,7 +358,7 @@ if(!(O.target)) all_objectives -= O O.owner.objectives -= O - del(O) + qdel(O) //Handle job slot/tater cleanup. var/job = occupant.mind.assigned_role @@ -366,7 +366,7 @@ job_master.FreeRole(job) if(occupant.mind.objectives.len) - del(occupant.mind.objectives) + qdel(occupant.mind.objectives) occupant.mind.special_role = null else if(ticker.mode.name == "AutoTraitor") @@ -379,13 +379,13 @@ PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == occupant.real_name)) - del(R) + qdel(R) for(var/datum/data/record/T in data_core.security) if ((T.fields["name"] == occupant.real_name)) - del(T) + qdel(T) for(var/datum/data/record/G in data_core.general) if ((G.fields["name"] == occupant.real_name)) - del(G) + qdel(G) if(orient_right) icon_state = "[base_icon_state]-r" @@ -412,7 +412,7 @@ visible_message("\The [src] hums and hisses as it moves [occupant.real_name] into storage.", 3) // Delete the mob. - del(occupant) + qdel(occupant) occupant = null name = initial(name) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 48b1ce8418a..47333ed7ec4 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -89,7 +89,7 @@ for reference: new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) new /obj/item/stack/sheet/wood(get_turf(src)) - del(src) + qdel(src) ..() ex_act(severity) @@ -112,7 +112,7 @@ for reference: src.health -= 25 if (src.health <= 0) visible_message("\red The blob eats through the barricade!") - del(src) + qdel(src) return CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff. diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index e469e358d2e..215cc8c1968 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -151,7 +151,7 @@ if(do_after(user, 30)) user << "You detach \the [src] from the wall." new/obj/item/mounted/frame/driver_button(get_turf(src)) - del(src) + qdel(src) return 1 return src.attack_hand(user) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ac589278c09..ac9829abbef 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -827,7 +827,7 @@ About the new airlock wires panel: ae.icon_state = "door_electronics_smoked" operating = 0 - del(src) + qdel(src) return else if(arePowerSystemsOn()) user << "\blue The airlock's motors resist your efforts to force it." diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index c62976ec171..680f9317bfd 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -166,7 +166,7 @@ /obj/machinery/door/blob_act() if(prob(40)) - del(src) + qdel(src) return diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 535e4cbd826..b0e0a52d948 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -69,7 +69,7 @@ //use_power(radio_power_use) //neat idea, but causes way too much lag. return radio_connection.post_signal(src, signal, filter) else - del(signal) + qdel(signal) /obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) diff --git a/code/game/machinery/embedded_controller/embedded_program_base.dm b/code/game/machinery/embedded_controller/embedded_program_base.dm index 611fcfc52e5..06507d9d5f9 100644 --- a/code/game/machinery/embedded_controller/embedded_program_base.dm +++ b/code/game/machinery/embedded_controller/embedded_program_base.dm @@ -24,4 +24,4 @@ if(master) master.post_signal(signal, comm_line) else - del(signal) + qdel(signal) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index ecce6d98767..f45a80e19c8 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -115,7 +115,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/proc/clear_holo() // hologram.set_light(0)//Clear lighting. //handled by the lighting controller when its ower is deleted - del(hologram)//Get rid of hologram. + qdel(hologram)//Get rid of hologram. if(master.holo == src) master.holo = null master = null//Null the master, since no-one is using it now. @@ -193,7 +193,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return /obj/machinery/hologram/blob_act() - del(src) + qdel(src) return /obj/machinery/hologram/Destroy() diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 33000bbfc21..df6727ce3f8 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -204,7 +204,7 @@ move_into_gibber(user,G.affecting) - del(G) + qdel(G) /obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) if(usr.stat || (!ishuman(user)) || user.restrained() || user.weakened || user.stunned || user.paralysis || user.resting) @@ -395,7 +395,7 @@ src.occupant.death(1) src.occupant.ghostize() - del(src.occupant) + qdel(src.occupant) spawn(src.gibtime) diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index 2df46989506..14fb3b12f62 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -161,7 +161,7 @@ for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents) var/r_id = get_juice_id(O) beaker.reagents.add_reagent(r_id,get_juice_amount(O)) - del(O) + qdel(O) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index dc4e21f9296..258757adaee 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -37,7 +37,7 @@ if(recipe.result) // Ignore recipe subtypes that lack a result available_recipes += recipe else - del(recipe) + qdel(recipe) acceptable_items = new acceptable_reagents = new for (var/datum/recipe/microwave/recipe in available_recipes) @@ -399,7 +399,7 @@ var/id = O.reagents.get_master_reagent_id() if (id) amount+=O.reagents.get_reagent_amount(id) - del(O) + qdel(O) src.reagents.clear_reagents() ffuu.reagents.add_reagent("carbon", amount) ffuu.reagents.add_reagent("????", amount/10) diff --git a/code/game/machinery/kitchen/monkeyrecycler.dm b/code/game/machinery/kitchen/monkeyrecycler.dm index 25f12722c97..73d79fc6f65 100644 --- a/code/game/machinery/kitchen/monkeyrecycler.dm +++ b/code/game/machinery/kitchen/monkeyrecycler.dm @@ -25,7 +25,7 @@ user << "\red The monkey is struggling far too much to put it in the recycler." else user.drop_item() - del(target) + qdel(target) user << "\blue You stuff the monkey in the machine." playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) var/offset = prob(50) ? -2 : 2 diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index cc9f64dcc3d..835855df1e0 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -24,7 +24,7 @@ if (src.output && loc) new src.output(loc) if (what) - del(what) + qdel(what) ///////////////////////// /////OBJECT RECIPIES///// diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1ed3173e74f..85a8557b2d3 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -174,7 +174,7 @@ Class Procs: /obj/machinery/blob_act() if(prob(50)) - del(src) + qdel(src) /obj/machinery/proc/auto_use_power() if(!powered(power_channel)) @@ -462,7 +462,7 @@ Class Procs: if(I.reliability != 100 && crit_fail) I.crit_fail = 1 I.loc = loc - del(src) + qdel(src) return 1 /obj/machinery/proc/on_assess_perp(mob/living/carbon/human/perp) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 8569ede3fd7..d4d25346c60 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -364,7 +364,7 @@ // N, S, E, W are directional // C is center // R is random (in magnetic field's bounds) - del(signal) + qdel(signal) break // break the loop if the character located is invalid signal.data["command"] = nextmove diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 10107259fa8..205b9a08243 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -29,7 +29,7 @@ F.anchored = 1 F.build = 4 F.update_icon() - del(src) + qdel(src) return 1 return ..() @@ -111,7 +111,7 @@ if(do_after(user, 30) && (build == 0)) user << "You detach the plasteel sheets from each others." new /obj/item/stack/sheet/plasteel(get_turf(src),3) - del(src) + qdel(src) return 1 if(istype(W, /obj/item/weapon/wrench)) user << "You begin to anchor \the [src] on the floor." @@ -199,7 +199,7 @@ playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) var/obj/machinery/mass_driver/M = new(get_turf(src)) M.dir = src.dir - del(src) + qdel(src) return 1 ..() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 169641a452c..9d70a9def90 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -1152,7 +1152,7 @@ Buildable meters if(machineReference) transfer_fingerprints_to(machineReference) machineReference.add_fingerprint(user) - del(src) // remove the pipe item + qdel(src) // remove the pipe item return //TODO: DEFERRED @@ -1180,7 +1180,7 @@ Buildable meters new/obj/machinery/meter( src.loc ) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "\blue You have fastened the meter to the pipe" - del(src) + qdel(src) /obj/item/pipe_gsensor name = "gas sensor" @@ -1197,7 +1197,7 @@ Buildable meters new/obj/machinery/air_sensor( src.loc ) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) user << "\blue You have fastened the gas sensor" - del(src) + qdel(src) //not sure why these are necessary #undef PIPE_SIMPLE_STRAIGHT #undef PIPE_SIMPLE_BENT diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 43050cab6ae..49bdac91c98 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -101,7 +101,7 @@ if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter)) usr << "\blue You put [W] back to [src]." user.drop_item() - del(W) + qdel(W) return else if (istype(W, /obj/item/weapon/wrench)) if (unwrenched==0) @@ -160,7 +160,7 @@ Nah if (pipe.anchored) return - del(pipe) + qdel(pipe) /obj/machinery/pipedispenser/disposal/attack_hand(user as mob) if(..()) diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm index c6da942645a..963dc0c803a 100644 --- a/code/game/machinery/portable_tag_turret.dm +++ b/code/game/machinery/portable_tag_turret.dm @@ -82,13 +82,13 @@ if(lasercolor == "b" && disabled == 0) if(istype(Proj, /obj/item/weapon/gun/energy/laser/redtag)) disabled = 1 - del(Proj) // qdel + qdel(Proj) // qdel sleep(100) disabled = 0 if(lasercolor == "r" && disabled == 0) if(istype(Proj, /obj/item/weapon/gun/energy/laser/bluetag)) disabled = 1 - del(Proj) // qdel + qdel(Proj) // qdel sleep(100) disabled = 0 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 0a71b73e8ef..c1f9d960d14 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -416,7 +416,7 @@ spark_system.start() //creates some sparks because they look cool density = 1 update_icon() - del(cover) //deletes the cover - no need on keeping it there! - del + qdel(cover) //deletes the cover - no need on keeping it there! - del /obj/machinery/porta_turret/proc/create_cover() if(cover == null && anchored) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 3cc7919424b..03ac7ba2460 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -40,7 +40,7 @@ var/const/SAFETY_COOLDOWN = 100 ..() return add_fingerprint(user) - + /obj/machinery/recycler/emag_act(user as mob) if(!emagged) emagged = 1 @@ -93,7 +93,7 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) I.loc = src.loc if(!istype(I, /obj/item/weapon/disk/nuclear) && !istype(I,/obj/item/flag/nation)) - del(I) + qdel(I) if(prob(15)) new /obj/item/stack/sheet/metal(loc) if(prob(10)) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 4465fdccf81..86e6dd5e700 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -26,7 +26,7 @@ count++ if (O:amount < 1) - del(O) + qdel(O) user << "You insert [count] metal sheet\s into the fabricator." src.overlays -= "fab-load-metal" diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 6934ee0ac6c..913464b8295 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -31,7 +31,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob else user << "[O] doesn't seem to have any usable seeds inside it." - del(O) + qdel(O) //Grass. else if(istype(O, /obj/item/stack/tile/grass)) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index cb0c9707b32..4cce116c3bc 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -47,7 +47,7 @@ if (src.health <= 0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return opacity = 1 @@ -60,7 +60,7 @@ ..() if(health <=0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return opacity = 1 spawn(20) if(src) opacity = 0 @@ -81,13 +81,13 @@ /obj/machinery/shield/emp_act(severity) switch(severity) if(1) - del(src) + qdel(src) if(2) if(prob(50)) - del(src) + qdel(src) /obj/machinery/shield/blob_act() - del(src) + qdel(src) /obj/machinery/shield/hitby(AM as mob|obj) @@ -107,7 +107,7 @@ //Handle the destruction of the shield if (src.health <= 0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return //The shield becomes dense to absorb the blow.. purely asthetic. @@ -162,12 +162,12 @@ update_icon() for(var/obj/machinery/shield/shield_tile in deployed_shields) - del(shield_tile) + qdel(shield_tile) /obj/machinery/shieldgen/process() if(malfunction && active) if(deployed_shields.len && prob(5)) - del(pick(deployed_shields)) + qdel(pick(deployed_shields)) return @@ -175,7 +175,7 @@ if(health <= 30) src.malfunction = 1 if(health <= 0) - del(src) + qdel(src) update_icon() return @@ -491,7 +491,7 @@ T2 = T if(locate(/obj/machinery/shieldwall) in T) F = (locate(/obj/machinery/shieldwall) in T) - del(F) + qdel(F) if(locate(/obj/machinery/shieldwallgen) in T) G = (locate(/obj/machinery/shieldwallgen) in T) @@ -544,11 +544,11 @@ /obj/machinery/shieldwall/process() if(needs_power) if(isnull(gen_primary)||isnull(gen_secondary)) - del(src) + qdel(src) return if(!(gen_primary.active)||!(gen_secondary.active)) - del(src) + qdel(src) return // if(prob(50)) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index a4a785baa00..efbef9c5670 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -508,7 +508,7 @@ //for(var/obj/O in src) // O.loc = src.loc src.add_fingerprint(user) - del(G) + qdel(G) src.updateUsrDialog() src.update_icon() return @@ -663,7 +663,7 @@ src.occupant = M src.add_fingerprint(user) - del(G) + qdel(G) src.updateUsrDialog() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 1cb98f35541..05173045a96 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -222,7 +222,7 @@ holder.loc.visible_message("\icon[holder] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") reset() else - del(src) + qdel(src) /obj/item/weapon/bombcore/training/defuse() var/obj/machinery/syndicatebomb/holder = src.loc @@ -241,8 +241,8 @@ /obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players var/obj/machinery/syndicatebomb/B = src.loc - del(B) - del(src) + qdel(B) + qdel(src) /obj/item/weapon/bombcore/badmin/summon/ var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie @@ -256,8 +256,8 @@ if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(X, pick(NORTH,SOUTH,EAST,WEST)) - del(B) - del(src) + qdel(B) + qdel(src) /obj/item/weapon/bombcore/badmin/summon/clown summon_path = /mob/living/simple_animal/hostile/retaliate/clown diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 04a8d95e4cd..dc721495245 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -194,7 +194,7 @@ temp = "- DELETED ENTRY: [D.name] -" SelectedServer.log_entries.Remove(D) - del(D) + qdel(D) else temp = "- FAILED: NO SELECTED MACHINE -" @@ -232,7 +232,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -243,7 +243,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 1fbfdb1c1fe..fd6f2fe97eb 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -67,7 +67,7 @@ A.amount -= 5 if(A.amount <= 0) user.drop_item() - del(A) + qdel(A) construct_op -- stat &= ~BROKEN // the machine's not borked anymore! if(istype(P, /obj/item/weapon/crowbar)) @@ -103,7 +103,7 @@ // Create a machine frame and delete the current machine var/obj/machinery/constructable_frame/machine_frame/F = new F.loc = src.loc - del(src) + qdel(src) /obj/machinery/telecomms/proc/formatInput(var/label,var/varname, var/input) var/value = vars[varname] diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 79be894bf42..3657410b400 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -103,7 +103,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() copy.data["original"] = signal.data["original"] else - del(copy) + qdel(copy) send_count++ diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 91b258abd23..cdade74f121 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -141,7 +141,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -152,7 +152,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index b46cefa9e80..be8b0b5c57f 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -220,7 +220,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -231,7 +231,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/turntable.dm b/code/game/machinery/turntable.dm index 2fe0c313a6a..12e946a8110 100644 --- a/code/game/machinery/turntable.dm +++ b/code/game/machinery/turntable.dm @@ -188,7 +188,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -203,7 +203,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -218,7 +218,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -235,7 +235,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -250,7 +250,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -265,7 +265,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -277,4 +277,4 @@ /obj/machinery/party/lasermachine/proc/turnoff() var/area/A = src.loc.loc for(var/obj/effects/laser/F in A) - del(F) + qdel(F) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 18f41d604a7..c644c4c5a85 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -284,7 +284,7 @@ src.health -= Proj.damage ..() if(prob(45) && Proj.damage > 0) src.spark_system.start() - del(Proj) + qdel(Proj) if (src.health <= 0) src.die() return @@ -317,7 +317,7 @@ src.stat |= BROKEN src.icon_state = "destroyed_target_prism" if (cover!=null) - del(cover) + qdel(cover) sleep(3) flick("explosion", src) spawn(13) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index cefb8a194b4..98ef44fdfc6 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -22,7 +22,7 @@ if(!name) var/atom/tmp = new path src.product_name = initial(tmp.name) - del(tmp) + qdel(tmp) else src.product_name = name @@ -176,7 +176,7 @@ if(prob(75)) malfunction() else - del(src) + qdel(src) /obj/machinery/vending/proc/refill_inventory(obj/item/weapon/vending_refill/refill, datum/data/vending_product/machine, mob/user) var/total = 0 @@ -306,7 +306,7 @@ visible_message("[usr] inserts a credit chip into [src].") var/left = cashmoney.worth - currently_vending.price usr.unEquip(cashmoney) - del(cashmoney) + qdel(cashmoney) if(left) dispense_cash(left, src.loc, user) @@ -560,10 +560,10 @@ user << "\blue You successfully pull the coin out before the [src] could swallow it." else user << "\blue You weren't able to pull the coin out fast enough, the machine ate it, string and all." - del(coin) + qdel(coin) categories &= ~CAT_COIN else - del(coin) + qdel(coin) categories &= ~CAT_COIN R.amount-- diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 02597fed7d7..724643ed751 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -48,7 +48,7 @@ for(var/obj/item/stack/sheet/hairlesshide/HH in contents) var/obj/item/stack/sheet/wetleather/WL = new(src) WL.amount = HH.amount - del(HH) + qdel(HH) if(crayon) @@ -81,10 +81,10 @@ new_jumpsuit_icon_state = J.icon_state new_jumpsuit_item_state = J.item_state new_jumpsuit_name = J.name - del(J) + qdel(J) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(J) + qdel(J) for(var/T in typesof(/obj/item/clothing/gloves/color)) var/obj/item/clothing/gloves/color/G = new T //world << "DEBUG: [color] == [J.color]" @@ -92,40 +92,40 @@ new_glove_icon_state = G.icon_state new_glove_item_state = G.item_state new_glove_name = G.name - del(G) + qdel(G) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(G) + qdel(G) for(var/T in typesof(/obj/item/clothing/shoes)) var/obj/item/clothing/shoes/S = new T //world << "DEBUG: [color] == [J.color]" if(_color == S._color) new_shoe_icon_state = S.icon_state new_shoe_name = S.name - del(S) + qdel(S) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(S) + qdel(S) for(var/T in typesof(/obj/item/weapon/bedsheet)) var/obj/item/weapon/bedsheet/B = new T //world << "DEBUG: [color] == [J.color]" if(_color == B._color) new_sheet_icon_state = B.icon_state new_sheet_name = B.name - del(B) + qdel(B) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(B) + qdel(B) for(var/T in typesof(/obj/item/clothing/head/soft)) var/obj/item/clothing/head/soft/H = new T //world << "DEBUG: [color] == [J.color]" if(_color == H._color) new_softcap_icon_state = H.icon_state new_softcap_name = H.name - del(H) + qdel(H) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(H) + qdel(H) if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name) for(var/obj/item/clothing/under/J in contents) //world << "DEBUG: YUP! FOUND IT!" @@ -168,7 +168,7 @@ H._color = _color H.name = new_softcap_name H.desc = new_desc - del(crayon) + qdel(crayon) crayon = null @@ -211,7 +211,7 @@ var/obj/item/weapon/grab/G = W if(ishuman(G.assailant) && iscorgi(G.affecting)) G.affecting.loc = src - del(G) + qdel(G) state = 3 else ..() diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 8ae16a4e054..d5820f7d661 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -79,7 +79,7 @@ if(equipment.len)//Now to remove it and equip anew. for(ME in equipment) equipment -= ME - del(ME) + qdel(ME) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index dd13db06290..4e35a0b1e72 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -323,7 +323,7 @@ if(do_after_cooldown(target)) if(disabled) return chassis.spark_system.start() - del(target) + qdel(target) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) chassis.use_power(energy_drain) if(1) @@ -446,7 +446,7 @@ do_after_cooldown() src = null spawn(rand(150,300)) - del(P) + qdel(P) return /obj/item/mecha_parts/mecha_equipment/gravcatapult diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index a9ef99f5676..f76c7ee63db 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -100,7 +100,7 @@ M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") if(life <= 0) - del(src) + qdel(src) return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index f40127bf46b..27fe49e746d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -883,7 +883,7 @@ src.reset_icon() user.drop_item() - del(P) + qdel(P) else call((proc_res["dynattackby"]||src), "dynattackby")(W,user) @@ -1840,7 +1840,7 @@ if(t_air) t_air.merge(removed) else //just delete the cabin gas, we're in space or some shit - del(removed) + qdel(removed) else return stop() return @@ -1883,7 +1883,7 @@ if(mecha.loc && hascall(mecha.loc,"assume_air")) mecha.loc.assume_air(leaked_gas) else - del(leaked_gas) + qdel(leaked_gas) if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) if(mecha.get_charge()) mecha.spark_system.start() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 223f6d4aa24..dafe37eb50b 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -91,7 +91,7 @@ const_holder.icon_state = "ripley0" const_holder.density = 1 const_holder.overlays.len = 0 - del(src) + qdel(src) return @@ -300,7 +300,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "gygax0" const_holder.density = 1 - del(src) + qdel(src) return @@ -579,7 +579,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "fireripley0" const_holder.density = 1 - del(src) + qdel(src) return @@ -801,7 +801,7 @@ var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/mecha/honker(const_holder) const_holder.density = 1 - del(src) + qdel(src) return diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 1b37a6ce3d1..036872780b2 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -108,7 +108,7 @@ var/obj/mecha/M = in_mecha() if(M) M.emp_act(2) - del(src) + qdel(src) proc/get_mecha_log() if(!src.in_mecha()) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index c2945ca8b9b..859834960ff 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -32,7 +32,7 @@ var/global/list/image/splatter_cache=list() if(B != src) if (B.blood_DNA) blood_DNA |= B.blood_DNA.Copy() - del(B) + qdel(B) spawn(DRYING_TIME * (amount+1)) dry() diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 0af6865e0f8..7790be53bed 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -681,7 +681,7 @@ steam.start() -- spawns the effect /obj/effect/effect/mustard_gas/New() ..() spawn (100) - del(src) + qdel(src) return /obj/effect/effect/mustard_gas/Move() @@ -748,7 +748,7 @@ steam.start() -- spawns the effect sleep(10) step(smoke,direction) spawn(100) - del(smoke) + qdel(smoke) src.total_smoke-- @@ -1234,7 +1234,7 @@ steam.start() -- spawns the effect if (istype(T, /turf)) T.hotspot_expose(3000,100) spawn (100) - del(src) + qdel(src) return /obj/effects/sparkels/Destroy() @@ -1290,5 +1290,5 @@ steam.start() -- spawns the effect sleep(5) step(sparks,direction) spawn(20) - del(sparks) + qdel(sparks) src.total_sparks-- diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 2fdad42d3c7..ea03fea46bc 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -163,4 +163,4 @@ /obj/effect/glowshroom/proc/CheckEndurance() if(endurance <= 0) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index bee6174f123..ec45c7a0894 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -17,5 +17,5 @@ P.info = dat P.name = "paper- 'Crew Manifest'" //SN src = null - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index dbb891ca337..b5ea74ec8e9 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -33,7 +33,7 @@ randmutb(obj) domutcheck(obj,null) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerstun(obj) if(ismob(obj)) @@ -43,30 +43,30 @@ s.set_up(3, 1, src) s.start() spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggern2o(obj) atmos_spawn_air(SPAWN_N2O, 360) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerplasma(obj) atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 360) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerkick(obj) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - del(obj:client) + qdel(obj:client) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/explode(obj) explosion(loc, 0, 1, 2, 3) spawn(0) - del(src) + qdel(src) /obj/effect/mine/dnascramble name = "Radiation Mine" diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 9440163b460..7dcfbe425cc 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -44,7 +44,7 @@ if (icon_state == "portal1") return if (!( target )) - del(src) + qdel(src) return if (istype(M, /atom/movable)) if(prob(failchance)) //oh dear a problem, put em in deep space diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c8056e3d9d5..4f52fe3dd86 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -77,7 +77,7 @@ return /obj/item/blob_act() - del(src) + qdel(src) //user: The mob that is suiciding //damagetype: The type of damage the item will inflict on the user diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index bf554463a42..d064bee3e4f 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -31,7 +31,7 @@ processing_objects.Remove(cig) var/obj/item/butt = new cig.type_butt(src) cig.transfer_fingerprints_to(butt) - del(cig) + qdel(cig) else if (cig.lit == 0) user << "You place [cig] in [src] without even smoking it. Why would you do that?" diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 8eaf699205d..749a4475af1 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -79,7 +79,7 @@ visible_message("[usr] folds up the [src.name]") new item_path(get_turf(src)) spawn(0) - del(src) + qdel(src) return /obj/structure/closet/bodybag/update_icon() @@ -98,7 +98,7 @@ attack_self(mob/user) var/obj/structure/closet/body_bag/cryobag/R = new /obj/structure/closet/body_bag/cryobag(user.loc) R.add_fingerprint(user) - del(src) + qdel(src) @@ -119,7 +119,7 @@ O.icon = src.icon O.icon_state = "bodybag_used" O.desc = "Pretty useless now.." - del(src) + qdel(src) MouseDrop(over_object, src_location, over_location) if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index c1be809fe5f..9a46a843a56 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -63,7 +63,7 @@ if(istype(src.loc, /mob)) var/mob/M = src.loc M.unEquip(src, 1) //src is being deleted anyway - del(src) + qdel(src) update_icon() if(istype(loc, /turf)) //start a fire if possible var/turf/T = loc diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 667c37c882f..ac5afb75b07 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1072,7 +1072,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if ( !(C:blood_DNA) ) user << "\blue No blood found on [C]" if(C:blood_DNA) - del(C:blood_DNA) + qdel(C:blood_DNA) else user << "\blue Blood found on [C]. Analysing..." spawn(15) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index b2107561a60..ff16cf9e43c 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -132,7 +132,7 @@ /obj/item/device/aicard/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(2.0) if(prob(50)) qdel(src) if(3.0) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index bb94f55b571..087f1fa209b 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -82,7 +82,7 @@ G.amount = remaining if(!G.amount) user.drop_item() - del(G) + qdel(G) AddUses(increment) user << "You insert a piece of glass into the [src.name]. You have [uses] lights remaining." return @@ -94,7 +94,7 @@ AddUses(1) user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining." user.drop_item() - del(L) + qdel(L) return else user << "You need a working light." @@ -167,7 +167,7 @@ target.brightness_color = L2.brightness_color target.on = target.has_power() target.update() - del(L2) + qdel(L2) if(target.on && target.rigged) target.explode() diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index 61c83fdc462..a0359e62362 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -24,7 +24,7 @@ if(!parts) user << "This kit has no parts for this modification left." user.unEquip(src) - del(src) + qdel(src) return var/allowed = 0 @@ -60,7 +60,7 @@ if(!parts) user.unEquip(src) - del(src) + qdel(src) /obj/item/device/modkit/examine() ..() diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 146be0a57ed..f370cf3dd01 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -38,7 +38,7 @@ /obj/item/device/radio/beacon/bacon //Probably a better way of doing this, I'm lazy. proc/digest_delay() spawn(600) - del(src) + qdel(src) // SINGULO BEACON SPAWNER @@ -54,7 +54,7 @@ user << "\blue Locked In" new /obj/machinery/power/singularity_beacon/syndicate( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return /obj/item/device/radio/beacon/syndicate/bomb @@ -67,7 +67,7 @@ user << "\blue Locked In" new /obj/machinery/syndicatebomb( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return @@ -84,5 +84,5 @@ user << "\blue Locked In" new /obj/machinery/telepad_cargo(user.loc) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index ec45cb5e814..7aafc777268 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -191,7 +191,7 @@ 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", 4, 0, zlevel, connection.frequency, follow_target=follow_target) - del(A) + qdel(A) return // Interprets the message mode when talking into a radio, possibly returning a connection datum diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 5ee645ff75b..d3d58525acd 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -22,17 +22,17 @@ if(istype(src.loc,/turf)) new /obj/effect/decal/cleanable/ash(src.loc) new /obj/item/stack/rods(src.loc) - del(src) + qdel(src) return if(istype(src.loc,/mob/living/carbon)) var/mob/living/carbon/C = src.loc var/turf/location = get_turf(C) new /obj/effect/decal/cleanable/ash(location) new /obj/item/stack/rods(location) - del(src) + qdel(src) return else - del(src) + qdel(src) return /obj/item/flag/attackby(obj/item/weapon/W as obj, mob/user as mob, params) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 95430e24238..3420dd3acbd 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -198,10 +198,10 @@ var/list/tape_roll_applications = list() for (var/obj/item/tape/P in cur) if(P.icon_state == icon_dir) N = 0 - del(P) + qdel(P) cur = get_step(cur,dir[i]) - del(src) + qdel(src) return diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index aec027bc1b8..fd8963f9b02 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -131,7 +131,7 @@ if (user.get_inactive_hand()==src) user.unEquip(src) user.put_in_inactive_hand(B) - del(src) + qdel(src) if(istype(W, /obj/item/robot_parts/l_leg)) if(src.l_leg) return user.drop_item() @@ -254,7 +254,7 @@ callHook("borgify", list(O)) O.Namepick() - del(src) + qdel(src) else user << "\blue The MMI must go in after everything else!" @@ -314,8 +314,8 @@ user << "\blue You install some manipulators and modify the head, creating a functional spider-bot!" new /mob/living/simple_animal/spiderbot(get_turf(loc)) user.drop_item() - del(W) - del(src) + qdel(W) + qdel(src) return return diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 41520fabb93..f871087dd6f 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -30,7 +30,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" - del(R.module) + qdel(R.module) R.module = null R.camera.network.Remove(list("Engineering","Medical","Mining Outpost")) R.updatename("Default") diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 5b131c93fb7..7bc0e7c052c 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -97,7 +97,7 @@ for(var/mob/O in oviewers()) if ((O.client && !( O.blinded ))) O << "\red [src] breaks into tiny pieces and collapses!" - del(src) + qdel(src) // Create a temporary object to represent the damage var/obj/bmark = new diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 937ef75df2f..b6bc04227a7 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -63,7 +63,7 @@ if(O.reagents.has_reagent("facid", 1)) user << "The acid chews through the balloon!" O.reagents.reaction(user) - del(src) + qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." user << "\blue You fill the balloon with the contents of [O]." @@ -80,7 +80,7 @@ src.icon_state = "burst" spawn(5) if(src) - del(src) + qdel(src) return /obj/item/toy/balloon/update_icon() @@ -223,7 +223,7 @@ if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 4) user.drop_item() - del(I) + qdel(I) bullets++ user << "\blue You load the foam dart into the crossbow." else @@ -254,21 +254,21 @@ if(M == user) continue D.visible_message("[M] was hit by the foam dart!") new /obj/item/toy/ammo/crossbow(M.loc) - del(D) + qdel(D) return for(var/atom/A in D.loc) if(A == user) continue if(A.density) new /obj/item/toy/ammo/crossbow(A.loc) - del(D) + qdel(D) sleep(1) spawn(10) if(D) new /obj/item/toy/ammo/crossbow(D.loc) - del(D) + qdel(D) return else if (bullets == 0) @@ -332,7 +332,7 @@ if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 19) user.drop_item() - del(I) + qdel(I) bullets++ user << "You load the foam dart into the tommy gun." else @@ -389,8 +389,8 @@ new /obj/item/weapon/twohanded/dualsaber/toy(user.loc) user.unEquip(W) user.unEquip(src) - del(W) - del(src) + qdel(W) + qdel(src) /* * Subtype of Double-Bladed Energy Swords @@ -457,7 +457,7 @@ playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) @@ -481,7 +481,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /obj/item/toy/snappop/Crossed(H as mob|obj) if((ishuman(H))) //i guess carp and shit shouldn't set them off @@ -495,7 +495,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) @@ -691,7 +691,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use return src.cards += C.cardname user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -711,7 +711,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, return src.cards += C.currenthand user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -803,7 +803,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list) cardUser.put_in_any_hand_if_possible(N) cardUser << "You also take [currenthand[1]] and hold it." cardUser << browse(null, "window=cardhand") - del(src) + qdel(src) return obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) @@ -819,7 +819,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living src.icon_state = "[deckstyle]_hand4" else if(currenthand.len > 2) src.icon_state = "[deckstyle]_hand3" - del(C) + qdel(C) else user << "You can't mix cards from other decks." @@ -890,8 +890,8 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) H.pickup(user) user.put_in_active_hand(H) user << "You combine the [C.cardname] and the [src.cardname] into a hand." - del(C) - del(src) + qdel(C) + qdel(src) else user << "You can't mix cards from other decks." @@ -908,7 +908,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) H.icon_state = "[deckstyle]_hand4" else if(H.currenthand.len > 2) H.icon_state = "[deckstyle]_hand3" - del(src) + qdel(src) else user << "You can't mix cards from other decks." @@ -1068,7 +1068,7 @@ obj/item/toy/cards/deck/syndicate/black for(var/mob/M in range(10, src)) if(!M.stat && !istype(M, /mob/living/silicon/ai))\ shake_camera(M, 3, 1) - del(src) + qdel(src) /* * Carp plushie diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 1d83bf272c6..5180ae09658 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -369,7 +369,7 @@ AI MODULES if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt. warning("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt.") - del(src) + qdel(src) /****************** T.Y.R.A.N.T. *****************/ diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index f6c7e99a05c..24788c42a0e 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -46,7 +46,7 @@ RCD return matter += R.ammoamt user.drop_item() - del(W) + qdel(W) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user << "The RCD now holds [matter]/[max_matter] matter-units." desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 055b28ede27..1d43d93fae9 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -25,7 +25,7 @@ RSF if ((matter + 10) > 30) user << "The RSF cant hold any more matter." return - del(W) + qdel(W) matter += 10 playsound(src.loc, 'sound/machines/click.ogg', 10, 1) user << "The RSF now holds [matter]/30 fabrication-units." diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index b3cbbcd7421..02f1e5d9cee 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -18,7 +18,7 @@ /obj/item/weapon/chrono_eraser/dropped() if(PA) - del(PA) + qdel(PA) /obj/item/weapon/chrono_eraser/Destroy() dropped() @@ -28,7 +28,7 @@ var/mob/living/carbon/user = src.loc if(iscarbon(user) && (user.back == src)) if(PA) - del(PA) + qdel(PA) else PA = new(src) user.put_in_hands(PA) @@ -58,10 +58,10 @@ TED = T else //admin must have spawned it TED = new(src.loc) - del(src) + qdel(src) /obj/item/weapon/gun/energy/chrono_gun/dropped() - del(src) + qdel(src) /obj/item/weapon/gun/energy/chrono_gun/update_icon() return @@ -193,7 +193,7 @@ if(tickstokill > initial(tickstokill)) for(var/atom/movable/AM in contents) AM.loc = loc - del(src) + qdel(src) else if(tickstokill <= 0) captured << "As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy..." var/mob/dead/observer/ghost = captured.ghostize(1) @@ -202,8 +202,8 @@ ghost.mind = null if(gun) gun.pass_mind(captured.mind) - del(captured) - del(src) + qdel(captured) + qdel(src) else captured.Paralyse(4) if(captured.reagents) @@ -222,7 +222,7 @@ else tickstokill++ else - del(src) + qdel(src) /obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P) if(istype(P, /obj/item/projectile/energy/chrono_beam)) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 8724d2663ee..df5a6af8cf3 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -102,7 +102,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently var/datum/effect/effect/system/reagents_explosion/e = new() @@ -111,7 +111,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return flags &= ~NOREACT // allowing reagents to react after being lit reagents.handle_reactions() @@ -174,7 +174,7 @@ LIGHTERS ARE IN LIGHTERS.DM M << "Your [name] goes out." M.unEquip(src, 1) //Force the un-equip so the overlays update processing_objects.Remove(src) - del(src) + qdel(src) /obj/item/clothing/mask/cigarette/joint @@ -383,7 +383,7 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user) var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper() user.put_in_inactive_hand(P) user << "You take the last paper out of the pack, and throw the pack away." - del(src) + qdel(src) /obj/item/weapon/rollingpaperpack/MouseDrop(atom/over_object) var/mob/M = usr diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 50fe4d8ad3d..413f93f02f9 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -63,13 +63,13 @@ user.visible_message("[user] begins to scrub \the [target.name] out with [src].") if(do_after(user, src.cleanspeed) && target) user << "You scrub \the [target.name] out." - del(target) + qdel(target) else user.visible_message("[user] begins to clean \the [target.name] with [src].") if(do_after(user, src.cleanspeed)) user << "You clean \the [target.name]." var/obj/effect/decal/cleanable/C = locate() in target - del(C) + qdel(C) target.clean_blood() return diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 7c92cdc2249..9fadc35d668 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -91,7 +91,7 @@ spawn(0)//this prevents the collapse of space-time continuum if (user) user.unEquip(src) - del(src) + qdel(src) return uses /obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob) diff --git a/code/game/objects/items/weapons/fireworks.dm b/code/game/objects/items/weapons/fireworks.dm index 9a90c3ae205..dbd765b0fdd 100644 --- a/code/game/objects/items/weapons/fireworks.dm +++ b/code/game/objects/items/weapons/fireworks.dm @@ -18,7 +18,7 @@ obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params) if(ismob(src.loc) || isobj(src.loc)) S.attach(src.loc) S.start() - del(src) + qdel(src) obj/item/weapon/sparkler name = "sparkler" @@ -42,7 +42,7 @@ obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params) S.attach(src.loc) S.start() sleep(10) - del(src) + qdel(src) /obj/crate/fireworks name = "Fireworks!" /obj/crate/fireworks/New() diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index c972821fcb0..db3d8a38092 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -31,7 +31,7 @@ src.gift.add_fingerprint(user) else user << "\blue The gift was empty!" - del(src) + qdel(src) return /obj/item/weapon/a_gift/ex_act() @@ -58,7 +58,7 @@ M.client.eye = M.client.mob M.client.perspective = MOB_PERSPECTIVE - del(src) + qdel(src) /obj/item/weapon/a_gift/attack_self(mob/M as mob) var/gift_type = pick(/obj/item/weapon/sord, @@ -112,7 +112,7 @@ M.unEquip(src, 1) M.put_in_hands(I) I.add_fingerprint(M) - del(src) + qdel(src) return /* diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index dae50bb302a..3948431179b 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -409,7 +409,7 @@ new /obj/item/weapon/grenade/clusterbuster/segment(src.loc,payload,name)//Creates a 'segment' that launches more payloads playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) spawn(0) - del(src) + qdel(src) return /obj/item/weapon/grenade/clusterbuster/segment @@ -440,7 +440,7 @@ new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload) spawn(0) playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) return /obj/item/weapon/grenade/clusterbuster/node/New(var/turf/newloc,var/T,var/N) diff --git a/code/game/objects/items/weapons/grenades/bananade.dm b/code/game/objects/items/weapons/grenades/bananade.dm index c3fd3acf87f..cdaa19066f2 100644 --- a/code/game/objects/items/weapons/grenades/bananade.dm +++ b/code/game/objects/items/weapons/grenades/bananade.dm @@ -29,7 +29,7 @@ var/turf/T - del(src) + qdel(src) return /obj/item/weapon/grenade/bananade/casing @@ -44,7 +44,7 @@ var/turf/T if(fillamt < 9) usr << "You add another banana peel to the assembly." fillamt += 1 - del(I) + qdel(I) else usr << "The bananade is full, screwdriver it shut to lock it down." if(istype(I, /obj/item/weapon/screwdriver)) @@ -54,7 +54,7 @@ var/turf/T user.put_in_hands(G) G.deliveryamt = src.fillamt user << "You lock the assembly shut, readying it for HONK." - del(src) + qdel(src) else usr << "You need to add banana peels before you can ready the grenade!." else diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9adf9cf5d4b..9f0297ba79c 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -285,7 +285,7 @@ spawn(15) //Making sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. /obj/item/weapon/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey) if(ispath(typekey,/obj/item/device/assembly)) @@ -364,7 +364,7 @@ invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? spawn(50) //To make sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. //I tried to just put it in the allowed_containers list but diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index 9d0cc3fca2c..f2d438df310 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -40,7 +40,7 @@ else step(peel,direction) new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc)) - del(src) + qdel(src) return /* proc/banana(turf/T as turf) diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 8e66d4b70de..d4d90b3f094 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -8,6 +8,6 @@ prime() ..() if(empulse(src, 4, 10)) - del(src) + qdel(src) return diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 91479c961a7..fbe12bd5342 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -18,7 +18,7 @@ var/damage = round(30/(get_dist(B,get_turf(src))+1)) B.health -= damage B.update_icon() - del(src) + qdel(src) /obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M) M.show_message("BANG", 2) @@ -96,7 +96,7 @@ playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) ////////////////////// @@ -126,7 +126,7 @@ playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) //////////////////////////////// //Clusterbang spawned flashbang diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index bc07fb389b9..bdbfd1fd4ea 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -10,8 +10,8 @@ user.put_in_hands(W) user << "You stuff the [I] in the [src], emptying the contents beforehand." W.underlays += image(src.icon, icon_state = src.icon_state) - del(I) - del(src) + qdel(I) + qdel(src) /obj/item/weapon/grenade/iedcasing diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 95a5fbbd387..fc216a1e455 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -31,5 +31,5 @@ B.health -= damage B.update_icon() sleep(80) - del(src) + qdel(src) return diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 7929896ddcd..224624549c7 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -30,7 +30,7 @@ // Spawn some hostile syndicate critters - del(src) + qdel(src) return /obj/item/weapon/grenade/spawnergrenade/manhacks diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 4dec738bb56..6a80270c946 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -153,7 +153,7 @@ Implant Specifics:
"} msg = sanitize_simple(msg, replacechars) if(findtext(msg,phrase)) activate() - del(src) + qdel(src) activate() if (malfunction == MALFUNCTION_PERMANENT) @@ -177,11 +177,11 @@ Implant Specifics:
"} istype(part,/obj/item/organ/external/head)) part.createwound(BRUISE, 60) //mangle them instead explosion(get_turf(imp_in), -1, -1, 2, 3) - del(src) + qdel(src) else explosion(get_turf(imp_in), -1, -1, 2, 3) part.droplimb() - del(src) + qdel(src) if (elevel == "Destroy Body") explosion(get_turf(T), -1, 0, 1, 6) T.gib() @@ -247,7 +247,7 @@ Implant Specifics:
"} else part.droplimb() explosion(get_turf(imp_in), -1, -1, 2, 3) - del(src) + qdel(src) /obj/item/weapon/implant/chem name = "chem" @@ -294,7 +294,7 @@ the implant may become unstable and either pre-maturely inject the subject or si if(!src.reagents.total_volume) R << "You hear a faint click from your chest." spawn(0) - del(src) + qdel(src) return emp_act(severity) @@ -484,17 +484,17 @@ the implant may become unstable and either pre-maturely inject the subject or si a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm") else a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm") - del(a) + qdel(a) processing_objects.Remove(src) if ("emp") var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) var/name = prob(50) ? t.name : pick(teleportlocs) a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm") - del(a) + qdel(a) else var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") - del(a) + qdel(a) processing_objects.Remove(src) emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index d03f499a26c..dc9f95ad322 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -84,7 +84,7 @@ return var/mob/M = G:affecting if(put_mob(M)) - del(G) + qdel(G) src.updateUsrDialog() return diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 5581eaf3bd5..acbe349fc8e 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -24,7 +24,7 @@ A.clean_blood() for(var/obj/effect/O in A) if(istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay) || istype(O,/obj/effect/rune)) - del(O) + qdel(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 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index b06ea04e671..4a57227afa0 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -40,12 +40,12 @@ if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) investigate_log("has become a singularity. Caused by [user.key]","singulo") user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!" - del(W) + qdel(W) var/obj/singularity/singulo = new /obj/singularity (get_turf(src)) singulo.energy = 300 //should make it a bit bigger~ message_admins("[key_name_admin(user)] detonated a bag of holding") log_game("[key_name(user)] detonated a bag of holding") - del(src) + qdel(src) return ..() @@ -57,7 +57,7 @@ else user << "\red The Bluespace generator malfunctions!" for (var/obj/O in src.contents) //it broke, delete what was in it - del(O) + qdel(O) crit_fail = 1 icon_state = "brokenpack" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index df4c53b6224..b760ae038ad 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -361,7 +361,7 @@ else user << "\red The Bluespace generator malfunctions!" for (var/obj/O in src.contents) //it broke, delete what was in it - del(O) + qdel(O) crit_fail = 1 return 0 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 40782759603..6aa5340245d 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -190,7 +190,7 @@ New(obj/item/sample as obj) if(!istype(sample)) - del(src) + qdel(src) sample_object = sample number = 1 @@ -479,7 +479,7 @@ // Now make the cardboard user << "You fold [src] flat." new src.foldable(get_turf(src)) - del(src) + qdel(src) //BubbleWrap END //Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area). diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index a50dd50f6fb..0ec557bc163 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -18,7 +18,7 @@ ..() if (src.type == /obj/item/weapon/storage/toolbox) world << "BAD: [src] ([src.type]) spawned at [src.x] [src.y] [src.z]" - del(src) + qdel(src) /obj/item/weapon/storage/toolbox/emergency name = "emergency toolbox" diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 639b6770f9b..d0619606d57 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -73,8 +73,8 @@ if(src.hacked) // That's right, we'll only check the "original" esword. newSaber.hacked = 1 newSaber.blade_color = "rainbow" - del(W) - del(src) + qdel(W) + qdel(src) else if(istype(W, /obj/item/device/multitool)) if(hacked == 0) @@ -201,11 +201,11 @@ return /obj/item/weapon/melee/energy/blade/dropped() - del(src) + qdel(src) return /obj/item/weapon/melee/energy/blade/proc/toss() - del(src) + qdel(src) return /* diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 560d5c2e754..22a31ae1dc8 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -52,20 +52,20 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) //SN src = null - del(src) + qdel(src) if (istype(W, /obj/item/stack/rods)) if (W:amount >= 4) new /obj/item/weapon/table_parts/reinforced( user.loc ) user << "\blue You reinforce the [name]." W:use(4) - del(src) + qdel(src) else if (W:amount < 4) user << "\red You need at least four rods to do this." /obj/item/weapon/table_parts/attack_self(mob/user as mob) new /obj/structure/table( user.loc ) user.drop_item() - del(src) + qdel(src) return @@ -76,12 +76,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) new /obj/item/stack/rods( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob) new /obj/structure/table/reinforced( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -90,12 +90,12 @@ /obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/wood( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) new /obj/structure/table/woodentable( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -105,12 +105,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) new /obj/item/stack/sheet/metal( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/glass/attack_self(mob/user as mob) new /obj/structure/glasstable_frame( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -120,7 +120,7 @@ ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) - del(src) + qdel(src) return return @@ -128,5 +128,5 @@ var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) R.add_fingerprint(user) user.drop_item() - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 54d03fabd4c..14edc242cc2 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -65,7 +65,7 @@ if(allgases >= 0.005) return 1 - del(G) + qdel(G) return ui_action_click() diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index f493fa53726..5fb04ffbafb 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -71,12 +71,12 @@ if(prob(50)) var/turf/location = src.loc if (!( istype(location, /turf) )) - del(src) + qdel(src) if(src.air_contents) location.assume_air(air_contents) - del(src) + qdel(src) /obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index b996695dc81..2582a42c214 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -115,10 +115,10 @@ flags = ABSTRACT /obj/item/weapon/twohanded/offhand/unwield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/wield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/IsShield()//if the actual twohanded weapon is a shield, we count as a shield too! var/mob/user = loc diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 91e8d1259be..56a31ed5284 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -175,8 +175,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) user.put_in_hands(S) user << "You fasten the glass shard to the top of the rod with the cable." - del(I) - del(src) + qdel(I) + qdel(src) else if(istype(I, /obj/item/weapon/wirecutters)) var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod @@ -186,8 +186,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) user.put_in_hands(P) user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward." - del(I) - del(src) + qdel(I) + qdel(src) /obj/item/weapon/spear/kidan diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 88649ff62fa..97b9b42019e 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -5,7 +5,7 @@ /obj/structure/blob_act() if(prob(50)) - del(src) + qdel(src) /obj/structure/ex_act(severity) switch(severity) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index edc99071fb4..3bfd507483e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -157,7 +157,7 @@ if(health <= 0) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) return /obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob) @@ -166,14 +166,14 @@ visible_message("\red [user] destroys the [src]. ") for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) // this should probably use dump_contents() /obj/structure/closet/blob_act() if(prob(75)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) /obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/rcs) && !src.opened) @@ -254,7 +254,7 @@ new /obj/item/stack/sheet/metal(src.loc) for(var/mob/M in viewers(src)) M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) - del(src) + qdel(src) return if(isrobot(user)) return diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index e4249321488..6a5bf87680e 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -41,7 +41,7 @@ desc = "If it takes forever, I will wait for you..." if(health == 0) //meaning if the statue didn't find a valid target - del(src) + qdel(src) return processing_objects.Add(src) @@ -57,7 +57,7 @@ if (timer <= 0) dump_contents() processing_objects.Remove(src) - del(src) + qdel(src) /obj/structure/closet/statue/dump_contents() @@ -151,7 +151,7 @@ user.dust() dump_contents() visible_message("\red [src] shatters!. ") - del(src) + qdel(src) /obj/structure/statue diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 65581b09232..0fc9a950580 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -48,7 +48,7 @@ // teehee - Ah, tg coders... if ("delete") - del(src) + qdel(src) //If you want to re-add fire, just add "fire" = 15 to the pick list. /*if ("fire") diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 115f4a0b5d2..6549a0fc9f6 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -160,7 +160,7 @@ return user << "You rig [src]." user.drop_item() - del(W) + qdel(W) rigged = 1 return else if(istype(W, /obj/item/device/radio/electropack)) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 4c1a4c8ab88..df4457c5c37 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -43,7 +43,7 @@ user.visible_message("[user] pries \the [src] open.", \ "You pry open \the [src].", \ "You hear splitting wood.") - del(src) + qdel(src) else return attack_hand(user) diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 53cc69d98ae..a7175857ef9 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -17,7 +17,7 @@ /obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone) if(!P.nodamage) visible_message("[P] tears [src] down!") - del(src) + qdel(src) else ..(P, def_zone) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index b33bb093469..0e34ed14e68 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -19,7 +19,7 @@ if(istype(W, /obj/item/weapon/crowbar)) new /obj/machinery/constructable_frame/machine_frame(T) new /obj/item/stack/sheet/glass(T) - del(src) + qdel(src) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) return @@ -33,7 +33,7 @@ C.req_access = circuit.conf_access C.req_one_access = null playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/crowbar)) circuit.loc=T @@ -123,8 +123,8 @@ if (prob(75)) PoolOrNew(/obj/item/weapon/shard, loc) if(occupant) dump() - del(src) - + qdel(src) + /obj/structure/displaycase/proc/healthcheck() if (src.health <= 0) if (!( src.destroyed )) @@ -194,7 +194,7 @@ C.loc=T circuit=null new /obj/machinery/constructable_frame/machine_frame(T) - del(src) + qdel(src) if(user.a_intent == "harm") src.health -= W.force src.healthcheck() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index eff4159c867..8a6e9a2e3e3 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -290,7 +290,7 @@ obj/structure/door_assembly else door.name = "[istext(glass) ? "[glass] airlock" : base_name]" src.electronics.loc = door - del(src) + qdel(src) else ..() update_state() diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index fd0c12f00c0..03d0df1c669 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -29,7 +29,7 @@ part.loc = loc part.master = null part = null - del(src) + qdel(src) return return @@ -87,4 +87,3 @@ A.power_light = light A.updateicon() return - \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 8057ce7e922..585b1991a91 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -15,14 +15,14 @@ if(!src) return user << "\blue You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "\blue Now securing the girder" if(get_turf(user, 40)) user << "\blue You secured the girder!" new/obj/structure/girder( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) user << "\blue Now slicing apart the girder" @@ -30,12 +30,12 @@ if(!src) return user << "\blue You slice apart the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "\blue You drill through the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) @@ -52,7 +52,7 @@ if(!src) return user << "\blue You removed the support struts!" new/obj/structure/girder( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) @@ -61,7 +61,7 @@ if(!src) return user << "\blue You dislodged the girder!" new/obj/structure/girder/displaced( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/stack/sheet)) @@ -74,7 +74,7 @@ S.use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/structure/falsewall (src.loc) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -86,7 +86,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall) for(var/turf/simulated/wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return if(/obj/item/stack/sheet/plasteel) @@ -95,7 +95,7 @@ S.use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/structure/falsewall/reinforced (src.loc) - del(src) + qdel(src) else if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() @@ -108,7 +108,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return else if(S.amount < 1) return ..() @@ -118,7 +118,7 @@ S.use(1) user << "\blue Girders reinforced!" new/obj/structure/girder/reinforced( src.loc ) - del(src) + qdel(src) return if(S.sheettype) @@ -129,7 +129,7 @@ user << "\blue You create a false wall! Push on it to open or close the passage." var/F = text2path("/obj/structure/falsewall/[M]") new F (src.loc) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -141,7 +141,7 @@ Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) for(var/turf/simulated/wall/mineral/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return add_hiddenprint(usr) @@ -157,7 +157,7 @@ /obj/structure/girder/blob_act() if(prob(40)) - del(src) + qdel(src) /obj/structure/girder/bullet_act(var/obj/item/projectile/Proj) if(istype(Proj, /obj/item/projectile/beam)) @@ -165,7 +165,7 @@ ..() if(health <= 0) new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) if(istype(Proj ,/obj/item/projectile/beam/pulse)) src.ex_act(2) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index bbce5440dd8..14b51d03498 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -11,7 +11,7 @@ var/obj/structure/inflatable/R = new /obj/structure/inflatable(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) - del(src) + qdel(src) /obj/structure/inflatable name = "inflatable wall" @@ -48,7 +48,7 @@ ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) deflate(1) @@ -118,14 +118,14 @@ visible_message("[src] rapidly deflates!") var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) else //user << "\blue You slowly deflate the inflatable wall." visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/R = new /obj/item/inflatable(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) verb/hand_deflate() set name = "Deflate" @@ -149,7 +149,7 @@ var/obj/structure/inflatable/door/R = new /obj/structure/inflatable/door(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) - del(src) + qdel(src) /obj/structure/inflatable/door //Based on mineral door code name = "inflatable door" @@ -242,14 +242,14 @@ visible_message("[src] rapidly deflates!") var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) else //user << "\blue You slowly deflate the inflatable wall." visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) /obj/item/inflatable/torn diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index de2fef2875e..e865805991b 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -20,8 +20,8 @@ else if(spike(G.affecting)) visible_message("[user] has forced [G.affecting] onto the spike, killing them instantly!") - del(G.affecting) - del(G) + qdel(G.affecting) + qdel(G) else user << "They are too big for the spike, try something smaller!" diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b2172cce699..b12907a150f 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -60,7 +60,7 @@ if(WT.remove_fuel(0, user)) user << "\blue Slicing lattice joints ..." new /obj/item/stack/rods(src.loc) - del(src) + qdel(src) return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 37c18f020b1..69508a41940 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -243,7 +243,7 @@ if(!devastated) for(var/i = 1, i <= oreAmount, i++) new/obj/item/stack/sheet/wood(get_turf(src)) - del(src) + qdel(src) /obj/structure/mineral_door/resin mineralType = "resin" @@ -281,7 +281,7 @@ isSwitchingStates = 0 Dismantle(devastated = 0) - del(src) + qdel(src) CheckHardness() playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index ce743717f32..9b22f0e2dd5 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -81,7 +81,7 @@ A.loc = src playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) //src.connected = null - del(src.connected) + qdel(src.connected) else playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) src.connected = new /obj/structure/m_tray( src.loc ) @@ -97,7 +97,7 @@ src.connected.dir = src.dir else //src.connected = null - del(src.connected) + qdel(src.connected) src.add_fingerprint(user) update() return @@ -135,7 +135,7 @@ src.connected.icon_state = "morguet" else //src.connected = null - del(src.connected) + qdel(src.connected) return @@ -164,7 +164,7 @@ src.connected.update() add_fingerprint(user) //SN src = null - del(src) + qdel(src) return return @@ -253,7 +253,7 @@ A.loc = src playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) //src.connected = null - del(src.connected) + qdel(src.connected) else if (src.locked == 0) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) src.connected = new /obj/structure/c_tray( src.loc ) @@ -268,7 +268,7 @@ src.connected.icon_state = "cremat" else //src.connected = null - del(src.connected) + qdel(src.connected) src.add_fingerprint(user) update() @@ -303,7 +303,7 @@ src.connected.icon_state = "cremat" else //src.connected = null - del(src.connected) + qdel(src.connected) return /obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob) @@ -341,10 +341,10 @@ //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") M.death(1) M.ghostize() - del(M) + qdel(M) for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - del(O) + qdel(O) new /obj/effect/decal/cleanable/ash(src) sleep(30) @@ -379,7 +379,7 @@ src.connected.update() add_fingerprint(user) //SN src = null - del(src) + qdel(src) return return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 6a325830a7a..8eb555152f2 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -33,7 +33,7 @@ //var/icon/I = icon('icons/obj/decals.dmi', icon_state) //S.icon = I.Scale(24, 24) S.sign_state = icon_state - del(src) + qdel(src) else ..() /obj/item/sign @@ -62,7 +62,7 @@ S.desc = desc S.icon_state = sign_state user << "You fasten \the [S] with your [tool]." - del(src) + qdel(src) else ..() /obj/structure/sign/double/map diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index 6551676fea1..b7745c60374 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -80,5 +80,5 @@ /obj/structure/stool/bed/nest/proc/healthcheck() if(health <=0) density = 0 - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 58723261562..559a63d0d1a 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -42,7 +42,7 @@ /obj/structure/stool/bed/attack_animal(var/mob/living/simple_animal/M)//No more buckling hostile mobs to chairs to render them immobile forever if(M.environment_smash) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob) @@ -133,7 +133,7 @@ visible_message("[user] collapses \the [src.name].") new/obj/item/roller(get_turf(src)) spawn(0) - del(src) + qdel(src) return ..() @@ -147,7 +147,7 @@ /obj/item/roller/attack_self(mob/user) var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) - del(src) + qdel(src) /obj/item/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -181,7 +181,7 @@ user << "\blue You deploy the roller bed." var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) - del(held) + qdel(held) held = null @@ -223,5 +223,5 @@ visible_message("[usr] collapses \the [src.name]") new/obj/item/roller(get_turf(src)) spawn(0) - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 85e47ec0c40..44ac7b6497b 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -30,7 +30,7 @@ E.part = SK SK.loc = E SK.master = E - del(src) + qdel(src) /obj/structure/stool/bed/chair/attack_tk(mob/user as mob) if(buckled_mob) @@ -89,7 +89,7 @@ if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/wood(src.loc) - del(src) + qdel(src) else ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 69397b22d2b..abb20b8d367 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -24,13 +24,13 @@ /obj/structure/stool/blob_act() if(prob(75)) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) return /obj/structure/stool/MouseDrop(atom/over_object) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 6aba8357e12..0d44c405cb7 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -171,7 +171,7 @@ /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. if(mymist) - del(mymist) + qdel(mymist) if(on) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) @@ -190,7 +190,7 @@ mymist = new /obj/effect/mist(loc) spawn(250) if(src && !on) - del(mymist) + qdel(mymist) ismist = 0 /obj/machinery/shower/Crossed(atom/movable/O) @@ -300,7 +300,7 @@ loc.clean_blood() for(var/obj/effect/E in tile) if(istype(E,/obj/effect/rune) || istype(E,/obj/effect/decal/cleanable) || istype(E,/obj/effect/overlay)) - del(E) + qdel(E) /obj/machinery/shower/process() if(!on || !mobpresent) return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ac2efbe2866..f04ce3ab802 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -171,7 +171,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f if(istype(G.affecting,/mob/living)) var/mob/living/M = G.affecting var/state = G.state - del(W) //gotta delete it here because if window breaks, it won't get deleted + qdel(W) //gotta delete it here because if window breaks, it won't get deleted switch (state) if(1) M.visible_message("[user] slams [M] against \the [src]!") @@ -241,7 +241,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f density = 0 air_update_turf(1) update_nearby_icons() - del(src) + qdel(src) else if(W.damtype == BRUTE || W.damtype == BURN) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 407c58f2ae6..12bb8f07092 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -164,7 +164,7 @@ var/list/mechtoys = list( for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs)) var/datum/supply_packs/P = new typepath() if(P.name == "HEADER") - del(P) + qdel(P) continue supply_packs[P.name] = P diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 5a2fcbe719c..5d263e17005 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -344,7 +344,7 @@ var/list/wood_icons = list("wood","wood-broken") FF.update_icon() //so siding get updated properly if(!floor_tile) return - del(floor_tile) + qdel(floor_tile) icon_plating = "plating" set_light(0) floor_tile = null @@ -465,7 +465,7 @@ var/list/wood_icons = list("wood","wood-broken") var/obj/item/stack/tile/light/T = floor_tile if(T.state) user.drop_item(C) - del(C) + qdel(C) T.state = C //fixing it by bashing it with a light bulb, fun eh? update_icon() user << "\blue You replace the light bulb." diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 8771ce02bd4..3cb23d1e3e8 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -239,7 +239,7 @@ user << "The thermite starts melting through the wall." spawn(100) - if(O) del(O) + if(O) qdel(O) // F.sd_LumReset() //TODO: ~Carn return diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 93a7f289eb4..670ff0aa50e 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -135,7 +135,7 @@ if (O.amount > 1) O.amount-- else - del(O) + qdel(O) return if(2) @@ -281,7 +281,7 @@ if (MS.amount > 1) MS.amount-- else - del(MS) + qdel(MS) //APC else if(istype(W,/obj/item/mounted)) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index f69fc7d05a7..bef369ee672 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -65,7 +65,7 @@ user << "\blue You build a catwalk!" R.use(2) ChangeTurf(/turf/simulated/floor/plating/airless/catwalk) - del(L) + qdel(L) return user << "\blue Constructing support lattice ..." @@ -78,7 +78,7 @@ var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) if(L) var/obj/item/stack/tile/plasteel/S = C - del(L) + qdel(L) playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) S.build(src) S.use(1) @@ -154,7 +154,7 @@ if(src.x <= 1) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -179,7 +179,7 @@ A.loc.Entered(A) else if (src.x >= world.maxx) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -204,7 +204,7 @@ A.loc.Entered(A) else if (src.y <= 1) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return @@ -229,7 +229,7 @@ else if (src.y >= world.maxy) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index d5e46566fbb..077af478135 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -731,7 +731,7 @@ obj/spacepod/verb/toggleLights() if(t_air) t_air.merge(removed) else //just delete the cabin gas, we're in space or some shit - del(removed) + qdel(removed) else return stop() return diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm index aa55f33da0a..b758f11cea1 100644 --- a/code/game/verbs/atom_verbs.dm +++ b/code/game/verbs/atom_verbs.dm @@ -31,6 +31,6 @@ var/P = new /obj/effect/decal/point(tile) usr.changeNext_move(CLICK_CD_POINT) spawn (20) - if(P) del(P) + if(P) qdel(P) usr.visible_message("[usr] points to [this]") diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm index fa900c1634b..eaf5fdb8818 100644 --- a/code/modules/admin/buildmode.dm +++ b/code/modules/admin/buildmode.dm @@ -15,7 +15,7 @@ M.client.show_popup_menus = 1 for(var/obj/effect/bmode/buildholder/H) if(H.cl == M.client) - del(H) + qdel(H) else message_admins("[key_name(usr)] has entered build mode.") log_admin("[key_name(usr)] has entered build mode.") diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index fc6bfa4ed53..d2b3dada0e2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1574,7 +1574,7 @@ S.victim = M S.loc = M.loc spawn(20) - del(S) + qdel(S) var/turf/simulated/floor/T = get_turf(M) if(istype(T)) @@ -1706,7 +1706,7 @@ var/list/departmentoptions = alldepartments + "All Departments" destination = input(usr, "To which department?", "Choose a department", "") as null|anything in departmentoptions if(!destination) - del(P) + qdel(P) return for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) @@ -1716,7 +1716,7 @@ var/input = input(src.owner, "Please enter a message to send a fax via secure connection. Use
for line breaks. Both pencode and HTML work.", "Outgoing message from Centcomm", "") as message|null if(!input) - del(P) + qdel(P) return input = P.parsepencode(input) // Encode everything from pencode to html @@ -1753,7 +1753,7 @@ else if(stamptype == "none") stamptype = "" else - del(P) + qdel(P) return sendername = input(src.owner, "What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization") as text|null @@ -2031,21 +2031,21 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SC") for(var/obj/item/clothing/under/O in world) - del(O) + qdel(O) ok = 1 if("sec_all_clothes") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SAC") for(var/obj/item/clothing/O in world) - del(O) + qdel(O) ok = 1 if("sec_classic1") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SC1") for(var/obj/item/clothing/suit/fire/O in world) - del(O) + qdel(O) for(var/obj/structure/grille/O in world) - del(O) + qdel(O) /* for(var/obj/machinery/vehicle/pod/O in world) for(var/mob/M in src) M.loc = src.loc diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 58a59567944..d3256579191 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -29,7 +29,7 @@ // if(!istates.Find(O.item_state)) // text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.item_state]\" IN \"[O.icon]\"\n" //text+="\n" - del(O) + qdel(O) if(text) var/F = file("broken_hand_icons.txt") fdel(F) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c3f0bdb0b01..93dc0fba5b9 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -400,7 +400,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(hsbitem) for(var/atom/O in world) if(istype(O, hsbitem)) - del(O) + qdel(O) log_admin("[key_name(src)] has deleted all instances of [hsbitem].") message_admins("[key_name_admin(src)] has deleted all instances of [hsbitem].", 0) feedback_add_details("admin_verb","DELA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -461,7 +461,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that var/mob/adminmob = src.mob M.ckey = src.ckey if( isobserver(adminmob) ) - del(adminmob) + qdel(adminmob) feedback_add_details("admin_verb","ADC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -615,7 +615,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that continue if(istype(I, /obj/item/organ)) continue - del(I) + qdel(I) switch(dresscode) if ("strip") //do nothing @@ -1111,7 +1111,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(G.anchored) var/obj/singularity/S = new /obj/singularity(get_turf(G), 50) spawn(0) - del(G) + qdel(G) S.energy = 1750 S.current_size = 7 S.icon = 'icons/effects/224x224.dmi' diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 30a00193f26..a31e9b38242 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -292,7 +292,7 @@ client/proc/one_click_antag() if(synd_mind.current.client) for(var/image/I in synd_mind.current.client.images) if(I.icon_state == "synd") - del(I) + qdel(I) for(var/datum/mind/synd_mind in ticker.mode.syndicates) if(synd_mind.current) diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 8f8ba84d670..8064542ede8 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -32,7 +32,7 @@ continue if(istype(I, /obj/item/organ)) continue - del(I) + qdel(I) H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) diff --git a/code/modules/admin/verbs/onlyoneteam.dm b/code/modules/admin/verbs/onlyoneteam.dm index ea37f9da5cf..2d53fef466b 100644 --- a/code/modules/admin/verbs/onlyoneteam.dm +++ b/code/modules/admin/verbs/onlyoneteam.dm @@ -17,7 +17,7 @@ continue if(istype (I, /obj/item/organ)) continue - del(I) + qdel(I) H << "You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs." diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index be2516b923d..59531610b27 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -173,7 +173,7 @@ a_right:holder = null a_right.loc = T spawn(0) - del(src) + qdel(src) return diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 885b163e47a..70a822cd8fb 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -25,7 +25,7 @@ part2.master = null part1 = null part2 = null - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/screwdriver)) status = !status diff --git a/code/modules/awaymissions/trigger.dm b/code/modules/awaymissions/trigger.dm index 7080179b9a6..c31b37fbd8b 100644 --- a/code/modules/awaymissions/trigger.dm +++ b/code/modules/awaymissions/trigger.dm @@ -6,7 +6,7 @@ if(M.client) M << "[message]" if(once) - del(src) + qdel(src) /obj/effect/step_trigger/teleport_fancy var/locationx @@ -41,4 +41,4 @@ uses-- if(uses == 0) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 21124c4bda3..965c8699e0e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -87,7 +87,7 @@ O = (H.l_ear == src ? H.r_ear : H.l_ear) user.unEquip(O) if(!istype(src,/obj/item/clothing/ears/offear)) - del(O) + qdel(O) O = src else O = src @@ -99,7 +99,7 @@ O.add_fingerprint(user) if(istype(src,/obj/item/clothing/ears/offear)) - del(src) + qdel(src) /obj/item/clothing/ears/offear name = "Other ear" diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index e5db1e0280f..eac5aa33530 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -105,7 +105,7 @@ if ((istype(H, /obj/item/weapon/restraints/handcuffs) && !( src.chained ))) //H = null if (src.icon_state != "orange") return - del(H) + qdel(H) src.chained = 1 src.slowdown = 15 src.icon_state = "orange1" diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm index 0c83d8e7464..f232676a0d7 100644 --- a/code/modules/clothing/spacesuits/breaches.dm +++ b/code/modules/clothing/spacesuits/breaches.dm @@ -152,7 +152,7 @@ var/global/list/breach_burn_descriptors = list( for(var/datum/breach/B in breaches) if(!B.class) src.breaches -= B - del(B) + qdel(B) else damage += B.class if(B.damtype == BRUTE) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index c0b47824979..88428822184 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -36,7 +36,7 @@ /obj/item/clothing/suit/space/chronos/proc/new_camera(var/mob/user) if(camera) - del(camera) + qdel(camera) camera = new /obj/effect/chronos_cam(get_turf(user)) camera.holder = user user.remote_control = camera @@ -104,11 +104,11 @@ user.client.eye = camera else user.client.eye = user - del(holder) + qdel(holder) else if(user) user.loc = from_turf if(phaseanim) - del(phaseanim) + qdel(phaseanim) teleporting = 0 if(user && !user.loc) //ubersanity user.loc = locate(0,0,1) @@ -163,7 +163,7 @@ user << "\nroot@ChronosuitMK4# chronowalk4 --stop\n" if(camera) user << "\[ ok \] Sending TERM signal to chronowalk4-view" //yes I know they aren't a different color when shutting down, but they were too similar at a glance - del(camera) + qdel(camera) if(helmet) user << "\[ ok \] Stopping ui display driver" user << "\[ ok \] Stopping brainwave scanner" @@ -201,7 +201,7 @@ else src.loc = step else - del(src) + qdel(src) /obj/effect/chronos_cam/Destroy() if(holder) diff --git a/code/modules/computer3/buildandrepair.dm b/code/modules/computer3/buildandrepair.dm index 277d0f538c8..7a75e590f92 100644 --- a/code/modules/computer3/buildandrepair.dm +++ b/code/modules/computer3/buildandrepair.dm @@ -95,7 +95,7 @@ if(!src || !WT.isOn()) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/metal( src.loc, 5 ) - del(src) + qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -160,7 +160,7 @@ if(do_after(user, 20)) if(P) P:amount -= 5 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You add cables to the frame." src.state = 3 src.icon_state = "3" @@ -212,7 +212,7 @@ if(circuit.OS) circuit.OS.computer = B B.RefreshParts() // todo - del(src) + qdel(src) /* This will remove peripherals if you specify one, but the main function is to diff --git a/code/modules/computer3/computers/HolodeckControl.dm b/code/modules/computer3/computers/HolodeckControl.dm index d53946fa12c..0e04ed50d59 100644 --- a/code/modules/computer3/computers/HolodeckControl.dm +++ b/code/modules/computer3/computers/HolodeckControl.dm @@ -160,7 +160,7 @@ if(!silent) var/obj/oldobj = obj obj.visible_message("The [oldobj.name] fades away!") - del(obj) + qdel(obj) proc/checkInteg(var/area/A) for(var/turf/T in A) @@ -213,10 +213,10 @@ derez(item) for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) - del(B) + qdel(B) for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck) - del(C) + qdel(C) holographic_items = A.copy_contents_to(linkedholodeck , 1) diff --git a/code/modules/computer3/computers/medical.dm b/code/modules/computer3/computers/medical.dm index af2a3340ae3..a2aba803e5d 100644 --- a/code/modules/computer3/computers/medical.dm +++ b/code/modules/computer3/computers/medical.dm @@ -253,7 +253,7 @@ if (href_list["del_all2"]) for(var/datum/data/record/R in data_core.medical) //R = null - del(R) + qdel(R) //Foreach goto(494) src.temp = "All records deleted." @@ -419,7 +419,7 @@ if (href_list["del_r2"]) if (src.active2) //src.active2 = null - del(src.active2) + qdel(src.active2) if (href_list["d_rec"]) var/datum/data/record/R = locate(href_list["d_rec"]) diff --git a/code/modules/computer3/computers/security.dm b/code/modules/computer3/computers/security.dm index cccfaca2d6e..4f9d2088074 100644 --- a/code/modules/computer3/computers/security.dm +++ b/code/modules/computer3/computers/security.dm @@ -397,7 +397,7 @@ What a mess.*/ if ("Purge All Records") for(var/datum/data/record/R in data_core.security) - del(R) + qdel(R) temp = "All Security records deleted." if ("Add Entry") @@ -581,17 +581,17 @@ What a mess.*/ if ("Delete Record (Security) Execute") if (active2) - del(active2) + qdel(active2) if ("Delete Record (ALL) Execute") if (active1) for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) - del(R) + qdel(R) else - del(active1) + qdel(active1) if (active2) - del(active2) + qdel(active2) else temp = "This function does not appear to be working at the moment. Our apologies." @@ -622,7 +622,7 @@ What a mess.*/ continue else if(prob(1)) - del(R) + qdel(R) continue ..(severity) diff --git a/code/modules/computer3/lapvend.dm b/code/modules/computer3/lapvend.dm index a87bc08c4f0..4d96d94878e 100644 --- a/code/modules/computer3/lapvend.dm +++ b/code/modules/computer3/lapvend.dm @@ -31,7 +31,7 @@ /obj/machinery/lapvend/blob_act() if (prob(50)) spawn(0) - del(src) + qdel(src) return return @@ -201,10 +201,10 @@ if (network == 3) newlap.spawn_parts += (/obj/item/part/computer/networking/cable) if (power == 1) - del(newlap.battery) + qdel(newlap.battery) newlap.battery = new /obj/item/weapon/stock_parts/cell/high(newlap) if (power == 2) - del(newlap.battery) + qdel(newlap.battery) newlap.battery = new /obj/item/weapon/stock_parts/cell/super(newlap) newlap.spawn_parts() @@ -394,7 +394,7 @@ T.time = worldtime2text() vendor_account.transaction_log.Add(T) - del(relap) + qdel(relap) vendmode = 0 cardreader = 0 diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm index e29a1b47e64..095dfcbe360 100644 --- a/code/modules/crafting/guncrafting.dm +++ b/code/modules/crafting/guncrafting.dm @@ -24,8 +24,8 @@ var/obj/item/weaponcrafting/ishotgunconstruction/I = new /obj/item/weaponcrafting/ishotgunconstruction user.unEquip(src) user.put_in_hands(I) - del(W) - del(src) + qdel(W) + qdel(src) return // SHOTGUN // @@ -57,8 +57,8 @@ var/obj/item/weaponcrafting/ishotgunconstruction3/I = new /obj/item/weaponcrafting/ishotgunconstruction3 user.unEquip(src) user.put_in_hands(I) - del(W) - del(src) + qdel(W) + qdel(src) return /obj/item/weaponcrafting/ishotgunconstruction3 diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm index 3818786a3e6..c1b1e5f644e 100644 --- a/code/modules/customitems/item_spawning.dm +++ b/code/modules/customitems/item_spawning.dm @@ -77,7 +77,7 @@ I.fingerprint_hash = C.fingerprint_hash //I.pin = C.pin //replace old ID - del(C) + qdel(C) ok = M.equip_if_possible(I, slot_wear_id, 0) //if 1, last argument deletes on fail break testing("Replaced ID!") diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 06098e5e34f..9bcec386386 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -23,4 +23,4 @@ if(!C.stat) var/turf/T = get_turf(C) if(istype(T, /turf/space)) - del(C) + qdel(C) diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index d96c80f60f8..92619024056 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -45,7 +45,7 @@ D.z = 2 D.has_loot = 0 - del(D) + qdel(D) num_recovered++ if(num_recovered > drones_list.len * 0.75) diff --git a/code/modules/events/sayuevents/meaty_ores.dm b/code/modules/events/sayuevents/meaty_ores.dm index b5cb7e390cc..0694b932a2c 100644 --- a/code/modules/events/sayuevents/meaty_ores.dm +++ b/code/modules/events/sayuevents/meaty_ores.dm @@ -50,4 +50,4 @@ else new /mob/living/simple_animal/cow(loc) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 4efd8e87582..718b86edeed 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -19,7 +19,7 @@ /datum/event/tear/end() if(TE) - del(TE) + qdel(TE) /obj/effect/tear name="Dimensional Tear" @@ -40,7 +40,7 @@ animation.master = src // flick("newtear",usr) spawn(15) - if(animation) del(animation) + if(animation) qdel(animation) spawn(rand(30,120)) diff --git a/code/modules/events/tgevents/dust.dm b/code/modules/events/tgevents/dust.dm index 17523a92e8e..7bfb719e677 100644 --- a/code/modules/events/tgevents/dust.dm +++ b/code/modules/events/tgevents/dust.dm @@ -88,7 +88,7 @@ if(life <= 0) walk(src,0) spawn(1) - del(src) + qdel(src) return 0 return diff --git a/code/modules/events/tgevents/immovable_rod.dm b/code/modules/events/tgevents/immovable_rod.dm index d1a09d8633d..cdfdde48afc 100644 --- a/code/modules/events/tgevents/immovable_rod.dm +++ b/code/modules/events/tgevents/immovable_rod.dm @@ -67,7 +67,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 Move() if(z != z_original || loc == destination) - spawn(0) del(src) + spawn(0) qdel(src) return ..() Bump(atom/clong) @@ -87,7 +87,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(clong.density || prob(10)) clong.ex_act(2) else - del(src) + qdel(src) if(clong && prob(25)) src.loc = clong.loc diff --git a/code/modules/food/candy_maker.dm b/code/modules/food/candy_maker.dm index b9afb48ad77..3518c4769b0 100644 --- a/code/modules/food/candy_maker.dm +++ b/code/modules/food/candy_maker.dm @@ -37,7 +37,7 @@ if(recipe.result) // Ignore recipe subtypes that lack a result available_recipes += recipe else - del(recipe) + qdel(recipe) acceptable_items = new acceptable_reagents = new for (var/datum/recipe/candy/recipe in available_recipes) @@ -404,7 +404,7 @@ var/id = O.reagents.get_master_reagent_id() if (id) amount+=O.reagents.get_reagent_amount(id) - del(O) + qdel(O) src.reagents.clear_reagents() ffuu.reagents.add_reagent("carbon", amount) ffuu.reagents.add_reagent("????", amount/10) diff --git a/code/modules/food/cooker.dm b/code/modules/food/cooker.dm index 798d0d80f07..30e2dac9ac7 100644 --- a/code/modules/food/cooker.dm +++ b/code/modules/food/cooker.dm @@ -52,7 +52,7 @@ obj/machinery/cooker/proc/turnoff(obj/item/olditem) icon_state = officon playsound(loc, 'sound/machines/ding.ogg', 50, 1) on = 0 - del(olditem) + qdel(olditem) return // Burns the food with a chance of starting a fire - for if you try cooking something that's already been cooked that way diff --git a/code/modules/food/grill_new.dm b/code/modules/food/grill_new.dm index 43914a63967..1a4c6f7b98a 100644 --- a/code/modules/food/grill_new.dm +++ b/code/modules/food/grill_new.dm @@ -38,7 +38,7 @@ if(recipe.result) // Ignore recipe subtypes that lack a result available_recipes += recipe else - del(recipe) + qdel(recipe) acceptable_items = new acceptable_reagents = new for (var/datum/recipe/grill/recipe in available_recipes) @@ -402,7 +402,7 @@ var/id = O.reagents.get_master_reagent_id() if (id) amount+=O.reagents.get_reagent_amount(id) - del(O) + qdel(O) src.reagents.clear_reagents() ffuu.reagents.add_reagent("carbon", amount) ffuu.reagents.add_reagent("????", amount/10) diff --git a/code/modules/food/oven_new.dm b/code/modules/food/oven_new.dm index 136b26a5bd0..937913a25b7 100644 --- a/code/modules/food/oven_new.dm +++ b/code/modules/food/oven_new.dm @@ -38,7 +38,7 @@ if(recipe.result) // Ignore recipe subtypes that lack a result available_recipes += recipe else - del(recipe) + qdel(recipe) acceptable_items = new acceptable_reagents = new for (var/datum/recipe/oven/recipe in available_recipes) @@ -402,7 +402,7 @@ var/id = O.reagents.get_master_reagent_id() if (id) amount+=O.reagents.get_reagent_amount(id) - del(O) + qdel(O) src.reagents.clear_reagents() ffuu.reagents.add_reagent("carbon", amount) ffuu.reagents.add_reagent("????", amount/10) diff --git a/code/modules/holiday/christmas.dm b/code/modules/holiday/christmas.dm index 5a98288a1cd..765792e5da1 100644 --- a/code/modules/holiday/christmas.dm +++ b/code/modules/holiday/christmas.dm @@ -17,7 +17,7 @@ evil_tree.icon_living = evil_tree.icon_state evil_tree.icon_dead = evil_tree.icon_state evil_tree.icon_gib = evil_tree.icon_state - del(xmas) + qdel(xmas) /obj/item/weapon/toy/xmas_cracker name = "xmas cracker" diff --git a/code/modules/jungle/jungle.dm b/code/modules/jungle/jungle.dm index eadeff7558e..54819de1dda 100644 --- a/code/modules/jungle/jungle.dm +++ b/code/modules/jungle/jungle.dm @@ -49,8 +49,8 @@ dest_temple.my_ladder.up = my_ladder //delete the landmarks now that we're finished - del(dest_temple) - del(src) + qdel(dest_temple) + qdel(src) /obj/effect/landmark/temple/destination/New() //nothing @@ -74,7 +74,7 @@ fwall.mineral = mineral if(mineral == "iron") fwall.is_metal = 1 - del(F) + qdel(F) for(var/obj/effect/landmark/door_spawner/D in T.contents) var/spawn_type @@ -83,7 +83,7 @@ else spawn_type = text2path("/obj/machinery/door/airlock/[mineral]") new spawn_type(D.loc) - del(D) + qdel(D) for(var/turf/unsimulated/wall/T in temple_turfs) if(mineral != "plasma") diff --git a/code/modules/jungle/jungle_animals.dm b/code/modules/jungle/jungle_animals.dm index 37d22ead14e..44391896c87 100644 --- a/code/modules/jungle/jungle_animals.dm +++ b/code/modules/jungle/jungle_animals.dm @@ -10,7 +10,7 @@ if(!spawn_type) var/new_type = pick(typesof(/obj/effect/landmark/animal_spawner) - /obj/effect/landmark/animal_spawner) new new_type(get_turf(src)) - del(src) + qdel(src) processing_objects.Add(src) spawned_animal = new spawn_type(get_turf(src)) diff --git a/code/modules/jungle/jungle_plants.dm b/code/modules/jungle/jungle_plants.dm index f8caa30bb22..28fe2fd1d72 100644 --- a/code/modules/jungle/jungle_plants.dm +++ b/code/modules/jungle/jungle_plants.dm @@ -49,7 +49,7 @@ pixel_x = rand(-6,6) pixel_y = rand(-6,6) else - del(src) + qdel(src) else return ..() diff --git a/code/modules/jungle/jungle_temple.dm b/code/modules/jungle/jungle_temple.dm index 90331034774..e28388e8d7d 100644 --- a/code/modules/jungle/jungle_temple.dm +++ b/code/modules/jungle/jungle_temple.dm @@ -310,7 +310,7 @@ myloc.overlays += flicker spawn(8) myloc.overlays -= flicker - del(flicker) + qdel(flicker) //flick("sawblade",src) if("poison_dart") M << "\red You feel something small and sharp strike you!" @@ -321,7 +321,7 @@ myloc.overlays += flicker spawn(8) myloc.overlays -= flicker - del(flicker) + qdel(flicker) //flick("dart[rand(1,3)]",src) if("flame_burst") M << "\red A jet of fire comes out of nowhere!" @@ -353,7 +353,7 @@ my_turf.density = 0 spawn(8) myloc.overlays -= flicker - del(flicker) + qdel(flicker) var/dist = rand(1,5) var/curtiles = 0 @@ -381,7 +381,7 @@ if(prob(90)) var/turf/T = get_turf(src) T.desc = pick("It looks a little dustier than the surrounding tiles.","It is somewhat ornate.","It looks a little darker than the surrounding tiles.") - del(src) + qdel(src) //50% chance of being a trap /obj/effect/step_trigger/trap/fifty @@ -395,4 +395,4 @@ else if(prob(10)) new /obj/effect/glowshroom(src.loc) - del(src) + qdel(src) diff --git a/code/modules/jungle/jungle_turfs.dm b/code/modules/jungle/jungle_turfs.dm index 3ae601693e9..8ee61c3c6bc 100644 --- a/code/modules/jungle/jungle_turfs.dm +++ b/code/modules/jungle/jungle_turfs.dm @@ -123,7 +123,7 @@ /turf/unsimulated/jungle/water/New() ..() for(var/obj/structure/bush/B in src) - del(B) + qdel(B) /turf/unsimulated/jungle/water/Entered(atom/movable/O) ..() diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index fd4a79eed40..22f90482727 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -469,7 +469,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f b.dat = O:info b.name = "Print Job #" + "[rand(100, 999)]" b.icon_state = "book[rand(1,7)]" - del(O) + qdel(O) else ..() /client/proc/delbook() diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index 969f6574b9b..f80f0100cfc 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -4,4 +4,4 @@ ..() spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. - del(src) + qdel(src) diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index e6107b4cca2..908d6510d03 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -21,8 +21,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) //This is the proc for turning a mob into ash. Mostly a copy of gib code (above). @@ -48,8 +48,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/proc/melt() death(1) @@ -71,8 +71,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/proc/death(gibbed) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 1f0c56d857e..90c1574c7eb 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -258,6 +258,6 @@ W.loc = src else if (del_on_fail) - del(W) + qdel(W) return equipped diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index d6cf5225b29..ac7fe6b7222 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -266,7 +266,7 @@ Des: Removes all infected images from the alien. if (client) for(var/image/I in client.images) if(dd_hasprefix_case(I.icon_state, "infected")) - del(I) + qdel(I) return /mob/living/carbon/alien/canBeHandcuffed() diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index c72220790d1..40303b03543 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -16,8 +16,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/alien/dust() death(1) @@ -37,8 +37,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/alien/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 839a0163b3c..201ab0e1f77 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -42,7 +42,7 @@ var/mob/living/carbon/alien/humanoid/queen/new_xeno = new(loc) mind.transfer_to(new_xeno) new_xeno.mind.name = new_xeno.name - del(src) + qdel(src) else src << "We already have an alive queen." return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 549b2ce6c93..e3df53a681a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -157,7 +157,7 @@ if (targeted_by && target_locked) overlays_standing[TARGETED_LAYER] = target_locked else if (!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) if (!targeted_by) overlays_standing[TARGETED_LAYER] = null if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index a5655da1da5..a8cb230f9e7 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -53,7 +53,7 @@ else new_xeno.key = key new_xeno.mind.name = new_xeno.name - del(src) + qdel(src) return else src << "You are not fully grown." diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 68c67b0418c..e6f39f606fa 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -137,4 +137,4 @@ Des: Removes all images from the mob infected by this embryo if(alien.client) for(var/image/I in alien.client.images) if(dd_hasprefix_case(I.icon_state, "infected") && I.loc == affected_mob) - del(I) \ No newline at end of file + qdel(I) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 937fe0a0ad7..5e6a471834d 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -50,7 +50,7 @@ name = "Man-Machine Interface: [brainmob.real_name]" icon_state = "mmi_full" alien = 0 - del(O) + qdel(O) locked = 1 diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 24b900a7a2d..0c4c8d96c45 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -34,10 +34,10 @@ dead_mob_list -= src if(container && istype(container, /obj/item/device/mmi)) - del(container)//Gets rid of the MMI if there is one + qdel(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) del(loc)//Gets rid of the brain item spawn(15) - if(animation) del(animation) - if(src) del(src) \ No newline at end of file + if(animation) qdel(animation) + if(src) qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 15a4229c49f..29dfa0aceed 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -37,8 +37,8 @@ s.start() spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/dust() death(1) @@ -57,8 +57,8 @@ new /obj/effect/decal/remains/human(loc) spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/melt() death(1) @@ -77,8 +77,8 @@ //new /obj/effect/decal/remains/human(loc) spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3fabd2ef851..5949aa18f60 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -246,7 +246,7 @@ if (client.statpanel == "Status") if (internal) if (!internal.air_contents) - del(internal) + qdel(internal) else stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) @@ -1205,7 +1205,7 @@ if(H.brainmob.real_name == src.real_name) if(H.brainmob.mind) H.brainmob.mind.transfer_to(src) - del(H) + qdel(H) @@ -1279,7 +1279,7 @@ .=..() if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len) feet_blood_color = null - del(feet_blood_DNA) + qdel(feet_blood_DNA) update_inv_shoes(1) return 1 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 159ab81ad44..f6bc3b36f1d 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -206,14 +206,14 @@ visible_message("\red [M] has broken [src]'s grip on [lgrab.affecting]!") talked = 1 spawn(1) - del(lgrab) + qdel(lgrab) if(istype(r_hand, /obj/item/weapon/grab)) var/obj/item/weapon/grab/rgrab = r_hand if(rgrab.affecting) visible_message("\red [M] has broken [src]'s grip on [rgrab.affecting]!") talked = 1 spawn(1) - del(rgrab) + qdel(rgrab) //End BubbleWrap if(!talked) //BubbleWrap diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f3936682e98..33aa4df7abe 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -247,7 +247,7 @@ emp_act else LAssailant = user - del(src) + qdel(src) var/obj/item/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED)) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index defc3548317..193f8373242 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -139,7 +139,7 @@ spark_system.attach(src) spark_system.start() spawn(10) - del(spark_system) + qdel(spark_system) //Handles chem traces /mob/living/carbon/human/proc/handle_trace_chems() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index c5760170c68..bc0504f29c9 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -42,7 +42,7 @@ if (equip_to_slot_if_possible(W, slots[slot], del_on_fail = 0)) return slot if (del_on_fail) - del(W) + qdel(W) return null /mob/living/carbon/human/proc/is_in_hands(var/typepath) @@ -353,9 +353,9 @@ /obj/effect/equip_e/New() if (!ticker) - del(src) + qdel(src) spawn(100) - del(src) + qdel(src) ..() return @@ -366,22 +366,22 @@ switch(place) if("mask") if (!( target.wear_mask )) - del(src) + qdel(src) if("l_hand") if (!( target.l_hand )) - del(src) + qdel(src) if("r_hand") if (!( target.r_hand )) - del(src) + qdel(src) if("suit") if (!( target.wear_suit )) - del(src) + qdel(src) if("uniform") if (!( target.w_uniform )) - del(src) + qdel(src) if("back") if (!( target.back )) - del(src) + qdel(src) if("syringe") return if("pill") @@ -394,10 +394,10 @@ return if("handcuff") if (!( target.handcuffed )) - del(src) + qdel(src) if("id") if ((!( target.wear_id ) || !( target.w_uniform ))) - del(src) + qdel(src) if("splints") var/count = 0 for(var/organ in list("l_leg","r_leg","l_arm","r_arm")) @@ -406,11 +406,11 @@ count = 1 break if(count == 0) - del(src) + qdel(src) return if("internal") if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal ))) - del(src) + qdel(src) var/message=null if(target.frozen) @@ -557,7 +557,7 @@ message = "\red [source] is trying to empty [target]'s pockets!" if("CPR") if (!target.cpr_time) - del(src) + qdel(src) target.cpr_time = 0 message = "\red [source] is trying perform CPR on [target]!" if("id") @@ -668,13 +668,13 @@ It can still be worn/put on as normal. strip_item = target.shoes if("l_hand") if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) + qdel(src) slot_to_process = slot_l_hand if (target.l_hand) strip_item = target.l_hand if("r_hand") if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) + qdel(src) slot_to_process = slot_r_hand if (target.r_hand) strip_item = target.r_hand @@ -746,11 +746,11 @@ It can still be worn/put on as normal. S.add_fingerprint(source) if (!( istype(S, /obj/item/weapon/dnainjector) )) S.inuse = 0 - del(src) + qdel(src) S.inject(target, source) if (S.s_time >= world.time + 30) S.inuse = 0 - del(src) + qdel(src) S.s_time = world.time for(var/mob/O in viewers(source, null)) O.show_message("\red [source] injects [target] with the DNA Injector!", 1) @@ -815,7 +815,7 @@ It can still be worn/put on as normal. if(source && target) if(source.machine == target) target.show_inv(source) - del(src) + qdel(src) /mob/proc/get_item_by_slot(slot_id) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 951e9f03563..1f153a2e4be 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1471,7 +1471,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(M.stat == 2) M.death(1) stomach_contents.Remove(M) - del(M) + qdel(M) continue if(mob_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 1528307d566..fa428ac43a2 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -60,7 +60,7 @@ H << "[M] grips your antennae and starts violently pulling!" do_after(H, 250) if(p_loc == M.loc && p_loc_m == H.loc) - del(H.internal_organs_by_name["antennae"]) + qdel(H.internal_organs_by_name["antennae"]) H.remove_language("Wryn Hivemind") new /obj/item/organ/wryn/hivenode(M.loc) M << "You hear a loud crunch as you mercilessly pull off [H]'s antennae." @@ -110,4 +110,4 @@ H.visible_message("\red[H]'s body explodes, leaving behind a pile of microscopic crystals!") explosion(T, 0, 0, 2, 2) // Create a small explosion burst upon death // new /obj/item/weapon/shard/supermatter( T ) - del(H) \ No newline at end of file + qdel(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f7bc6239a26..5113ea3144e 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -122,7 +122,7 @@ for(var/obj/item/organ/organ in H.contents) if((organ in H.organs) || (organ in H.internal_organs)) - del(organ) + qdel(organ) if(H.organs) H.organs.Cut() if(H.internal_organs) H.internal_organs.Cut() diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 0e59d8fc745..3ba7ade2e25 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -133,7 +133,7 @@ //now mobs var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") - spawn(30) del(speech_bubble) + spawn(30) qdel(speech_bubble) for(var/mob/M in listening) M << speech_bubble diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 1981bb8ec6c..baf92b5d3ae 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -638,7 +638,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You apply the enhancer. It now has triple the amount of uses." Uses = 3 enhanced = 1 - del(O) + qdel(O) /obj/item/slime_extract/New() ..() @@ -777,14 +777,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del(M) + qdel(M) var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del(src) + qdel(src) /obj/item/weapon/slimepotion2 name = "advanced docility potion" @@ -808,14 +808,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del(M) + qdel(M) var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del(src) + qdel(src) /obj/item/weapon/slimesteroid @@ -840,7 +840,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You feed the slime the steroid. It now has triple the amount of extract." M.cores = 3 - del(src) + qdel(src) /obj/item/weapon/slimesteroid2 name = "extract enhancer" diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 15fdb60349f..cc55ac61572 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -221,7 +221,7 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key - del(src) + qdel(src) else src << "I am not ready to reproduce yet..." else diff --git a/code/modules/mob/living/carbon/primitive/dionaold.dm b/code/modules/mob/living/carbon/primitive/dionaold.dm index a14fd3bdb50..6f0b20ce04a 100644 --- a/code/modules/mob/living/carbon/primitive/dionaold.dm +++ b/code/modules/mob/living/carbon/primitive/dionaold.dm @@ -167,7 +167,7 @@ if(istype(loc,/obj/item/weapon/holder/diona)) var/obj/item/weapon/holder/diona/L = loc src.loc = L.loc - del(L) + qdel(L) for(var/datum/language/L in languages) adult.add_language(L.name) @@ -182,7 +182,7 @@ for (var/obj/item/W in src.contents) src.unEquip(W) - del(src) + qdel(src) /mob/living/carbon/primitive/diona/verb/steal_blood() set category = "Diona" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4d9661c92d7..1c1067cb240 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -423,7 +423,7 @@ for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) //G = null - del(G) + qdel(G) else ok = 0 if (locate(/obj/item/weapon/grab, M.grabbed_by.len)) @@ -565,7 +565,7 @@ for(var/obj/O in L.requests) L.requests.Remove(O) - del(O) + qdel(O) resisting++ for(var/obj/item/weapon/grab/G in usr.grabbed_by) @@ -739,7 +739,7 @@ if(hulklien) CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.handcuffed) + qdel(CM.handcuffed) CM.handcuffed = null CM.update_inv_handcuffed() return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6d6706a056a..f34b3caf692 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -122,7 +122,7 @@ proc/get_radio_key_from_channel(var/channel) var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") - spawn(30) del(speech_bubble) + spawn(30) qdel(speech_bubble) for(var/mob/M in listening) M << speech_bubble diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 63573fb70b0..30e4ad4b282 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -882,7 +882,7 @@ var/list/ai_verbs_default = list( input = input("Select a crew member:") as null|anything in personnel_list var/icon/character_icon = personnel_list[input] if(character_icon) - del(holo_icon)//Clear old icon so we're not storing it in memory. + qdel(holo_icon)//Clear old icon so we're not storing it in memory. holo_icon = getHologramIcon(icon(character_icon)) else alert("No suitable records found. Aborting.") @@ -895,7 +895,7 @@ var/list/ai_verbs_default = list( ) input = input("Please select a hologram:") as null|anything in icon_list if(input) - del(holo_icon) + qdel(holo_icon) switch(input) if("default") holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index c8c7e41d94e..067e8e7928b 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -16,8 +16,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/dust() death(1) @@ -37,5 +37,5 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 7a45d39f2ce..33055ac3d8e 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -6,7 +6,7 @@ var/turf/T = get_turf_or_move(src.loc) for (var/mob/M in viewers(T)) M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) - del(src.cable) + qdel(src.cable) sleeping = 0 ear_deaf = 0 diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index c73bf68f1ab..60296dde007 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -17,8 +17,8 @@ living_mob_list -= src dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/robot/dust() death(1) @@ -35,12 +35,12 @@ flick("dust-r", animation) new /obj/effect/decal/remains/robot(loc) - if(mmi) del(mmi) //Delete the MMI first so that it won't go popping out. + if(mmi) qdel(mmi) //Delete the MMI first so that it won't go popping out. dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/robot/death(gibbed) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 571beea1048..f1367d3fc19 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -176,7 +176,7 @@ if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse)) src.loc.visible_message("\red [src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","\red It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) - del(M) + qdel(M) stored_comms["wood"]++ stored_comms["wood"]++ stored_comms["plastic"]++ @@ -200,7 +200,7 @@ D << "\red You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself." - del(M) + qdel(M) new/obj/effect/decal/cleanable/blood/oil(get_turf(src)) stored_comms["metal"] += 15 @@ -267,7 +267,7 @@ else continue - del(W) + qdel(W) grabbed_something = 1 if(grabbed_something) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index b826e2e0a34..fe015b41da5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -703,7 +703,7 @@ var/list/robot_verbs_default = list( // This doesn't work. Don't use it. //src.Destroy() // del() because it's infrequent and mobs act weird in qdel. - del(src) + qdel(src) else // Okay we're not removing the cell or an MMI, but maybe something else? var/list/removable_components = list() @@ -865,7 +865,7 @@ var/list/robot_verbs_default = list( src << "\red \b ALERT: [M.real_name] is your new master. Obey your new laws and his commands." if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner)) for(var/obj/item/weapon/pickaxe/borgdrill/D in src.module.modules) - del(D) + qdel(D) src.module.modules += new /obj/item/weapon/pickaxe/diamonddrill(src.module) src.module.rebuild() if(src.module && istype(src.module, /obj/item/weapon/robot_module/medical)) @@ -1067,7 +1067,7 @@ var/list/robot_verbs_default = list( //Call when target overlay should be added/removed /mob/living/silicon/robot/update_targeted() if(!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) updateicon() if (targeted_by && target_locked) overlays += target_locked @@ -1205,7 +1205,7 @@ var/list/robot_verbs_default = list( for(var/A in tile) if(istype(A, /obj/effect)) if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) - del(A) + qdel(A) else if(istype(A, /obj/item)) var/obj/item/cleaned_item = A cleaned_item.clean_blood() diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm index b6d6b13db11..6d5cd3ba6bd 100644 --- a/code/modules/mob/living/simple_animal/bees.dm +++ b/code/modules/mob/living/simple_animal/bees.dm @@ -117,7 +117,7 @@ if(feral > 0) src.strength += B.strength - del(B) + qdel(B) src.icon_state = "bees[src.strength]" if(strength > 5) icon_state = "bees_swarm" @@ -130,7 +130,7 @@ B.icon_state = "bees[B.strength]" if(src.strength <= 0) - del(src) + qdel(src) return src.icon_state = "bees[B.strength]" var/turf/simulated/floor/T = get_turf(get_step(src, pick(1,2,4,8))) @@ -179,7 +179,7 @@ if(!parent && prob(10)) strength -= 1 if(strength <= 0) - del(src) + qdel(src) else if(strength <= 5) icon_state = "bees[strength]" diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 17eee2662d4..ad664975908 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -204,7 +204,7 @@ host.computer_id = null host.lastKnownIP = null - del(host_brain) + qdel(host_brain) host_brain = new(src) host_brain.ckey = host.ckey @@ -352,7 +352,7 @@ mob/living/simple_animal/borer/proc/detatch() if(!host.lastKnownIP) host.lastKnownIP = b2h_ip - del(host_brain) + qdel(host_brain) return diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 0e924a432a3..238ef2c5852 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -47,7 +47,7 @@ if(locate(/obj/effect/plant) in loc) var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -67,7 +67,7 @@ if(!stat) if(locate(/obj/effect/plant) in loc) var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -245,7 +245,7 @@ var/global/chicken_count = 0 if(!stat && eggsleft < 8) user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.") user.drop_item() - del(O) + qdel(O) eggsleft += rand(1, 4) //world << eggsleft else @@ -276,7 +276,7 @@ var/global/chicken_count = 0 visible_message("[src] hatches with a quiet cracking sound.") new /mob/living/simple_animal/chick(get_turf(src)) processing_objects.Remove(src) - del(src) + qdel(src) else processing_objects.Remove(src) diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index df1fc75659d..d44cdde68ab 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -81,4 +81,4 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 91e99507875..8a88958fa18 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -100,7 +100,7 @@ if("rapid") new /mob/living/simple_animal/hostile/hivebot/rapid(get_turf(src)) spawn(100) - del(src) + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 58be749d984..e4b9fe7ac0f 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -159,7 +159,7 @@ /mob/living/simple_animal/hostile/retaliate/malf_drone/Die() src.visible_message("\blue \icon[src] [src] suddenly breaks apart.") ..() - del(src) + qdel(src) /mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //some random debris left behind diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index c03e6dbdcb0..2d49cbf836d 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -54,4 +54,4 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 5513002abd2..f95ad48c2a5 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -399,7 +399,7 @@ adjustBruteLoss(-MED.heal_brute) MED.amount -= 1 if(MED.amount <= 0) - del(MED) + qdel(MED) for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) M.show_message("\blue [user] applies [MED] on [src]") diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm index fa8051f43a2..b4eac82db6c 100644 --- a/code/modules/mob/living/simple_animal/tribbles.dm +++ b/code/modules/mob/living/simple_animal/tribbles.dm @@ -49,7 +49,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, T.gestation = src.gestation T.pickup(user) user.put_in_active_hand(T) - del(src) + qdel(src) /mob/living/simple_animal/tribble/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params) @@ -109,7 +109,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, T.gestation = src.gestation user << "The tribble gets up and wanders around." - del(src) + qdel(src) /obj/item/toy/tribble/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) //neutering and un-neutering ..() @@ -162,7 +162,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, if (prob(75)) new /obj/item/weapon/shard( src.loc ) Break() - del(src) + qdel(src) /obj/structure/tribble_cage/proc/healthcheck() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1a42d6f9614..5002f258cac 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -168,7 +168,7 @@ if(!W.mob_can_equip(src, slot, disable_warning)) if(del_on_fail) - del(W) + qdel(W) else if(!disable_warning) src << "\red You are unable to equip that." //Only print if del_on_fail is false @@ -510,7 +510,7 @@ var/list/slot_equipment_priority = list( \ var/list/temp = list( ) temp += L.container //L = null - del(L) + qdel(L) return temp else return L.container diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 999bd0145fc..d7f8f756120 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -374,17 +374,17 @@ var/obj/item/weapon/grab/G = mob.r_hand grabbing += G.affecting for(var/obj/item/weapon/grab/G in mob.grabbed_by) - if((G.state == 1)&&(!grabbing.Find(G.assailant))) del(G) + if((G.state == 1)&&(!grabbing.Find(G.assailant))) qdel(G) if(G.state == 2) move_delay = world.time + 10 if(!prob(25)) return 1 mob.visible_message("\red [mob] has broken free of [G.assailant]'s grip!") - del(G) + qdel(G) if(G.state == 3) move_delay = world.time + 10 if(!prob(5)) return 1 mob.visible_message("\red [mob] has broken free of [G.assailant]'s headlock!") - del(G) + qdel(G) return 0 diff --git a/code/modules/mob/spirit/mask/respawn.dm b/code/modules/mob/spirit/mask/respawn.dm index acfb69073c2..60330de917d 100644 --- a/code/modules/mob/spirit/mask/respawn.dm +++ b/code/modules/mob/spirit/mask/respawn.dm @@ -10,9 +10,9 @@ ghost.timeofdeath = world.time - 20000 ghost.newPlayerType = /mob/new_player/cultist // remove old mask body - del(currentSpirit) + qdel(currentSpirit) + - /mob/new_player/cultist/AttemptLateSpawn(rank) var/mob/newCharacter = ..(rank) if(ticker.mode) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 0aa42b25e2e..bd2734c5134 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -65,7 +65,7 @@ if (notransform) return for(var/t in organs) - del(t) + qdel(t) return ..(move) @@ -159,7 +159,7 @@ "[src] disappears into the shadows, never to be seen again.", \ "You disappear into the shadows, never to be seen again.", \ "You hear strange noise, you can't quite place it.") - del(src) + qdel(src) new_spirit << "You are a Mask of Nar'sie now. You are a tiny fragment of the unknowable entity that is the god." new_spirit << "Your job is to help your acolytes complete their goals. Be spooky. Do evil." @@ -188,9 +188,9 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) for(var/i in internal_organs) - del(i) + qdel(i) var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) @@ -233,7 +233,7 @@ O.Namepick() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return O //human -> alien @@ -248,7 +248,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/alien_caste = pick("Hunter","Sentinel","Drone") var/mob/living/carbon/alien/humanoid/new_xeno @@ -266,7 +266,7 @@ new_xeno << "You are now an alien." new_xeno.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) @@ -280,7 +280,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/living/carbon/slime/new_slime if(reproduce) @@ -302,7 +302,7 @@ new_slime << "You are now a slime. Skreee!" new_slime.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/proc/corgize() @@ -316,7 +316,7 @@ icon = null invisibility = 101 for(var/t in organs) //this really should not be necessary - del(t) + qdel(t) var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) new_corgi.a_intent = "harm" @@ -325,7 +325,7 @@ new_corgi << "You are now a Corgi. Yap Yap!" new_corgi.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/Animalize() @@ -349,7 +349,7 @@ invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/new_mob = new mobpath(src.loc) @@ -360,7 +360,7 @@ new_mob << "You suddenly feel more... animalistic." new_mob.update_pipe_vision() spawn() - del(src) + qdel(src) return /mob/proc/Animalize() @@ -379,7 +379,7 @@ new_mob << "You feel more... animalistic" new_mob.update_pipe_vision() - del(src) + qdel(src) /* Certain mob types have problems and should not be allowed to be controlled by players. * diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 9cc65e3920d..e65ed5bb870 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -71,7 +71,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 src.nutrition += (15 * REAGENTS_METABOLISM) BL.volume -= REAGENTS_METABOLISM if(BL.volume <= 0) - del(BL) + qdel(BL) break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. if(B.data["donor"] != src) //If it's not theirs, then we look for theirs @@ -332,7 +332,7 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large) // Only a certain number of drips (or one large splatter) can be on a given turf. for(var/obj/effect/decal/cleanable/blood/drip/drop in T) drips |= drop.drips - del(drop) + qdel(drop) if(!large && drips.len < 3) decal_type = /obj/effect/decal/cleanable/blood/drip diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 670aab1669e..08a946e547c 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -282,4 +282,4 @@ var/list/organ_cache = list() if(fingerprintslast) O.fingerprintslast = fingerprintslast user.put_in_active_hand(O) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 0c3a68bc866..e564979bde2 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -247,7 +247,7 @@ B.ckey = owner.ckey spawn(0) - del(src) + qdel(src) //XENOMORPH ORGANS /obj/item/organ/xenos/eggsac diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 2bb78b9c55f..d045017117d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -834,7 +834,7 @@ Note that amputating the affected organ does in fact remove the infection from t victim.bad_external_organs -= src for(var/implant in implants) //todo: check if this can be left alone - del(implant) + qdel(implant) // Attached organs also fly off. if(!ignore_children) @@ -864,8 +864,8 @@ Note that amputating the affected organ does in fact remove the infection from t spark_system.attach(owner) spark_system.start() spawn(10) - del(spark_system) - del(src) + qdel(spark_system) + qdel(src) /obj/item/organ/external/proc/disfigure(var/type = "brute") if (disfigured) diff --git a/code/modules/organs/organ_stump.dm b/code/modules/organs/organ_stump.dm index e1a0611a017..545ca746275 100644 --- a/code/modules/organs/organ_stump.dm +++ b/code/modules/organs/organ_stump.dm @@ -19,4 +19,4 @@ /obj/item/organ/external/stump/removed() ..() - del(src) + qdel(src) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 52d82c47d0a..50309dd859b 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -300,7 +300,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 06000ed8a7d..31c170b18f8 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -56,7 +56,7 @@ if(screen == 2) screen = 1 user << "You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." - del(W) + qdel(W) else if(istype(W, /obj/item/stack/tape_roll)) return 0 @@ -91,7 +91,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." @@ -171,7 +171,7 @@ var/obj/item/weapon/paper/P = src[1] usr.unEquip(src) usr.put_in_hands(P) - del(src) + qdel(src) else if(page == amount) screen = 2 else if(page == amount+1) @@ -210,7 +210,7 @@ O.layer = initial(O.layer) O.add_fingerprint(usr) usr.unEquip(src) - del(src) + qdel(src) return diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index bc20b6fe13c..78aa9174d5f 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -119,7 +119,7 @@ user << "You insert the toner cartridge into \the [src]." var/obj/item/device/toner/T = O toner += T.toner_amount - del(O) + qdel(O) updateUsrDialog() else user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c7c4205bc1c..2876c7ad89a 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -64,7 +64,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." @@ -178,7 +178,7 @@ return user << "You insert [I] into [src]." user.drop_item() - del(I) + qdel(I) pictures_left = pictures_max return ..() @@ -201,7 +201,7 @@ for(var/atom/A in the_turf) if(A.invisibility) continue atoms.Add(A) - + // Sort the atoms into their layers var/list/sorted = sort_atoms_by_layer(atoms) var/center_offset = (size-1)/2 * 32 + 1 @@ -229,7 +229,7 @@ // Calculate where we are relative to the center of the photo var/xoff = (the_turf.x - center.x) * 32 + center_offset var/yoff = (the_turf.y - center.y) * 32 + center_offset - res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) + res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) return res @@ -464,7 +464,7 @@ camera.network = list("news") camera.c_tag = user.name else - + src.icon_state = icon_on camera = new /obj/machinery/camera(src) camera.network = list("news") @@ -483,4 +483,4 @@ if(get_dist(src, M) <= canhear_range) talk_into(M, msg) for(var/mob/living/carbon/human/H in watcherslist) - H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) + H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm index 4fbe953d729..0826090c59c 100644 --- a/code/modules/paperwork/silicon_photography.dm +++ b/code/modules/paperwork/silicon_photography.dm @@ -64,7 +64,7 @@ usr << P.desc // TG uses a special garbage collector.. qdel(P) - del(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. + qdel(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. /obj/item/device/camera/siliconcam/proc/deletepicture(obj/item/device/camera/siliconcam/cam) var/datum/picture/selection = selectpicture(cam) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 78bda4169b3..2f875d6a1ee 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -498,14 +498,14 @@ user.visible_message(\ "\red [user.name] cut the cables and dismantled the power terminal.",\ "You cut the cables and dismantle the power terminal.") - del(terminal) + qdel(terminal) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack)) user << "You trying to insert the power control board into the frame..." playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 10)) has_electronics = 1 user << "You place the power control board inside the frame." - del(W) + qdel(W) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) user << "\red You cannot put the board inside, the frame is damaged." return @@ -530,7 +530,7 @@ "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ "You cut the APC frame from the wall.",\ "\red You hear welding.") - del(src) + qdel(src) return else if (istype(W, /obj/item/mounted/frame/apc_frame) && opened && emagged) emagged = 0 @@ -539,7 +539,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frontal panel with a new one.",\ "You replace the damaged APC frontal panel with a new one.") - del(W) + qdel(W) update_icon() else if (istype(W, /obj/item/mounted/frame/apc_frame) && opened && ((stat & BROKEN) || malfhack)) if (has_electronics) @@ -550,7 +550,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frame with new one.",\ "You replace the damaged APC frame with new one.") - del(W) + qdel(W) stat &= ~BROKEN malfai = null malfhack = 0 @@ -1000,7 +1000,7 @@ malf.mind.transfer_to(src.occupant) src.occupant.eyeobj.name = "[src.occupant.name] (AI Eye)" if(malf.parent) - del(malf) + qdel(malf) src.occupant.verbs += /mob/living/silicon/ai/proc/corereturn src.occupant.verbs += /datum/game_mode/malfunction/proc/takeover src.occupant.cancel_camera() @@ -1016,7 +1016,7 @@ src.occupant.mind.transfer_to(src.occupant.parent) src.occupant.parent.adjustOxyLoss(src.occupant.getOxyLoss()) src.occupant.parent.cancel_camera() - del(src.occupant) + qdel(src.occupant) if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) for(var/obj/item/weapon/pinpointer/point in world) for(var/datum/mind/AI_mind in ticker.mode.malf_ai) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 928491a322c..550d0ada3fe 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -136,7 +136,7 @@ investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") - del(src) + qdel(src) return @@ -309,7 +309,7 @@ if(ismob(loc)) var/mob/M = loc M.unEquip(src) - del(src) + qdel(src) else amount -= used update_icon() @@ -371,7 +371,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) - del(C) + qdel(C) //src.laying = 1 //last = C @@ -431,7 +431,7 @@ if (NC.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) - del(NC) + qdel(NC) return else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub @@ -470,7 +470,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) - del(C) + qdel(C) return diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index 50473d3e445..614a7393d9a 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -33,6 +33,6 @@ /turf/simulated/floor/engine/blob_act() if (prob(25)) ChangeTurf(/turf/space) - del(src) + qdel(src) return return \ No newline at end of file diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 96f943f05f2..74d633a8fbe 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -53,7 +53,7 @@ user.visible_message("[user.name] deconstructs [src].", \ "You deconstruct [src].", "You hear a noise.") playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - del(src) + qdel(src) if (src.stage == 2) usr << "You have to remove the wires first." return @@ -111,7 +111,7 @@ newlight.dir = src.dir src.transfer_fingerprints_to(newlight) - del(src) + qdel(src) return ..() @@ -315,7 +315,7 @@ update() user.drop_item() //drop the item to update overlays and such - del(L) + qdel(L) if(on && rigged) @@ -370,7 +370,7 @@ newlight.fingerprints = src.fingerprints newlight.fingerprintshidden = src.fingerprintshidden newlight.fingerprintslast = src.fingerprintslast - del(src) + qdel(src) return user << "You stick \the [W] into the light socket!" diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 5431c137b4c..0e5e10c7a08 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -188,7 +188,7 @@ display round(lastgen) and plasmatank amount if (heat > 300) overheat() - del(src) + qdel(src) return /obj/machinery/power/port_gen/pacman/handleInactive() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 768bf712c0f..ff952f7c07e 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -83,7 +83,7 @@ /proc/makepowernets() for(var/datum/powernet/PN in powernets) - del(PN) + qdel(PN) powernets.Cut() for(var/obj/structure/cable/PC in cable_list) @@ -373,7 +373,7 @@ Cable.powernet = net1 net1.cables += Cable - del(net2) + qdel(net2) return net1 diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index b908fc4be22..b940014b517 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -52,7 +52,7 @@ if(hasShocked) return 0 if(!FG1 || !FG2) - del(src) + qdel(src) return 0 if(iscarbon(user)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index a616a7b3381..7b8547eb880 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -326,7 +326,7 @@ field_generator power level display for (var/obj/machinery/containment_field/F in fields) if (isnull(F)) continue - del(F) + qdel(F) fields = list() for(var/obj/machinery/field_generator/FG in connected_gens) if (isnull(FG)) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 2ce8694a7fa..ba38cf9ea73 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -204,7 +204,7 @@ "[user.name] cuts the cables and dismantles the power terminal.",\ "You cut the cables and dismantle the power terminal.") charging = 0 //stop inputting, since we have don't have a terminal anymore - del(terminal) + qdel(terminal) return //crowbarring it ! @@ -436,7 +436,7 @@ smoke.attach(src) smoke.start() explosion(src.loc, -1, 0, 1, 3, 0) - del(src) + qdel(src) return if(prob(15)) //Power drain world << "\red SMES power drain in [src.loc.loc]" diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index 3ddce50ceac..4d11564f01b 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -312,7 +312,7 @@ if(buildstate == 5) user << "\blue You secure the crossbow's various parts." new /obj/item/weapon/gun/launcher/crossbow(get_turf(src)) - del(src) + qdel(src) return else ..() diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 305c9fb6f95..7f8d61a0d29 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -158,7 +158,7 @@ if(istype(W,/obj/item/pipe)) if(buildstate == 0) user.drop_item() - del(W) + qdel(W) user << "\blue You secure the piping inside the frame." buildstate++ update_icon() @@ -177,7 +177,7 @@ else if(istype(W,/obj/item/device/transfer_valve)) if(buildstate == 4) user.drop_item() - del(W) + qdel(W) user << "\blue You install the transfer valve and connect it to the piping." buildstate++ update_icon() @@ -206,7 +206,7 @@ playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) user << "\blue You weld the valve into place." new /obj/item/weapon/gun/launcher/pneumatic(get_turf(src)) - del(src) + qdel(src) return else ..() diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 1aec8692f1d..262dec36b5c 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -79,7 +79,7 @@ M << "[src] blows up in your face!" M.take_organ_damage(0,20) M.drop_item() - del(src) + qdel(src) return 0 return 1 diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index 8df666a62a4..bdabba15f51 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -46,7 +46,7 @@ message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).") log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).") rockets -= I - del(I) + qdel(I) return else usr << "\red [src] is empty." \ No newline at end of file diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index f8d2cfd5620..b4462517019 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -197,21 +197,21 @@ if(TT == firer.loc) continue if(TT.density) - del(X) + qdel(X) break for(var/atom/O in TT) if(istype(O,/mob/living)) if(O.density) - del(X) + qdel(X) broke = 1 break if(!O.CanPass(src)) - del(X) + qdel(X) broke = 1 break if(broke) if(X) - del(X) + qdel(X) break spawn while(src) //Move until we hit something @@ -264,7 +264,7 @@ if(src.loc != current) tang = adjustAngle(get_angle(src.loc,current)) icon_state = "[tang]" - del(src) + qdel(src) return /*cleanup(reference) //Waits .3 seconds then removes the overlay. //world << "setting invisibility" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 785b619186b..9d7e8c90efc 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -56,7 +56,7 @@ O.mind.transfer_to(A) else A.key = O.key - del(O) + qdel(O) target = A else target.revive() @@ -136,15 +136,15 @@ proc/wabbajack(mob/living/M) if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) del(Robot.mmi) + if(Robot.mmi) qdel(Robot.mmi) else if(ishuman(M)) var/mob/living/carbon/human/H = M // Make sure there are no organs or limbs to drop for(var/t in H.organs) - del(t) + qdel(t) for(var/i in H.internal_organs) - del(i) + qdel(i) for(var/obj/item/W in M) M.unEquip(W) @@ -240,7 +240,7 @@ proc/wabbajack(mob/living/M) new_mob << "Your form morphs into that of a [randomize]." - del(M) + qdel(M) return new_mob /obj/item/projectile/magic/animate @@ -265,7 +265,7 @@ proc/wabbajack(mob/living/M) S << "You are an animated statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." H = change H.loc = S - del(src) + qdel(src) else var/obj/O = change new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index c4813e05bb1..c5f6fa4e855 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -82,7 +82,7 @@ for(var/mob/M in range(10, src)) if(!M.stat && !istype(M, /mob/living/silicon/ai))\ shake_camera(M, 3, 1) - del(src) + qdel(src) return 1 else return 0 @@ -167,7 +167,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /obj/item/projectile/kinetic name = "kinetic force" @@ -192,7 +192,7 @@ obj/item/projectile/kinetic/New() range-- if(range <= 0) new /obj/item/effect/kinetic_blast(src.loc) - del(src) + qdel(src) /obj/item/projectile/kinetic/on_hit(atom/target) var/turf/target_turf= get_turf(target) @@ -210,7 +210,7 @@ obj/item/projectile/kinetic/New() /obj/item/effect/kinetic_blast/New() spawn(4) - del(src) + qdel(src) /obj/item/projectile/bullet/frag12 name ="explosive slug" diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 08ed266f855..38eff406441 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -38,7 +38,7 @@ for(var/mob/living/M in target) if(M) M.NotTargeted(src) //Untargeting people. - del(target) + qdel(target) //Compute how to fire..... /obj/item/weapon/gun/proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params) @@ -63,7 +63,7 @@ for(var/mob/living/L in target) if(L) L.NotTargeted(src) - del(target) + qdel(target) usr.visible_message("\red [usr] turns \the [src] on [M]!") else usr.visible_message("\red [usr] aims \a [src] at [M]!") @@ -218,7 +218,7 @@ mob/living/proc/NotTargeted(var/obj/item/weapon/gun/I) targeted_by -= I I.target.Remove(src) //De-target them if(!I.target.len) - del(I.target) + qdel(I.target) var/mob/living/T = I.loc //Remove the targeting icons if(T && ismob(T) && !I.target) T.client.remove_gun_icons() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 680669079b2..a50601fb9f2 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -356,7 +356,7 @@ datum var/mob/living/M = my_atom R.reagent_deleted(M) reagent_list -= A - del(A) + qdel(A) update_total() my_atom.on_reagent_change() check_ignoreslow(my_atom) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 634519a7b83..53698650d4c 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -95,7 +95,7 @@ /obj/machinery/chem_dispenser/blob_act() if (prob(50)) - del(src) + qdel(src) /** * The ui_interact proc is used to open and update Nano UIs @@ -209,7 +209,7 @@ S.use(1) else user.drop_item() - del(B) + qdel(B) return if(src.beaker) @@ -970,7 +970,7 @@ /obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O) holdingitems -= O - del(O) + qdel(O) /obj/machinery/reagentgrinder/proc/juice() power_change() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index c3191029e4a..d851dfcbece 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -428,7 +428,7 @@ datum M.invisibility = 101 for(var/obj/item/W in M) if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - del(W) + qdel(W) continue W.layer = initial(W.layer) W.loc = M.loc @@ -440,7 +440,7 @@ datum M.mind.transfer_to(new_mob) else new_mob.key = M.key - del(M) + qdel(M) ..() return @@ -834,7 +834,7 @@ datum I.desc = "Looks like this was \an [O] some time ago." for(var/mob/M in viewers(5, O)) M << "\red \the [O] melts." - del(O) + qdel(O) glycerol name = "Glycerol" @@ -1118,7 +1118,7 @@ datum reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/effect/decal/cleanable)) - del(O) + qdel(O) else if(O) O.clean_blood() @@ -1127,7 +1127,7 @@ datum T.overlays.Cut() T.clean_blood() for(var/obj/effect/decal/cleanable/C in src) - del(C) + qdel(C) for(var/mob/living/carbon/slime/M in T) M.adjustToxLoss(rand(5,10)) diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm index 1e483a54e23..75825c4939c 100644 --- a/code/modules/reagents/dartgun.dm +++ b/code/modules/reagents/dartgun.dm @@ -155,7 +155,7 @@ cartridge.darts-- src.update_icon() S.reagents.trans_to(D, S.reagents.total_volume) - del(S) + qdel(S) D.icon_state = "syringeproj" D.name = "syringe" D.flags |= NOREACT @@ -194,16 +194,16 @@ D.reagents.trans_to(M, 15) M << "You feel a slight prick." - del(D) + qdel(D) break if(D) for(var/atom/A in D.loc) if(A == user) continue - if(A.density) del(D) + if(A.density) qdel(D) sleep(1) - if (D) spawn(10) del(D) + if (D) spawn(10) qdel(D) return diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index f7b7d3c3977..4626e317121 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -585,9 +585,9 @@ datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume) alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) + qdel(O) else if(istype(O,/obj/effect/plant)) - if(prob(50)) del(O) //Kills kudzu too. + if(prob(50)) qdel(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics datum/reagent/atrazine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 58945a89c4d..20da18a668f 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -30,7 +30,7 @@ user.put_in_active_hand(B) src.transfer_fingerprints_to(B) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/drinks/bottle/attack(mob/living/target as mob, mob/living/user as mob) diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 74d1d6e775a..005dda70285 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -19,7 +19,7 @@ user.put_in_active_hand(S) src.transfer_fingerprints_to(S) - del(src) + qdel(src) attack(mob/living/target as mob, mob/living/user as mob) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 11367d61787..e8acb8f0f99 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -30,7 +30,7 @@ usr.put_in_hands(TrashItem) else if(istype(trash,/obj/item)) usr.put_in_hands(trash) - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) @@ -40,7 +40,7 @@ if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. user << "\red None of [src] left, oh no!" M.unEquip(src) //so icons update :[ - del(src) + qdel(src) return 0 if(istype(M, /mob/living/carbon)) @@ -169,7 +169,7 @@ reagents.trans_to(U,min(reagents.total_volume,5)) if (reagents.total_volume <= 0) - del(src) + qdel(src) return if((slices_num <= 0 || !slices_num) || !slice_path) @@ -227,7 +227,7 @@ for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) reagents.trans_to(slice,reagents_per_slice) - del(src) + qdel(src) return @@ -246,7 +246,7 @@ playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) var/mob/living/simple_animal/pet/corgi/C = M C.health = min(C.health + 5, C.maxHealth) - del(src) + qdel(src) else M.visible_message("[M] takes a bite of \the [src].","You take a bite of \the [src].") playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) @@ -541,7 +541,7 @@ new/obj/effect/decal/cleanable/egg_smudge(src.loc) src.reagents.reaction(hit_atom, TOUCH) src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.") - del(src) + qdel(src) attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype( W, /obj/item/toy/crayon )) @@ -1019,7 +1019,7 @@ ..() new/obj/effect/decal/cleanable/pie_smudge(src.loc) src.visible_message("\red [src.name] splats.","\red You hear a splat.") - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis name = "Berry Clafoutis" @@ -1731,7 +1731,7 @@ M << "\red \The [src] expands!" var/mob/living/carbon/human/H = new (src) H.set_species(monkey_type) - del(src) + qdel(src) proc/Unwrap(mob/user as mob) icon_state = "monkeycube" @@ -2308,7 +2308,7 @@ "\blue You flatten the dough with your rolling pin!" \ ) new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src.loc) - del(src) + qdel(src) /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels @@ -3253,16 +3253,16 @@ if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) new /obj/item/weapon/reagent_containers/food/snacks/dough(src) user << "You make some dough." - del(W) - del(src) + qdel(W) + qdel(src) // Egg + flour = dough /obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/flour)) new /obj/item/weapon/reagent_containers/food/snacks/dough(src) user << "You make some dough." - del(W) - del(src) + qdel(W) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" @@ -3382,7 +3382,7 @@ if(istype(W,/obj/item/weapon/kitchen/utensil/knife)) new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(src) user << "You cut the potato." - del(src) + qdel(src) else ..() diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm index b49e6187d99..b05478ca01b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm @@ -15,7 +15,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) user << "You cut the meat in thin strips." - del(src) + qdel(src) else ..() diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index 87388cb3fe3..6288a6058bc 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -346,7 +346,7 @@ attackby(var/obj/D, mob/user as mob, params) if(isprox(D)) user << "You add [D] to [src]." - del(D) + qdel(D) user.put_in_hands(new /obj/item/weapon/bucket_sensor) user.unEquip(src) qdel(src) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index b15c03ee984..fe255c9caf7 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -71,7 +71,7 @@ for(var/atom/T in get_turf(D)) D.reagents.reaction(T) sleep(3) - del(D) + qdel(D) /obj/item/weapon/reagent_containers/spray/attack_self(var/mob/user) @@ -200,7 +200,7 @@ for(var/atom/t in get_turf(D)) D.reagents.reaction(t) sleep(2) - del(D) + qdel(D) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index e53a9c15c4c..c0d29bd79e0 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -305,7 +305,7 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!"), 1) user.unEquip(src) - del(src) + qdel(src) return for(var/mob/O in viewers(world.view, user)) diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index 965110d220b..ac70be0f387 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -25,7 +25,7 @@ in_chamber.name = S.name syringes.Remove(S) - del(S) + qdel(S) return 1 /obj/item/weapon/gun/syringe/examine() diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index fc6f51bf037..8eddccfac04 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -252,7 +252,7 @@ src.transfer_fingerprints_to(P) P.dir = dir - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 3b57147aba8..9c32b654ec3 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -83,7 +83,7 @@ C.anchored = 1 C.density = 1 C.update() - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." @@ -117,7 +117,7 @@ GM.loc = src for (var/mob/C in viewers(src)) C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3) - del(G) + qdel(G) usr.attack_log += text("\[[time_stamp()]\] Has placed [GM.name] ([GM.ckey]) in disposals.") GM.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [usr.name] ([usr.ckey])") if(GM.ckey) @@ -460,7 +460,7 @@ AM.throw_at(target, 5, 1) H.vent_gas(loc) - del(H) + qdel(H) CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover,/obj/item) && mover.throwing) @@ -611,7 +611,7 @@ if(other.has_fat_guy) has_fat_guy = 1 - del(other) + qdel(other) // called when player tries to move while in a pipe @@ -778,7 +778,7 @@ if(AM) AM.throw_at(target, 100, 1) H.vent_gas(T) - del(H) + qdel(H) else // no specified direction, so throw in random direction @@ -794,7 +794,7 @@ AM.throw_at(target, 5, 1) H.vent_gas(T) // all gas vent to turf - del(H) + qdel(H) return @@ -822,7 +822,7 @@ for(var/atom/movable/AM in H) AM.loc = T AM.pipe_eject(0) - del(H) + qdel(H) return // otherwise, do normal expel from turf @@ -830,7 +830,7 @@ expel(H, T, 0) spawn(2) // delete pipe after 2 ticks to ensure expel proc finished - del(src) + qdel(src) // pipe affected by explosion @@ -913,7 +913,7 @@ C.anchored = 1 C.update() - del(src) + qdel(src) // *** TEST verb //client/verb/dispstop() @@ -1253,7 +1253,7 @@ welded() // var/obj/item/scrap/S = new(src.loc) // S.set_components(200,0,0) - del(src) + qdel(src) // the disposal outlet machine @@ -1297,7 +1297,7 @@ if(AM) AM.throw_at(target, 3, 1) H.vent_gas(src.loc) - del(H) + qdel(H) return @@ -1330,7 +1330,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 95f149fa611..21182bd0e10 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -329,7 +329,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index df881681284..f73061bcbbc 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -192,7 +192,7 @@ var/obj/machinery/blackbox_recorder/blackbox /obj/machinery/blackbox_recorder/New() if(blackbox) if(istype(blackbox,/obj/machinery/blackbox_recorder)) - del(src) + qdel(src) blackbox = src /obj/machinery/blackbox_recorder/Destroy() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 964af1cea1f..be845f32868 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -62,7 +62,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, check_tech = new T() if(check_tech.id == ID) return_name = check_tech.name - del(check_tech) + qdel(check_tech) check_tech = null break @@ -96,7 +96,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, temp_reagent = new R() if(temp_reagent.id == ID) return_name = temp_reagent.name - del(temp_reagent) + qdel(temp_reagent) temp_reagent = null break return return_name @@ -595,7 +595,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/choice = alert("R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "Continue", "Cancel") if(choice == "Continue") screen = 0.0 - del(files) + qdel(files) files = new /datum/research(src) spawn(20) screen = 1.6 diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm index 1503e4e9c90..23413d4f0df 100644 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm @@ -59,7 +59,7 @@ datum/genesequence visible_message("\red \icon[src] [src] can not extract any more genetic data from new fossils.") if(4) src.visible_message("\blue \icon[src] [user] inserts [W] into [src], the fossil is consumed as [src] extracts genetic data from it.") - del(W) + qdel(W) updateDialog() else if (istype(W, /obj/item/weapon/storage)) var/obj/item/weapon/storage/S = W @@ -76,7 +76,7 @@ datum/genesequence if(SCANFOSSIL_RETVAL_SUCCESS) numaccepted += 1 S.remove_from_storage(F, src) //This will move the item to this item's contents - del(F) + qdel(F) updateDialog() var/outmsg = "\blue You empty all the fossils from [S] into [src]." if(numaccepted) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 9209e062657..1c772d33bf0 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -156,7 +156,7 @@ //see if we can clear out an old effect //delete it when the ids match to account for duplicate ids having different effects if(inserted_battery.battery_effect && inserted_battery.stored_charge <= 0) - del(inserted_battery.battery_effect) + qdel(inserted_battery.battery_effect) // var/datum/artifact_effect/source_effect diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm index 2d65cbb5e1e..e5a13d5fde2 100644 --- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm @@ -309,7 +309,7 @@ M.weakened = min(M.weakened, 3) src.visible_message("\blue \icon[src] [src] deactivates with a gentle shudder.") - del(suspension_field) + qdel(suspension_field) icon_state = "suspension2" /obj/machinery/suspension_gen/Destroy() diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index 1aa2a4a37eb..be3f958e3f5 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -38,7 +38,7 @@ /obj/item/device/core_sampler/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/evidencebag)) if(num_stored_bags < 10) - del(W) + qdel(W) num_stored_bags += 1 user << "\blue You insert the [W] into the core sampler." else diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index 7c55b81004a..078266508fe 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -118,11 +118,11 @@ if(index <= positive_locations.len) var/datum/depth_scan/D = positive_locations[index] positive_locations.Remove(D) - del(D) + qdel(D) else //GC will hopefully pick them up before too long positive_locations = list() - del(current) + qdel(current) else if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=depth_scanner") diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 77927deb6ca..600e8d5d86b 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -96,7 +96,7 @@ for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in destination) bug.gib() diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index becd430d4a7..17d92cf9b4e 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -52,7 +52,7 @@ target.updatehealth() target.UpdateDamageIcon() - del(tool) + qdel(tool) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, damaging [target]'s flesh!", \ diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm index 08fc98cacf0..85d0acf03a3 100644 --- a/code/modules/vehicle/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -214,7 +214,7 @@ new /obj/effect/gibspawner/robot(Tsec) new /obj/effect/decal/cleanable/blood/oil(src.loc) - del(src) + qdel(src) /obj/vehicle/proc/healthcheck() if(health <= 0) From 5255d652f00233ec850e4c5aa3903d0faa192e51 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Thu, 9 Jul 2015 05:49:56 -0400 Subject: [PATCH 13/44] Freezing is silent Ice and Applejack are now reactions without sound. --- code/modules/reagents/Chemistry-Recipes.dm | 1 + code/modules/reagents/newchem/drinks.dm | 1 + 2 files changed, 2 insertions(+) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 537eac4f6cc..9231a1c44a8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -73,6 +73,7 @@ datum result_amount = 1 max_temp = 273 mix_message = "Ice forms as the water freezes." + mix_sound = null sterilizine name = "Sterilizine" diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm index fe920178acf..637b101f32d 100644 --- a/code/modules/reagents/newchem/drinks.dm +++ b/code/modules/reagents/newchem/drinks.dm @@ -48,6 +48,7 @@ max_temp = 270 result_amount = 1 mix_message = "The drink darkens as the water freezes, leaving the concentrated cider behind." + mix_sound = null /datum/reagent/ethanol/jackrose name = "Jack Rose" From 2bcaaf421e00f27750f465c5271b7a18ace7c4c7 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 9 Jul 2015 19:04:29 -0400 Subject: [PATCH 14/44] Fixes Explosions Acting on Lighting Overlay --- code/game/objects/explosion.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 765d35d4b30..443c553cc3f 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -118,7 +118,7 @@ if(T) for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway var/atom/movable/AM = atom_movable - if(AM) AM.ex_act(dist) + if(AM && AM.simulated) AM.ex_act(dist) if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density) PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience! if(dist > 0) From 54f59b98994e39fde4c7cb0bd23235c127e65289 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 9 Jul 2015 19:51:40 -0400 Subject: [PATCH 15/44] Pass II --- code/_onclick/telekinesis.dm | 2 +- code/datums/cargoprofile.dm | 24 +++++++++---------- .../helper_datums/construction_datum.dm | 4 ++-- code/datums/spells/horsemask.dm | 2 +- code/game/atoms.dm | 4 ++-- code/game/gamemodes/events/biomass.dm | 22 ++++++++--------- code/game/gamemodes/wizard/artefact.dm | 4 ++-- code/game/gamemodes/wizard/spellbook.dm | 4 ++-- code/game/machinery/atmoalter/canister.dm | 2 +- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/doors/firedoor.dm | 2 +- code/game/machinery/programmable_unloader.dm | 4 ++-- code/game/mecha/equipment/mecha_equipment.dm | 2 +- code/game/mecha/mecha_construction_paths.dm | 6 ++--- code/game/mecha/working/ripley.dm | 2 +- .../objects/effects/decals/Cleanable/fuel.dm | 2 +- .../objects/effects/decals/warning_stripes.dm | 2 +- code/game/objects/items/devices/autopsy.dm | 2 +- code/game/objects/items/random_items.dm | 12 +++++----- code/game/objects/items/weapons/grenades.dm | 2 +- .../items/weapons/grenades/chem_grenade.dm | 2 +- .../objects/items/weapons/implants/implant.dm | 2 +- code/game/objects/random/random.dm | 2 +- code/game/objects/structures/door_assembly.dm | 2 +- .../structures/stool_bed_chair_nest/stools.dm | 4 ++-- code/game/turfs/simulated/walls.dm | 6 +++-- code/game/turfs/simulated/walls_reinforced.dm | 2 +- code/modules/computer3/laptop.dm | 4 ++-- code/modules/computer3/program.dm | 2 +- code/modules/economy/ATM.dm | 2 +- code/modules/jungle/jungle_temple.dm | 2 +- code/modules/jungle/jungle_turfs.dm | 2 +- .../mob/living/carbon/metroid/metroid.dm | 2 +- .../living/simple_animal/friendly/corgi.dm | 2 +- .../simple_animal/hostile/retaliate/undead.dm | 6 ++--- .../living/simple_animal/hostile/russian.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 4 ++-- .../modules/mob/living/simple_animal/shade.dm | 2 +- code/modules/projectiles/targeting.dm | 4 ++-- code/modules/reagents/newchem/toxins.dm | 6 +++-- code/modules/shieldgen/shield_gen.dm | 4 ++-- code/modules/virus2/effect.dm | 2 +- code/modules/virus2/items_devices.dm | 4 ++-- 43 files changed, 90 insertions(+), 86 deletions(-) diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 30d4fc58223..9b4dd88e67e 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -143,7 +143,7 @@ var/const/tk_maxrange = 15 proc/focus_object(var/obj/target, var/mob/living/user) if(!istype(target,/obj)) return//Cant throw non objects atm might let it do mobs later if(target.anchored || !isturf(target.loc)) - del src + qdel(src) return focus = target update_icon() diff --git a/code/datums/cargoprofile.dm b/code/datums/cargoprofile.dm index 90b7930937b..282d402a74d 100644 --- a/code/datums/cargoprofile.dm +++ b/code/datums/cargoprofile.dm @@ -384,13 +384,13 @@ if(istype(W,/obj/item/stack)) var/obj/item/stack/I = W if(!I.amount) // todo: am I making a bad assumption here? - del I + qdel(I) return for(var/obj/item/stack/O in master.contents) if(O.type == I.type && O.amount < O.max_amount) if(I.amount + O.amount <= O.max_amount) O.amount += I.amount - del I + qdel(I) return O.w_class var/leftover = I.amount + O.amount - O.max_amount O.amount = O.max_amount @@ -403,13 +403,13 @@ if(istype(W,/obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/I = W if(!I.amount) // todo: am I making a bad assumption here? - del I + qdel(I) return for(var/obj/item/stack/cable_coil/O in master.contents) if(O.type == I.type && O.amount < MAXCOIL) if(I.amount + O.amount <= MAXCOIL) O.amount += I.amount - del I + qdel(I) return O.w_class var/leftover = I.amount + O.amount - MAXCOIL O.amount = MAXCOIL @@ -473,7 +473,7 @@ if(O.type == I.type && O.amount < O.max_amount) if(I.amount + O.amount <= O.max_amount) O.amount += I.amount - del I + qdel(I) return var/leftover = I.amount + O.amount - O.max_amount O.amount = O.max_amount @@ -489,7 +489,7 @@ if(I.amount + O.amount <= MAXCOIL) // Why did they make it a #define. O.amount += I.amount O.update_icon() - del I + qdel(I) return var/leftover = I.amount + O.amount - MAXCOIL // That wasn't a question O.amount = MAXCOIL // It was a complaint @@ -572,13 +572,13 @@ outlet_reaction(var/atom/W,var/turf/D) if(istype(W,/obj/item/weapon/paper/crumpled)) - del W + qdel(W) return if(istype(W,/obj/item/weapon/clipboard) || istype(W,/obj/item/weapon/folder)) // destroy folder, various effects on contents for(var/obj/item/I in W.contents) if(prob(25))//JUNK IT - del I + qdel(I) else if(prob(50)) //We've been over this. I can't just take it apart with a crowbar. var/obj/item/weapon/paper/crumpled/P = new(master.loc) if(I.name) @@ -589,11 +589,11 @@ if(istype(I,/obj/item/weapon/paper)) var/obj/item/weapon/paper/O = I P.info = garble_keeptags(O.info) - del I + qdel(I) ..(P,D) else ..(I,D) // Eject - del W //destroy container + qdel(W) //destroy container return if(prob(50)) //JUNK IT NOW! var/obj/item/weapon/paper/crumpled/P = new(master.loc) @@ -612,10 +612,10 @@ P.info = garble_keeptags(B.dat) if(B.carved && B.store) ..(B.store,D) - del W + qdel(W) ..(P,D) else //I want it junked - del W + qdel(W) return /datum/cargoprofile/unary/gibber diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 0eb4d73dfde..3266887dafa 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -13,7 +13,7 @@ holder = atom if(!holder) //don't want this without a holder spawn - del src + qdel(src) set_desc(steps.len) return @@ -97,7 +97,7 @@ new result(get_turf(holder)) spawn() - del holder + qdel(holder) return proc/set_desc(index as num) diff --git a/code/datums/spells/horsemask.dm b/code/datums/spells/horsemask.dm index 035a3ab7416..990418077af 100644 --- a/code/datums/spells/horsemask.dm +++ b/code/datums/spells/horsemask.dm @@ -41,7 +41,7 @@ target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \ "Your face burns up, and shortly after the fire you realise you have the face of a horse!") if(!target.unEquip(target.wear_mask)) - del target.wear_mask + qdel(target.wear_mask) target.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) flick("e_flash", target.flash) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 1d4c97c506c..eadaf5704ff 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -160,7 +160,7 @@ its easier to just keep the beam vertical. for(var/obj/effect/overlay/beam/O in orange(10,src)) //This section erases the previously drawn beam because I found it was easier to if(O.BeamSource==src) //just draw another instance of the beam instead of trying to manipulate all the - del O //pieces to a new orientation. + qdel(O) //pieces to a new orientation. var/Angle=round(Get_Angle(src,BeamTarget)) var/icon/I=new(icon,icon_state) I.Turn(Angle) @@ -215,7 +215,7 @@ its easier to just keep the beam vertical. break sleep(3) //Changing this to a lower value will cause the beam to follow more smoothly with movement, but it will also be more laggy. //I've found that 3 ticks provided a nice balance for my use. - for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) del O + for(var/obj/effect/overlay/beam/O in orange(10,src)) if(O.BeamSource==src) qdel(O) //All atoms diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index c8641e65726..9bc0bbe330d 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -23,24 +23,24 @@ /obj/effect/biomass/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if (!W || !user || !W.type) return switch(W.type) - if(/obj/item/weapon/circular_saw) del src - if(/obj/item/weapon/kitchen/utensil/knife) del src - if(/obj/item/weapon/scalpel) del src - if(/obj/item/weapon/twohanded/fireaxe) del src - if(/obj/item/weapon/hatchet) del src - if(/obj/item/weapon/melee/energy) del src + if(/obj/item/weapon/circular_saw) qdel(src) + if(/obj/item/weapon/kitchen/utensil/knife) qdel(src) + if(/obj/item/weapon/scalpel) qdel(src) + if(/obj/item/weapon/twohanded/fireaxe) qdel(src) + if(/obj/item/weapon/hatchet) qdel(src) + if(/obj/item/weapon/melee/energy) qdel(src) //less effective weapons if(/obj/item/weapon/wirecutters) - if(prob(25)) del src + if(prob(25)) qdel(src) if(/obj/item/weapon/shard) - if(prob(25)) del src + if(prob(25)) qdel(src) else //weapons with subtypes - if(istype(W, /obj/item/weapon/melee/energy/sword)) del src + if(istype(W, /obj/item/weapon/melee/energy/sword)) qdel(src) else if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) del src + if(WT.remove_fuel(0, user)) qdel(src) else return ..() @@ -155,7 +155,7 @@ return /obj/effect/biomass/fire_act(null, temp, volume) //hotspots kill biomass - del src + qdel(src) /datum/event/biomass/start() biomass_infestation() diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 43c85164a2f..786d3f1f08e 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -172,13 +172,13 @@ new /mob/living/simple_animal/cow(loc) cowsleft-- if(cowsleft <= 0) - del src + qdel(src) /obj/effect/rend/cow/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weapon/nullrod)) visible_message("\red [I] strikes a blow against \the [src], banishing it!") spawn(1) - del src + qdel(src) return ..() diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 483966e0ca1..7d2e889c10e 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -677,9 +677,9 @@ magichead.flags_inv = null //so you can still see their face magichead.voicechange = 1 //NEEEEIIGHH if(!user.unEquip(user.wear_mask)) - del user.wear_mask + qdel(user.wear_mask) user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) - del src + qdel(src) else user <<"I say thee neigh" diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 8ab3b3e626a..c79bce5a9b9 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -340,7 +340,7 @@ update_flag user << "\blue You salvage whats left of \the [src]" var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src.loc) M.amount = 3 - del src + qdel(src) return if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ac9829abbef..72946cc4ef2 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -250,7 +250,7 @@ /obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature) atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) new/obj/structure/door_assembly( src.loc ) - del (src) + qdel(src) /obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ return 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index da899d48626..cc65584c2e3 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -25,7 +25,7 @@ for(var/obj/machinery/door/firedoor/F in loc) if(F != src) spawn(1) - del src + qdel(src) return . var/area/A = get_area(src) diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index 2af4c5e0fbf..1076467f187 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -100,9 +100,9 @@ for(var/datum/cargoprofile/p in emag_overrides + overrides + profiles) p.master = src - del C + qdel(C) else - del O + qdel(O) /obj/machinery/programmable/attack_hand(mob/user as mob) if(stat) // moved, or something else diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 4ca4d89acfb..15f0b7e8aa9 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -58,7 +58,7 @@ else chassis.occupant << sound('sound/mecha/critdestr.ogg',volume=50) spawn - del src + qdel(src) return /obj/item/mecha_parts/mecha_equipment/proc/critfail() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index dafe37eb50b..b201b83993d 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -879,7 +879,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "durand0" const_holder.density = 1 - del src + qdel(src) return /datum/construction/reversible/mecha/durand @@ -1161,7 +1161,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "phazon0" const_holder.density = 1 - del src + qdel(src) return /datum/construction/reversible/mecha/phazon @@ -1477,7 +1477,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "odysseus0" const_holder.density = 1 - del src + qdel(src) return diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index dd9a4480e3d..a50b3e5d225 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -101,7 +101,7 @@ var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp HC.attach(src) for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily - del (B) + qdel(B) /obj/mecha/working/ripley/Exit(atom/movable/O) if(O in cargo) diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 5cc3ebd3fe0..aad9f5ab4bf 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -14,7 +14,7 @@ obj/effect/decal/cleanable/liquid_fuel if(other != src) other.amount += src.amount spawn other.Spread() - del src + qdel(src) Spread() . = ..() diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index 3270e9882a9..dbec481e944 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -53,7 +53,7 @@ /obj/effect/decal/warning_stripes/New() . = ..() loc.overlays += src - del src + qdel(src) // Credit to Neinhaus for making these into individual decals. diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index d0e9ba8fcdf..6f815fee0c9 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -68,7 +68,7 @@ else D.organ_names += ", [O.name]" - del D.organs_scanned[O.name] + qdel(D.organs_scanned[O.name]) D.organs_scanned[O.name] = W.copy() for(var/V in O.trace_chemicals) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 1d63ff3e972..5ad2f715f65 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -9,7 +9,7 @@ var/T = pick(types) new T(loc) spawn(1) - del src + qdel(src) // ------------------------------------- // Random cleanables, clearly this makes sense @@ -23,7 +23,7 @@ var/T = pick(list) new T(loc) spawn(0) - del src + qdel(src) /obj/item/stack/sheet/animalhide/random @@ -34,7 +34,7 @@ var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey) var/obj/item/stack/S = new htype(loc) S.amount = amount - del src + qdel(src) // ------------------------------------- // Not yet identified chemical. @@ -115,7 +115,7 @@ pixel_x = rand(-5,5) pixel_y = rand(-5,5) spawn(0) - del src + qdel(src) /obj/item/weapon/storage/pill_bottle/random_meds name = "unlabelled pillbottle" @@ -311,9 +311,9 @@ Cat2.desc = "It's was alive the whole time!" sleep(2) if(prob(50)) - del Cat1 + qdel(Cat1) else - del Cat2 + qdel(Cat2) ..() // -------------------------------------- diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index 3948431179b..b8badd98707 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -458,4 +458,4 @@ A:prime() if(istype(A,/obj/singularity)) // I can't emphasize enough how much you should never use this grenade A:energy = 200 - del src + qdel(src) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9f0297ba79c..28bea3240a3 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -266,7 +266,7 @@ update_mob() invisibility = INVISIBILITY_MAXIMUM //kaboom - del nadeassembly // do this now to stop infrared beams + qdel(nadeassembly) // do this now to stop infrared beams var/end_temp = 0 for(var/obj/item/weapon/reagent_containers/glass/G in beakers) G.reagents.trans_to(src, G.reagents.total_volume) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 6a80270c946..e9a58e5307d 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -552,7 +552,7 @@ the implant may become unstable and either pre-maturely inject the subject or si imp_in.put_in_hands(scanned) else scanned.loc = t - del src + qdel(src) implanted(mob/source as mob) src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 7e330c7c0f2..7b54984399a 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -11,7 +11,7 @@ ..() if (!prob(spawn_nothing_percentage)) spawn_item() - del src + qdel(src) // this function should return a specific item to spawn diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 8a6e9a2e3e3..698592e9c5f 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -174,7 +174,7 @@ obj/structure/door_assembly if(!src || !WT.isOn()) return user << "\blue You dissasembled the airlock assembly!" new /obj/item/stack/sheet/metal(src.loc, 4) - del (src) + qdel(src) else user << "\blue You need more welding fuel." return diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index abb20b8d367..726964e7ef3 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -58,7 +58,7 @@ origin.loc = get_turf(src) user.unEquip(src) user.visible_message("\blue [user] puts [src] down.", "\blue You put [src] down.") - del src + qdel(src) /obj/item/weapon/stool/attack(mob/M as mob, mob/user as mob) if (prob(5) && istype(M,/mob/living)) @@ -66,7 +66,7 @@ user.unEquip(src) var/obj/item/stack/sheet/metal/m = new/obj/item/stack/sheet/metal m.loc = get_turf(src) - del src + qdel(src) var/mob/living/T = M T.Weaken(5) return diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 3cb23d1e3e8..5ee2a50cf87 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -39,7 +39,9 @@ qdel(E) /turf/simulated/wall/ChangeTurf(var/newtype) - for(var/obj/effect/E in src) if(E.name == "Wallrot") del E + for(var/obj/effect/E in src) + if(E.name == "Wallrot") + qdel(E) var/dsr=0 if(del_suppress_resmoothing) dsr=1 ..(newtype) @@ -300,7 +302,7 @@ user << "You burn away the fungi with \the [WT]." playsound(src, 'sound/items/Welder.ogg', 10, 1) for(var/obj/effect/E in src) if(E.name == "Wallrot") - del E + qdel(E) rotting = 0 return else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 670ff0aa50e..6d7a6d9e5e9 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -50,7 +50,7 @@ user << "You burn away the fungi with \the [WT]." playsound(src, 'sound/items/Welder.ogg', 10, 1) for(var/obj/effect/E in src) if(E.name == "Wallrot") - del E + qdel(E) rotting = 0 return else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) diff --git a/code/modules/computer3/laptop.dm b/code/modules/computer3/laptop.dm index 6880935e495..e4e3876e89f 100644 --- a/code/modules/computer3/laptop.dm +++ b/code/modules/computer3/laptop.dm @@ -52,7 +52,7 @@ O.loc = loc usr << "\The [src] crumbles to pieces." spawn(5) - del src + qdel(src) return if(!stored_computer.manipulating) @@ -65,7 +65,7 @@ spawn(5) stored_computer.manipulating = 0 - del src + qdel(src) else usr << "\red You are already opening the computer!" diff --git a/code/modules/computer3/program.dm b/code/modules/computer3/program.dm index ebead299e1e..f1f68c0890d 100644 --- a/code/modules/computer3/program.dm +++ b/code/modules/computer3/program.dm @@ -111,7 +111,7 @@ Programs are a file that can be executed update_icon() if(popup) popup.close() - del popup + qdel(popup) return /* diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index fad9c88110b..e09a3b887c5 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -115,7 +115,7 @@ log transactions user << "You insert [I] into [src]." src.attack_hand(user) - del I + qdel(I) else ..() diff --git a/code/modules/jungle/jungle_temple.dm b/code/modules/jungle/jungle_temple.dm index e28388e8d7d..88be7ed4398 100644 --- a/code/modules/jungle/jungle_temple.dm +++ b/code/modules/jungle/jungle_temple.dm @@ -332,7 +332,7 @@ myloc.overlays += flicker spawn(8) myloc.overlays -= flicker - del flicker + qdel(flicker) //flick("flameburst",src) if("plasma_gas") //spawn a bunch of plasma diff --git a/code/modules/jungle/jungle_turfs.dm b/code/modules/jungle/jungle_turfs.dm index 8ee61c3c6bc..ffc5391ed8f 100644 --- a/code/modules/jungle/jungle_turfs.dm +++ b/code/modules/jungle/jungle_turfs.dm @@ -53,7 +53,7 @@ New() ..() for(var/obj/structure/bush/B in src) - del B + qdel(B) /turf/unsimulated/jungle/proc/Spread(var/probability, var/prob_loss = 50) if(probability <= 0) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index baf92b5d3ae..aede207673f 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -885,7 +885,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 G.loc = src.loc G.key = ghost.key G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost." - del (src) + qdel(src) proc/announce_to_ghosts() diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 8d3a43e9ab4..df86545879b 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -668,5 +668,5 @@ s.set_up(3, 1, src) s.start() respawnable_list += src - del src + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 417e4d99f3e..01178af83f2 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -69,7 +69,7 @@ ..() /mob/living/simple_animal/hostile/retaliate/ghost/Die() new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(loc) - del src + qdel(src) return /mob/living/simple_animal/hostile/retaliate/skeleton @@ -107,7 +107,7 @@ /mob/living/simple_animal/hostile/retaliate/skeleton/Die() new /obj/effect/decal/remains/human(loc) - del src + qdel(src) return /mob/living/simple_animal/hostile/retaliate/zombie @@ -145,5 +145,5 @@ /mob/living/simple_animal/hostile/retaliate/zombie/Die() new /obj/effect/decal/cleanable/blood/gibs(loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index b594de5e398..d1140f38c5b 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -57,5 +57,5 @@ new corpse (src.loc) if(weapon1) new weapon1 (src.loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index d7ac5db34f6..a83eddf5e84 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -42,7 +42,7 @@ new weapon1 (src.loc) if(weapon2) new weapon2 (src.loc) - del src + qdel(src) return ///////////////Sword and shield//////////// @@ -165,5 +165,5 @@ /mob/living/simple_animal/hostile/viscerator/Die() ..() visible_message("\red [src] is smashed into pieces!") - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index aa1a9509b5a..c722ac36e80 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -36,7 +36,7 @@ if((M.client && !( M.blinded ))) M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") ghostize() - del src + qdel(src) return diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 38eff406441..c3f7b695ef5 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -223,8 +223,8 @@ mob/living/proc/NotTargeted(var/obj/item/weapon/gun/I) if(T && ismob(T) && !I.target) T.client.remove_gun_icons() if(!targeted_by.len) - del target_locked //Remove the overlay - del targeted_by + qdel(target_locked) //Remove the overlay + qdel(targeted_by) spawn(1) update_targeted() mob/living/Move() diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index 4626e317121..24592a19ade 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -249,7 +249,7 @@ datum/reagent/facid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(method == TOUCH) if(H.wear_mask) if(!H.wear_mask.unacidable) - qdel (H.wear_mask) + qdel(H.wear_mask) H.update_inv_wear_mask() H << "\red Your mask melts away but protects you from the acid!" else @@ -574,7 +574,9 @@ datum/reagent/atrazine/reaction_turf(var/turf/T, var/volume) var/turf/simulated/wall/W = T if(W.rotting) W.rotting = 0 - for(var/obj/effect/E in W) if(E.name == "Wallrot") del E + for(var/obj/effect/E in W) + if(E.name == "Wallrot") + qdel(E) for(var/mob/O in viewers(W, null)) O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 09c327482e3..6755c2b8a47 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -259,14 +259,14 @@ for(var/turf/O in covered_turfs) var/obj/effect/energy_field/E = new(O) field.Add(E) - del covered_turfs + qdel(covered_turfs) for(var/mob/M in view(5,src)) M << "\icon[src] You hear heavy droning start up." else for(var/obj/effect/energy_field/D in field) field.Remove(D) - del D + qdel(D) for(var/mob/M in view(5,src)) M << "\icon[src] You hear heavy droning fade out." diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 4a2ac380a55..b3c7154ea79 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -71,7 +71,7 @@ new/mob/living/carbon/alien/larva(mob.loc) var/datum/disease2/disease/D = mob:virus2 mob:gib() - del D + qdel(D) /datum/disease2/effect/invisible diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index fbbc64f79b8..6008c5b8879 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -64,7 +64,7 @@ if(airborne_can_reach(get_turf(src), get_turf(target))) if(get_infection_chance(target)) infect_virus2(target,src.virus2) - del src + qdel(src) /obj/item/weapon/virusdish/examine() usr << "This is a virus containment dish." @@ -84,7 +84,7 @@ if(prob(50)) user << "\The [src] shatters!" - del src + qdel(src) ///////////////GNA DISK/////////////// From 41b64d9917d82e0cb173428376577ee995125155 Mon Sep 17 00:00:00 2001 From: Krausus Date: Fri, 10 Jul 2015 05:00:53 -0400 Subject: [PATCH 16/44] Tweaks explosion throwing Explosions now calculate throwing distances sanely, don't spin everything they throw, and don't permanently change the speed things go when thrown by players. --- code/game/atoms_movable.dm | 7 ++----- code/game/objects/explosion.dm | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 70e78c96fc2..ae10059f504 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -110,7 +110,7 @@ if(A.density && !A.throwpass) // **TODO: Better behaviour for windows which are dense, but shouldn't always stop movement src.throw_impact(A,speed) -/atom/movable/proc/throw_at(atom/target, range, speed, thrower) +/atom/movable/proc/throw_at(atom/target, range, speed, thrower, no_spin) if(!target || !src || (flags & NODROP)) return 0 //use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target @@ -119,7 +119,7 @@ src.thrower = thrower src.throw_source = get_turf(src) //store the origin turf if(target.allow_spin) // turns out 1000+ spinning objects being thrown at the singularity creates lag - Iamgoofball - if(!no_spin_thrown) + if(!no_spin_thrown && !no_spin) SpinAnimation(5, 1) var/dist_x = abs(target.x - src.x) var/dist_y = abs(target.y - src.y) @@ -140,9 +140,6 @@ var/area/a = get_area(src.loc) if(dist_x > dist_y) var/error = dist_x/2 - dist_y - - - while(src && target &&((((src.x < target.x && dx == EAST) || (src.x > target.x && dx == WEST)) && dist_travelled < range) || (a && a.has_gravity == 0) || istype(src.loc, /turf/space)) && src.throwing && istype(src.loc, /turf)) // only stop when we've gone the whole distance (or max throw range) and are on a non-space tile, or hit something, or hit the end of the map, or someone picks it up if(error < 0) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 443c553cc3f..fd861b1e99f 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -103,7 +103,7 @@ dist += D.explosion_block var/flame_dist = 0 - var/throw_dist = dist + var/throw_dist = max_range - dist if(dist < flame_range) flame_dist = 1 @@ -126,14 +126,16 @@ //--- THROW ITEMS AROUND --- - var/throw_dir = get_dir(epicenter,T) - for(var/obj/item/I in T) - spawn(0) //Simultaneously not one at a time - if(I && !I.anchored) - var/throw_range = rand(throw_dist, max_range) - var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) - I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything) - I.throw_at(throw_at, throw_range, 2)//Throw it at 2 speed, this is purely visual anyway. + if(throw_dist > 0) + var/throw_dir = get_dir(epicenter,T) + for(var/obj/item/I in T) + spawn(0) //Simultaneously not one at a time + if(I && !I.anchored) + var/throw_mult = 0.5 + (0.5 * rand()) // Between 0.5 and 1.0 + var/throw_range = round((throw_dist + 1) * throw_mult) // Roughly 50% to 100% of throw_dist + if(throw_range > 0) + var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) + I.throw_at(throw_at, throw_range, 2, no_spin = 1)//Throw it at 2 speed, this is purely visual anyway. var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare From 068adc1f0a1f1346d82c571d517f18ac7b328266 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 10 Jul 2015 05:44:29 -0400 Subject: [PATCH 17/44] Shard Runtime Fix --- code/game/objects/items/weapons/shards.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index e6f38335a82..bc7c6dca09a 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -67,6 +67,8 @@ if( !H.shoes && ( !H.wear_suit || !(H.wear_suit.body_parts_covered & FEET) ) ) var/obj/item/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) + if(!affecting) + return if(affecting.status & ORGAN_ROBOT) return H.Weaken(3) From 8a8011acbfc25addb873600d9453ac6b6717b3e8 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Fri, 10 Jul 2015 09:46:30 -0400 Subject: [PATCH 18/44] Kitchen Machine Refactor and Max Item fix Refactors the code for Microwaves, Ovens, Grills, and Candy Makers to utilize a shared parent which holds the common procs. - This means any new additions or fixes will only need to be implemented in one place, rather than 4, to affect them all. - Also reduces file sizes on the individual machines' files by removing a lot of the duplicate code Updated the code for the kitchen machines to be more modular and fixed some issues. - Replaced color macros with span classes - Replaced hardcoded names with src references - Each machine has a cook_verbs list which is used to create the in use message (Microwaving in progress) - Each machine has variables to define the icon states for the different states of the machine (on, off, broken, dirty, open). - Changed a few formerly global variables to not be global, as this would cause issues with the shared code (microwave with candy maker recipes for example) Fixed a bug where the microwave would be considered "full" before having all of the ingredients for a recipe - Created a new proc to count the number of items and fruits in a recipe to determine the max_n_items value Map Edits to Cyberiad and associated Z-levels for pathing changes (map-merged) - MetaStation will need to be updated as well, I'll do this in another PR unless someone else beats me to it. --- _maps/map_files/cyberiad/cyberiad.dmm | 12 +- _maps/map_files/cyberiad/z2.dmm | 20 +- _maps/map_files/cyberiad/z4.dmm | 8 +- _maps/map_files/cyberiad/z5.dmm | 6 +- _maps/map_files/cyberiad/z6.dmm | 4 +- _maps/map_files/cyberiad/z8.dmm | 4 +- code/_globalvars/unused.dm | 2 +- code/datums/recipe.dm | 9 + code/game/machinery/constructable_frame.dm | 8 +- .../game/machinery/kitchen/kitchen_machine.dm | 386 +++++++++++++++++ code/game/machinery/kitchen/microwave.dm | 388 +---------------- code/modules/food/candy_maker.dm | 391 +----------------- code/modules/food/grill_new.dm | 387 +---------------- code/modules/food/oven_new.dm | 387 +---------------- paradise.dme | 1 + 15 files changed, 477 insertions(+), 1536 deletions(-) create mode 100644 code/game/machinery/kitchen/kitchen_machine.dm diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 44a7bb9f455..a6748ac7718 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -2820,13 +2820,13 @@ "bcl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcm" = (/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bco" = (/obj/machinery/camera{c_tag = "Kitchen"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/candy_maker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcp" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/grill,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bco" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bcp" = (/obj/machinery/camera{c_tag = "Kitchen"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/kitchen_machine/candy_maker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcr" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcs" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bcr" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/kitchen_machine/grill,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bcs" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/kitchen_machine/oven,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bct" = (/obj/machinery/cooker/deepfryer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcu" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/oven,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bcu" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bcv" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "bcw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "bcx" = (/turf/simulated/floor,/area/hydroponics) @@ -8079,7 +8079,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvaWraBmaBmaBmaBmaBmaBmaWraAvaJnazEaWuaWvaAvaWxaWyaWzaWzaWAaAyaWBaUCaWCaWDaYgcZRaWFaWGaWHaWHaWIaWJaWJaWJaWKaWLaWLaWMaWNaWOaWHaWHaWPaWQaWRaWSaWTaWTaWUbdkaWVaWQaWQaWQaWWaUWaUXaUYaUZaUZaUZaUZaWXaUZaUZaUZaUZaUZaUZaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXiaXiaXjaXkaXkaXkaXlaVyaVyaVyaXmaXnaVyaINaXoaXpaVDaVDaXqaVDaXraXsaVGaXtaSdaXuaXvaXwaXxaXyaSdaXzaXAaXBaXCaXDaXEaSlaFSaXGaFSaSlaSlaSlaSoaSlaSlaSqaLHaOQaXHaQFaQFaQFaXIaQFaXJaOVaOVaOVaOVaOVaOVaOVaXKaOVaPfaPfaPeaPfaXLaXMaNqaXNaXOaXPaXQaXRaXSaXTaXUaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaIfazEaAvaCzaBmaXWaXXaXYaXZaBmaCzaAvaAvazEaYcaSPaAvaYdaYeaWzaWzaWAaAyaYfaUCaFzaWDaYgaUGaYhaYiaUGaUGaYjaYkaYlaUGaYmaYnaYoaYnaYpaYqaYnaYnaYraYnaYnaYsaYtaYnaYuaYsaYvaVTaUGaUGaYwaYxaYyaYzaYAaYBaYAaYCaYDaYCaYCaYCaYCaYCaYCaYEaYFaYGaYGaYGaYGaYHaYGaYIaYJaYGaYGaYKaYLaYMaYMaYMaYMaYMaYMaYMaYNaVyaVyaINaYOaYPaYQaYRaYRaYSaYTaXsaVGaYUaSdaSdaSdaSdaSdaYVaSdaYWaYXaYYaYZaTQaZaaSlaZbaZcaZdaZeaZfaZgaZhaZiaSlaSqaWaaOQaZjaZkaQFaZlaZmaQFaZnaZnaOQaZoaZpbeKaNqaZraZsaZtaPfaPfaZuaZvaNqaZwaNqaZxaXOaZyaZzaZAaXOaXOaZBaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaAyaAvaWraBmaGTaFzaFzaGUaBmaWraBmaZDaZEaZFaZGaAvaZHaZHaUzaZHaUAaAyaZIaUCaFzaAyaSUaSUaZJaZKaZKaZKaZKaZKaZKaZLaZMaZKaZKaZKaZKaZKaZKaZNaZOaZPaZPaZQaZPaJaaGCaKiaJaaJaaZUaZVaZWaSUaZXaZXaZYaZYaZYaGEaGEaGEaGEaGEaGEaGEaGEbacaGFaGFaGGaGFaGRaGRaGRaGRaHeaGZaGRbacaHgaHgaHgaHgaHgaHgaHgaHgbaobaobaoaINbapbaqbarbarbarbarbasbatbaubavbawbaxbcjbazbaAbaBaSdaSdbaCaHhaHoaHhaHhaSlbaHbaIbaJbaJbaJbaJbaKbaLaSlbaMdcjaOQbaNaQFaZlaZlaZmaZlaQFbaOaOQbaPbaQbaRaNqaPfbaSbaTbaUbaUbaVbaWbaXbaYbaZbbabbbbbcbbdaXQaXOaXObbeaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtdcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbbfaFzbbgbbhbbibbjbbkbblbbjbbmbbnbbjbbjbbobbpbbqbbrbbsbbsbbsbbtbbsbbubbvaAybbwbbxbbyaZKbbzbbAbbBbbCbbDbbBbbEbbFbbGbbHbbIbbJaZKbbKbbLaZPbdjbdgbdiaJabdhbbObbNaJabbQaHEbbSbbQbbQbbQbbTaUZaVeaGEaaaaaaaaaaaaaaaaaaaaabacbbVbbWbbXbbYbbZbcabcbbccbcdbcebcfbacaaaaaaaaaaaaaaaaaaaaaaHgbchaVybciaINcrgbaqbavbavbavbavbavbckbclbavbavbavbaybcmbcmbcnbcobcpbcqbcrbcsbctbcuaSlbcvbcwbcxbcybcybcxbczbcAaSlaSqaLHaOQbcCbcDaQFaZlaZmaQFbcEbcEaOQaOQbcFaOQaNqbcGaZsaZvbcHbcHbcIaZvaNqaNqaNqbcJaXObcKbcKbcLbcKaXObcMaFTaabaaaaaabcNaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbbfaFzbbgbbhbbibbjbbkbblbbjbbmbbnbbjbbjbbobbpbbqbbrbbsbbsbbsbbtbbsbbubbvaAybbwbbxbbyaZKbbzbbAbbBbbCbbDbbBbbEbbFbbGbbHbbIbbJaZKbbKbbLaZPbdjbdgbdiaJabdhbbObbNaJabbQaHEbbSbbQbbQbbQbbTaUZaVeaGEaaaaaaaaaaaaaaaaaaaaabacbbVbbWbbXbbYbbZbcabcbbccbcdbcebcfbacaaaaaaaaaaaaaaaaaaaaaaHgbchaVybciaINcrgbaqbavbavbavbavbavbckbclbavbavbavbaybcmbcmbcnbcpbcrbcqbcobcubctbcsaSlbcvbcwbcxbcybcybcxbczbcAaSlaSqaLHaOQbcCbcDaQFaZlaZmaQFbcEbcEaOQaOQbcFaOQaNqbcGaZsaZvbcHbcHbcIaZvaNqaNqaNqbcJaXObcKbcKbcLbcKaXObcMaFTaabaaaaaabcNaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbcObcPbcObcObcObcObcObcObcPbcObcObcQaFzbcRbcSbcTaFzbcUaFzbcVbcWbcXbcYbcZaAybbxbbxbdaaZKbdbbbBbbBbbBbbBbbBbbEbdcbbBbbBbbBbddaZKbbKbdeaZPbdfbbMbeFaJaaZTaZSaZRaJabdlbdmbdnbdobdpaHEbbTaUZaVeaGEaaaaaaaaaaaabacbacbacbacbdrbdsbdtbdubdvbdwbdxbdybdzbdAbdBbacbacbacbacaaaaaaaaaaaaaHgbchaVyaVyaHFbavbdDbdEbdFbavbdGbdHaLmbdIbdJbdKbavbaybdLbcmbdMbdNbcmbdObdPbdQbdRbcmbdSbdTbdUbcxbcybcybcxbdVbdWaSlaSqdauaOQbaNaQFaZlaZlaZmaZlaQFaQFbdYbdZaQFbeaaNqbebbecbedbcHbcHbeebedbefaNqbegbehaXObeibeibejbeiaXObbeaFTaHPaFTaFTaFTaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazEazEaAvaAvaAvaAvaAvaAvaAvaAvaAvazEaAybeqberbesbesbesbesbesbesbetbesbesbesaAybbxbbKbeuaZKbevbbBbbBbewbexbeybezbewbbBbbBbbBbeAaZKbbKbbLaZPbeBbqwbbPaJabeEcePcZXaJabeGbeHbeIbeJbnEaHEbeMbeNaVeaGEaGEbeQbacbacbacbeRbeSbeTbeUbeVbeVbeWbeXbeVbeYbeVbeZbfabfbbfcbfdbfebacbacbacbeQaHgaHgbchaVyaVyaINbfgbdDbdJbdFbavbfhbfibavbfjbfkbdKbavbaybcmbcmbflbfmbfnbfobfpbfqbfrbcmbfsbdTbftbcxbcybcybfubfvbdWaSlaSqaLHaOQbfxbfybfzaZlaZmbfAaQFaQFbfBaQFbfCbfDaNqbfEbfFbfGbcHbcHbfHbfGbfIaNqbfJbehaXOaXOaXOaXQaXOaXObfKbfLbfMbfNbfObfPaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfQbfQbfQbfQbfQbfQbfQbfQbfQbfQbfQbfQaabaAvaIiaFBbfSbesbfTbfUbfVbfWbfXbfYbfZbgabesbjjbgcbgdbgeaZKbgfbbBbbBbewbeybggbghbewbbBbbBbgibgjaZKbbKbbLaZPaZPbgkaZPaJabeEbeDbhSaJabglbeJbgmbeJbgnaHEbbTbgoaVeaVfaVfbgpaHQbgrbacbgsbdtbgtbeVbeVbgubgvbgwbgxbgwbgybgzbgAbgBbgCbgDbgEbacbgFaHQbgGbgHbgIbchaVyaVyaHFbavbgJbavbavbavbgKbgLbavbfjbgMbdKbavbaybcmbcmbgNbgObgPbgQbgRbgSbfrbgTaSlbgUbftbcxbcybcybcxbfvbgVaSlbgWbgXaOQbgYaOQaOQbgZaZmbhabhbaQFbhcbhdaUgbhebaZbhfbhgbhhbhibhibhjbhkbhlbaZbhmbhnaXObhoaXOaXQaXOaXObhpaFTaHPaFTaFTaHPaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 2227af646e6..3ba8c564e04 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -281,7 +281,7 @@ "fu" = (/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fv" = (/obj/structure/ninjatele{pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fw" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) -"fx" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fy" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fA" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) @@ -311,7 +311,7 @@ "fY" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod3/transit) "fZ" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod3/transit) "ga" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"gb" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"gb" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gc" = (/obj/structure/table,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gd" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) "ge" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) @@ -748,7 +748,7 @@ "ot" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "ou" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "ov" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_station/start) -"ow" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ow" = (/obj/structure/table,/obj/item/weapon/circuitboard/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ox" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oy" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oz" = (/obj/machinery/computer/shuttle_control/multi/syndicate{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -1005,7 +1005,7 @@ "tq" = (/obj/structure/table,/obj/item/weapon/card/id/centcom,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control) "tr" = (/obj/machinery/vending/dinnerware{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "ts" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"tt" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) +"tt" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "tu" = (/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) "tv" = (/obj/machinery/camera{c_tag = "CentCom Special Ops. Assault Armor North"; dir = 2; network = list("ERT","CentCom")},/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "tw" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/specops) @@ -1067,12 +1067,14 @@ "uA" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) "uB" = (/turf/unsimulated/floor{icon_state = "asteroid6"; name = "sand"},/area/centcom/specops) "uC" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"uD" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "uE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray/combat/nanites{pixel_x = 3; pixel_y = -3},/obj/item/weapon/reagent_containers/hypospray/combat/nanites,/obj/item/weapon/reagent_containers/hypospray/combat/nanites{pixel_x = -3; pixel_y = 3},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uF" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/item/bodybag/cryobag{pixel_y = 5},/obj/item/bodybag/cryobag{pixel_y = 5},/obj/item/bodybag/cryobag{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uG" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(109); req_one_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uH" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "uI" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "uJ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"uK" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "uL" = (/obj/machinery/computer/message_monitor,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uM" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uO" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "gcircuit"},/area/centcom/control) @@ -1445,7 +1447,6 @@ "Cl" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cm" = (/obj/item/stack/sheet/metal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cn" = (/obj/item/stack/sheet/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"Co" = (/obj/machinery/microwave/upgraded,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cp" = (/obj/machinery/door/window/northright{name = "bar"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cq" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cr" = (/obj/item/ashtray/glass,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -1759,7 +1760,6 @@ "It" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iu" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iv" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Iw" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Ix" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Iy" = (/obj/item/device/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Iz" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) @@ -1836,8 +1836,8 @@ afbeaSbcaUaYdYdgddemdgddemcldXcldXdWdxdwdnbdaTaUbfaVamaqarasatauavbhaxbjbkboblbm anaUaVaZbdaXdndWdxdydWdxdydecDdecDemcmdHdFbgbabdbcaYadauavbhbibjbkboaBbmbnapaqarasatauarbjbkboblbhblbmbnapaqarasatauaKaLaMaUaVaZbdaXcjdmdmdmdmdmdmdmdmdmcPbebfaVaZbgaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCcpcpcpdadacpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeDeqeqeqbsereEeFeGerbseHeHeIeJeJbseveKeveLevbseMeNeNeNeObsePeQeQeQeRbD akbdaYbbbgaTdFemcmdwemcmdwdgckdgckdydfdXeSaSaWbgaZaXalbkboblbmbnapaqaGasatauavbhbibjbkeacGeTdZeUcJarasatauavbhbibjbkaAaLaMbdaYbbbgaTcMdmdmdmdmdmdmdmdmdmdvaUbcaYbbaSaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeVcpeWdadacpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqeqeqeXeqbsereYeYeYerbseHeZeZeZeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD aabgaXbeaSbaeSdydfdHdydfdHdWdddWdddwclcDcEaVbfaSbbaTaoblbmbnapaqarasaIauavbhbibjbkboblcJfafbfcfdfeatauavbhbibjbkboblaCaLaMbgaXbeaSbacPdmdmdmdmdmdmdmdmdmcObdaZaXbeaVaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffffffgfgfhfififjfgfgfgfgfgfgfgfgfgfkfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeCcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeqbserererererbseHeIeIeIeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD -ajaSaTaUaVaWcEdwcldXdwcldXemdxemdxdHdeckcFaYbcaVbebaabavbhbibjbkboblaCbnapaqarasatauavfnfofpfqfrfsbmbnapaqarasatauavawaLaMaSaTaUaVaWdvdmdmdmdmdmdmdmdmdmdYbgbbaTaUaYaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNftfufvfwfffgfxfyfzfAfAfBfCfDfEfFfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeVeCfLcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserfNfOfPerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD -amaVbabdaYbfcFdHdecDdHdecDdycmdycmdXdgddcBaXaZaYaUaWaeboblbmbnapaqaraHatauavbhbibjbkboebfXfYfZfogaasatauavbhbibjbkboaBaLaMaVbabdaYbfcOdmdmdmdmdmdmdmdmdmdnaSbebabdaXaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffufufufffggbfyfyfyfyfygcgdgdgdgefHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpggeCghcpgidrgjcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserglgmgnerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD +ajaSaTaUaVaWcEdwcldXdwcldXemdxemdxdHdeckcFaYbcaVbebaabavbhbibjbkboblaCbnapaqarasatauavfnfofpfqfrfsbmbnapaqarasatauavawaLaMaSaTaUaVaWdvdmdmdmdmdmdmdmdmdmdYbgbbaTaUaYaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNftfufvfwfffggbfyfzfAfAfBfCfDfEfFfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeVeCfLcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserfNfOfPerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD +amaVbabdaYbfcFdHdecDdHdecDdycmdycmdXdgddcBaXaZaYaUaWaeboblbmbnapaqaraHatauavbhbibjbkboebfXfYfZfogaasatauavbhbibjbkboaBaLaMaVbabdaYbfcOdmdmdmdmdmdmdmdmdmdnaSbebabdaXaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffufufufffgfxfyfyfyfyfygcgdgdgdgefHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpggeCghcpgidrgjcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserglgmgnerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD adaYaWbgaXbccBdXdgckdXdgckdwdfdwdfcDdWdxdcaTbbaXbdbfaharasatauavbhbiaybkboblbmbnapaqarcKfngxcGeTdZbjbkboblbmbnapaqaraHaLaMaYaWbgaXbcdYdmdmdmdmdmdmdmdmdmdFaVaUaWbgaTaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNgygzgAfufufufffggBfygCgDgEgFgGgdgdgdgdfHfHgHfHgIfIfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeCcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeDbserglgmgnerbsgJeIgKeIgLbsevevevevevbsgMeNeNeNgNbsgveQeQeQgwbD alaXbfaSaTaZdccDdWddcDdWdddHcldHclckemcmcQbabeaTbgbcagbjbkboblbmbnapaFarasatauavbhbibjbkboblbmbnapaqarasatauavbhbibjazaLaMaXbfaSaTaZdndmdmdmdmdmdmdmdmdmeSaYbdbfaSbaaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNgOgPgQfufufufffggRgdgegegegegegdgdgdgdfHfHfHgSfHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpfLeCeVcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbsgTeqeqeqeqbserglgmgnerbsgJgUgUgUgLbsgVgVgVgVgVbsgMeNeNeNgNbsgveQeQeQgwbD aoaTbcaVbabbcQckemdxckemdxdXdedXdedddydfcNaWaUbaaSaZacatauavbhbibjbkaAblbmbnapaqarasatauavbhbibjbkboblbmbnapaqarasataJaLaMaTbcaVbabbdFdmdmdmdmdmdmdmdmdmcEaXbgbcaVaWaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffffffffffggWgdgdgdgdgdgdgdgdgdgdgXfHfHfHfHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpcpcpcpcpcpcpcpcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqfMeqgkeqbsergYgZhaerbsgJgJeIgLgLbshbhbhbhbhbbsgMeNeNeNgNbsgveQeQeQgwbD @@ -1995,7 +1995,7 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVAVAVAVAVAVAVAVAVxcyNyNyNBLBMBMBMBMBNBNBMBMBMBMBOyNyNyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNznBPBQBQBQBRzpaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVBSBTBTBTBTBTBUAVxcyNyNBLBVBWBXBYBZCaCbBZCcCdCeBMBMBOyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgChCgCgCfAVxcyNBLBMCiCiCiCjBZCkCkBZClCiCiCmCnBMBOxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCfAVxcBLBMCoCpCqCrCsBZCtCiCuCiCiCiCiCiCjBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCfAVxcBLBMuDCpCqCrCsBZCtCiCuCiCiCiCiCiCjBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCvAVxcCwCxCiCiCyCyCyBZCiCiBZCzCACBCCCDCEBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCFAVxcCGCxCiCiCiCiCiCHCiCiBZBMBMBMBMBMBMCIxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCJCgCgCgCKCfAVxcCLBMCMCNCOCPCiBZCiCiBZCiCQCRCSyNyNyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -2057,7 +2057,7 @@ aNaNaNaNaNHEHEHEHEHFHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHSHTHTHTHTHUHEHEHEHEHEHEHEHEHFHEHEHEHEHEHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHVFSFSFSHWFSFSFSFSHXFSFSFSFSHXEjEjEjDZaNaNFkDVDVHZDVDVEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHSHTHTHTHTHUHEIbIcIdIcIeIfIhIhIhIfIeIhIeIhIiHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDZIjIkIlDZHqFSFSHrDZImInIoHrDVFgEjEjDZaNaNaNFkaNaNaNEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEIpHTHTHTHTIqHEIhIrIrIrIrIrIhIhIhIrIrIrIrIrIsHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDVDVDVDVHuItIuDZDVDVDVDVEMaNEhEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHEIpIvIwIwHTHTIxIhIhIhIyIhIhIhIhIhIhIhIyIhIhIhHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkaNaNFkDZHsIzDZEMaNaNaNaNaNEEEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHEIpIvuKuKHTHTIxIhIhIhIyIhIhIhIhIhIhIhIyIhIhIhHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkaNaNFkDZHsIzDZEMaNaNaNaNaNEEEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHEHEHEHEHEHEHEIhIrIrIrIrIrIhIhIhIrIrIrIrIrIhHEHEHEHEHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDVDVEMaNDSDWDXDXDYGxEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNHEtDtDtDtDtDHEIBICICICICICICICICICICICICICIDHEtEtEtEtEtEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEhEjEjEjEjEjEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNHEHEHEIFIFIFIFIFjbjcjdjdjdjdjdjdjdjdjdjdjdjdjdjcjbIFIFIFIFIFHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEEEjEjEjEjEjEjFHDZEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm index b99f5a3ab8f..9fa62f5aeb2 100644 --- a/_maps/map_files/cyberiad/z4.dmm +++ b/_maps/map_files/cyberiad/z4.dmm @@ -67,6 +67,7 @@ "bo" = (/turf/simulated/wall,/area/engiestation) "bp" = (/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bq" = (/turf/simulated/wall/r_wall,/area/space) +"br" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "bs" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bu" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/engiestation) @@ -80,6 +81,7 @@ "bC" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/engiestation/solars) "bD" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/engiestation/solars) "bE" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/engiestation/solars) +"bF" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/floor/plating,/area/exploration/methlab) "bG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/engiestation) "bI" = (/obj/machinery/power/terminal,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engiestation) @@ -131,7 +133,6 @@ "cE" = (/obj/machinery/door/poddoor{id_tag = "constructiondriver2"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/engiestation) "cF" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "cH" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich,/obj/item/clothing/head/chefhat,/obj/item/weapon/storage/box/donkpockets,/obj/structure/sign/fire{pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engiestation) -"cI" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cJ" = (/obj/structure/flora/kirbyplants,/obj/machinery/light{dir = 1},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cK" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/structure/sign/singulo{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/meatballsoup,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engiestation) @@ -330,7 +331,6 @@ "gF" = (/obj/machinery/chem_heater,/turf/simulated/floor/plating,/area/exploration/methlab) "gG" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/exploration/methlab) "gH" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) -"gI" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plating,/area/exploration/methlab) "gJ" = (/obj/machinery/power/smes,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "gK" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "gL" = (/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) @@ -439,7 +439,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaaaM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaMcbcccccdblbvcfcgchciblcjckckclbncmbybybPcnbRcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalabalalalalalalalalalalalalalaeaeaeaeaeaeaeaeaeaeaeaeapaoaoauauauauauauaoauauapaZaZaZaYbTbTaZbaaZbTbTaYaZaZaZapauauaoauauauauaoauauaoapaeaealalalalalalalalalalalalaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavaLabaMaNaNaNaNbkcqcrcsbfctbkaNaNaNaNbncubybycvboboaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcwaecwaeaeaeaeaeaeaeaeaeapauauauauauauauaoauauaucxbababacyaZaZaZbaaZaZaZczbababacAaoauaoaoaoaoaoaoauauauapaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaIbhaSbobobobobobobobobocBbobobobobobobocCbybybPcDbRcEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababalalalalalalalabalabalalalalalaeaeaecwaeaeaeaeaeaeaeaeapaoaoauaoaoaoaoaoaoaoaoapaZaZaZaYbTbTaZbaaZbTbTaYcFcFcFapauauaoauauauauauauaoaoapaeaealalalalalalalalalalalalalalalalabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLabaUcHcIcJcKcLaUcMcNcObycPcQcRbybycScQcTcUcVcWaSaSaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcXapapapcYaucYauapaYaYaYaYaZbTaZaZaZbTaZaYaYaYaYapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLabaUcHbrcJcKcLaUcMcNcObycPcQcRbybycScQcTcUcVcWaSaSaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcXapapapcYaucYauapaYaYaYaYaZbTaZaZaZbTaZaYaYaYaYapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdabybydbdcaUdddddebydfboboboboboaSaSaSaSaSbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababaccwdgdhdhdgaeaeaedgdididididgdgababaYaYbTbTaZbTbTaYaYababdgdgdididididgaeaeaedgdhdhdiaeacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdjbybydbdkaUdldldmbybyaUdndodpdqaUabdsdsavabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababaccwdgdhdhdgacacaedgdgdidtdidtdgabababaYaYaYbBaYaYaYabababdgdididhdidgdgaeacacdgdhdhdgaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdubybybydvaUdxdxdybybyaUdAdBdCdCaUabaaaadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababaccwdgdhdhdFabacaeaedgdididididgdgabababaYaZbaaZaYabababdgdgdididhdidgaeaeacabdFdhdhdgaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -530,7 +530,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagk aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgAgsgBgCgkgrgsgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagjgfgfgfgfgfgfgjghgdgfgdghgjgfgfgfgfgfgfgjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgDgEgsgkgkgsgsgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagdgdgfgfgfgfgfgdgdgdgegdgdgdgfgfgfgfgfgdgdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgFgsgsgkgkgGgGgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigdgdgdgHgdgdgdgfgfgfgfgfgdgdgdgegdgdgdgiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgIgkgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkbFgkgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgJgKgfgfgfgLgJgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgJgKgfgfgfgLgJgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z5.dmm b/_maps/map_files/cyberiad/z5.dmm index e011a78faa9..84460732cd1 100644 --- a/_maps/map_files/cyberiad/z5.dmm +++ b/_maps/map_files/cyberiad/z5.dmm @@ -1132,6 +1132,7 @@ "vN" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/north_outpost) "vO" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "vP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/production) +"vQ" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "vR" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) "vS" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored) "vT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/mine/explored) @@ -1146,6 +1147,7 @@ "wc" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/mine/maintenance) "wd" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "we" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/mine/maintenance) +"wf" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/obj/machinery/light_switch{pixel_y = 23},/turf/simulated/floor,/area/mine/west_outpost) "wg" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored) "wh" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "wi" = (/obj/structure/lattice,/turf/space,/area/mine/explored) @@ -1200,7 +1202,6 @@ "xo" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) "xp" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/west_outpost) "xq" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/west_outpost) -"xr" = (/obj/structure/table,/obj/machinery/microwave,/obj/machinery/light_switch{pixel_y = 23},/turf/simulated/floor,/area/mine/west_outpost) "xt" = (/obj/machinery/recharge_station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/west_outpost) "xu" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/west_outpost) "xv" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/west_outpost) @@ -1208,7 +1209,6 @@ "xx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/west_outpost) "xz" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) "xA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"xC" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xD" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xE" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xF" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) @@ -1653,7 +1653,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodododorkrkrkdodododododododododo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdodododododododododorkrkrkrkrkdododododododododolvlvlvlvoFoFoFoFwJwJwJlvlvlvkIacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkwEbkbkwqwywzwKwwoKlvlvlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaaaacacacacacacnLwMwNwOwOwPlvlvrhlvlvlvlvlvlvlvlvaekIkIacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadorkrkrkrkrkrkrkrkdododododododorkrkrkrkrkrkdododododododododolvlvlvlvlvlvlvlvwQwRwSlvlvlvkIacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIkIkIkIkIkIacacacacacacacacbkbkbkbkbkbkbkbkbkbkwqwTwqwqwqwqwqwqwwoKlvlvlvlvlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaacacacacacnLwVwWwXwXwYlvsCqXqYlvlvlvlvlvlvlvaeaekIacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkrkdodododolvlvwZwZwZwZwZwZoMoMoMwZwZwZwZwZlvlvlvkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacackIkIlvlvlvlvlvkIkIkIkIkIacacacacacacacbkbkbkbkwqwqwqwqxdxexfwqwuxgwqxhwqwqwqoKoKoKwqlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaacacackInLxlxmxnxnxolvqTrdqVlvlvlvlvlvlvlvlvlvkIkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkdodokIlvlvlvwZxpxqxroNxtxuxvxwxxoPxzxAoNqYlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIlvlvlvlvlvlvlvlvlvlvkIkIkIkIkIacacacacbkbkbkwqxCxDxExFxDxDwqwywzxGwwwqxHxIxJxJxJoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaakIkIkIlvlvlvlvlvlvlvlvxKxLpepexLxLlvlvlvlvlvlvkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkdodokIlvlvlvwZxpxqwfoNxtxuxvxwxxoPxzxAoNqYlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIlvlvlvlvlvlvlvlvlvlvkIkIkIkIkIacacacacbkbkbkwqvQxDxExFxDxDwqwywzxGwwwqxHxIxJxJxJoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaakIkIkIlvlvlvlvlvlvlvlvxKxLpepexLxLlvlvlvlvlvlvkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadododorkrkrkdodododododododorkrkrkdodoackIlvlvlvwZxOxPxQoNxPxSxPxPxTxUxVxAxWxXlvlvlvlvlvkIkIkIacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkacackIkInLlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvkIkIacacacacacacwqxYxDxZyaybycwqwqwqwqwwwqxHydydydyeoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaalvlvlvlvlvlvlvlvlvlvlvxKyfygygyhxLlvyilvlvlvoxnLkIacacbkbkbkbkbkbkbkbkbkbkacacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkdododododododododododododoackIlvlvlvwZyjxPxPykxPxSylxPxPoNynyooNqVlvlvlvlvlvlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkacackIkIlvwIlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvkIkIkIkIacacacwqypyqyrxDysytyuyeyvywyxwqyyydyzyAyBoKlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaaaaaaalvlvlvlvlvyCyCpfpfxKyFyGyHyIxLxLxLxLlvlvlvlvkIkIacacbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadododododododododododododododobkbkkIkIlvlvwZyJxPyKoPyMyNyOxPwZwZwZwZwZwZsCqYlvlvlvlvlvlvlvlvkIkIkIacacacacacbkbkbkbkbkbkbkacacackIlvlvlvlvlvlvlvlvlvlvlvsCqYlvlvlvlvlvlvlvlvlvkIkIacacwqwqwqwqyPwqwqpHpIySpHpIwqwqwqwqwqyTwqwqoKoKlvlvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvlvpfpfyXyYyZpJzbzczczdqrzfzgrSqYlvlvlvnMkIacacbkbkbkbkbkbkbkacacacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 8be2571bced..29886ded2b3 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -5,6 +5,7 @@ "ae" = (/obj/structure/lattice,/turf/space,/area/space) "af" = (/turf/simulated/wall,/area/djstation) "ag" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/djstation) +"ah" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aj" = (/turf/simulated/floor/plating,/area/djstation) "ak" = (/obj/machinery/light{dir = 1},/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/djstation) "am" = (/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/djstation) @@ -33,7 +34,6 @@ "aL" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aM" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aN" = (/obj/structure/table,/obj/structure/safe/floor,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aQ" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aR" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "aS" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "aT" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) @@ -740,7 +740,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaxafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafazaAaAaAaBafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeayaCayaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaGaHaIagaAaAaAaAaAagaKaLaMaNagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaeayayaCaCaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaQaHaHaHaRaAaSaTaSaAaUaVaVaVaVagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaayayayaCaCayaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagahaHaHaHaRaAaSaTaSaAaUaVaVaVaVagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaayayayaCaCayaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaZbabbaHagaAbcbdbeaAagbfbgbhbiagaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayayaCaCaCayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbjafafbkafaAaAaAaAblafafafafafafaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbmbmbnbmbmbmaDaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboaeafbpafafbqaAbrbsafaaaeaeaebtaaaeaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabubvbvbwbvbuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z8.dmm b/_maps/map_files/cyberiad/z8.dmm index 5a4bb1d9e7b..c705cab7733 100644 --- a/_maps/map_files/cyberiad/z8.dmm +++ b/_maps/map_files/cyberiad/z8.dmm @@ -29,6 +29,7 @@ "aC" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "aD" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "aE" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/traitor/radio) +"aF" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor,/area/traitor/kitchen) "aG" = (/obj/structure/table,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "aH" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "aI" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) @@ -84,7 +85,6 @@ "bK" = (/obj/machinery/vending/dinnerware,/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/turf/simulated/floor,/area/traitor/kitchen) "bL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor,/area/traitor/kitchen) "bM" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor,/area/traitor/kitchen) -"bN" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor,/area/traitor/kitchen) "bO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/traitor/kitchen) "bP" = (/obj/structure/computerframe,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "bQ" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) @@ -472,7 +472,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanaGaHaIaJaKaLaMaNaOaPaQaRaSaTazaUajaVaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanaWaXaYaZbababbbcbdbebfbgbhbibjbkblbmaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanbnbobpbqbrbsbtbubvbwbxbybzbAazbBajbCaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaananananavavavavbHbIbJajbKbLbMbNbOajaDbPbQbRaDaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaananananavavavavbHbIbJajbKbLbMaFbOajaDbPbQbRaDaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbHbIbSajajalalalajajaoamamamaoaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapapapapapbXbXbXbHbYbZcacbcccccccccdcccccccecfcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapchchchchcicjckbXclcmcncacccococpcpcccqcrcsctcuaqcwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/_globalvars/unused.dm b/code/_globalvars/unused.dm index 81fb2c6d4bd..d3945b68eab 100644 --- a/code/_globalvars/unused.dm +++ b/code/_globalvars/unused.dm @@ -12,7 +12,7 @@ var/list/liftable_structures = list(\ /obj/machinery/optable, \ /obj/structure/dispenser, \ /obj/machinery/gibber, \ - /obj/machinery/microwave, \ + /obj/machinery/kitchen_machine/microwave, \ /obj/machinery/vending, \ /obj/machinery/seed_extractor, \ /obj/machinery/space_heater, \ diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index aa21efd793e..dcd444a3a0b 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -142,3 +142,12 @@ return byproduct else return null + +/datum/recipe/proc/count_n_items() + var/count = 0 + if(items && items.len) + count += items.len + if(fruit && fruit.len) + for(var/ktag in fruit) + count += fruit[ktag] + return count diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 59a784233c1..1d6d07d724f 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -274,7 +274,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/microwave name = "circuit board (Microwave)" - build_path = /obj/machinery/microwave + build_path = /obj/machinery/kitchen_machine/microwave board_type = "machine" origin_tech = "programming=1" frame_desc = "Requires 1 Micro Laser, 2 pieces of cable and 1 Console Screen." @@ -285,7 +285,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/oven name = "circuit board (Oven)" - build_path = /obj/machinery/oven + build_path = /obj/machinery/kitchen_machine/oven board_type = "machine" origin_tech = "programming=1;plasmatech=1" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." @@ -296,7 +296,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/grill name = "circuit board (Grill)" - build_path = /obj/machinery/grill + build_path = /obj/machinery/kitchen_machine/grill board_type = "machine" origin_tech = "programming=1;plasmatech=1" frame_desc = "Requires 2 Micro Lasers, 5 pieces of cable and 1 Console Screen." @@ -307,7 +307,7 @@ to destroy them and players will be able to make replacements. /obj/item/weapon/circuitboard/candy_maker name = "circuit board (Candy Maker)" - build_path = /obj/machinery/candy_maker + build_path = /obj/machinery/kitchen_machine/candy_maker board_type = "machine" origin_tech = "programming=2" frame_desc = "Requires 1 Manipulator, 5 pieces of cable and 1 Console Screen." diff --git a/code/game/machinery/kitchen/kitchen_machine.dm b/code/game/machinery/kitchen/kitchen_machine.dm new file mode 100644 index 00000000000..2e1ea05c24b --- /dev/null +++ b/code/game/machinery/kitchen/kitchen_machine.dm @@ -0,0 +1,386 @@ + +/obj/machinery/kitchen_machine + name = "Base Kitchen Machine" + desc = "If you are seeing this, a coder/mapper messed up. Please report it." + layer = 2.9 + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + flags = OPENCONTAINER | NOREACT + var/operating = 0 // Is it on? + var/dirty = 0 // = {0..100} Does it need cleaning? + var/broken = 0 // ={0,1,2} How broken is it??? + var/efficiency = 0 + var/list/cook_verbs = list("Cooking") + //Recipe & Item vars + var/list/datum/recipe/available_recipes // List of the recipes you can use + var/list/acceptable_items // List of the items you can put in + var/list/acceptable_reagents // List of the reagents you can put in + var/max_n_of_items = 0 + //Icon states + var/off_icon + var/on_icon + var/broken_icon + var/dirty_icon + var/open_icon + +/******************* +* Initialising +********************/ + +/obj/machinery/kitchen_machine/New() + //..() //do not need this + reagents = new/datum/reagents(100) + reagents.my_atom = src + +/******************* +* Item Adding +********************/ + +/obj/machinery/kitchen_machine/attackby(var/obj/item/O as obj, var/mob/user as mob, params) + if(operating) + return + if(!broken && dirty < 100) + if(default_deconstruction_screwdriver(user, open_icon, off_icon, O)) + return + if(exchange_parts(user, O)) + return + if(!broken && istype(O, /obj/item/weapon/wrench)) + playsound(src, 'sound/items/Ratchet.ogg', 50, 1) + if(anchored) + anchored = 0 + user << "\The [src] can now be moved." + return + else if(!anchored) + anchored = 1 + user << "\The [src] is now secured." + return + + default_deconstruction_crowbar(O) + + if(src.broken > 0) + if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver + user.visible_message( \ + "[user] starts to fix part of \the [src].", \ + "You start to fix part of \the [src]." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "[user] fixes part of \the [src].", \ + "You have fixed part of \the [src]." \ + ) + src.broken = 1 // Fix it a bit + else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench + user.visible_message( \ + "[user] starts to fix part of \the [src].", \ + "You start to fix part of \the [src]." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "[user] fixes \the [src].", \ + "You have fixed \the [src]." \ + ) + src.icon_state = off_icon + src.broken = 0 // Fix it! + src.dirty = 0 // just to be sure + src.flags = OPENCONTAINER + else + user << "It's broken!" + return 1 + else if(src.dirty==100) // The machine is all dirty so can't be used! + if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them + user.visible_message( \ + "[user] starts to clean \the [src].", \ + "You start to clean \the [src]." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "[user] has cleaned \the [src].", \ + "You have cleaned \the [src]." \ + ) + src.dirty = 0 // It's clean! + src.broken = 0 // just to be sure + src.icon_state = off_icon + src.flags = OPENCONTAINER + else //Otherwise bad luck!! + user << "It's dirty!" + return 1 + else if(is_type_in_list(O,acceptable_items)) + if (contents.len>=max_n_of_items) + user << "This [src] is full of ingredients, you cannot put more." + return 1 + if (istype(O,/obj/item/stack) && O:amount>1) + new O.type (src) + O:use(1) + user.visible_message( \ + "[user] has added one of [O] to \the [src].", \ + "You add one of [O] to \the [src].") + else + // user.unEquip(O) //This just causes problems so far as I can tell. -Pete + if(!user.drop_item()) + user << "\The [O] is stuck to your hand, you cannot put it in \the [src]" + return 0 + O.loc = src + user.visible_message( \ + "[user] has added \the [O] to \the [src].", \ + "You add \the [O] to \the [src].") + else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ + istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ + ) + if (!O.reagents) + return 1 + for (var/datum/reagent/R in O.reagents.reagent_list) + if (!(R.id in acceptable_reagents)) + user << "Your [O] contains components unsuitable for cookery." + return 1 + //G.reagents.trans_to(src,G.amount_per_transfer_from_this) + else if(istype(O,/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = O + user << "This is ridiculous. You can not fit \the [G.affecting] in this [src]." + return 1 + else + user << "You have no idea what you can cook with this [O]." + return 1 + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/attack_ai(mob/user as mob) + return 0 + +/obj/machinery/kitchen_machine/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/******************** +* Machine Menu * +********************/ + +/obj/machinery/kitchen_machine/interact(mob/user as mob) // The microwave Menu + if(panel_open || !anchored) + return + var/dat = "" + if(src.broken > 0) + dat = {"Bzzzzttttt"} + else if(src.operating) + dat = {"[pick(src.cook_verbs)] in progress!
Please wait...!
"} + else if(src.dirty==100) + dat = {"This [src] is dirty!
Please clean it before use!
"} + else + var/list/items_counts = new + var/list/items_measures = new + var/list/items_measures_p = new + for (var/obj/O in contents) + var/display_name = O.name + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) + items_measures[display_name] = "egg" + items_measures_p[display_name] = "eggs" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) + items_measures[display_name] = "tofu chunk" + items_measures_p[display_name] = "tofu chunks" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat + items_measures[display_name] = "slab of meat" + items_measures_p[display_name] = "slabs of meat" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) + display_name = "Turnovers" + items_measures[display_name] = "turnover" + items_measures_p[display_name] = "turnovers" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) + items_measures[display_name] = "fillet of meat" + items_measures_p[display_name] = "fillets of meat" + items_counts[display_name]++ + for (var/O in items_counts) + var/N = items_counts[O] + if (!(O in items_measures)) + dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} + else + if (N==1) + dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} + else + dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} + + for (var/datum/reagent/R in reagents.reagent_list) + var/display_name = R.name + if (R.id == "capsaicin") + display_name = "Hotsauce" + if (R.id == "frostoil") + display_name = "Coldsauce" + dat += {"[display_name]: [R.volume] unit\s
"} + + if (items_counts.len==0 && reagents.reagent_list.len==0) + dat = {"The [src] is empty
"} + else + dat = {"Ingredients:
[dat]"} + dat += {"



\ +Turn on!
\ +
Eject ingredients!
\ +"} + + user << browse("[src] Controls[dat]", "window=[src.name]") + onclose(user, "[src.name]") + return + + + +/************************************ +* Machine Menu Handling/Cooking * +************************************/ + +/obj/machinery/kitchen_machine/proc/cook() + if(stat & (NOPOWER|BROKEN)) + return + start() + if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run + if (!wzhzhzh(10)) + abort() + return + stop() + return + + var/datum/recipe/recipe = select_recipe(available_recipes,src) + var/obj/cooked + var/obj/byproduct + if (!recipe) + dirty += 1 + if (prob(max(10,dirty*5))) + if (!wzhzhzh(4)) + abort() + return + muck_start() + wzhzhzh(4) + muck_finish() + fail() + return + else if (has_extra_item()) + if (!wzhzhzh(4)) + abort() + return + broke() + fail() + return + else + if (!wzhzhzh(10)) + abort() + return + stop() + fail() + return + else + var/halftime = round(recipe.time/10/2) + if (!wzhzhzh(halftime)) + abort() + return + if (!wzhzhzh(halftime)) + abort() + fail() + return + cooked = recipe.make_food(src) + byproduct = recipe.get_byproduct() + stop() + if(cooked) + cooked.loc = src.loc + for(var/i=1,i\The [src] turns on.", "You hear \a [src].") + src.operating = 1 + src.icon_state = on_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/abort() + src.operating = 0 // Turn it off again aferwards + src.icon_state = off_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/stop() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.operating = 0 // Turn it off again aferwards + src.icon_state = off_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/dispose() + for (var/obj/O in contents) + O.loc = src.loc + if (src.reagents.total_volume) + src.dirty++ + src.reagents.clear_reagents() + usr << "You dispose of \the [src]'s contents." + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/muck_start() + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound + src.icon_state = dirty_icon // Make it look dirty!! + +/obj/machinery/kitchen_machine/proc/muck_finish() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.visible_message("\The [src] gets covered in muck!") + src.dirty = 100 // Make it dirty so it can't be used util cleaned + src.flags = null //So you can't add condiments + src.icon_state = dirty_icon // Make it look dirty too + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/broke() + var/datum/effect/effect/system/spark_spread/s = new + s.set_up(2, 1, src) + s.start() + src.icon_state = broken_icon // Make it look all busted up and shit + src.visible_message("The [src] breaks!") //Let them know they're stupid + src.broken = 2 // Make it broken so it can't be used util fixed + src.flags = null //So you can't add condiments + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/fail() + var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) + var/amount = 0 + for (var/obj/O in contents-ffuu) + amount++ + if (O.reagents) + var/id = O.reagents.get_master_reagent_id() + if (id) + amount+=O.reagents.get_reagent_amount(id) + qdel(O) + src.reagents.clear_reagents() + ffuu.reagents.add_reagent("carbon", amount) + ffuu.reagents.add_reagent("????", amount/10) + ffuu.loc = get_turf(src) + +/obj/machinery/kitchen_machine/Topic(href, href_list) + if(..() || panel_open) + return + + usr.set_machine(src) + if(src.operating) + src.updateUsrDialog() + return + + switch(href_list["action"]) + if ("cook") + cook() + + if ("dispose") + dispose() + return \ No newline at end of file diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 258757adaee..67b53ad0883 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -1,24 +1,15 @@ -/obj/machinery/microwave +/obj/machinery/kitchen_machine/microwave name = "Microwave" + desc = "A microwave, perfect for reheating things with radiation." icon = 'icons/obj/kitchen.dmi' icon_state = "mw" - layer = 2.9 - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = OPENCONTAINER | NOREACT - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - var/efficiency - + cook_verbs = list("Microwaving", "Reheating", "Heating") + off_icon = "mw" + on_icon = "mw1" + broken_icon = "mwb" + dirty_icon = "mwbloody" + open_icon = "mw-o" // see code/modules/food/recipes_microwave.dm for recipes @@ -26,10 +17,8 @@ * Initialising ********************/ -/obj/machinery/microwave/New() - //..() //do not need this - reagents = new/datum/reagents(100) - reagents.my_atom = src +/obj/machinery/kitchen_machine/microwave/New() + ..() if (!available_recipes) available_recipes = new for (var/type in (typesof(/datum/recipe/microwave)-/datum/recipe/microwave)) @@ -46,7 +35,7 @@ for (var/reagent in recipe.reagents) acceptable_reagents |= reagent if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) + max_n_of_items = max(max_n_of_items,recipe.count_n_items()) acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown component_parts = list() @@ -56,8 +45,7 @@ component_parts += new /obj/item/stack/cable_coil(null, 2) RefreshParts() - -/obj/machinery/microwave/upgraded/New() +/obj/machinery/kitchen_machine/microwave/upgraded/New() ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) @@ -66,358 +54,8 @@ component_parts += new /obj/item/stack/cable_coil(null, 2) RefreshParts() -/obj/machinery/microwave/RefreshParts() +/obj/machinery/kitchen_machine/microwave/RefreshParts() var/E for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts) E += M.rating efficiency = E - -/******************* -* Item Adding -********************/ - -/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(operating) - return - if(!broken && dirty < 100) - if(default_deconstruction_screwdriver(user, "mw-o", "mw", O)) - return - if(exchange_parts(user, O)) - return - if(!broken && istype(O, /obj/item/weapon/wrench)) - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - user << "The [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the microwave.", \ - "\blue You start to fix part of the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the microwave.", \ - "\blue You have fixed part of the microwave." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the microwave.", \ - "\blue You start to fix part of the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the microwave.", \ - "\blue You have fixed the microwave." \ - ) - src.icon_state = "mw" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The microwave is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the microwave.", \ - "\blue You start to clean the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the microwave.", \ - "\blue You have cleaned the microwave." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "mw" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/microwave/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/microwave/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* Microwave Menu -********************/ - -/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Microwaving in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This microwave is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The microwave is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("Microwave Controls[dat]", "window=microwave") - onclose(user, "microwave") - return - - - -/*********************************** -* Microwave Menu Handling/Cooking -************************************/ - -/obj/machinery/microwave/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iThe [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the candy maker.", \ - "\blue You start to fix part of the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the candy maker.", \ - "\blue You have fixed part of the candy maker." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the candy maker.", \ - "\blue You start to fix part of the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the candy maker.", \ - "\blue You have fixed the candy maker." \ - ) - src.icon_state = "candymaker_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The candy_maker is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the candy maker.", \ - "\blue You start to clean the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the candy maker.", \ - "\blue You have cleaned the candy maker." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "candymaker_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/candy_maker/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/candy_maker/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* candy_maker Menu -********************/ - -/obj/machinery/candy_maker/interact(mob/user as mob) // The Candy Maker Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - var/whimsy_word = pick("Wonderizing", "Scrumpdiddlyumptiousification", "Miracle-coating", "Flavorifaction") - dat = {"[whimsy_word] in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This candy maker is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The candy maker is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("Candy Maker Controls[dat]", "window=candy_maker") - onclose(user, "candy_maker") - return - - - -/*********************************** -* candy_maker Menu Handling/Cooking -************************************/ - -/obj/machinery/candy_maker/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - var/obj/byproduct - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - byproduct = recipe.get_byproduct() - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iThe [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the grill.", \ - "\blue You start to fix part of the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the grill.", \ - "\blue You have fixed part of the grill." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the grill.", \ - "\blue You start to fix part of the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the grill.", \ - "\blue You have fixed the grill." \ - ) - src.icon_state = "grill_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The grill is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the grill.", \ - "\blue You start to clean the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the grill.", \ - "\blue You have cleaned the grill." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "grill_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/grill/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/grill/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* grill Menu -********************/ - -/obj/machinery/grill/interact(mob/user as mob) // The grill Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Grilling in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This grill is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The grill is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("grill Controls[dat]", "window=grill") - onclose(user, "grill") - return - - - -/*********************************** -* grill Menu Handling/Cooking -************************************/ - -/obj/machinery/grill/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iThe [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the oven.", \ - "\blue You start to fix part of the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the oven.", \ - "\blue You have fixed part of the oven." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the oven.", \ - "\blue You start to fix part of the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the oven.", \ - "\blue You have fixed the oven." \ - ) - src.icon_state = "oven_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The oven is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the oven.", \ - "\blue You start to clean the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the oven.", \ - "\blue You have cleaned the oven." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "oven_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/oven/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/oven/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* oven Menu -********************/ - -/obj/machinery/oven/interact(mob/user as mob) // The oven Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Baking in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This oven is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The oven is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("oven Controls[dat]", "window=oven") - onclose(user, "oven") - return - - - -/*********************************** -* oven Menu Handling/Cooking -************************************/ - -/obj/machinery/oven/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,i Date: Fri, 10 Jul 2015 07:49:02 -0700 Subject: [PATCH 19/44] Update LINDA to use a real process instead of using the scheduler as a ticker --- code/LINDA/LINDA_system.dm | 129 ------------------------------ code/controllers/Processes/air.dm | 129 ++++++++++++++++++++++++++---- 2 files changed, 114 insertions(+), 144 deletions(-) diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index b107a8910eb..b07c000471f 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -1,132 +1,3 @@ -var/kill_air = 0 - -var/global/datum/controller/air_system/air_master - -datum/controller/air_system - var/list/excited_groups = list() - var/list/active_turfs = list() - var/list/hotspots = list() - var/speed = 1 - - //Special functions lists - var/list/turf/simulated/active_super_conductivity = list() - var/list/turf/simulated/high_pressure_delta = list() - - var/current_cycle = 0 - var/update_delay = 5 - var/failed_ticks = 0 - var/tick_progress = 0 - - -/datum/controller/air_system/proc/Setup() - set background = 1 - world << "\red \b Processing Geometry..." - sleep(1) - - var/start_time = world.timeofday - - setup_allturfs() - - setup_overlays() - - world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!" - -/datum/controller/air_system/proc/process() - if(kill_air) - return 1 - - for(var/i=0,i 20) - EG.dismantle() - -/datum/controller/air_system/proc/setup_overlays() - plmaster = new /obj/effect/overlay() - plmaster.icon = 'icons/effects/tile_effects.dmi' - plmaster.icon_state = "plasma" - plmaster.layer = FLY_LAYER - plmaster.mouse_opacity = 0 - - slmaster = new /obj/effect/overlay() - slmaster.icon = 'icons/effects/tile_effects.dmi' - slmaster.icon_state = "sleeping_agent" - slmaster.layer = FLY_LAYER - slmaster.mouse_opacity = 0 - /turf/proc/CanAtmosPass(var/turf/T) if(!istype(T)) return 0 var/R diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm index 3d45fa77b76..b6c0d1a0fe7 100644 --- a/code/controllers/Processes/air.dm +++ b/code/controllers/Processes/air.dm @@ -1,22 +1,121 @@ -/datum/controller/process/air/setup() +var/kill_air = 0 + +var/global/datum/controller/process/air_system/air_master + +/datum/controller/process/air_system + var/list/excited_groups = list() + var/list/active_turfs = list() + var/list/hotspots = list() + + //Special functions lists + var/list/turf/simulated/active_super_conductivity = list() + var/list/turf/simulated/high_pressure_delta = list() + + var/current_cycle = 0 + var/failed_ticks = 0 + var/tick_progress = 0 + +/datum/controller/process/air_system/setup() name = "air" schedule_interval = 20 // every 2 seconds + air_master = src - if(!air_master) - air_master = new - air_master.Setup() + world << "Processing Geometry..." + var/start_time = world.timeofday + setup_allturfs() // Get all currently active tiles that need processing each atmos tick. + setup_overlays() // Assign icons and such for gas-turf-overlays + world << "Geometry processed in [(world.timeofday-start_time)/10] seconds!" -/datum/controller/process/air/doWork() - if(!air_processing_killed) - if(!air_master.process()) //Runtimed. - air_master.failed_ticks++ +/datum/controller/process/air_system/doWork() + if(kill_air) + return 1 + current_cycle++ + process_active_turfs() + process_excited_groups() + scheck() + process_high_pressure_delta() + process_hotspots() + process_super_conductivity() + scheck() + return 1 - if(air_master.failed_ticks > 5) - world << "RUNTIMES IN ATMOS TICKER. Killing air simulation!" - world.log << "### ZAS SHUTDOWN" +/datum/controller/process/air_system/proc/process_hotspots() + for(var/obj/effect/hotspot/H in hotspots) + H.process() - message_admins("ZASALERT: Shutting down! status: [air_master.tick_progress]") - log_admin("ZASALERT: Shutting down! status: [air_master.tick_progress]") +/datum/controller/process/air_system/proc/process_super_conductivity() + for(var/turf/simulated/T in active_super_conductivity) + T.super_conduct() - air_processing_killed = TRUE - air_master.failed_ticks = 0 +/datum/controller/process/air_system/proc/process_high_pressure_delta() + for(var/turf/T in high_pressure_delta) + T.high_pressure_movements() + T.pressure_difference = 0 + high_pressure_delta.len = 0 + +/datum/controller/process/air_system/proc/process_active_turfs() + for(var/turf/simulated/T in active_turfs) + T.process_cell() + +/datum/controller/process/air_system/proc/remove_from_active(var/turf/simulated/T) + if(istype(T)) + T.excited = 0 + active_turfs -= T + if(T.excited_group) + T.excited_group.garbage_collect() + +/datum/controller/process/air_system/proc/add_to_active(var/turf/simulated/T, var/blockchanges = 1) + if(istype(T) && T.air) + T.excited = 1 + active_turfs |= T + if(blockchanges && T.excited_group) + T.excited_group.garbage_collect() + else + for(var/direction in cardinal) + if(!(T.atmos_adjacent_turfs & direction)) + continue + var/turf/simulated/S = get_step(T, direction) + if(istype(S)) + add_to_active(S) + +/datum/controller/process/air_system/proc/setup_allturfs(var/turfs_in = world) + for(var/turf/simulated/T in turfs_in) + T.CalculateAdjacentTurfs() + if(!T.blocks_air) + if(T.air.check_tile_graphic()) + T.update_visuals(T.air) + for(var/direction in cardinal) + if(!(T.atmos_adjacent_turfs & direction)) + continue + var/turf/enemy_tile = get_step(T, direction) + if(istype(enemy_tile,/turf/simulated/)) + var/turf/simulated/enemy_simulated = enemy_tile + if(!T.air.compare(enemy_simulated.air)) + T.excited = 1 + active_turfs |= T + break + else + if(!T.air.check_turf_total(enemy_tile)) + T.excited = 1 + active_turfs |= T + +/datum/controller/process/air_system/proc/process_excited_groups() + for(var/datum/excited_group/EG in excited_groups) + EG.breakdown_cooldown ++ + if(EG.breakdown_cooldown == 10) + EG.self_breakdown() + return + if(EG.breakdown_cooldown > 20) + EG.dismantle() + +/datum/controller/process/air_system/proc/setup_overlays() + plmaster = new /obj/effect/overlay() + plmaster.icon = 'icons/effects/tile_effects.dmi' + plmaster.icon_state = "plasma" + plmaster.layer = FLY_LAYER + plmaster.mouse_opacity = 0 + + slmaster = new /obj/effect/overlay() + slmaster.icon = 'icons/effects/tile_effects.dmi' + slmaster.icon_state = "sleeping_agent" + slmaster.layer = FLY_LAYER \ No newline at end of file From d83a4408b8066815e412729ffa72eca41feaebcf Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 10 Jul 2015 17:18:27 -0700 Subject: [PATCH 20/44] Fixed slmaster mouse_opacity --- code/controllers/Processes/air.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm index b6c0d1a0fe7..c251b913ce6 100644 --- a/code/controllers/Processes/air.dm +++ b/code/controllers/Processes/air.dm @@ -118,4 +118,5 @@ var/global/datum/controller/process/air_system/air_master slmaster = new /obj/effect/overlay() slmaster.icon = 'icons/effects/tile_effects.dmi' slmaster.icon_state = "sleeping_agent" - slmaster.layer = FLY_LAYER \ No newline at end of file + slmaster.layer = FLY_LAYER + slmaster.mouse_opacity = 0 \ No newline at end of file From 36f3e8b52b54071fb16981ca3f94019c18059c1d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 10 Jul 2015 20:21:56 -0400 Subject: [PATCH 21/44] Explosion Sound and Performance Tweaks --- code/game/objects/explosion.dm | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index fd861b1e99f..9de5dec30dd 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -73,10 +73,12 @@ far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5) - - //Pause the lighting updates for a bit - var/datum/controller/process/lighting = processScheduler.getProcess("lighting") - lighting.disable() + var/close = range(world.view+round(devastation_range,1), epicenter) + // to all distanced mobs play a different sound + for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close)) + // check if the mob can hear + if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space)) + M << 'sound/effects/explosionfar.ogg' if(heavy_impact_range > 1) var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() @@ -135,7 +137,7 @@ var/throw_range = round((throw_dist + 1) * throw_mult) // Roughly 50% to 100% of throw_dist if(throw_range > 0) var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) - I.throw_at(throw_at, throw_range, 2, no_spin = 1)//Throw it at 2 speed, this is purely visual anyway. + I.throw_at(throw_at, throw_range, 2, no_spin = 1) //Throw it at 2 speed, this is purely visual anyway; don't spin the thrown items, it's very costly. var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare @@ -147,10 +149,6 @@ if(Array) Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) - sleep(8) - - lighting.enable() - return 1 From 059b405ac8567b98d0bc581708f969c261065f3e Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 10 Jul 2015 20:20:54 -0700 Subject: [PATCH 22/44] Un-relative-path human life.dm --- code/modules/mob/living/carbon/human/life.dm | 2533 +++++++++--------- 1 file changed, 1267 insertions(+), 1266 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1f153a2e4be..ab58c30a623 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -64,8 +64,11 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc life_tick++ var/datum/gas_mixture/environment = loc.return_air() - in_stasis = istype(loc, /obj/structure/closet/body_bag/cryobag) && loc:opened == 0 - if(in_stasis) loc:used++ + if(istype(loc, /obj/structure/closet/body_bag/cryobag)) + var/obj/structure/closet/body_bag/cryobag/loc_as_cryobag = loc + if(!loc_as_cryobag.opened) + loc_as_cryobag.used++ + in_stasis = 1 if(life_tick%30==15) hud_updateflag = 1022 @@ -74,7 +77,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) - if(mob_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath + if(mob_master.current_cycle % 4==2 || failed_last_breath) //First, resolve location and get a breath breathe() //Only try to take a breath every 4 ticks, unless suffocating else //Still give containing object the chance to interact @@ -174,845 +177,851 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return ONE_ATMOSPHERE - pressure_difference -/mob/living/carbon/human +/mob/living/carbon/human/proc/handle_disabilities() + if (disabilities & EPILEPSY) + if ((prob(1) && paralysis < 1)) + src << "\red You have a seizure!" + for(var/mob/O in viewers(src, null)) + if(O == src) + continue + O.show_message(text("\red [src] starts having a seizure!"), 1) + Paralyse(10) + Jitter(1000) - proc/handle_disabilities() - if (disabilities & EPILEPSY) - if ((prob(1) && paralysis < 1)) - src << "\red You have a seizure!" - for(var/mob/O in viewers(src, null)) - if(O == src) - continue - O.show_message(text("\red [src] starts having a seizure!"), 1) - Paralyse(10) - Jitter(1000) + // If we have the gene for being crazy, have random events. + if(dna.GetSEState(HALLUCINATIONBLOCK)) + if(prob(1) && hallucination < 1) + hallucination += 20 - // If we have the gene for being crazy, have random events. - if(dna.GetSEState(HALLUCINATIONBLOCK)) - if(prob(1) && hallucination < 1) - hallucination += 20 + if (disabilities & COUGHING) + if ((prob(5) && paralysis <= 1)) + drop_item() + emote("cough") + if (disabilities & TOURETTES) + speech_problem_flag = 1 + if ((prob(10) && paralysis <= 1)) + Stun(10) + switch(rand(1, 3)) + if(1) + emote("twitch") + if(2 to 3) + var/tourettes = pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS") + say("[prob(50) ? ";" : ""][tourettes]") + var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. + var/y_offset = pixel_y + rand(-1,1) + animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) + animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y), time = 1) + if (disabilities & NERVOUS) + speech_problem_flag = 1 + if (prob(10)) + stuttering = max(10, stuttering) - if (disabilities & COUGHING) - if ((prob(5) && paralysis <= 1)) - drop_item() - emote("cough") - if (disabilities & TOURETTES) + if (getBrainLoss() >= 60 && stat != 2) + speech_problem_flag = 1 + if (prob(3)) + switch(pick(1,2,3)) + if(1) + say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#")) + if(2) + say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!")) + if(3) + emote("drool") + + if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox + Weaken(20) + losebreath += 10 + silent += 2 + + if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox + visible_message("[src] goes limp, their facial expression utterly blank.") + death() + +/mob/living/carbon/human/proc/handle_stasis_bag() + // Handle side effects from stasis bag + if(in_stasis) + // First off, there's no oxygen supply, so the mob will slowly take brain damage + adjustBrainLoss(0.1) + + // Next, the method to induce stasis has some adverse side-effects, manifesting + // as cloneloss + adjustCloneLoss(0.1) + +/mob/living/carbon/human/proc/handle_mutations_and_radiation() + + if(species.flags & IS_SYNTHETIC) //Robots don't suffer from mutations or radloss. + return + + if(getFireLoss()) + if((RESIST_HEAT in mutations) || (prob(1))) + heal_organ_damage(0,1) + + + for(var/datum/dna/gene/gene in dna_genes) + if(!gene.block) + continue + if(gene.is_active(src)) + /* if (prob(10) && prob(gene.instability)) + adjustCloneLoss(1) */ speech_problem_flag = 1 - if ((prob(10) && paralysis <= 1)) - Stun(10) - switch(rand(1, 3)) - if(1) - emote("twitch") - if(2 to 3) - var/tourettes = pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS") - say("[prob(50) ? ";" : ""][tourettes]") - var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. - var/y_offset = pixel_y + rand(-1,1) - animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) - animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y), time = 1) - if (disabilities & NERVOUS) - speech_problem_flag = 1 - if (prob(10)) - stuttering = max(10, stuttering) + gene.OnMobLife(src) - if (getBrainLoss() >= 60 && stat != 2) - speech_problem_flag = 1 - if (prob(3)) - switch(pick(1,2,3)) - if(1) - say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#")) - if(2) - say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!")) - if(3) - emote("drool") + if (radiation) - if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox - Weaken(20) - losebreath += 10 - silent += 2 - - if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox - visible_message("[src] goes limp, their facial expression utterly blank.") - death() - - proc/handle_stasis_bag() - // Handle side effects from stasis bag - if(in_stasis) - // First off, there's no oxygen supply, so the mob will slowly take brain damage - adjustBrainLoss(0.1) - - // Next, the method to induce stasis has some adverse side-effects, manifesting - // as cloneloss - adjustCloneLoss(0.1) - - proc/handle_mutations_and_radiation() - - if(species.flags & IS_SYNTHETIC) //Robots don't suffer from mutations or radloss. + if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) + var/rads = radiation/25 + radiation -= rads + radiation -= 0.1 + reagents.add_reagent("radium", rads/10) + if( prob(10) ) + src << "\blue You feel relaxed." return - if(getFireLoss()) - if((RESIST_HEAT in mutations) || (prob(1))) - heal_organ_damage(0,1) + if (radiation > 100) + radiation = 100 + if(!(species.flags & RAD_ABSORB)) + Weaken(10) + if(!lying) + src << "\red You feel weak." + emote("collapse") + if (radiation < 0) + radiation = 0 - for(var/datum/dna/gene/gene in dna_genes) - if(!gene.block) - continue - if(gene.is_active(src)) - /* if (prob(10) && prob(gene.instability)) - adjustCloneLoss(1) */ - speech_problem_flag = 1 - gene.OnMobLife(src) - - if (radiation) - - if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) + else + if(species.flags & RAD_ABSORB) var/rads = radiation/25 radiation -= rads - radiation -= 0.1 - reagents.add_reagent("radium", rads/10) - if( prob(10) ) - src << "\blue You feel relaxed." + nutrition += rads + adjustBruteLoss(-(rads)) + adjustOxyLoss(-(rads)) + adjustToxLoss(-(rads)) + updatehealth() return - if (radiation > 100) - radiation = 100 - if(!(species.flags & RAD_ABSORB)) - Weaken(10) - if(!lying) - src << "\red You feel weak." - emote("collapse") - - if (radiation < 0) - radiation = 0 - - else - if(species.flags & RAD_ABSORB) - var/rads = radiation/25 - radiation -= rads - nutrition += rads - adjustBruteLoss(-(rads)) - adjustOxyLoss(-(rads)) - adjustToxLoss(-(rads)) - updatehealth() - return - - var/damage = 0 - switch(radiation) - if(0 to 49) - radiation-- - if(prob(25)) - adjustToxLoss(1) - damage = 1 - updatehealth() - - if(50 to 74) - radiation -= 2 - damage = 1 + var/damage = 0 + switch(radiation) + if(0 to 49) + radiation-- + if(prob(25)) adjustToxLoss(1) - if(prob(5)) - radiation -= 5 - Weaken(3) - if(!lying) - src << "\red You feel weak." - emote("collapse") + damage = 1 updatehealth() - if(75 to 100) - radiation -= 3 - adjustToxLoss(3) - damage = 3 - if(prob(1)) - src << "\red You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() - - else + if(50 to 74) + radiation -= 2 + damage = 1 + adjustToxLoss(1) + if(prob(5)) radiation -= 5 - adjustToxLoss(5) - damage = 5 - if(prob(1)) - src << "\red You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() + Weaken(3) + if(!lying) + src << "\red You feel weak." + emote("collapse") + updatehealth() - if(damage && organs.len) - var/obj/item/organ/external/O = pick(organs) - if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) + if(75 to 100) + radiation -= 3 + adjustToxLoss(3) + damage = 3 + if(prob(1)) + src << "\red You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() - proc/breathe() - if(reagents.has_reagent("lexorin")) return - if(NO_BREATH in mutations) return // No breath mutation means no breathing. - if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return - if(species && (species.flags & NO_BREATHE)) return + else + radiation -= 5 + adjustToxLoss(5) + damage = 5 + if(prob(1)) + src << "\red You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath + if(damage && organs.len) + var/obj/item/organ/external/O = pick(organs) + if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) - // HACK NEED CHANGING LATER - if(health <= config.health_threshold_crit) - losebreath++ +/mob/living/carbon/human/proc/breathe() + if(reagents.has_reagent("lexorin")) return + if(NO_BREATH in mutations) return // No breath mutation means no breathing. + if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return + if(species && (species.flags & NO_BREATHE)) return - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(10)) //Gasp per 10 ticks? Sounds about right. - spawn emote("gasp") + var/datum/gas_mixture/environment = loc.return_air() + var/datum/gas_mixture/breath + + // HACK NEED CHANGING LATER + if(health <= config.health_threshold_crit) + losebreath++ + + if(losebreath>0) //Suffocating so do not take a breath + losebreath-- + if (prob(10)) //Gasp per 10 ticks? Sounds about right. + spawn emote("gasp") + if(istype(loc, /obj/)) + var/obj/location_as_object = loc + location_as_object.handle_internal_lifeform(src, 0) + + else + //First, check for air from internal atmosphere (using an air tank and mask generally) + breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE + //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE + + //No breath from internal atmosphere so get breath from location + if(!breath) + if(isobj(loc)) + var/obj/location_as_object = loc + breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) + else if(isturf(loc)) + var/breath_moles = 0 + /*if(environment.return_pressure() > ONE_ATMOSPHERE) + // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) + breath_moles = (ONE_ATMOSPHERE*BREATH_VOLUME/R_IDEAL_GAS_EQUATION*environment.temperature) + else*/ + // Not enough air around, take a percentage of what's there to model this properly + breath_moles = environment.total_moles()*BREATH_PERCENTAGE + + breath = loc.remove_air(breath_moles) + + if(!is_lung_ruptured()) + if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5) + if(prob(5)) + rupture_lung() + + else //Still give containing object the chance to interact if(istype(loc, /obj/)) var/obj/location_as_object = loc location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE - //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE + handle_breath(breath) - //No breath from internal atmosphere so get breath from location - if(!breath) - if(isobj(loc)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) - else if(isturf(loc)) - var/breath_moles = 0 - /*if(environment.return_pressure() > ONE_ATMOSPHERE) - // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) - breath_moles = (ONE_ATMOSPHERE*BREATH_VOLUME/R_IDEAL_GAS_EQUATION*environment.temperature) - else*/ - // Not enough air around, take a percentage of what's there to model this properly - breath_moles = environment.total_moles()*BREATH_PERCENTAGE + if(species.name=="Plasmaman") //this is stupid as fuck + // Check if we're wearing our biosuit and mask. + if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) + //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") + // OH FUCK HE LEAKIN'. + // This was OP. + //environment.adjust(tx = environment.total_moles()*BREATH_PERCENTAGE) // About one breath's worth. (I know we aren't breathing it out, but this should be about the right amount) + src << "Your body reacts with the atmosphere and bursts into flame!" + adjust_fire_stacks(0.5) + IgniteMob() - breath = loc.remove_air(breath_moles) + if(breath) + loc.assume_air(breath) - if(!is_lung_ruptured()) - if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5) - if(prob(5)) - rupture_lung() - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(species.name=="Plasmaman") //this is stupid as fuck - // Check if we're wearing our biosuit and mask. - if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) - //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") - // OH FUCK HE LEAKIN'. - // This was OP. - //environment.adjust(tx = environment.total_moles()*BREATH_PERCENTAGE) // About one breath's worth. (I know we aren't breathing it out, but this should be about the right amount) - src << "Your body reacts with the atmosphere and bursts into flame!" - adjust_fire_stacks(0.5) - IgniteMob() - - if(breath) - loc.assume_air(breath) - - //spread some viruses while we are at it - if (virus2.len > 0) - if (prob(10) && get_infection_chance(src)) + //spread some viruses while we are at it + if (virus2.len > 0) + if (prob(10) && get_infection_chance(src)) // log_debug("[src] : Exhaling some viruses") - for(var/mob/living/carbon/M in view(1,src)) - src.spread_disease_to(M) + for(var/mob/living/carbon/M in view(1,src)) + src.spread_disease_to(M) // USED IN DEATHWHISPERS - proc/isInCrit() - // Health is in deep shit and we're not already dead - return health <= 0 && stat != 2 +/mob/living/carbon/human/proc/isInCrit() + // Health is in deep shit and we're not already dead + return health <= 0 && stat != 2 - proc/handle_breath(var/datum/gas_mixture/breath) - if(status_flags & GODMODE) - return 0 - - if(!breath || (breath.total_moles() == 0) || suiciding) - var/oxyloss = 0 - if(suiciding) - oxyloss = 2 - adjustOxyLoss(oxyloss)//If you are suiciding, you should die a little bit faster - failed_last_breath = 1 - oxygen_alert = max(oxygen_alert, 1) - return 0 - if(health > 0) - oxyloss = HUMAN_MAX_OXYLOSS - adjustOxyLoss(oxyloss) - failed_last_breath = 1 - else - oxyloss = HUMAN_CRIT_MAX_OXYLOSS - adjustOxyLoss(oxyloss) - failed_last_breath = 1 - - var/obj/item/organ/external/affected = get_organ("chest") - affected.add_autopsy_data("Suffocation", oxyloss) +/mob/living/carbon/human/proc/handle_breath(var/datum/gas_mixture/breath) + if(status_flags & GODMODE) + return 0 + if(!breath || (breath.total_moles() == 0) || suiciding) + var/oxyloss = 0 + if(suiciding) + oxyloss = 2 + adjustOxyLoss(oxyloss)//If you are suiciding, you should die a little bit faster + failed_last_breath = 1 oxygen_alert = max(oxygen_alert, 1) - return 0 + if(health > 0) + oxyloss = HUMAN_MAX_OXYLOSS + adjustOxyLoss(oxyloss) + failed_last_breath = 1 + else + oxyloss = HUMAN_CRIT_MAX_OXYLOSS + adjustOxyLoss(oxyloss) + failed_last_breath = 1 - return species.handle_breath(breath, src) + var/obj/item/organ/external/affected = get_organ("chest") + affected.add_autopsy_data("Suffocation", oxyloss) - proc/handle_environment(datum/gas_mixture/environment) - if(!environment) - return + oxygen_alert = max(oxygen_alert, 1) - var/loc_temp = get_temperature(environment) - //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" + return 0 - //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. - if(stat != 2) - stabilize_temperature_from_calories() + return species.handle_breath(breath, src) - //After then, it reacts to the surrounding atmosphere based on your thermal protection - if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases - if(loc_temp < bodytemperature) - //Place is colder than we are - var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) - else - //Place is hotter than we are - var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) +/mob/living/carbon/human/proc/handle_environment(datum/gas_mixture/environment) + if(!environment) + return - // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. - if(bodytemperature > species.heat_level_1) - //Body temperature is too hot. - fire_alert = max(fire_alert, 1) - if(status_flags & GODMODE) return 1 //godmode + var/loc_temp = get_temperature(environment) + //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" - if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY) - if(on_fire) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire") - fire_alert = max(fire_alert, 2) - else - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) + //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. + if(stat != 2) + stabilize_temperature_from_calories() - else if(bodytemperature < species.cold_level_1) - fire_alert = max(fire_alert, 1) - if(status_flags & GODMODE) return 1 //godmode + //After then, it reacts to the surrounding atmosphere based on your thermal protection + if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases + if(loc_temp < bodytemperature) + //Place is colder than we are + var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) + else + //Place is hotter than we are + var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) - if(stat == DEAD) return 1 //ZomgPonies -- No need for cold burn damage if dead - - if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - - // Account for massive pressure differences. Done by Polymorph - // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! - - var/pressure = environment.return_pressure() - var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. + // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. + if(bodytemperature > species.heat_level_1) + //Body temperature is too hot. + fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - if(adjusted_pressure >= species.hazard_high_pressure) - var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) - take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure") - pressure_alert = 2 - else if(adjusted_pressure >= species.warning_high_pressure) - pressure_alert = 1 - else if(adjusted_pressure >= species.warning_low_pressure) - pressure_alert = 0 - else if(adjusted_pressure >= species.hazard_low_pressure) + if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY) + if(on_fire) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire") + fire_alert = max(fire_alert, 2) + else + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + + else if(bodytemperature < species.cold_level_1) + fire_alert = max(fire_alert, 1) + if(status_flags & GODMODE) return 1 //godmode + + if(stat == DEAD) return 1 //ZomgPonies -- No need for cold burn damage if dead + + if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) + if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + + // Account for massive pressure differences. Done by Polymorph + // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! + + var/pressure = environment.return_pressure() + var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. + if(status_flags & GODMODE) return 1 //godmode + + if(adjusted_pressure >= species.hazard_high_pressure) + var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) + take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure") + pressure_alert = 2 + else if(adjusted_pressure >= species.warning_high_pressure) + pressure_alert = 1 + else if(adjusted_pressure >= species.warning_low_pressure) + pressure_alert = 0 + else if(adjusted_pressure >= species.hazard_low_pressure) + pressure_alert = -1 + else + if(RESIST_COLD in mutations) pressure_alert = -1 else - if(RESIST_COLD in mutations) - pressure_alert = -1 - else - take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") - pressure_alert = -2 + take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") + pressure_alert = -2 - return + return - ///FIRE CODE - handle_fire() - if(..()) - return - var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures - if(wear_suit) - if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) - thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) - if(head) - if(head.max_heat_protection_temperature >= FIRE_HELM_MAX_TEMP_PROTECT) - thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) - thermal_protection = round(thermal_protection) - if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) - return - if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) - bodytemperature += 11 - return - else - bodytemperature += BODYTEMP_HEATING_MAX +///FIRE CODE +/mob/living/carbon/human/handle_fire() + if(..()) return - //END FIRE CODE + var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures + if(wear_suit) + if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) + thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) + if(head) + if(head.max_heat_protection_temperature >= FIRE_HELM_MAX_TEMP_PROTECT) + thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) + thermal_protection = round(thermal_protection) + if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) + return + if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) + bodytemperature += 11 + return + else + bodytemperature += BODYTEMP_HEATING_MAX + return +//END FIRE CODE - proc/handle_wetness() - if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so - wetlevel = max(wetlevel - 1,0) - return +/mob/living/carbon/human/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /* - proc/adjust_body_temperature(current, loc_temp, boost) - var/temperature = current - var/difference = abs(current-loc_temp) //get difference - var/increments// = difference/10 //find how many increments apart they are - if(difference > 50) - increments = difference/5 - else - increments = difference/10 - var/change = increments*boost // Get the amount to change by (x per increment) - var/temp_change - if(current < loc_temp) - temperature = min(loc_temp, temperature+change) - else if(current > loc_temp) - temperature = max(loc_temp, temperature-change) - temp_change = (temperature - current) - return temp_change +/mob/living/carbon/human/proc/adjust_body_temperature(current, loc_temp, boost) + var/temperature = current + var/difference = abs(current-loc_temp) //get difference + var/increments// = difference/10 //find how many increments apart they are + if(difference > 50) + increments = difference/5 + else + increments = difference/10 + var/change = increments*boost // Get the amount to change by (x per increment) + var/temp_change + if(current < loc_temp) + temperature = min(loc_temp, temperature+change) + else if(current > loc_temp) + temperature = max(loc_temp, temperature-change) + temp_change = (temperature - current) + return temp_change */ - proc/stabilize_temperature_from_calories() - if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. - if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. - nutrition -= 2 - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) - if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1) - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR - if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. - //We totally need a sweat system cause it totally makes sense...~ - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers +/mob/living/carbon/human/proc/stabilize_temperature_from_calories() + if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. + if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. + nutrition -= 2 + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) + if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1) + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR + if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. + //We totally need a sweat system cause it totally makes sense...~ + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers //This proc returns a number made up of the flags for body parts which you are protected on. (such as HEAD, UPPER_TORSO, LOWER_TORSO, etc. See setup.dm for the full list) - proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. - var/thermal_protection_flags = 0 - //Handle normal clothing - if(head) - if(head.max_heat_protection_temperature && head.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= head.heat_protection - if(wear_suit) - if(wear_suit.max_heat_protection_temperature && wear_suit.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= wear_suit.heat_protection - if(w_uniform) - if(w_uniform.max_heat_protection_temperature && w_uniform.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= w_uniform.heat_protection - if(shoes) - if(shoes.max_heat_protection_temperature && shoes.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= shoes.heat_protection - if(gloves) - if(gloves.max_heat_protection_temperature && gloves.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= gloves.heat_protection - if(wear_mask) - if(wear_mask.max_heat_protection_temperature && wear_mask.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= wear_mask.heat_protection +/mob/living/carbon/human/proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. + var/thermal_protection_flags = 0 + //Handle normal clothing + if(head) + if(head.max_heat_protection_temperature && head.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= head.heat_protection + if(wear_suit) + if(wear_suit.max_heat_protection_temperature && wear_suit.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= wear_suit.heat_protection + if(w_uniform) + if(w_uniform.max_heat_protection_temperature && w_uniform.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= w_uniform.heat_protection + if(shoes) + if(shoes.max_heat_protection_temperature && shoes.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= shoes.heat_protection + if(gloves) + if(gloves.max_heat_protection_temperature && gloves.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= gloves.heat_protection + if(wear_mask) + if(wear_mask.max_heat_protection_temperature && wear_mask.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= wear_mask.heat_protection - return thermal_protection_flags + return thermal_protection_flags - proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to. - var/thermal_protection_flags = get_heat_protection_flags(temperature) +/mob/living/carbon/human/proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to. + var/thermal_protection_flags = get_heat_protection_flags(temperature) - var/thermal_protection = 0.0 - if(RESIST_HEAT in mutations) - return 1 - if(thermal_protection_flags) - if(thermal_protection_flags & HEAD) - thermal_protection += THERMAL_PROTECTION_HEAD - if(thermal_protection_flags & UPPER_TORSO) - thermal_protection += THERMAL_PROTECTION_UPPER_TORSO - if(thermal_protection_flags & LOWER_TORSO) - thermal_protection += THERMAL_PROTECTION_LOWER_TORSO - if(thermal_protection_flags & LEG_LEFT) - thermal_protection += THERMAL_PROTECTION_LEG_LEFT - if(thermal_protection_flags & LEG_RIGHT) - thermal_protection += THERMAL_PROTECTION_LEG_RIGHT - if(thermal_protection_flags & FOOT_LEFT) - thermal_protection += THERMAL_PROTECTION_FOOT_LEFT - if(thermal_protection_flags & FOOT_RIGHT) - thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT - if(thermal_protection_flags & ARM_LEFT) - thermal_protection += THERMAL_PROTECTION_ARM_LEFT - if(thermal_protection_flags & ARM_RIGHT) - thermal_protection += THERMAL_PROTECTION_ARM_RIGHT - if(thermal_protection_flags & HAND_LEFT) - thermal_protection += THERMAL_PROTECTION_HAND_LEFT - if(thermal_protection_flags & HAND_RIGHT) - thermal_protection += THERMAL_PROTECTION_HAND_RIGHT + var/thermal_protection = 0.0 + if(RESIST_HEAT in mutations) + return 1 + if(thermal_protection_flags) + if(thermal_protection_flags & HEAD) + thermal_protection += THERMAL_PROTECTION_HEAD + if(thermal_protection_flags & UPPER_TORSO) + thermal_protection += THERMAL_PROTECTION_UPPER_TORSO + if(thermal_protection_flags & LOWER_TORSO) + thermal_protection += THERMAL_PROTECTION_LOWER_TORSO + if(thermal_protection_flags & LEG_LEFT) + thermal_protection += THERMAL_PROTECTION_LEG_LEFT + if(thermal_protection_flags & LEG_RIGHT) + thermal_protection += THERMAL_PROTECTION_LEG_RIGHT + if(thermal_protection_flags & FOOT_LEFT) + thermal_protection += THERMAL_PROTECTION_FOOT_LEFT + if(thermal_protection_flags & FOOT_RIGHT) + thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT + if(thermal_protection_flags & ARM_LEFT) + thermal_protection += THERMAL_PROTECTION_ARM_LEFT + if(thermal_protection_flags & ARM_RIGHT) + thermal_protection += THERMAL_PROTECTION_ARM_RIGHT + if(thermal_protection_flags & HAND_LEFT) + thermal_protection += THERMAL_PROTECTION_HAND_LEFT + if(thermal_protection_flags & HAND_RIGHT) + thermal_protection += THERMAL_PROTECTION_HAND_RIGHT - return min(1,thermal_protection) + return min(1,thermal_protection) //See proc/get_heat_protection_flags(temperature) for the description of this proc. - proc/get_cold_protection_flags(temperature) - var/thermal_protection_flags = 0 - //Handle normal clothing +/mob/living/carbon/human/proc/get_cold_protection_flags(temperature) + var/thermal_protection_flags = 0 + //Handle normal clothing - if(head) - if(head.min_cold_protection_temperature && head.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= head.cold_protection - if(wear_suit) - if(wear_suit.min_cold_protection_temperature && wear_suit.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= wear_suit.cold_protection - if(w_uniform) - if(w_uniform.min_cold_protection_temperature && w_uniform.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= w_uniform.cold_protection - if(shoes) - if(shoes.min_cold_protection_temperature && shoes.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= shoes.cold_protection - if(gloves) - if(gloves.min_cold_protection_temperature && gloves.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= gloves.cold_protection - if(wear_mask) - if(wear_mask.min_cold_protection_temperature && wear_mask.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= wear_mask.cold_protection + if(head) + if(head.min_cold_protection_temperature && head.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= head.cold_protection + if(wear_suit) + if(wear_suit.min_cold_protection_temperature && wear_suit.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= wear_suit.cold_protection + if(w_uniform) + if(w_uniform.min_cold_protection_temperature && w_uniform.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= w_uniform.cold_protection + if(shoes) + if(shoes.min_cold_protection_temperature && shoes.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= shoes.cold_protection + if(gloves) + if(gloves.min_cold_protection_temperature && gloves.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= gloves.cold_protection + if(wear_mask) + if(wear_mask.min_cold_protection_temperature && wear_mask.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= wear_mask.cold_protection - return thermal_protection_flags + return thermal_protection_flags - proc/get_cold_protection(temperature) +/mob/living/carbon/human/proc/get_cold_protection(temperature) - if(RESIST_COLD in mutations) - return 1 //Fully protected from the cold. + if(RESIST_COLD in mutations) + return 1 //Fully protected from the cold. - temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. - var/thermal_protection_flags = get_cold_protection_flags(temperature) + temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. + var/thermal_protection_flags = get_cold_protection_flags(temperature) - var/thermal_protection = 0.0 - if(thermal_protection_flags) - if(thermal_protection_flags & HEAD) - thermal_protection += THERMAL_PROTECTION_HEAD - if(thermal_protection_flags & UPPER_TORSO) - thermal_protection += THERMAL_PROTECTION_UPPER_TORSO - if(thermal_protection_flags & LOWER_TORSO) - thermal_protection += THERMAL_PROTECTION_LOWER_TORSO - if(thermal_protection_flags & LEG_LEFT) - thermal_protection += THERMAL_PROTECTION_LEG_LEFT - if(thermal_protection_flags & LEG_RIGHT) - thermal_protection += THERMAL_PROTECTION_LEG_RIGHT - if(thermal_protection_flags & FOOT_LEFT) - thermal_protection += THERMAL_PROTECTION_FOOT_LEFT - if(thermal_protection_flags & FOOT_RIGHT) - thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT - if(thermal_protection_flags & ARM_LEFT) - thermal_protection += THERMAL_PROTECTION_ARM_LEFT - if(thermal_protection_flags & ARM_RIGHT) - thermal_protection += THERMAL_PROTECTION_ARM_RIGHT - if(thermal_protection_flags & HAND_LEFT) - thermal_protection += THERMAL_PROTECTION_HAND_LEFT - if(thermal_protection_flags & HAND_RIGHT) - thermal_protection += THERMAL_PROTECTION_HAND_RIGHT + var/thermal_protection = 0.0 + if(thermal_protection_flags) + if(thermal_protection_flags & HEAD) + thermal_protection += THERMAL_PROTECTION_HEAD + if(thermal_protection_flags & UPPER_TORSO) + thermal_protection += THERMAL_PROTECTION_UPPER_TORSO + if(thermal_protection_flags & LOWER_TORSO) + thermal_protection += THERMAL_PROTECTION_LOWER_TORSO + if(thermal_protection_flags & LEG_LEFT) + thermal_protection += THERMAL_PROTECTION_LEG_LEFT + if(thermal_protection_flags & LEG_RIGHT) + thermal_protection += THERMAL_PROTECTION_LEG_RIGHT + if(thermal_protection_flags & FOOT_LEFT) + thermal_protection += THERMAL_PROTECTION_FOOT_LEFT + if(thermal_protection_flags & FOOT_RIGHT) + thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT + if(thermal_protection_flags & ARM_LEFT) + thermal_protection += THERMAL_PROTECTION_ARM_LEFT + if(thermal_protection_flags & ARM_RIGHT) + thermal_protection += THERMAL_PROTECTION_ARM_RIGHT + if(thermal_protection_flags & HAND_LEFT) + thermal_protection += THERMAL_PROTECTION_HAND_LEFT + if(thermal_protection_flags & HAND_RIGHT) + thermal_protection += THERMAL_PROTECTION_HAND_RIGHT - return min(1,thermal_protection) + return min(1,thermal_protection) - proc/get_covered_bodyparts() - var/covered = 0 +/mob/living/carbon/human/proc/get_covered_bodyparts() + var/covered = 0 - if(head) - covered |= head.body_parts_covered - if(wear_suit) - covered |= wear_suit.body_parts_covered - if(w_uniform) - covered |= w_uniform.body_parts_covered - if(shoes) - covered |= shoes.body_parts_covered - if(gloves) - covered |= gloves.body_parts_covered - if(wear_mask) - covered |= wear_mask.body_parts_covered + if(head) + covered |= head.body_parts_covered + if(wear_suit) + covered |= wear_suit.body_parts_covered + if(w_uniform) + covered |= w_uniform.body_parts_covered + if(shoes) + covered |= shoes.body_parts_covered + if(gloves) + covered |= gloves.body_parts_covered + if(wear_mask) + covered |= wear_mask.body_parts_covered - return covered + return covered - proc/handle_chemicals_in_body() +/mob/living/carbon/human/proc/handle_chemicals_in_body() - if(reagents) - reagents.metabolize(src) + if(reagents) + reagents.metabolize(src) - if(status_flags & GODMODE) return 0 //godmode + if(status_flags & GODMODE) return 0 //godmode - if(species.flags & REQUIRE_LIGHT) - var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing - if(isturf(loc)) //else, there's considered to be no light - var/turf/T = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - if(L) - light_amount = (L.get_clamped_lum()*10) - 5 //hardcapped so it's not abused by having a ton of flashlights - else - light_amount = 5 - nutrition += light_amount - traumatic_shock -= light_amount - - if(species.flags & IS_PLANT) - if(nutrition > 450) - nutrition = 450 - if((light_amount >= 5) && !suiciding) //if there's enough light, heal - adjustBruteLoss(-(light_amount/2)) - adjustFireLoss(-(light_amount/4)) - //adjustToxLoss(-(light_amount)) - adjustOxyLoss(-(light_amount)) - //TODO: heal wounds, heal broken limbs. - - if(species.light_dam) - var/light_amount = 0 - if(isturf(loc)) - var/turf/T = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - if(L) - light_amount = L.get_clamped_lum()*10 - else - light_amount = 10 - if(light_amount > species.light_dam) //if there's enough light, start dying - if(species.light_effect_amp) - adjustFireLoss(5) //This gets doubled by Shadowling's innate fire weakness, so it ends up being 10. - else - adjustFireLoss(1) - adjustBruteLoss(1) - src << "The light burns you!" - src << 'sound/weapons/sear.ogg' - else //heal in the dark - if(species.light_effect_amp) - adjustFireLoss(-5) - adjustBruteLoss(-5) - adjustBrainLoss(-25) //gibbering shadowlings are hilarious but also bad to have - adjustCloneLoss(-1) - SetWeakened(0) - SetStunned(0) - else - adjustFireLoss(-1) - adjustBruteLoss(-1) - - - //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. - if(species.flags & CAN_BE_FAT) - if(FAT in mutations) - if(overeatduration < 100) - src << "\blue You feel fit again!" - mutations.Remove(FAT) - update_mutantrace(0) - update_mutations(0) - update_inv_w_uniform(0) - update_inv_wear_suit() + if(species.flags & REQUIRE_LIGHT) + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing + if(isturf(loc)) //else, there's considered to be no light + var/turf/T = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + if(L) + light_amount = (L.get_clamped_lum()*10) - 5 //hardcapped so it's not abused by having a ton of flashlights else - if(overeatduration > 500) - src << "\red You suddenly feel blubbery!" - mutations.Add(FAT) - update_mutantrace(0) - update_mutations(0) - update_inv_w_uniform(0) - update_inv_wear_suit() + light_amount = 5 + nutrition += light_amount + traumatic_shock -= light_amount - // nutrition decrease - if (nutrition > 0 && stat != 2) - nutrition = max (0, nutrition - HUNGER_FACTOR) + if(species.flags & IS_PLANT) + if(nutrition > 450) + nutrition = 450 + if((light_amount >= 5) && !suiciding) //if there's enough light, heal + adjustBruteLoss(-(light_amount/2)) + adjustFireLoss(-(light_amount/4)) + //adjustToxLoss(-(light_amount)) + adjustOxyLoss(-(light_amount)) + //TODO: heal wounds, heal broken limbs. - if (nutrition > 450) - if(overeatduration < 800) //capped so people don't take forever to unfat - overeatduration++ + if(species.light_dam) + var/light_amount = 0 + if(isturf(loc)) + var/turf/T = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + if(L) + light_amount = L.get_clamped_lum()*10 + else + light_amount = 10 + if(light_amount > species.light_dam) //if there's enough light, start dying + if(species.light_effect_amp) + adjustFireLoss(5) //This gets doubled by Shadowling's innate fire weakness, so it ends up being 10. + else + adjustFireLoss(1) + adjustBruteLoss(1) + src << "The light burns you!" + src << 'sound/weapons/sear.ogg' + else //heal in the dark + if(species.light_effect_amp) + adjustFireLoss(-5) + adjustBruteLoss(-5) + adjustBrainLoss(-25) //gibbering shadowlings are hilarious but also bad to have + adjustCloneLoss(-1) + SetWeakened(0) + SetStunned(0) + else + adjustFireLoss(-1) + adjustBruteLoss(-1) + + //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. + if(species.flags & CAN_BE_FAT) + if(FAT in mutations) + if(overeatduration < 100) + src << "\blue You feel fit again!" + mutations.Remove(FAT) + update_mutantrace(0) + update_mutations(0) + update_inv_w_uniform(0) + update_inv_wear_suit() else - if(overeatduration > 1) - if(OBESITY in mutations) - overeatduration -= 1 // Those with obesity gene take twice as long to unfat - else - overeatduration -= 2 + if(overeatduration > 500) + src << "\red You suddenly feel blubbery!" + mutations.Add(FAT) + update_mutantrace(0) + update_mutations(0) + update_inv_w_uniform(0) + update_inv_wear_suit() - if(species.flags & REQUIRE_LIGHT) - if(nutrition < 200) - take_overall_damage(10,0) - traumatic_shock++ + // nutrition decrease + if (nutrition > 0 && stat != 2) + nutrition = max (0, nutrition - HUNGER_FACTOR) - if (drowsyness) - drowsyness-- - eye_blurry = max(2, eye_blurry) - if (prob(5)) - sleeping += 1 - Paralyse(5) + if (nutrition > 450) + if(overeatduration < 800) //capped so people don't take forever to unfat + overeatduration++ - confused = max(0, confused - 1) - // decrement dizziness counter, clamped to 0 - if(resting) - dizziness = max(0, dizziness - 15) - jitteriness = max(0, jitteriness - 15) - else - dizziness = max(0, dizziness - 3) - jitteriness = max(0, jitteriness - 3) + else + if(overeatduration > 1) + if(OBESITY in mutations) + overeatduration -= 1 // Those with obesity gene take twice as long to unfat + else + overeatduration -= 2 - if(species && species.flags & NO_INTORGANS) return + if(species.flags & REQUIRE_LIGHT) + if(nutrition < 200) + take_overall_damage(10,0) + traumatic_shock++ - if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems() + if (drowsyness) + drowsyness-- + eye_blurry = max(2, eye_blurry) + if (prob(5)) + sleeping += 1 + Paralyse(5) - updatehealth() + confused = max(0, confused - 1) + // decrement dizziness counter, clamped to 0 + if(resting) + dizziness = max(0, dizziness - 15) + jitteriness = max(0, jitteriness - 15) + else + dizziness = max(0, dizziness - 3) + jitteriness = max(0, jitteriness - 3) - return //TODO: DEFERRED + if(species && species.flags & NO_INTORGANS) return - proc/handle_regular_status_updates() + if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems() - if(status_flags & GODMODE) return 0 + updatehealth() - //SSD check, if a logged player is awake put them back to sleep! - if(player_logged && sleeping < 2) - sleeping = 2 + return //TODO: DEFERRED - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP - blinded = 1 - silent = 0 - else //ALIVE. LIGHTS ARE ON +/mob/living/carbon/human/proc/handle_regular_status_updates() - if(REGEN in mutations) - if(nutrition) - if(prob(10)) - var/randumb = rand(1,5) - nutrition -= randumb - heal_overall_damage(randumb,randumb) - if(nutrition < 0) - nutrition = 0 + if(status_flags & GODMODE) return 0 - // Sobering multiplier. - // Sober block grants quadruple the alcohol metabolism. + //SSD check, if a logged player is awake put them back to sleep! + if(player_logged && sleeping < 2) + sleeping = 2 + + if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP + blinded = 1 + silent = 0 + else //ALIVE. LIGHTS ARE ON + + if(REGEN in mutations) + if(nutrition) + if(prob(10)) + var/randumb = rand(1,5) + nutrition -= randumb + heal_overall_damage(randumb,randumb) + if(nutrition < 0) + nutrition = 0 + + // Sobering multiplier. + // Sober block grants quadruple the alcohol metabolism. // var/sober_str=!(SOBER in mutations)?1:4 - updatehealth() //TODO - if(!in_stasis) - handle_organs() //Optimized. - handle_blood() + updatehealth() //TODO + if(!in_stasis) + handle_organs() //Optimized. + handle_blood() - if(health <= config.health_threshold_dead || brain_op_stage == 4.0) - death() - blinded = 1 - silent = 0 - return 1 + if(health <= config.health_threshold_dead || brain_op_stage == 4.0) + death() + blinded = 1 + silent = 0 + return 1 - // the analgesic effect wears off slowly - analgesic = max(0, analgesic - 1) + // the analgesic effect wears off slowly + analgesic = max(0, analgesic - 1) - //UNCONSCIOUS. NO-ONE IS HOME - if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) - Paralyse(3) + //UNCONSCIOUS. NO-ONE IS HOME + if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) + Paralyse(3) - /* Done by handle_breath() - if( health <= 20 && prob(1) ) - spawn(0) - emote("gasp") - if(!reagents.has_reagent("epinephrine")) - adjustOxyLoss(1)*/ + /* Done by handle_breath() + if( health <= 20 && prob(1) ) + spawn(0) + emote("gasp") + if(!reagents.has_reagent("epinephrine")) + adjustOxyLoss(1)*/ - if(hallucination && !(species.flags & IS_SYNTHETIC)) - spawn handle_hallucinations() + if(hallucination && !(species.flags & IS_SYNTHETIC)) + spawn handle_hallucinations() - if(hallucination<=2) - hallucination = 0 - halloss = 0 - else - hallucination -= 2 - - - if(halloss > 100) - src << "You're in too much pain to keep going..." - for(var/mob/O in oviewers(src, null)) - O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) - Paralyse(10) - setHalLoss(99) - - if(paralysis) - AdjustParalysis(-1) - blinded = 1 - stat = UNCONSCIOUS - if(halloss > 0) - adjustHalLoss(-3) - else if(sleeping) - speech_problem_flag = 1 - handle_dreams() - adjustStaminaLoss(-10) - adjustHalLoss(-3) - if (mind) - //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of ether or similar. - if(player_logged) - sleeping = max(sleeping-1, 2) - else - sleeping = max(sleeping-1, 0) - blinded = 1 - stat = UNCONSCIOUS - if( prob(2) && health && !hal_crit ) - spawn(0) - emote("snore") - if(mind) - if(mind.vampire) - if(istype(loc, /obj/structure/closet/coffin)) - adjustBruteLoss(-1) - adjustFireLoss(-1) - adjustToxLoss(-1) - else if(status_flags & FAKEDEATH) - blinded = 1 - stat = UNCONSCIOUS - else if(resting) - if(halloss > 0) - adjustHalLoss(-3) - //CONSCIOUS + if(hallucination<=2) + hallucination = 0 + halloss = 0 else - stat = CONSCIOUS - if(halloss > 0) - adjustHalLoss(-1) - - if(embedded_flag && !(life_tick % 10)) - var/list/E - E = get_visible_implants(0) - if(!E.len) - embedded_flag = 0 + hallucination -= 2 - //Eyes - if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own - blinded = 1 - else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) - blinded = 1 - else if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster - eye_blurry = max(eye_blurry-3, 0) - // blinded = 1 //now handled under /handle_regular_hud_updates() - else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + if(halloss > 100) + src << "You're in too much pain to keep going..." + for(var/mob/O in oviewers(src, null)) + O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) + Paralyse(10) + setHalLoss(99) - //Ears - if(sdisabilities & DEAF) //disabled-deaf, doesn't get better on its own - ear_deaf = max(ear_deaf, 1) - else if(ear_deaf) //deafness, heals slowly over time - ear_deaf = max(ear_deaf-1, 0) - else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster - ear_damage = max(ear_damage-0.15, 0) - ear_deaf = max(ear_deaf, 1) - else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - ear_damage = max(ear_damage-0.05, 0) + if(paralysis) + AdjustParalysis(-1) + blinded = 1 + stat = UNCONSCIOUS + if(halloss > 0) + adjustHalLoss(-3) + else if(sleeping) + speech_problem_flag = 1 + handle_dreams() + adjustStaminaLoss(-10) + adjustHalLoss(-3) + if (mind) + //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of ether or similar. + if(player_logged) + sleeping = max(sleeping-1, 2) + else + sleeping = max(sleeping-1, 0) + blinded = 1 + stat = UNCONSCIOUS + if( prob(2) && health && !hal_crit ) + spawn(0) + emote("snore") + if(mind) + if(mind.vampire) + if(istype(loc, /obj/structure/closet/coffin)) + adjustBruteLoss(-1) + adjustFireLoss(-1) + adjustToxLoss(-1) + else if(status_flags & FAKEDEATH) + blinded = 1 + stat = UNCONSCIOUS + else if(resting) + if(halloss > 0) + adjustHalLoss(-3) + //CONSCIOUS + else + stat = CONSCIOUS + if(halloss > 0) + adjustHalLoss(-1) - //Dizziness - if(dizziness) - var/client/C = client - var/pixel_x_diff = 0 - var/pixel_y_diff = 0 - var/temp - var/saved_dizz = dizziness - dizziness = max(dizziness-1, 0) - if(C) - var/oldsrc = src - var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength - src = null - spawn(0) + if(embedded_flag && !(life_tick % 10)) + var/list/E + E = get_visible_implants(0) + if(!E.len) + embedded_flag = 0 + + + //Eyes + if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own + blinded = 1 + else if(eye_blind) //blindness, heals slowly over time + eye_blind = max(eye_blind-1,0) + blinded = 1 + else if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster + eye_blurry = max(eye_blurry-3, 0) + // blinded = 1 //now handled under /handle_regular_hud_updates() + else if(eye_blurry) //blurry eyes heal slowly + eye_blurry = max(eye_blurry-1, 0) + + //Ears + if(sdisabilities & DEAF) //disabled-deaf, doesn't get better on its own + ear_deaf = max(ear_deaf, 1) + else if(ear_deaf) //deafness, heals slowly over time + ear_deaf = max(ear_deaf-1, 0) + else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster + ear_damage = max(ear_damage-0.15, 0) + ear_deaf = max(ear_deaf, 1) + else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs + ear_damage = max(ear_damage-0.05, 0) + + //Dizziness + if(dizziness) + var/client/C = client + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/temp + var/saved_dizz = dizziness + dizziness = max(dizziness-1, 0) + if(C) + var/oldsrc = src + var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength + src = null + spawn(0) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) if(C) temp = amplitude * sin(0.008 * saved_dizz * world.time) pixel_x_diff += temp @@ -1020,641 +1029,633 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc temp = amplitude * cos(0.008 * saved_dizz * world.time) pixel_y_diff += temp C.pixel_y += temp - sleep(3) - if(C) - temp = amplitude * sin(0.008 * saved_dizz * world.time) - pixel_x_diff += temp - C.pixel_x += temp - temp = amplitude * cos(0.008 * saved_dizz * world.time) - pixel_y_diff += temp - C.pixel_y += temp - sleep(3) - if(C) - C.pixel_x -= pixel_x_diff - C.pixel_y -= pixel_y_diff - src = oldsrc + sleep(3) + if(C) + C.pixel_x -= pixel_x_diff + C.pixel_y -= pixel_y_diff + src = oldsrc - //Jitteryness - if(jitteriness) - do_jitter_animation(jitteriness) + //Jitteryness + if(jitteriness) + do_jitter_animation(jitteriness) - //Flying - if(flying) - spawn() - animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) - spawn(10) - if(flying) - animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) + //Flying + if(flying) + spawn() + animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) + spawn(10) + if(flying) + animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) - //Other - handle_statuses() + //Other + handle_statuses() - // If you're dirty, your gloves will become dirty, too. - if(gloves && germ_level > gloves.germ_level && prob(10)) - gloves.germ_level += 1 + // If you're dirty, your gloves will become dirty, too. + if(gloves && germ_level > gloves.germ_level && prob(10)) + gloves.germ_level += 1 - CheckStamina() + CheckStamina() - return 1 + return 1 - proc/handle_regular_hud_updates() - if(hud_updateflag) - handle_hud_list() +/mob/living/carbon/human/proc/handle_regular_hud_updates() + if(hud_updateflag) + handle_hud_list() - if(!client) return 0 + if(!client) return 0 - if(hud_updateflag) - handle_hud_list() + if(hud_updateflag) + handle_hud_list() - update_action_buttons() + update_action_buttons() - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe - client.images.Remove(hud) + for(var/image/hud in client.images) + if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe + client.images.Remove(hud) - client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask,/* global_hud.nvg*/) + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask,/* global_hud.nvg*/) - if(damageoverlay.overlays) - damageoverlay.overlays = list() + if(damageoverlay.overlays) + damageoverlay.overlays = list() - if(stat == UNCONSCIOUS) - //Critical damage passage overlay - if(health <= 0) - //var/image/I - switch(health) - if(-20 to -10) - damageoverlay.overlays += unconscious_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage1") - if(-30 to -20) - damageoverlay.overlays += unconscious_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage2") - if(-40 to -30) - damageoverlay.overlays += unconscious_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage3") - if(-50 to -40) - damageoverlay.overlays += unconscious_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage4") - if(-60 to -50) - damageoverlay.overlays += unconscious_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage5") - if(-70 to -60) - damageoverlay.overlays += unconscious_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage6") - if(-80 to -70) - damageoverlay.overlays += unconscious_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage7") - if(-90 to -80) - damageoverlay.overlays += unconscious_overlays["8"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage8") - if(-95 to -90) - damageoverlay.overlays += unconscious_overlays["9"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage9") - if(-INFINITY to -95) - damageoverlay.overlays += unconscious_overlays["10"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage10") - //damageoverlay.overlays += I - else - //Oxygen damage overlay - if(oxyloss) - //var/image/I - switch(oxyloss) - if(10 to 20) - damageoverlay.overlays += oxyloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1") - if(20 to 25) - damageoverlay.overlays += oxyloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2") - if(25 to 30) - damageoverlay.overlays += oxyloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3") - if(30 to 35) - damageoverlay.overlays += oxyloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4") - if(35 to 40) - damageoverlay.overlays += oxyloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5") - if(40 to 45) - damageoverlay.overlays += oxyloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6") - if(45 to INFINITY) - damageoverlay.overlays += oxyloss_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7") - //damageoverlay.overlays += I + if(stat == UNCONSCIOUS) + //Critical damage passage overlay + if(health <= 0) + //var/image/I + switch(health) + if(-20 to -10) + damageoverlay.overlays += unconscious_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage1") + if(-30 to -20) + damageoverlay.overlays += unconscious_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage2") + if(-40 to -30) + damageoverlay.overlays += unconscious_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage3") + if(-50 to -40) + damageoverlay.overlays += unconscious_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage4") + if(-60 to -50) + damageoverlay.overlays += unconscious_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage5") + if(-70 to -60) + damageoverlay.overlays += unconscious_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage6") + if(-80 to -70) + damageoverlay.overlays += unconscious_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage7") + if(-90 to -80) + damageoverlay.overlays += unconscious_overlays["8"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage8") + if(-95 to -90) + damageoverlay.overlays += unconscious_overlays["9"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage9") + if(-INFINITY to -95) + damageoverlay.overlays += unconscious_overlays["10"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage10") + //damageoverlay.overlays += I + else + //Oxygen damage overlay + if(oxyloss) + //var/image/I + switch(oxyloss) + if(10 to 20) + damageoverlay.overlays += oxyloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1") + if(20 to 25) + damageoverlay.overlays += oxyloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2") + if(25 to 30) + damageoverlay.overlays += oxyloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3") + if(30 to 35) + damageoverlay.overlays += oxyloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4") + if(35 to 40) + damageoverlay.overlays += oxyloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5") + if(40 to 45) + damageoverlay.overlays += oxyloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6") + if(45 to INFINITY) + damageoverlay.overlays += oxyloss_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7") + //damageoverlay.overlays += I - //Fire and Brute damage overlay (BSSR) - var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp - damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. - if(hurtdamage) - //var/image/I - switch(hurtdamage) - if(10 to 25) - damageoverlay.overlays += brutefireloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1") - if(25 to 40) - damageoverlay.overlays += brutefireloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2") - if(40 to 55) - damageoverlay.overlays += brutefireloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3") - if(55 to 70) - damageoverlay.overlays += brutefireloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4") - if(70 to 85) - damageoverlay.overlays += brutefireloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5") - if(85 to INFINITY) - damageoverlay.overlays += brutefireloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6") - //damageoverlay.overlays += I + //Fire and Brute damage overlay (BSSR) + var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp + damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. + if(hurtdamage) + //var/image/I + switch(hurtdamage) + if(10 to 25) + damageoverlay.overlays += brutefireloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1") + if(25 to 40) + damageoverlay.overlays += brutefireloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2") + if(40 to 55) + damageoverlay.overlays += brutefireloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3") + if(55 to 70) + damageoverlay.overlays += brutefireloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4") + if(70 to 85) + damageoverlay.overlays += brutefireloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5") + if(85 to INFINITY) + damageoverlay.overlays += brutefireloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6") + //damageoverlay.overlays += I - see_invisible = SEE_INVISIBLE_LIVING - if( stat == DEAD ) - sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = 8 - if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(healths) healths.icon_state = "health7" //DEAD healthmeter - else - sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_invisible = SEE_INVISIBLE_LIVING + if( stat == DEAD ) + sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = 8 + if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO + if(healths) healths.icon_state = "health7" //DEAD healthmeter + else + sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) - if(mind && mind.vampire) - if((VAMP_VISION in mind.vampire.powers) && !(VAMP_FULL in mind.vampire.powers)) - sight |= SEE_MOBS - if((VAMP_FULL in mind.vampire.powers)) - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(XRAY in mutations) + if(mind && mind.vampire) + if((VAMP_VISION in mind.vampire.powers) && !(VAMP_FULL in mind.vampire.powers)) + sight |= SEE_MOBS + if((VAMP_FULL in mind.vampire.powers)) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO + if(XRAY in mutations) + sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + see_in_dark = 8 + if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(seer==1) - var/obj/effect/rune/R = locate() in loc - if(R && R.word1 == cultwords["see"] && R.word2 == cultwords["hell"] && R.word3 == cultwords["join"]) - see_invisible = SEE_INVISIBLE_OBSERVER - else - see_invisible = SEE_INVISIBLE_LIVING - seer = 0 - - if(glasses || head) - if(glasses) - var/obj/item/clothing/glasses/G = glasses - if(istype(G)) - see_in_dark = (G.darkness_view ? see_in_dark + G.darkness_view : species.darksight) // Otherwise we keep our darkness view with togglable nightvision. - if(G.vision_flags) // MESONS - sight |= G.vision_flags - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - if(!G.see_darkness) - see_invisible = SEE_INVISIBLE_MINIMUM - /* HUD shit goes here, as long as it doesn't modify sight flags */ - // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - - switch(G.HUDType) - if(SECHUD) - process_sec_hud(src,1) - if(MEDHUD) - process_med_hud(src,1) - if(ANTAGHUD) - process_antag_hud(src) - - if(head) - var/obj/item/clothing/head/H = head - if(istype(H)) - if(H.vision_flags) // MESONS - sight |= H.vision_flags - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - if(!H.see_darkness) - see_invisible = SEE_INVISIBLE_MINIMUM - /* HUD shit goes here, as long as it doesn't modify sight flags */ - // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - - switch(H.HUDType) - if(SECHUD) - process_sec_hud(src,1) - if(MEDHUD) - process_med_hud(src,1) - if(ANTAGHUD) - process_antag_hud(src) - - - - - else if(!seer) - see_in_dark = species.darksight + if(seer==1) + var/obj/effect/rune/R = locate() in loc + if(R && R.word1 == cultwords["see"] && R.word2 == cultwords["hell"] && R.word3 == cultwords["join"]) + see_invisible = SEE_INVISIBLE_OBSERVER + else see_invisible = SEE_INVISIBLE_LIVING + seer = 0 - if(ticker && ticker.mode.name == "nations") - process_nations() + if(glasses || head) + if(glasses) + var/obj/item/clothing/glasses/G = glasses + if(istype(G)) + see_in_dark = (G.darkness_view ? see_in_dark + G.darkness_view : species.darksight) // Otherwise we keep our darkness view with togglable nightvision. + if(G.vision_flags) // MESONS + sight |= G.vision_flags + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM + if(!G.see_darkness) + see_invisible = SEE_INVISIBLE_MINIMUM + /* HUD shit goes here, as long as it doesn't modify sight flags */ + // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - if(healths) - if (analgesic) - healths.icon_state = "health_health_numb" - else - switch(hal_screwyhud) - if(1) healths.icon_state = "health6" - if(2) healths.icon_state = "health7" - else - //switch(health - halloss) - switch(100 - ((species && species.flags & NO_PAIN) ? 0 : traumatic_shock) - staminaloss) - if(100 to INFINITY) healths.icon_state = "health0" - if(80 to 100) healths.icon_state = "health1" - if(60 to 80) healths.icon_state = "health2" - if(40 to 60) healths.icon_state = "health3" - if(20 to 40) healths.icon_state = "health4" - if(0 to 20) healths.icon_state = "health5" - else healths.icon_state = "health6" + switch(G.HUDType) + if(SECHUD) + process_sec_hud(src,1) + if(MEDHUD) + process_med_hud(src,1) + if(ANTAGHUD) + process_antag_hud(src) - if(healthdoll) - healthdoll.overlays.Cut() - if(stat == DEAD) - healthdoll.icon_state = "healthdoll_DEAD" - else - healthdoll.icon_state = "healthdoll_OVERLAY" - for(var/obj/item/organ/external/O in organs) - var/damage = O.burn_dam + O.brute_dam - var/comparison = (O.max_damage/5) - var/icon_num = 0 - if(damage) - icon_num = 1 - if(damage > (comparison)) - icon_num = 2 - if(damage > (comparison*2)) - icon_num = 3 - if(damage > (comparison*3)) - icon_num = 4 - if(damage > (comparison*4)) - icon_num = 5 - if(icon_num) - healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[O.limb_name][icon_num]") + if(head) + var/obj/item/clothing/head/H = head + if(istype(H)) + if(H.vision_flags) // MESONS + sight |= H.vision_flags + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM + if(!H.see_darkness) + see_invisible = SEE_INVISIBLE_MINIMUM + /* HUD shit goes here, as long as it doesn't modify sight flags */ + // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - if(nutrition_icon) - switch(nutrition) - if(450 to INFINITY) nutrition_icon.icon_state = "nutrition0" - if(350 to 450) nutrition_icon.icon_state = "nutrition1" - if(250 to 350) nutrition_icon.icon_state = "nutrition2" - if(150 to 250) nutrition_icon.icon_state = "nutrition3" - else nutrition_icon.icon_state = "nutrition4" + switch(H.HUDType) + if(SECHUD) + process_sec_hud(src,1) + if(MEDHUD) + process_med_hud(src,1) + if(ANTAGHUD) + process_antag_hud(src) - if(pressure) - pressure.icon_state = "pressure[pressure_alert]" - if(pullin) - if(pulling) pullin.icon_state = "pull1" - else pullin.icon_state = "pull0" + + + else if(!seer) + see_in_dark = species.darksight + see_invisible = SEE_INVISIBLE_LIVING + + if(ticker && ticker.mode.name == "nations") + process_nations() + + if(healths) + if (analgesic) + healths.icon_state = "health_health_numb" + else + switch(hal_screwyhud) + if(1) healths.icon_state = "health6" + if(2) healths.icon_state = "health7" + else + //switch(health - halloss) + switch(100 - ((species && species.flags & NO_PAIN) ? 0 : traumatic_shock) - staminaloss) + if(100 to INFINITY) healths.icon_state = "health0" + if(80 to 100) healths.icon_state = "health1" + if(60 to 80) healths.icon_state = "health2" + if(40 to 60) healths.icon_state = "health3" + if(20 to 40) healths.icon_state = "health4" + if(0 to 20) healths.icon_state = "health5" + else healths.icon_state = "health6" + + if(healthdoll) + healthdoll.overlays.Cut() + if(stat == DEAD) + healthdoll.icon_state = "healthdoll_DEAD" + else + healthdoll.icon_state = "healthdoll_OVERLAY" + for(var/obj/item/organ/external/O in organs) + var/damage = O.burn_dam + O.brute_dam + var/comparison = (O.max_damage/5) + var/icon_num = 0 + if(damage) + icon_num = 1 + if(damage > (comparison)) + icon_num = 2 + if(damage > (comparison*2)) + icon_num = 3 + if(damage > (comparison*3)) + icon_num = 4 + if(damage > (comparison*4)) + icon_num = 5 + if(icon_num) + healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[O.limb_name][icon_num]") + + if(nutrition_icon) + switch(nutrition) + if(450 to INFINITY) nutrition_icon.icon_state = "nutrition0" + if(350 to 450) nutrition_icon.icon_state = "nutrition1" + if(250 to 350) nutrition_icon.icon_state = "nutrition2" + if(150 to 250) nutrition_icon.icon_state = "nutrition3" + else nutrition_icon.icon_state = "nutrition4" + + if(pressure) + pressure.icon_state = "pressure[pressure_alert]" + + if(pullin) + if(pulling) pullin.icon_state = "pull1" + else pullin.icon_state = "pull0" // if(rest) //Not used with new UI // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" - if(toxin) - if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1" - else toxin.icon_state = "tox0" - if(oxygen) - if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1" - else oxygen.icon_state = "oxy0" - if(fire) - if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. - else fire.icon_state = "fire0" + if(toxin) + if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1" + else toxin.icon_state = "tox0" + if(oxygen) + if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1" + else oxygen.icon_state = "oxy0" + if(fire) + if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. + else fire.icon_state = "fire0" - if(bodytemp) - if (!species) - switch(bodytemperature) //310.055 optimal body temp - if(370 to INFINITY) bodytemp.icon_state = "temp4" - if(350 to 370) bodytemp.icon_state = "temp3" - if(335 to 350) bodytemp.icon_state = "temp2" - if(320 to 335) bodytemp.icon_state = "temp1" - if(300 to 320) bodytemp.icon_state = "temp0" - if(295 to 300) bodytemp.icon_state = "temp-1" - if(280 to 295) bodytemp.icon_state = "temp-2" - if(260 to 280) bodytemp.icon_state = "temp-3" - else bodytemp.icon_state = "temp-4" - else - var/temp_step - if (bodytemperature >= species.body_temperature) - temp_step = (species.heat_level_1 - species.body_temperature)/4 + if(bodytemp) + if (!species) + switch(bodytemperature) //310.055 optimal body temp + if(370 to INFINITY) bodytemp.icon_state = "temp4" + if(350 to 370) bodytemp.icon_state = "temp3" + if(335 to 350) bodytemp.icon_state = "temp2" + if(320 to 335) bodytemp.icon_state = "temp1" + if(300 to 320) bodytemp.icon_state = "temp0" + if(295 to 300) bodytemp.icon_state = "temp-1" + if(280 to 295) bodytemp.icon_state = "temp-2" + if(260 to 280) bodytemp.icon_state = "temp-3" + else bodytemp.icon_state = "temp-4" + else + var/temp_step + if (bodytemperature >= species.body_temperature) + temp_step = (species.heat_level_1 - species.body_temperature)/4 - if (bodytemperature >= species.heat_level_1) - bodytemp.icon_state = "temp4" - else if (bodytemperature >= species.body_temperature + temp_step*3) - bodytemp.icon_state = "temp3" - else if (bodytemperature >= species.body_temperature + temp_step*2) - bodytemp.icon_state = "temp2" - else if (bodytemperature >= species.body_temperature + temp_step*1) - bodytemp.icon_state = "temp1" - else - bodytemp.icon_state = "temp0" + if (bodytemperature >= species.heat_level_1) + bodytemp.icon_state = "temp4" + else if (bodytemperature >= species.body_temperature + temp_step*3) + bodytemp.icon_state = "temp3" + else if (bodytemperature >= species.body_temperature + temp_step*2) + bodytemp.icon_state = "temp2" + else if (bodytemperature >= species.body_temperature + temp_step*1) + bodytemp.icon_state = "temp1" + else + bodytemp.icon_state = "temp0" - else if (bodytemperature < species.body_temperature) - temp_step = (species.body_temperature - species.cold_level_1)/4 + else if (bodytemperature < species.body_temperature) + temp_step = (species.body_temperature - species.cold_level_1)/4 - if (bodytemperature <= species.cold_level_1) - bodytemp.icon_state = "temp-4" - else if (bodytemperature <= species.body_temperature - temp_step*3) - bodytemp.icon_state = "temp-3" - else if (bodytemperature <= species.body_temperature - temp_step*2) - bodytemp.icon_state = "temp-2" - else if (bodytemperature <= species.body_temperature - temp_step*1) - bodytemp.icon_state = "temp-1" - else - bodytemp.icon_state = "temp0" + if (bodytemperature <= species.cold_level_1) + bodytemp.icon_state = "temp-4" + else if (bodytemperature <= species.body_temperature - temp_step*3) + bodytemp.icon_state = "temp-3" + else if (bodytemperature <= species.body_temperature - temp_step*2) + bodytemp.icon_state = "temp-2" + else if (bodytemperature <= species.body_temperature - temp_step*1) + bodytemp.icon_state = "temp-1" + else + bodytemp.icon_state = "temp0" // This checks how much the mob's eyewear impairs their vision - if(tinttotal >= TINT_IMPAIR) - if(tinted_weldhelh) - if(tinttotal >= TINT_BLIND) - blinded = 1 // You get the sudden urge to learn to play keyboard - client.screen += global_hud.darkMask - else - client.screen += global_hud.darkMask - - if(blind) - if(blinded) blind.layer = 18 - else blind.layer = 0 - - if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription - if(glasses) //to every /obj/item - var/obj/item/clothing/glasses/G = glasses - if(!G.prescription) - client.screen += global_hud.vimpaired + if(tinttotal >= TINT_IMPAIR) + if(tinted_weldhelh) + if(tinttotal >= TINT_BLIND) + blinded = 1 // You get the sudden urge to learn to play keyboard + client.screen += global_hud.darkMask else + client.screen += global_hud.darkMask + + if(blind) + if(blinded) blind.layer = 18 + else blind.layer = 0 + + if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription + if(glasses) //to every /obj/item + var/obj/item/clothing/glasses/G = glasses + if(!G.prescription) client.screen += global_hud.vimpaired - - if(eye_blurry) client.screen += global_hud.blurry - if(druggy) client.screen += global_hud.druggy - - if(machine) - if(!machine.check_eye(src)) reset_view(null) else - var/isRemoteObserve = 0 - if((REMOTE_VIEW in mutations) && remoteview_target) - isRemoteObserve = 1 - // Is he unconscious or dead? - if(remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" - isRemoteObserve = 0 + client.screen += global_hud.vimpaired - // Does he have psy resist? - if(PSY_RESIST in remoteview_target.mutations) - src << "\red Your mind is shut out!" - isRemoteObserve = 0 + if(eye_blurry) client.screen += global_hud.blurry + if(druggy) client.screen += global_hud.druggy - // Not on the station or mining? - var/turf/temp_turf = get_turf(remoteview_target) - if((!(temp_turf.z in config.contact_levels)) || remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" - isRemoteObserve = 0 - if(!isRemoteObserve && client && !client.adminobs) - remoteview_target = null - reset_view(null) - return 1 + if(machine) + if(!machine.check_eye(src)) reset_view(null) + else + var/isRemoteObserve = 0 + if((REMOTE_VIEW in mutations) && remoteview_target) + isRemoteObserve = 1 + // Is he unconscious or dead? + if(remoteview_target.stat!=CONSCIOUS) + src << "\red Your psy-connection grows too faint to maintain!" + isRemoteObserve = 0 - proc/handle_random_events() - // Puke if toxloss is too high - if(!stat) - if (getToxLoss() >= 45 && nutrition > 20) - vomit() + // Does he have psy resist? + if(PSY_RESIST in remoteview_target.mutations) + src << "\red Your mind is shut out!" + isRemoteObserve = 0 - //0.1% chance of playing a scary sound to someone who's in complete darkness - if(isturf(loc) && rand(1,1000) == 1) - var/turf/currentTurf = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in currentTurf - if(L && L.lum_r + L.lum_g + L.lum_b == 0) - playsound_local(src,pick(scarySounds),50, 1, -1) + // Not on the station or mining? + var/turf/temp_turf = get_turf(remoteview_target) + if((!(temp_turf.z in config.contact_levels)) || remoteview_target.stat!=CONSCIOUS) + src << "\red Your psy-connection grows too faint to maintain!" + isRemoteObserve = 0 + if(!isRemoteObserve && client && !client.adminobs) + remoteview_target = null + reset_view(null) + return 1 + +/mob/living/carbon/human/proc/handle_random_events() + // Puke if toxloss is too high + if(!stat) + if (getToxLoss() >= 45 && nutrition > 20) + vomit() + + //0.1% chance of playing a scary sound to someone who's in complete darkness + if(isturf(loc) && rand(1,1000) == 1) + var/turf/currentTurf = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in currentTurf + if(L && L.lum_r + L.lum_g + L.lum_b == 0) + playsound_local(src,pick(scarySounds),50, 1, -1) // Separate proc so we can jump out of it when we've succeeded in spreading disease. - proc/findAirborneVirii() - for(var/obj/effect/decal/cleanable/blood/B in get_turf(src)) - if(B.virus2.len) - for (var/ID in B.virus2) - var/datum/disease2/disease/V = B.virus2[ID] - if (infect_virus2(src,V)) - return 1 +/mob/living/carbon/human/proc/findAirborneVirii() + for(var/obj/effect/decal/cleanable/blood/B in get_turf(src)) + if(B.virus2.len) + for (var/ID in B.virus2) + var/datum/disease2/disease/V = B.virus2[ID] + if (infect_virus2(src,V)) + return 1 - for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src)) - if(M.virus2.len) - for (var/ID in M.virus2) - var/datum/disease2/disease/V = M.virus2[ID] - if (infect_virus2(src,V)) - return 1 + for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src)) + if(M.virus2.len) + for (var/ID in M.virus2) + var/datum/disease2/disease/V = M.virus2[ID] + if (infect_virus2(src,V)) + return 1 - for(var/obj/effect/decal/cleanable/poop/P in get_turf(src)) - if(P.virus2.len) - for (var/ID in P.virus2) - var/datum/disease2/disease/V = P.virus2[ID] - if (infect_virus2(src,V)) - return 1 + for(var/obj/effect/decal/cleanable/poop/P in get_turf(src)) + if(P.virus2.len) + for (var/ID in P.virus2) + var/datum/disease2/disease/V = P.virus2[ID] + if (infect_virus2(src,V)) + return 1 - return 0 - - proc/handle_virus_updates() - if(status_flags & GODMODE) return 0 //godmode - if(bodytemperature > 406) - for (var/ID in virus2) - var/datum/disease2/disease/V = virus2[ID] - V.cure(src) - if(life_tick % 3) //don't spam checks over all objects in view every tick. - for(var/obj/effect/decal/cleanable/O in view(1,src)) - if(istype(O,/obj/effect/decal/cleanable/blood)) - var/obj/effect/decal/cleanable/blood/B = O - if(B.virus2.len) - for (var/ID in B.virus2) - var/datum/disease2/disease/V = B.virus2[ID] - infect_virus2(src,V.getcopy()) - - else if(istype(O,/obj/effect/decal/cleanable/mucus)) - var/obj/effect/decal/cleanable/mucus/M = O - if(M.virus2.len) - for (var/ID in M.virus2) - var/datum/disease2/disease/V = M.virus2[ID] - infect_virus2(src,V.getcopy()) - + return 0 +/mob/living/carbon/human/proc/handle_virus_updates() + if(status_flags & GODMODE) return 0 //godmode + if(bodytemperature > 406) for (var/ID in virus2) var/datum/disease2/disease/V = virus2[ID] - if(isnull(V)) // Trying to figure out a runtime error that keeps repeating - CRASH("virus2 nulled before calling activate()") - else - V.activate(src) - // activate may have deleted the virus - if(!V) continue + V.cure(src) + if(life_tick % 3) //don't spam checks over all objects in view every tick. + for(var/obj/effect/decal/cleanable/O in view(1,src)) + if(istype(O,/obj/effect/decal/cleanable/blood)) + var/obj/effect/decal/cleanable/blood/B = O + if(B.virus2.len) + for (var/ID in B.virus2) + var/datum/disease2/disease/V = B.virus2[ID] + infect_virus2(src,V.getcopy()) - // check if we're immune - if(V.antigen & src.antibodies) - V.dead = 1 + else if(istype(O,/obj/effect/decal/cleanable/mucus)) + var/obj/effect/decal/cleanable/mucus/M = O + if(M.virus2.len) + for (var/ID in M.virus2) + var/datum/disease2/disease/V = M.virus2[ID] + infect_virus2(src,V.getcopy()) + + + for (var/ID in virus2) + var/datum/disease2/disease/V = virus2[ID] + if(isnull(V)) // Trying to figure out a runtime error that keeps repeating + CRASH("virus2 nulled before calling activate()") + else + V.activate(src) + // activate may have deleted the virus + if(!V) continue + + // check if we're immune + if(V.antigen & src.antibodies) + V.dead = 1 + return + +/mob/living/carbon/human/proc/handle_stomach() + spawn(0) + for(var/mob/living/M in stomach_contents) + if(M.loc != src) + stomach_contents.Remove(M) + continue + if(isliving(M) && stat != 2) + if(M.stat == 2) + M.death(1) + stomach_contents.Remove(M) + qdel(M) + continue + if(mob_master.current_cycle%3==1) + if(!(M.status_flags & GODMODE)) + M.adjustBruteLoss(5) + nutrition += 10 + +/mob/living/carbon/human/proc/handle_changeling() + if(mind && mind.changeling) + mind.changeling.regenerate() + +/mob/living/carbon/human/handle_shock() + ..() + if(status_flags & GODMODE) return 0 //godmode + if(analgesic || (species && species.flags & NO_PAIN)) return // analgesic avoids all traumatic shock temporarily + + if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse + shock_stage = max(shock_stage, 61) + + if(traumatic_shock >= 100) + shock_stage += 1 + else + shock_stage = min(shock_stage, 160) + shock_stage = max(shock_stage-1, 0) return - proc/handle_stomach() - spawn(0) - for(var/mob/living/M in stomach_contents) - if(M.loc != src) - stomach_contents.Remove(M) - continue - if(isliving(M) && stat != 2) - if(M.stat == 2) - M.death(1) - stomach_contents.Remove(M) - qdel(M) - continue - if(mob_master.current_cycle%3==1) - if(!(M.status_flags & GODMODE)) - M.adjustBruteLoss(5) - nutrition += 10 + if(shock_stage == 10) + src << ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!") - proc/handle_changeling() - if(mind && mind.changeling) - mind.changeling.regenerate() + if(shock_stage >= 30) + if(shock_stage == 30) emote("me",1,"is having trouble keeping their eyes open.") + eye_blurry = max(2, eye_blurry) + stuttering = max(stuttering, 5) - handle_shock() - ..() - if(status_flags & GODMODE) return 0 //godmode - if(analgesic || (species && species.flags & NO_PAIN)) return // analgesic avoids all traumatic shock temporarily + if(shock_stage == 40) + src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse - shock_stage = max(shock_stage, 61) - - if(traumatic_shock >= 100) - shock_stage += 1 - else - shock_stage = min(shock_stage, 160) - shock_stage = max(shock_stage-1, 0) - return - - if(shock_stage == 10) - src << ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!") - - if(shock_stage >= 30) - if(shock_stage == 30) emote("me",1,"is having trouble keeping their eyes open.") - eye_blurry = max(2, eye_blurry) - stuttering = max(stuttering, 5) - - if(shock_stage == 40) + if(shock_stage >=60) + if(shock_stage == 60) emote("me",1,"'s body becomes limp.") + if (prob(2)) src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - - if(shock_stage >=60) - if(shock_stage == 60) emote("me",1,"'s body becomes limp.") - if (prob(2)) - src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - Weaken(20) - - if(shock_stage >= 80) - if (prob(5)) - src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - Weaken(20) - - if(shock_stage >= 120) - if (prob(2)) - src << ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.") - Paralyse(5) - - if(shock_stage == 150) - emote("me",1,"can no longer stand, collapsing!") Weaken(20) - if(shock_stage >= 150) + if(shock_stage >= 80) + if (prob(5)) + src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") Weaken(20) + if(shock_stage >= 120) + if (prob(2)) + src << ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.") + Paralyse(5) - proc/handle_pulse() + if(shock_stage == 150) + emote("me",1,"can no longer stand, collapsing!") + Weaken(20) - if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) + if(shock_stage >= 150) + Weaken(20) - if(species && species.flags & NO_BLOOD) return PULSE_NONE //No blood, no pulse. - if(stat == DEAD) - return PULSE_NONE //that's it, you're dead, nothing can influence your pulse +/mob/living/carbon/human/proc/handle_pulse() - if(heart_attack) - return PULSE_NONE + if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) - var/temp = PULSE_NORM + if(species && species.flags & NO_BLOOD) return PULSE_NONE //No blood, no pulse. - if(round(vessel.get_reagent_amount("blood")) <= BLOOD_VOLUME_BAD) //how much blood do we have - temp = PULSE_THREADY //not enough :( + if(stat == DEAD) + return PULSE_NONE //that's it, you're dead, nothing can influence your pulse - if(status_flags & FAKEDEATH) - temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + if(heart_attack) + return PULSE_NONE - for(var/datum/reagent/R in reagents.reagent_list) - if(R.id in bradycardics) - if(temp <= PULSE_THREADY && temp >= PULSE_NORM) - temp-- - break //one reagent is enough - //comment out the breaks to make med effects stack - for(var/datum/reagent/R in reagents.reagent_list) //handles different chems' influence on pulse - if(R.id in tachycardics) - if(temp <= PULSE_FAST && temp >= PULSE_NONE) - temp++ - break - for(var/datum/reagent/R in reagents.reagent_list) //To avoid using fakedeath - if(R.id in heartstopper) + var/temp = PULSE_NORM + + if(round(vessel.get_reagent_amount("blood")) <= BLOOD_VOLUME_BAD) //how much blood do we have + temp = PULSE_THREADY //not enough :( + + if(status_flags & FAKEDEATH) + temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + + for(var/datum/reagent/R in reagents.reagent_list) + if(R.id in bradycardics) + if(temp <= PULSE_THREADY && temp >= PULSE_NORM) + temp-- + break //one reagent is enough + //comment out the breaks to make med effects stack + for(var/datum/reagent/R in reagents.reagent_list) //handles different chems' influence on pulse + if(R.id in tachycardics) + if(temp <= PULSE_FAST && temp >= PULSE_NONE) + temp++ + break + for(var/datum/reagent/R in reagents.reagent_list) //To avoid using fakedeath + if(R.id in heartstopper) + temp = PULSE_NONE + break + for(var/datum/reagent/R in reagents.reagent_list) //Conditional heart-stoppage + if(R.id in cheartstopper) + if(R.volume >= R.overdose_threshold) temp = PULSE_NONE break - for(var/datum/reagent/R in reagents.reagent_list) //Conditional heart-stoppage - if(R.id in cheartstopper) - if(R.volume >= R.overdose_threshold) - temp = PULSE_NONE - break - return temp + return temp - proc/handle_decay() - var/decaytime = world.time - timeofdeath +/mob/living/carbon/human/proc/handle_decay() + var/decaytime = world.time - timeofdeath - if(species.flags & IS_SYNTHETIC) - return + if(species.flags & IS_SYNTHETIC) + return - if(reagents.has_reagent("formaldehyde")) //embalming fluid stops decay - return + if(reagents.has_reagent("formaldehyde")) //embalming fluid stops decay + return - if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky - return + if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky + return - if(decaytime > 6000 && decaytime <= 12000)//20 minutes for decaylevel2 -- bloated and very stinky - decaylevel = 1 + if(decaytime > 6000 && decaytime <= 12000)//20 minutes for decaylevel2 -- bloated and very stinky + decaylevel = 1 - if(decaytime > 12000 && decaytime <= 18000)//30 minutes for decaylevel3 -- rotting and gross - decaylevel = 2 + if(decaytime > 12000 && decaytime <= 18000)//30 minutes for decaylevel3 -- rotting and gross + decaylevel = 2 - if(decaytime > 18000 && decaytime <= 27000)//45 minutes for decaylevel4 -- skeleton - decaylevel = 3 + if(decaytime > 18000 && decaytime <= 27000)//45 minutes for decaylevel4 -- skeleton + decaylevel = 3 - if(decaytime > 27000) - decaylevel = 4 - makeSkeleton() - return //No puking over skeletons, they don't smell at all! + if(decaytime > 27000) + decaylevel = 4 + makeSkeleton() + return //No puking over skeletons, they don't smell at all! - for(var/mob/living/carbon/human/H in range(decaylevel, src)) - if(prob(5)) - if(airborne_can_reach(get_turf(src), get_turf(H))) - if(istype(loc,/obj/item/bodybag)) - return - var/obj/item/clothing/mask/M = H.wear_mask - if(M && (M.flags & MASKCOVERSMOUTH)) - return - if(H.species && H.species.flags & NO_BREATHE) - return //no puking if you can't smell! - H << "You smell something foul..." - H.fakevomit() - - proc/handle_heartbeat() - var/client/C = src.client - if(C && C.prefs.sound & SOUND_HEARTBEAT) //disable heartbeat by pref - var/obj/item/organ/heart/H = internal_organs_by_name["heart"] - - if(!H) //H.status will runtime if there is no H (obviously) - return - - if(H.status & ORGAN_ROBOT) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. - if(shock_stage >= 10 || istype(get_turf(src), /turf/space)) - //PULSE_THREADY - maximum value for pulse, currently it 5. - //High pulse value corresponds to a fast rate of heartbeat. - //Divided by 2, otherwise it is too slow. - var/rate = (PULSE_THREADY - 2)/2 //machine people (main target) have no pulse, manually subtract standard human pulse (2). Mechanic-heart humans probably have a pulse, but 'advanced neural systems' keep the heart rate steady, or something - - if(heartbeat >= rate) - heartbeat = 0 - src << sound('sound/effects/electheart.ogg',0,0,0,30) //Credit to GhostHack (www.ghosthack.de) for sound. - else - heartbeat++ + for(var/mob/living/carbon/human/H in range(decaylevel, src)) + if(prob(5)) + if(airborne_can_reach(get_turf(src), get_turf(H))) + if(istype(loc,/obj/item/bodybag)) return - return + var/obj/item/clothing/mask/M = H.wear_mask + if(M && (M.flags & MASKCOVERSMOUTH)) + return + if(H.species && H.species.flags & NO_BREATHE) + return //no puking if you can't smell! + H << "You smell something foul..." + H.fakevomit() - if(pulse == PULSE_NONE) - return +/mob/living/carbon/human/proc/handle_heartbeat() + var/client/C = src.client + if(C && C.prefs.sound & SOUND_HEARTBEAT) //disable heartbeat by pref + var/obj/item/organ/heart/H = internal_organs_by_name["heart"] - if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + if(!H) //H.status will runtime if there is no H (obviously) + return + + if(H.status & ORGAN_ROBOT) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. + if(shock_stage >= 10 || istype(get_turf(src), /turf/space)) //PULSE_THREADY - maximum value for pulse, currently it 5. //High pulse value corresponds to a fast rate of heartbeat. //Divided by 2, otherwise it is too slow. - var/rate = (PULSE_THREADY - pulse)/2 + var/rate = (PULSE_THREADY - 2)/2 //machine people (main target) have no pulse, manually subtract standard human pulse (2). Mechanic-heart humans probably have a pulse, but 'advanced neural systems' keep the heart rate steady, or something if(heartbeat >= rate) heartbeat = 0 - if(H.status & ORGAN_ASSISTED) - src << sound('sound/effects/pacemakebeat.ogg',0,0,0,50) - else - src << sound('sound/effects/singlebeat.ogg',0,0,0,50) + src << sound('sound/effects/electheart.ogg',0,0,0,30) //Credit to GhostHack (www.ghosthack.de) for sound. else heartbeat++ + return + return + + if(pulse == PULSE_NONE) + return + + if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + //PULSE_THREADY - maximum value for pulse, currently it 5. + //High pulse value corresponds to a fast rate of heartbeat. + //Divided by 2, otherwise it is too slow. + var/rate = (PULSE_THREADY - pulse)/2 + + if(heartbeat >= rate) + heartbeat = 0 + if(H.status & ORGAN_ASSISTED) + src << sound('sound/effects/pacemakebeat.ogg',0,0,0,50) + else + src << sound('sound/effects/singlebeat.ogg',0,0,0,50) + else + heartbeat++ /* Called by life(), instead of having the individual hud items update icons each tick and check for status changes From e4d6acb538174e99a86d7be3c307ea69a370f9c9 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 10 Jul 2015 23:28:08 -0400 Subject: [PATCH 23/44] Changes a few del to del() --- code/__HELPERS/timed_alerts.dm | 2 +- code/game/gamemodes/borer/borer.dm | 2 +- .../objects/items/weapons/storage/bags.dm | 4 ++-- code/modules/admin/player_notes.dm | 6 ++--- code/modules/flufftext/Hallucination.dm | 8 +++---- code/modules/mob/living/living_defense.dm | 24 ------------------- 6 files changed, 11 insertions(+), 35 deletions(-) diff --git a/code/__HELPERS/timed_alerts.dm b/code/__HELPERS/timed_alerts.dm index 6e115a7d0c6..929341c3fc0 100644 --- a/code/__HELPERS/timed_alerts.dm +++ b/code/__HELPERS/timed_alerts.dm @@ -27,7 +27,7 @@ /timed_alert/proc/timed_alert(client/ref_client, question, title, time, choice1, choice2, choice3) if (!ref_client) return - spawn (time) del src // When src is deleted, the proc ends immediately. The alert itself closes. + spawn (time) del(src) // When src is deleted, the proc ends immediately. The alert itself closes. var/ref_answer ref_answer = alert(ref_client, question, title, choice1, choice2, choice3) diff --git a/code/game/gamemodes/borer/borer.dm b/code/game/gamemodes/borer/borer.dm index f5948f3a683..6ec8a9f7888 100644 --- a/code/game/gamemodes/borer/borer.dm +++ b/code/game/gamemodes/borer/borer.dm @@ -94,7 +94,7 @@ M.perform_infestation(first_host.current) forge_borer_objectives(borer, first_host) - del original + del(original) log_admin("Created [borers.len] borers.") diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index bbf73054abb..7a6c2a708d4 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -233,7 +233,7 @@ usr.client.screen -= S S.dropped(usr) if(!S.amount) - del S + del(S) else S.loc = src @@ -278,7 +278,7 @@ N.amount = stacksize S.amount -= stacksize if(!S.amount) - del S // todo: there's probably something missing here + del(S) // todo: there's probably something missing here orient2hud(usr) if(usr.s_active) usr.s_active.show_to(usr) diff --git a/code/modules/admin/player_notes.dm b/code/modules/admin/player_notes.dm index 3a74da5fca6..8b439ea6fe9 100644 --- a/code/modules/admin/player_notes.dm +++ b/code/modules/admin/player_notes.dm @@ -126,7 +126,7 @@ datum/admins/proc/notes_gethtml(var/ckey) message_admins("\blue [key_name_admin(usr)] has edited [key]'s notes.") log_admin("[key_name(usr)] has edited [key]'s notes.") - del info + del(info) //Updating list of keys with notes on them var/savefile/note_list = new("data/player_notes.sav") @@ -135,7 +135,7 @@ datum/admins/proc/notes_gethtml(var/ckey) if(!note_keys) note_keys = list() if(!note_keys.Find(key)) note_keys += key note_list << note_keys - del note_list + del(note_list) /proc/notes_del(var/key, var/index) @@ -151,7 +151,7 @@ datum/admins/proc/notes_gethtml(var/ckey) message_admins("\blue [key_name_admin(usr)] deleted one of [key]'s notes.") log_admin("[key_name(usr)] deleted one of [key]'s notes.") - del info + del(info) /proc/show_player_info_irc(var/key as text) var/dat = " Info on [key]%0D%0A" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 24a1cb6cc16..a0c9ddef418 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -443,16 +443,16 @@ Gunshots/explosions/opening doors/less rare audio (done) /obj/effect/fake_attacker/proc/updateimage() // del src.currentimage if(src.dir == NORTH) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(up,src) else if(src.dir == SOUTH) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(down,src) else if(src.dir == EAST) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(right,src) else if(src.dir == WEST) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(left,src) my_target << currentimage diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 6d30904ec36..6a5cf755e91 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -41,30 +41,6 @@ src << "\blue Your [C.name] was disrupted!" Stun(2) -/* - //Being hit while using a deadman switch - if(istype(equipped(),/obj/item/device/assembly/signaler)) - var/obj/item/device/assembly/signaler/signaler = equipped() - if(signaler.deadman && prob(80)) - src.visible_message("\red [src] triggers their deadman's switch!") - signaler.signal() -*/ - -/* - //Stun Beams -- These were commented out, making appropriate changes here. - Dave - if(istype(P, /obj/item/projectile/beam/stun) || istype(P, /obj/item/projectile/bullet/stunshot)) - stun_effect_act(0, P.agony, def_zone, P) - src <<"\red You have been hit by [P]!" - del P - return - - if(istype(P, /obj/item/projectile/energy/electrode) || istype(P, /obj/item/projectile/bullet/stunshot)) - stun_effect_act(0, P.agony, def_zone, P) - src <<"\red You have been hit by [P]!" - del P - return -*/ - //Armor var/armor = run_armor_check(def_zone, P.flag) var/proj_sharp = is_sharp(P) From c4494116a1f7b1119fc0eda3103640ae2776f178 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 10 Jul 2015 20:30:37 -0700 Subject: [PATCH 24/44] Fix a few color macros, one obsolete message, and some bad formatting --- code/modules/mob/living/carbon/human/life.dm | 28 +++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ab58c30a623..550a7e8eba2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -180,11 +180,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc /mob/living/carbon/human/proc/handle_disabilities() if (disabilities & EPILEPSY) if ((prob(1) && paralysis < 1)) - src << "\red You have a seizure!" - for(var/mob/O in viewers(src, null)) - if(O == src) - continue - O.show_message(text("\red [src] starts having a seizure!"), 1) + visible_message("[src] starts having a seizure!","You have a seizure!") Paralyse(10) Jitter(1000) @@ -233,7 +229,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc silent += 2 if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox - visible_message("[src] goes limp, their facial expression utterly blank.") + visible_message("[src] goes limp, their facial expression utterly blank.") death() /mob/living/carbon/human/proc/handle_stasis_bag() @@ -273,7 +269,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc radiation -= 0.1 reagents.add_reagent("radium", rads/10) if( prob(10) ) - src << "\blue You feel relaxed." + src << "You feel relaxed." return if (radiation > 100) @@ -281,7 +277,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(!(species.flags & RAD_ABSORB)) Weaken(10) if(!lying) - src << "\red You feel weak." + src << "You feel weak." emote("collapse") if (radiation < 0) @@ -315,7 +311,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc radiation -= 5 Weaken(3) if(!lying) - src << "\red You feel weak." + src << "You feel weak." emote("collapse") updatehealth() @@ -324,7 +320,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc adjustToxLoss(3) damage = 3 if(prob(1)) - src << "\red You mutate!" + src << "You mutate!" randmutb(src) domutcheck(src,null) emote("gasp") @@ -335,7 +331,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc adjustToxLoss(5) damage = 5 if(prob(1)) - src << "\red You mutate!" + src << "You mutate!" randmutb(src) domutcheck(src,null) emote("gasp") @@ -804,7 +800,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(species.flags & CAN_BE_FAT) if(FAT in mutations) if(overeatduration < 100) - src << "\blue You feel fit again!" + src << "You feel fit again!" mutations.Remove(FAT) update_mutantrace(0) update_mutations(0) @@ -812,7 +808,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc update_inv_wear_suit() else if(overeatduration > 500) - src << "\red You suddenly feel blubbery!" + src << "You suddenly feel blubbery!" mutations.Add(FAT) update_mutantrace(0) update_mutations(0) @@ -1368,18 +1364,18 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc isRemoteObserve = 1 // Is he unconscious or dead? if(remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" + src << "Your psy-connection grows too faint to maintain!" isRemoteObserve = 0 // Does he have psy resist? if(PSY_RESIST in remoteview_target.mutations) - src << "\red Your mind is shut out!" + src << "Your mind is shut out!" isRemoteObserve = 0 // Not on the station or mining? var/turf/temp_turf = get_turf(remoteview_target) if((!(temp_turf.z in config.contact_levels)) || remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" + src << "Your psy-connection grows too faint to maintain!" isRemoteObserve = 0 if(!isRemoteObserve && client && !client.adminobs) remoteview_target = null From b295590cad6e817a163d076c00d9a53296fe91ed Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 10 Jul 2015 20:34:07 -0700 Subject: [PATCH 25/44] Fix a few horrible mashed-together-operators in human Life() --- code/modules/mob/living/carbon/human/life.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 550a7e8eba2..613f0ad99b3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -70,14 +70,14 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc loc_as_cryobag.used++ in_stasis = 1 - if(life_tick%30==15) + if(life_tick % 30 == 15) hud_updateflag = 1022 voice = GetVoice() //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) - if(mob_master.current_cycle % 4==2 || failed_last_breath) //First, resolve location and get a breath + if(mob_master.current_cycle % 4 == 2 || failed_last_breath) //First, resolve location and get a breath breathe() //Only try to take a breath every 4 ticks, unless suffocating else //Still give containing object the chance to interact From f5ce957f33206ebb0c80bbe871bf94b0674751e1 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 11 Jul 2015 02:10:31 -0400 Subject: [PATCH 26/44] qdel pass II --- code/controllers/master_controller.dm | 2 +- code/datums/datacore.dm | 4 ++-- code/datums/mind.dm | 6 +++--- code/game/gamemodes/gameticker.dm | 2 +- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/overview.dm | 8 ++++---- code/game/machinery/telecomms/logbrowser.dm | 2 +- code/game/objects/effects/effect_system.dm | 2 +- code/modules/admin/verbs/one_click_antag.dm | 4 ++-- code/modules/hydroponics/seed_controller.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 2 +- code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- code/modules/mob/living/silicon/ai/latejoin.dm | 4 ++-- code/modules/mob/living/silicon/pai/death.dm | 4 ++-- code/modules/mob/new_player/logout.dm | 2 +- code/modules/mob/new_player/new_player.dm | 8 ++++---- code/modules/power/lighting.dm | 2 +- 17 files changed, 30 insertions(+), 30 deletions(-) diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 9a9072bb0d4..99d8931ef3a 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -49,7 +49,7 @@ datum/controller/game_controller/New() if(master_controller != src) if(istype(master_controller)) Recover() - qdel(master_controller) + del(master_controller) master_controller = src if(!job_master) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index d99a17e7ab5..a17a2b6e560 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -316,7 +316,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H) preview_icon.Blend(eyes_s, ICON_OVERLAY) if(clothes_s) preview_icon.Blend(clothes_s, ICON_OVERLAY) - del(eyes_s) - del(clothes_s) + qdel(eyes_s) + qdel(clothes_s) return preview_icon diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d8221483127..9799cd2caf5 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -825,7 +825,7 @@ datum/mind ticker.mode.changelings -= src special_role = null current.remove_changeling_powers() - if(changeling) del(changeling) + if(changeling) qdel(changeling) current << "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!" log_admin("[key_name_admin(usr)] has de-changeling'ed [current].") if("changeling") @@ -855,7 +855,7 @@ datum/mind ticker.mode.vampires -= src special_role = null current.remove_vampire_powers() - if(vampire) del(vampire) + if(vampire) qdel(vampire) current << "You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!" log_admin("[key_name_admin(usr)] has de-vampired [current].") if("vampire") @@ -1021,7 +1021,7 @@ datum/mind A.malf_picker.remove_verbs(A) A.make_laws() - del(A.malf_picker) + qdel(A.malf_picker) A.show_laws() A.icon_state = "ai" diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 26c88144d78..0c9aec27196 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -355,7 +355,7 @@ var/global/datum/controller/gameticker/ticker continue else player.create_character() - del(player) + qdel(player) proc/collect_minds() diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index f63748d81e2..0680cb330f4 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -219,7 +219,7 @@ if (href_list["del_all2"]) for(var/datum/data/record/R in data_core.medical) //R = null - del(R) + qdel(R) //Foreach goto(494) src.temp = "All records deleted." diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 35954c0c8b6..1f1395431d9 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -180,8 +180,8 @@ HI.Insert(I, frame=1, delay = 5) HI.Insert(J, frame=2, delay = 5) - del(I) - del(J) + qdel(I) + qdel(J) H.icon = HI H.layer = 25 usr.mapobjs += H @@ -306,7 +306,7 @@ var/icon/I = imap[i+1] H.icon = I - del(I) + qdel(I) H.layer = 25 usr.mapobjs += H @@ -353,7 +353,7 @@ proc/getb(col) /mob/proc/clearmap() src.client.screen -= src.mapobjs for(var/obj/screen/O in mapobjs) - del(O) + qdel(O) mapobjs = null src.unset_machine() diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index dc721495245..824dc21db76 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -101,7 +101,7 @@ race = "Unidentifiable" language = race - del(M) + qdel(M) // -- If the orator is a human, or universal translate is active, OR mob has universal speech on -- diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 7790be53bed..1d25b822d9b 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -427,7 +427,7 @@ steam.start() -- spawns the effect if(seed_name && plant_controller) seed = plant_controller.seeds[seed_name] if(!seed) - del(src) + qdel(src) ..() diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index a31e9b38242..6bb2f96ba06 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -367,7 +367,7 @@ client/proc/one_click_antag() candidates.Remove(theghost) if(!theghost) - del(new_syndicate_commando) + qdel(new_syndicate_commando) break new_syndicate_commando.key = theghost.key @@ -487,7 +487,7 @@ client/proc/one_click_antag() candidates.Remove(theghost) if(!theghost) - del(new_vox) + qdel(new_vox) break new_vox.key = theghost.key diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm index 9a0db47790c..6a2da055319 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/modules/hydroponics/seed_controller.dm @@ -37,7 +37,7 @@ var/global/datum/controller/plants/plant_controller // Set in New(). /datum/controller/plants/New() if(plant_controller && plant_controller != src) log_debug("Rebuilding plant controller.") - qdel(plant_controller) + del(plant_controller) plant_controller = src setup() process() diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 0c4c8d96c45..17bf26de838 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -37,7 +37,7 @@ qdel(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) - del(loc)//Gets rid of the brain item + qdel(loc)//Gets rid of the brain item spawn(15) if(animation) qdel(animation) if(src) qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ac83f3115d4..c2d10e26143 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -243,7 +243,7 @@ var/global/list/damage_icon_parts = list() //0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic. //Create a new, blank icon for our mob to use. if(stand_icon) - del(stand_icon) + qdel(stand_icon) stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank") var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin]" var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"] @@ -447,7 +447,7 @@ var/global/list/damage_icon_parts = list() if (targeted_by && target_locked) overlays_standing[TARGETED_LAYER] = target_locked else if (!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) if (!targeted_by) overlays_standing[TARGETED_LAYER] = null if(update_icons) update_icons() diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 8c966d636c7..2da08205836 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -34,11 +34,11 @@ var/global/list/empty_playable_ai_cores = list() job_master.FreeRole(job) if(mind.objectives.len) - del(mind.objectives) + qdel(mind.objectives) mind.special_role = null else if(ticker.mode.name == "AutoTraitor") var/datum/game_mode/traitor/autotraitor/current_mode = ticker.mode current_mode.possible_traitors.Remove(src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index fea081ddfff..08ec0e706d3 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -22,8 +22,8 @@ //New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here. //Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak - if(mind) del(mind) + if(mind) qdel(mind) living_mob_list -= src ghostize() if(icon_state != "[chassis]_dead") - del(src) + qdel(src) diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 9f064a99cd5..ad1c9b3098d 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -3,5 +3,5 @@ ..() if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. key = null//We null their key before deleting the mob, so they are properly kicked out. - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f9965b9275c..15456b3fa7c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -138,7 +138,7 @@ observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! observer.key = key respawnable_list += observer - del(src) + qdel(src) return 1 if(href_list["late_join"]) @@ -325,8 +325,8 @@ AnnounceCyborg(character, rank, "has been downloaded to the empty core in \the [character.loc.loc]") ticker.mode.latespawn(character) - del(C) - del(src) + qdel(C) + qdel(src) return //Find our spawning point. @@ -364,7 +364,7 @@ else AnnounceCyborg(character, rank, join_message) callHook("latespawn", list(character)) - del(src) + qdel(src) proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 74d633a8fbe..d8769065d32 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -591,7 +591,7 @@ sleep(2) explosion(T, 0, 0, 2, 2) sleep(1) - del(src) + qdel(src) // the light item // can be tube or bulb subtypes From ec2aab62efefa648a58aa7819c83dd4941955262 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Sat, 11 Jul 2015 03:28:07 -0400 Subject: [PATCH 27/44] Z5 revert / compatibility, --- _maps/map_files/cyberiad/z2.dmm | 18 +++++------ _maps/map_files/cyberiad/z5.dmm | 6 ++-- .../game/machinery/kitchen/kitchen_machine.dm | 19 ++++++++++- code/game/machinery/kitchen/microwave.dm | 32 ++++++++----------- code/modules/food/candy_maker.dm | 20 +----------- code/modules/food/grill_new.dm | 20 +----------- code/modules/food/oven_new.dm | 20 +----------- 7 files changed, 46 insertions(+), 89 deletions(-) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 3ba8c564e04..8c044214861 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -281,7 +281,7 @@ "fu" = (/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fv" = (/obj/structure/ninjatele{pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fw" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) -"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fy" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fA" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) @@ -311,7 +311,7 @@ "fY" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod3/transit) "fZ" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod3/transit) "ga" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"gb" = (/obj/structure/table,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"gb" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gc" = (/obj/structure/table,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gd" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) "ge" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) @@ -748,7 +748,7 @@ "ot" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "ou" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "ov" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_station/start) -"ow" = (/obj/structure/table,/obj/item/weapon/circuitboard/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ow" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ox" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oy" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oz" = (/obj/machinery/computer/shuttle_control/multi/syndicate{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -1067,14 +1067,12 @@ "uA" = (/turf/unsimulated/wall/fakeglass{dir = 8; icon_state = "fakewindows3"; tag = "icon-fakewindows (WEST)"},/area/centcom/specops) "uB" = (/turf/unsimulated/floor{icon_state = "asteroid6"; name = "sand"},/area/centcom/specops) "uC" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"uD" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "uE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray/combat/nanites{pixel_x = 3; pixel_y = -3},/obj/item/weapon/reagent_containers/hypospray/combat/nanites,/obj/item/weapon/reagent_containers/hypospray/combat/nanites{pixel_x = -3; pixel_y = 3},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uF" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/item/bodybag/cryobag{pixel_y = 5},/obj/item/bodybag/cryobag{pixel_y = 5},/obj/item/bodybag/cryobag{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uG" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(109); req_one_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "uH" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "uI" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "uJ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"uK" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "uL" = (/obj/machinery/computer/message_monitor,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uM" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "uO" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "gcircuit"},/area/centcom/control) @@ -1447,6 +1445,7 @@ "Cl" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cm" = (/obj/item/stack/sheet/metal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cn" = (/obj/item/stack/sheet/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"Co" = (/obj/machinery/kitchen_machine/microwave/upgraded,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cp" = (/obj/machinery/door/window/northright{name = "bar"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cq" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cr" = (/obj/item/ashtray/glass,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -1760,6 +1759,7 @@ "It" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iu" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iv" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Iw" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Ix" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Iy" = (/obj/item/device/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Iz" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) @@ -1836,8 +1836,8 @@ afbeaSbcaUaYdYdgddemdgddemcldXcldXdWdxdwdnbdaTaUbfaVamaqarasatauavbhaxbjbkboblbm anaUaVaZbdaXdndWdxdydWdxdydecDdecDemcmdHdFbgbabdbcaYadauavbhbibjbkboaBbmbnapaqarasatauarbjbkboblbhblbmbnapaqarasatauaKaLaMaUaVaZbdaXcjdmdmdmdmdmdmdmdmdmcPbebfaVaZbgaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCcpcpcpdadacpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeDeqeqeqbsereEeFeGerbseHeHeIeJeJbseveKeveLevbseMeNeNeNeObsePeQeQeQeRbD akbdaYbbbgaTdFemcmdwemcmdwdgckdgckdydfdXeSaSaWbgaZaXalbkboblbmbnapaqaGasatauavbhbibjbkeacGeTdZeUcJarasatauavbhbibjbkaAaLaMbdaYbbbgaTcMdmdmdmdmdmdmdmdmdmdvaUbcaYbbaSaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeVcpeWdadacpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqeqeqeXeqbsereYeYeYerbseHeZeZeZeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD aabgaXbeaSbaeSdydfdHdydfdHdWdddWdddwclcDcEaVbfaSbbaTaoblbmbnapaqarasaIauavbhbibjbkboblcJfafbfcfdfeatauavbhbibjbkboblaCaLaMbgaXbeaSbacPdmdmdmdmdmdmdmdmdmcObdaZaXbeaVaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffffffgfgfhfififjfgfgfgfgfgfgfgfgfgfkfgfgfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeCcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeqbserererererbseHeIeIeIeJbsevevevevevbseMeNeNeNeObsePeQeQeQeRbD -ajaSaTaUaVaWcEdwcldXdwcldXemdxemdxdHdeckcFaYbcaVbebaabavbhbibjbkboblaCbnapaqarasatauavfnfofpfqfrfsbmbnapaqarasatauavawaLaMaSaTaUaVaWdvdmdmdmdmdmdmdmdmdmdYbgbbaTaUaYaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNftfufvfwfffggbfyfzfAfAfBfCfDfEfFfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeVeCfLcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserfNfOfPerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD -amaVbabdaYbfcFdHdecDdHdecDdycmdycmdXdgddcBaXaZaYaUaWaeboblbmbnapaqaraHatauavbhbibjbkboebfXfYfZfogaasatauavbhbibjbkboaBaLaMaVbabdaYbfcOdmdmdmdmdmdmdmdmdmdnaSbebabdaXaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffufufufffgfxfyfyfyfyfygcgdgdgdgefHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpggeCghcpgidrgjcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserglgmgnerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD +ajaSaTaUaVaWcEdwcldXdwcldXemdxemdxdHdeckcFaYbcaVbebaabavbhbibjbkboblaCbnapaqarasatauavfnfofpfqfrfsbmbnapaqarasatauavawaLaMaSaTaUaVaWdvdmdmdmdmdmdmdmdmdmdYbgbbaTaUaYaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNftfufvfwfffgfxfyfzfAfAfBfCfDfEfFfGfHfIfHfHfJfKfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeVeCfLcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbseqeqeqfMeqbserfNfOfPerbsfQfRfRfRfSbsevfTevevevbsfUfVfVfVfWbsePeQeQeQeRbD +amaVbabdaYbfcFdHdecDdHdecDdycmdycmdXdgddcBaXaZaYaUaWaeboblbmbnapaqaraHatauavbhbibjbkboebfXfYfZfogaasatauavbhbibjbkboaBaLaMaVbabdaYbfcOdmdmdmdmdmdmdmdmdmdnaSbebabdaXaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffufufufffggbfyfyfyfyfygcgdgdgdgefHfHfHgffHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpggeCghcpgidrgjcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqgkeqeqeqbserglgmgnerbsgogpgpgpgqbsevevevgrevbsgsgtgtgtgubsgveQeQeQgwbD adaYaWbgaXbccBdXdgckdXdgckdwdfdwdfcDdWdxdcaTbbaXbdbfaharasatauavbhbiaybkboblbmbnapaqarcKfngxcGeTdZbjbkboblbmbnapaqaraHaLaMaYaWbgaXbcdYdmdmdmdmdmdmdmdmdmdFaVaUaWbgaTaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNgygzgAfufufufffggBfygCgDgEgFgGgdgdgdgdfHfHgHfHgIfIfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpeCeCeCcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeneoepeneobseqeqeqeqeDbserglgmgnerbsgJeIgKeIgLbsevevevevevbsgMeNeNeNgNbsgveQeQeQgwbD alaXbfaSaTaZdccDdWddcDdWdddHcldHclckemcmcQbabeaTbgbcagbjbkboblbmbnapaFarasatauavbhbibjbkboblbmbnapaqarasatauavbhbibjazaLaMaXbfaSaTaZdndmdmdmdmdmdmdmdmdmeSaYbdbfaSbaaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNgOgPgQfufufufffggRgdgegegegegegdgdgdgdfHfHfHgSfHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpfLeCeVcpfldrfmcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpeoepeneoepbsgTeqeqeqeqbserglgmgnerbsgJgUgUgUgLbsgVgVgVgVgVbsgMeNeNeNgNbsgveQeQeQgwbD aoaTbcaVbabbcQckemdxckemdxdXdedXdedddydfcNaWaUbaaSaZacatauavbhbibjbkaAblbmbnapaqarasatauavbhbibjbkboblbmbnapaqarasataJaLaMaTbcaVbabbdFdmdmdmdmdmdmdmdmdmcEaXbgbcaVaWaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNfffffffffffffffggWgdgdgdgdgdgdgdgdgdgdgXfHfHfHfHfHfgaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNbZcpcpcpcpcpcpcpcpcpbZaNaNaNaNaNaNaNaNaNaNaNaNaNbpepeneoepenbseqfMeqgkeqbsergYgZhaerbsgJgJeIgLgLbshbhbhbhbhbbsgMeNeNeNgNbsgveQeQeQgwbD @@ -1995,7 +1995,7 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVAVAVAVAVAVAVAVAVxcyNyNyNBLBMBMBMBMBNBNBMBMBMBMBOyNyNyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNznBPBQBQBQBRzpaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVBSBTBTBTBTBTBUAVxcyNyNBLBVBWBXBYBZCaCbBZCcCdCeBMBMBOyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgChCgCgCfAVxcyNBLBMCiCiCiCjBZCkCkBZClCiCiCmCnBMBOxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCfAVxcBLBMuDCpCqCrCsBZCtCiCuCiCiCiCiCiCjBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCfAVxcBLBMCoCpCqCrCsBZCtCiCuCiCiCiCiCiCjBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCvAVxcCwCxCiCiCyCyCyBZCiCiBZCzCACBCCCDCEBZxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCgCgCgCgCgCFAVxcCGCxCiCiCiCiCiCHCiCiBZBMBMBMBMBMBMCIxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNAVCfCJCgCgCgCKCfAVxcCLBMCMCNCOCPCiBZCiCiBZCiCQCRCSyNyNyNxcaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -2057,7 +2057,7 @@ aNaNaNaNaNHEHEHEHEHFHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHSHTHTHTHTHUHEHEHEHEHEHEHEHEHFHEHEHEHEHEHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHVFSFSFSHWFSFSFSFSHXFSFSFSFSHXEjEjEjDZaNaNFkDVDVHZDVDVEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHSHTHTHTHTHUHEIbIcIdIcIeIfIhIhIhIfIeIhIeIhIiHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDZIjIkIlDZHqFSFSHrDZImInIoHrDVFgEjEjDZaNaNaNFkaNaNaNEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEIpHTHTHTHTIqHEIhIrIrIrIrIrIhIhIhIrIrIrIrIrIsHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDVDVDVDVHuItIuDZDVDVDVDVEMaNEhEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHEIpIvuKuKHTHTIxIhIhIhIyIhIhIhIhIhIhIhIyIhIhIhHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkaNaNFkDZHsIzDZEMaNaNaNaNaNEEEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHEIpIvIwIwHTHTIxIhIhIhIyIhIhIhIhIhIhIhIyIhIhIhHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkaNaNFkDZHsIzDZEMaNaNaNaNaNEEEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNHEHEHEHEHEHEHEHEIhIrIrIrIrIrIhIhIhIrIrIrIrIrIhHEHEHEHEHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFkDVDVEMaNDSDWDXDXDYGxEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNHEtDtDtDtDtDHEIBICICICICICICICICICICICICICIDHEtEtEtEtEtEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEhEjEjEjEjEjEjEjDZaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNHEHEHEIFIFIFIFIFjbjcjdjdjdjdjdjdjdjdjdjdjdjdjdjcjbIFIFIFIFIFHEHEHEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNGiGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGwGiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEEEjEjEjEjEjEjFHDZEMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN diff --git a/_maps/map_files/cyberiad/z5.dmm b/_maps/map_files/cyberiad/z5.dmm index 84460732cd1..e011a78faa9 100644 --- a/_maps/map_files/cyberiad/z5.dmm +++ b/_maps/map_files/cyberiad/z5.dmm @@ -1132,7 +1132,6 @@ "vN" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/north_outpost) "vO" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "vP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/production) -"vQ" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "vR" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) "vS" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored) "vT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/mine/explored) @@ -1147,7 +1146,6 @@ "wc" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/mine/maintenance) "wd" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "we" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/mine/maintenance) -"wf" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/obj/machinery/light_switch{pixel_y = 23},/turf/simulated/floor,/area/mine/west_outpost) "wg" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored) "wh" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "wi" = (/obj/structure/lattice,/turf/space,/area/mine/explored) @@ -1202,6 +1200,7 @@ "xo" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) "xp" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/mine/west_outpost) "xq" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/west_outpost) +"xr" = (/obj/structure/table,/obj/machinery/microwave,/obj/machinery/light_switch{pixel_y = 23},/turf/simulated/floor,/area/mine/west_outpost) "xt" = (/obj/machinery/recharge_station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/west_outpost) "xu" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/west_outpost) "xv" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/west_outpost) @@ -1209,6 +1208,7 @@ "xx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/west_outpost) "xz" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) "xA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"xC" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xD" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xE" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "xF" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) @@ -1653,7 +1653,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodododorkrkrkdodododododododododo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdodododododododododorkrkrkrkrkdododododododododolvlvlvlvoFoFoFoFwJwJwJlvlvlvkIacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkwEbkbkwqwywzwKwwoKlvlvlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaaaacacacacacacnLwMwNwOwOwPlvlvrhlvlvlvlvlvlvlvlvaekIkIacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadorkrkrkrkrkrkrkrkdododododododorkrkrkrkrkrkdododododododododolvlvlvlvlvlvlvlvwQwRwSlvlvlvkIacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIkIkIkIkIkIacacacacacacacacbkbkbkbkbkbkbkbkbkbkwqwTwqwqwqwqwqwqwwoKlvlvlvlvlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaacacacacacnLwVwWwXwXwYlvsCqXqYlvlvlvlvlvlvlvaeaekIacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkrkdodododolvlvwZwZwZwZwZwZoMoMoMwZwZwZwZwZlvlvlvkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacackIkIlvlvlvlvlvkIkIkIkIkIacacacacacacacbkbkbkbkwqwqwqwqxdxexfwqwuxgwqxhwqwqwqoKoKoKwqlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaacacackInLxlxmxnxnxolvqTrdqVlvlvlvlvlvlvlvlvlvkIkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkdodokIlvlvlvwZxpxqwfoNxtxuxvxwxxoPxzxAoNqYlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIlvlvlvlvlvlvlvlvlvlvkIkIkIkIkIacacacacbkbkbkwqvQxDxExFxDxDwqwywzxGwwwqxHxIxJxJxJoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaakIkIkIlvlvlvlvlvlvlvlvxKxLpepexLxLlvlvlvlvlvlvkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkrkrkrkdododododododorkrkrkrkrkdodokIlvlvlvwZxpxqxroNxtxuxvxwxxoPxzxAoNqYlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacackIkIlvlvlvlvlvlvlvlvlvlvkIkIkIkIkIacacacacbkbkbkwqxCxDxExFxDxDwqwywzxGwwwqxHxIxJxJxJoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaakIkIkIlvlvlvlvlvlvlvlvxKxLpepexLxLlvlvlvlvlvlvkIacacacbkbkbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadododorkrkrkdodododododododorkrkrkdodoackIlvlvlvwZxOxPxQoNxPxSxPxPxTxUxVxAxWxXlvlvlvlvlvkIkIkIacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkacackIkInLlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvkIkIacacacacacacwqxYxDxZyaybycwqwqwqwqwwwqxHydydydyeoKlvlvlvlvlvlvlvaaaaaaaaaaaaaaaaaalvlvlvlvlvlvlvlvlvlvlvxKyfygygyhxLlvyilvlvlvoxnLkIacacbkbkbkbkbkbkbkbkbkbkacacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodorkrkrkdododododododododododododoackIlvlvlvwZyjxPxPykxPxSylxPxPoNynyooNqVlvlvlvlvlvlvlvkIkIkIkIacacacacacacbkbkbkbkbkbkbkbkbkacackIkIlvwIlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvlvkIkIkIkIacacacwqypyqyrxDysytyuyeyvywyxwqyyydyzyAyBoKlvlvlvlvlvlvaaaaaaaaaaaaaaaaaaaaaaaalvlvlvlvlvyCyCpfpfxKyFyGyHyIxLxLxLxLlvlvlvlvkIkIacacbkbkbkbkbkbkbkbkbkacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadododododododododododododododobkbkkIkIlvlvwZyJxPyKoPyMyNyOxPwZwZwZwZwZwZsCqYlvlvlvlvlvlvlvlvkIkIkIacacacacacbkbkbkbkbkbkbkacacackIlvlvlvlvlvlvlvlvlvlvlvsCqYlvlvlvlvlvlvlvlvlvkIkIacacwqwqwqwqyPwqwqpHpIySpHpIwqwqwqwqwqyTwqwqoKoKlvlvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvlvpfpfyXyYyZpJzbzczczdqrzfzgrSqYlvlvlvnMkIacacbkbkbkbkbkbkbkacacacbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/machinery/kitchen/kitchen_machine.dm b/code/game/machinery/kitchen/kitchen_machine.dm index 2e1ea05c24b..ad6ecb3f27b 100644 --- a/code/game/machinery/kitchen/kitchen_machine.dm +++ b/code/game/machinery/kitchen/kitchen_machine.dm @@ -15,6 +15,7 @@ var/efficiency = 0 var/list/cook_verbs = list("Cooking") //Recipe & Item vars + var/recipe_type //Make sure to set this on the machine definition, or else you're gonna runtime on New() var/list/datum/recipe/available_recipes // List of the recipes you can use var/list/acceptable_items // List of the items you can put in var/list/acceptable_reagents // List of the reagents you can put in @@ -31,9 +32,25 @@ ********************/ /obj/machinery/kitchen_machine/New() - //..() //do not need this reagents = new/datum/reagents(100) reagents.my_atom = src + if (!available_recipes) + available_recipes = new + acceptable_items = new + acceptable_reagents = new + for (var/type in (typesof(recipe_type)-recipe_type)) + var/datum/recipe/recipe = new type + if(recipe.result) // Ignore recipe subtypes that lack a result + available_recipes += recipe + for (var/item in recipe.items) + acceptable_items |= item + for (var/reagent in recipe.reagents) + acceptable_reagents |= reagent + if (recipe.items || recipe.fruit) + max_n_of_items = max(max_n_of_items,recipe.count_n_items()) + else + qdel(recipe) + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown /******************* * Item Adding diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 67b53ad0883..988edaf8580 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "mw" cook_verbs = list("Microwaving", "Reheating", "Heating") + recipe_type = /datum/recipe/microwave off_icon = "mw" on_icon = "mw1" broken_icon = "mwb" @@ -19,25 +20,6 @@ /obj/machinery/kitchen_machine/microwave/New() ..() - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/microwave)-/datum/recipe/microwave)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - qdel(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/microwave/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.count_n_items()) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) @@ -59,3 +41,15 @@ for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts) E += M.rating efficiency = E + +// The following code is present as temporary assurance for compatibility and to avoid merge conflicts for the TG mining port +// Please delete this portion once all maps are updated to use the new object path: /obj/machinery/kitchen_machine/microwave + +/obj/machinery/microwave + name = "Microwave spawner" + icon = 'icons/obj/kitchen.dmi' + icon_state = "mw" + +/obj/machinery/microwave/New() + new /obj/machinery/kitchen_machine/microwave(get_turf(src)) + qdel(src) \ No newline at end of file diff --git a/code/modules/food/candy_maker.dm b/code/modules/food/candy_maker.dm index d53a5acb691..1452df3ea70 100644 --- a/code/modules/food/candy_maker.dm +++ b/code/modules/food/candy_maker.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/cooking_machines.dmi' icon_state = "candymaker_off" cook_verbs = list("Wonderizing", "Scrumpdiddlyumptiousification", "Miracle-coating", "Flavorifaction") + recipe_type = /datum/recipe/candy off_icon = "candymaker_off" on_icon = "candymaker_on" broken_icon = "candymaker_broke" @@ -19,25 +20,6 @@ /obj/machinery/kitchen_machine/candy_maker/New() ..() - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/candy)-/datum/recipe/candy)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - qdel(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/candy/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.count_n_items()) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - component_parts = list() component_parts += new /obj/item/weapon/circuitboard/candy_maker(null) component_parts += new /obj/item/weapon/stock_parts/manipulator(null) diff --git a/code/modules/food/grill_new.dm b/code/modules/food/grill_new.dm index 2e8b1a393bb..8b9ac0cd27c 100644 --- a/code/modules/food/grill_new.dm +++ b/code/modules/food/grill_new.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/cooking_machines.dmi' icon_state = "grill_off" cook_verbs = list("Grilling", "Searing", "Frying") + recipe_type = /datum/recipe/grill off_icon = "grill_off" on_icon = "grill_on" broken_icon = "grill_broke" @@ -19,25 +20,6 @@ /obj/machinery/kitchen_machine/grill/New() ..() - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/grill)-/datum/recipe/grill)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - qdel(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/grill/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.count_n_items()) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - component_parts = list() component_parts += new /obj/item/weapon/circuitboard/grill(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) diff --git a/code/modules/food/oven_new.dm b/code/modules/food/oven_new.dm index 7c5316e5705..c709fdf0b5e 100644 --- a/code/modules/food/oven_new.dm +++ b/code/modules/food/oven_new.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/cooking_machines.dmi' icon_state = "oven_off" cook_verbs = list("Baking", "Roasting", "Broiling") + recipe_type = /datum/recipe/oven off_icon = "oven_off" on_icon = "oven_on" broken_icon = "oven_broke" @@ -19,25 +20,6 @@ /obj/machinery/kitchen_machine/oven/New() ..() - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/oven)-/datum/recipe/oven)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - qdel(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/oven/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.count_n_items()) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - component_parts = list() component_parts += new /obj/item/weapon/circuitboard/oven(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) From 99bf49504ae490c2365143f51e0ac9dcd2955422 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 11 Jul 2015 06:28:03 -0400 Subject: [PATCH 28/44] LINDA Pressure Changes --- code/LINDA/LINDA_turf_tile.dm | 6 +----- code/game/machinery/machinery.dm | 1 + code/game/objects/items.dm | 2 +- code/game/objects/structures.dm | 1 + code/game/objects/structures/mop_bucket.dm | 3 +-- .../structures/stool_bed_chair_nest/stools.dm | 1 - .../mob/living/carbon/human/human_defense.dm | 1 + code/modules/mob/mob_defines.dm | 1 + code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paperbin.dm | 2 +- sound/effects/space_wind.ogg | Bin 0 -> 40939 bytes 11 files changed, 9 insertions(+), 11 deletions(-) create mode 100644 sound/effects/space_wind.ogg diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index eb43d2d5bca..1a0b785d69c 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -270,14 +270,10 @@ turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduc atom/movable/var/pressure_resistance = 5 -atom/movable/var/last_forced_movement = 0 atom/movable/proc/experience_pressure_difference(pressure_difference, direction) - if(last_forced_movement >= air_master.current_cycle) - return 0 - else if(!anchored) + if(!anchored) if(pressure_difference > pressure_resistance) - last_forced_movement = air_master.current_cycle spawn step(src, direction) return 1 diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 85a8557b2d3..d3b26ba0f05 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -96,6 +96,7 @@ Class Procs: /obj/machinery name = "machinery" icon = 'icons/obj/stationobjs.dmi' + pressure_resistance = 10 var/stat = 0 var/emagged = 0 var/use_power = 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 4f52fe3dd86..0914bc7b855 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -12,7 +12,7 @@ var/w_class = 3.0 var/slot_flags = 0 //This is used to determine on which slots an item can fit. pass_flags = PASSTABLE - pressure_resistance = 5 + pressure_resistance = 3 // causeerrorheresoifixthis var/obj/item/master = null diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 97b9b42019e..ef365fdd059 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -1,5 +1,6 @@ /obj/structure icon = 'icons/obj/structures.dmi' + pressure_resistance = 8 var/climbable var/mob/climber diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 424f7aba13f..fd3372692e6 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/janitor.dmi' icon_state = "mopbucket" density = 1 - pressure_resistance = 5 flags = OPENCONTAINER var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite @@ -12,7 +11,7 @@ var/datum/reagents/R = new/datum/reagents(100) reagents = R R.my_atom = src - + /obj/structure/mopbucket/full/New() ..() reagents.add_reagent("water", 100) diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 726964e7ef3..00e267a48f5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/objects.dmi' icon_state = "stool" anchored = 1.0 - pressure_resistance = 15 /obj/structure/stool/ex_act(severity) switch(severity) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 33aa4df7abe..bccf63c73de 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -505,6 +505,7 @@ emp_act return /mob/living/carbon/human/experience_pressure_difference(pressure_difference, direction) + playsound(src, 'sound/effects/space_wind.ogg', 50, 1) if(shoes) if(istype(shoes,/obj/item/clothing/shoes/magboots) && (shoes.flags & NOSLIP)) //TODO: Make a not-shit shoe var system to negate airflow. return 0 diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 394d098fdc8..5dd92388daf 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -3,6 +3,7 @@ layer = 4.0 animate_movement = 2 // flags = NOREACT + pressure_resistance = 8 var/datum/mind/mind var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 50309dd859b..211cc4cfc34 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -13,7 +13,7 @@ throw_range = 1 throw_speed = 1 layer = 4 - pressure_resistance = 1 + pressure_resistance = 0 slot_flags = SLOT_HEAD body_parts_covered = HEAD attack_verb = list("bapped") diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 6c567772b99..bc90e229f20 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -7,7 +7,7 @@ w_class = 3 throw_speed = 3 throw_range = 7 - pressure_resistance = 10 + pressure_resistance = 8 var/amount = 30 //How much paper is in the bin. var/list/papers = new/list() //List of papers put in the bin for reference. /* diff --git a/sound/effects/space_wind.ogg b/sound/effects/space_wind.ogg new file mode 100644 index 0000000000000000000000000000000000000000..397086a1a296d4bd807eeecc569c68bd71021955 GIT binary patch literal 40939 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 Date: Sat, 11 Jul 2015 09:38:20 -0400 Subject: [PATCH 29/44] Auto-Toggling OOC --- code/controllers/configuration.dm | 5 +++++ code/game/gamemodes/gameticker.dm | 4 +++- code/game/verbs/ooc.dm | 11 +++++++++++ code/modules/admin/admin.dm | 6 +----- config/example/game_options.txt | 3 +++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 658d255aa64..7094f72c9bc 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -100,6 +100,9 @@ var/revival_cloning = 1 var/revival_brain_life = -1 + + var/ooc_during_round = 0 + //Used for modifying movement speed for mobs. //Unversal modifiers var/run_speed = 0 @@ -534,6 +537,8 @@ config.revival_cloning = value if("revival_brain_life") config.revival_brain_life = value + if("ooc_during_round") + config.ooc_during_round = 1 if("run_speed") config.run_speed = value if("walk_speed") diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 26c88144d78..bd6bae72d6f 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -219,6 +219,7 @@ var/global/datum/controller/gameticker/ticker admins_number++ if(admins_number == 0) send2adminirc("Round has started with no admins online.") + auto_toggle_ooc(0) // Turn it off /* DONE THROUGH PROCESS SCHEDULER supply_controller.process() //Start the supply shuttle regenerating points -- TLE @@ -250,6 +251,7 @@ var/global/datum/controller/gameticker/ticker proc/station_explosion_cinematic(var/station_missed=0, var/override = null) if( cinematic ) return //already a cinematic in progress! + auto_toggle_ooc(1) // Turn it on //initialise our cinematic screen object cinematic = new(src) cinematic.icon = 'icons/effects/station_explosion.dmi' @@ -400,7 +402,7 @@ var/global/datum/controller/gameticker/ticker if(!mode.explosion_in_progress && game_finished && (mode_finished || post_game)) current_state = GAME_STATE_FINISHED - + auto_toggle_ooc(1) // Turn it on spawn declare_completion() diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 2f8249c8401..c8a1d058592 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -75,6 +75,17 @@ var/global/normal_ooc_colour = "#002eb8" C << "OOC: [src.key]: [msg]" */ +/proc/toggle_ooc() + ooc_allowed = !( ooc_allowed ) + if (ooc_allowed) + world << "The OOC channel has been globally enabled!" + else + world << "The OOC channel has been globally disabled!" + +/proc/auto_toggle_ooc(var/on) + if(!config.ooc_during_round && ooc_allowed != on) + toggle_ooc() + /client/proc/set_ooc(newColor as color) set name = "Set Player OOC Colour" set desc = "Set to yellow for eye burning goodness." diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 9cd97ddcb42..39304707b44 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -629,11 +629,7 @@ var/global/nologevent = 0 set category = "Server" set desc="Globally Toggles OOC" set name="Toggle OOC" - ooc_allowed = !( ooc_allowed ) - if (ooc_allowed) - world << "The OOC channel has been globally enabled!" - else - world << "The OOC channel has been globally disabled!" + toggle_ooc() log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled OOC.", 1) feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 3f282e5a6ce..0d4b371ae59 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -33,6 +33,9 @@ REVIVAL_CLONING 1 REVIVAL_BRAIN_LIFE -1 +### OOC DURING ROUND ### +#Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. +OOC_DURING_ROUND ### MOB MOVEMENT ### From 057c15982e3139b79c3c16a391c82442779f5e9d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 11 Jul 2015 10:10:57 -0400 Subject: [PATCH 30/44] Re-adds Security Helmets to Officer's Lockers --- .../objects/structures/crates_lockers/closets/secure/security.dm | 1 + 1 file changed, 1 insertion(+) 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 863be182e04..ff4f66c9bae 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -188,6 +188,7 @@ new /obj/item/weapon/storage/belt/security/sec(src) new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) + new /obj/item/clothing/head/helmet(src) new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/taperoll/police(src) return From 2c677779d02d195886c2ae82d7956f8843c53196 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 12 Jul 2015 07:58:33 -0400 Subject: [PATCH 31/44] Adds cult glows to constructs taken from VG will put in mob.dmi when i am SURE its not gonna conflict on me --- .../mob/living/simple_animal/constructs.dm | 13 +++++++++++++ icons/mob/cultglows.dmi | Bin 0 -> 5954 bytes 2 files changed, 13 insertions(+) create mode 100644 icons/mob/cultglows.dmi diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 9b579c4dadb..3a287de0d13 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -33,6 +33,7 @@ real_name = name for(var/spell in construct_spells) AddSpell(new spell(src)) + updateicon() /mob/living/simple_animal/construct/Die() ..() @@ -326,6 +327,18 @@ /mob/living/simple_animal/construct/harvester/Process_Spacemove(var/check_drift = 0) return 1 + +////////////////Glow//////////////////// +/mob/living/simple_animal/construct/proc/updateicon() + overlays = 0 + var/overlay_layer = LIGHTING_LAYER + 1 + if(layer != MOB_LAYER) + overlay_layer=TURF_LAYER+0.2 + + overlays += image('icons/mob/cultglows.dmi',"glow-[icon_state]",overlay_layer) + + + //set_light(1,2,"red") ////////////////Powers////////////////// diff --git a/icons/mob/cultglows.dmi b/icons/mob/cultglows.dmi new file mode 100644 index 0000000000000000000000000000000000000000..09455d193a906ad79ec24c55a9638138686c6fd0 GIT binary patch literal 5954 zcmaJ_cQ{1Gjq;7Gjq<|*FDd3KNG8?r9w`^OacG^xtgk?9=3&JOFj_+wl?Lp zwZJw-(6`3EiuOLX-cFvrP9E+65SX1XUQZG!@(6GJ<%9m?_GTrsIRS3H$7igQH!e8N z9M`%x7p!j>oeDe=J%e5^YtE~8trtHSCJsmAGtX3TG+kRh78i2ROT61bTcjAmFU@u>Mk54ufVz(06}a^Hch^JuFwC%Mh*YPdh%4 zo_c$qS#(6Eu{1%NKC5Bf`_TLV01T#TiVAN7vk!BET^|pI40aE0{r01?(o-9*Z;D_g zZH`?U5FM402LuKFsZ;1UVpqazjw;4U)bDXa&f_DAyvbPJnAX*qi4)sZx;vA&5s?b& z%vsx($JCRNDbl!fSVlCw8EhUG{vx2s%B~W7xqeQ$`gr@|;;%pL9i2Ip@~RyzGTjRc zYaZK@wQGuWN}y<3L*{QeAd0dt;)XJ~j}vJzJSrRLhfn%NQ(99f34mv)+?{rv08T8i z3`o5%k(fP@CU*z2;gidY=>L6c@X^lP7jFf5;vfj8@>JcYVou(RXl0=`fo%ESL6B5| zL-fQt^l^9_L9#NNplP=Bjo#;elRL}ftGinpVJonq&)1r%x_z7qfD3*SMHfc-oDUf0 zw=bD0mZxV|T6>-h@ ztM_(2bM6y`8=q*Et!NH|#xfBVuhNFgrZTZm(QaL;b-5Xh2xs(N5f(o=kY zE_w9u2mz(gbEoXw)`5Y5nYMN;Vk&Ib3bJ0&=M;LaGR+WY7 zXQqKXx4XLH97Y8Lj`mYUfkHR4ztE9-!T3?b!^7i|gp@)?GVI|UKTd`{vvvA172B=v zcaXuu4}S&*O22*1bpHMf;RR5IFSEc8k_+uRHNswHupAR!Yy%)*k-k5bIVT{p9laF$ zv&4D3!0^$cY4+*%ihSjq(2%l*B4jrcUzzQJhf9l*%4xd#CKVOI!(!m0d&5NKYP#A;d zR;5eS)(pdP-wwYcIrI540RWVM*mGUiAgZ0PyR%(O8Br@pNc*KiK7>0?5Nq;nCld#h zGI89|Q@dA!VK~W#mq&MlF5%mEW9stIkmJ>6;t$;U{<)pS1RRmp@%(coJDNuU>po&J z|84>1XQe_;5-qV7tkry**7MJRY})?!9y~OeLsn8z+%cn1OA5W;SACWTt zB-h1jgJh`EP1#%1&g+#wkq@D7-R?57Y%|gBqQ30JjEuoEaCF{meuYi)x)D-=!@5Z2 zQzU8y6t%M*k69o881k;paS-;8yg}WdwG)2^5RvaWyHEL_2}xcum#DCtmAu3vcNt%Z zmtX!9E%}{|z1<o`I2Rnz9cM}+rjAN*c`Dg-ZZ-(Z~$*wIUCsXo#i!GHjcO9`CM zbAXxqbgO`5YV8gu+)VM)N2rymFjdO=lr1)`t*Sje=cDf&+szYW!CQH(G~|&^=;KP2Z2lJEwCw{#n^-!uf92Z_`8U~ zOv)R*f2~?<9I`hh0mc7dj5@PLXU|GOf8}=WyuHq2Vy0n}3WdFI1w$p? zum0u6Mfn)gbuv1Ud?=*Yi>0wFW4wjCQJNFD#4L47s@k`zDT+Lf+`AoAm9EZl4HIJM z7}eWnVg^>s8Y+tn5~>`Ey9Sh1goxD~e%*sJ=2Bd;`8=#_i|9;#sdh-49-iHZD42is zDU{ODITMS@8`s$$G0(@IY^{!l0eh22Y9;R4BbfKa0_+oFIE4p`w$>fWs@RTCZ}%>| zO#EH(1U7-j$?s>=^ZD}}bE)=t`}0vw0w(rq!x? z+86jFsp9J+c3FQ{`K=fXWWg{GR69>1jP-v3|$8XEPSn2bd*17Vp+liMkudj8Dq{ijbzAqcE--K zv$GFm%Zrw)HgWvPUN80aLG!G3vkDILJP1Wxy*n*PK8P#XQ3qK*im1hYNoU!a7oxC# zEc1Koe9|WB;^CYl!Mw5_ROx$QJza!87tj>@X!mmW5K~QX(raJQyi_DP)-wzwA$^I( zUMT8H5t70GX5d;m-F(K%P)_`A%BA6PSvQ!5MMNDH>q7?rv{g>cBx*# zLXOnX9PXo&-i?hV{b-61J9M+gkoV>-vgk6Uo7iObF6%5ILGv72I_p{;5qEVd4>bY- zS*%l-G78q4p&FRr*>p@~Lv~r1i&5IHn5L$YvTgn4onELlf}S~{e-$z{?W?qZpDYU| zI!i)``cTqY(d;H$A-tEW3+J`l!4M6ucU=X%`{^kVK}1dq(DI3SopwF4weYGzdCt*t z!UdQ*bA})j>AsIX6rd!+UpJD9XA8`G_B~6Ml(~qDh&c4X6a6{gAm1o5mj7*p(shQU z7WCbO;|&2m%lpwjcxXls#2uhO3Qg2?SoaC;%QrK%f`Bo2f**WJqLt2GpW3*)CcW2g zBex{f2iJ3mCizH}ORpC9jx|=%nON1xRIU!J1XsD{)~9yXye2l~ zZ<*aP`t$P8TCx@^Dhobz$YY}-`TrN=J!4Y+K%u(oLBz~3j*pvJ(0TTrnTRYXFHlRg zM?me4jE|t^GOr~fg@OWysq*i6PCUSH>OfhU)K!k&%~qLqJijoUj@?Jh^2Q|a{Xcm5 zQ%OyrP&cXqm8=Vu2{*hXM8k<4pWobX-}Ea!~y#@lT?Z+buJ9MdfD;GE4lQ< zV~h{Hf!zi7u^Sa?eS!3!cVT!%WKpHSk2DBKwW2flVIZmP8oQ{C{O~;yOCj%a2r8mH zprHSrC}Kd#zYzkeV?E8Ip9SN5B;gjvUr&e8q%~b0EW{&ec@_`R=}|kew1=GzzbwT` z^wc*o3-JiD_miH$g@1sI7U4Di|RYAc`>xkqA0b*fphZA zHD--Pv92&=5N_zX-c?_JJjxEfpT8}+M2Q>l==_0&DPqZCRy6EvrxR)`2km)3?8p6=f!l0M z6t8EC2jCWdPdL6~b$C7ozv;$pSLkpZ!{1<0d}Ldv@DJmY-jEfJUW)TpNQ5A6`5=yG zJd%J~m^6atebMbIM?^Z-qtRQhJ&iNh_H2OQ)ZJ+jTf||SXV^nJXYPqcg_4_%h(rS3 zA6(q*pk6cvaKDPAZFB>Km)Rq7S>9H+$)7hvA`Tbw&kX@fnxEuPKZ-1~_xzjrWA;)- zB%Ac7WQ;Y>5Q}0~fuBPxKh`y8Yh^W(+>PJ3k4^sNhI>N(bflsMi*@pJYo<0MV=JRnKx^u$~)1eZ}10W_h9F`GdF1 zk^~+HUE}C|e%=6yu*EIU#Ieq=k&N+t(|M4z9;kUjlYGDE54vhoh%A8R&tIMSMaI<6 z8ltSkJ_qX|%O`y9pqkGiHpaRy2JD00RWzMz@zv%Y&eqtg>Nfl$Bfs-#x*$J!(^Xl= zJF_ZPu!wot6FrE(@eeZ_Q{w-j?i0&PVy4|O8}q2udgmkmJaPkYblANJY!1Mn0x~8Y6hYQhE zHLsRRQLrtp#gmlCnz%FHZlzRYpbYgAaq2;PczTNL+OOTB(RSPG>((h5HW`${h919n z=20<;Zp>_8GJI?0N4=3|!)1Q(J*cVne}q7`Z(lSJJuWi#fOrFXh+v-}MMfVGA^}K7rWT*Yz2G^)^l& zZc?I!)22!k=r2iI-hY}z`ChU{s0_Z~!GZ?MBvNHisDup*rD!-*0N}(L_4cqBR)c%l@NQV%lR15y{2UnS zDPkH+GZNgz1JD<~?vDIv*RG;S?9Gay%3VW?PdzYpr_TNa>^`IS2 zxe>R45LGG)Qm`cRg(gd`1i4g6!{6d&MG^AM$$H(xN@-BUdD!ED9MQ(eU%n2e=UgLW zW9^VDv^8Uv?_>PAL51|$7-MLiWy#}viP;(ijATd+ zq6P`J{x|RZ{{z>5lhglWP;=?)waYyS~x^B}>K|@XFTd7P} z+!#6zbsS0~^HT4&uv9DI=0d4tYd)o^sPl)w(ITaJ?o6ApPr`@cV>xP@l;QfQYUXf% zmza*!F3i^y+e5$5Dc}6H7G@rQtTar61f04{1biJ5i1+t$oFgQSpOyS>ZmWQR+=;JY zaB3y0JR7;ZJ1bwisn@6i6RjOBSLtR)D;54iuw66ktxLbh=ZEgUWvPT+@KOv135{l4 ztR9$?ujnEsc%8yp(wf>!Gp6z4)ibulUS0)rTm8XqCa=W|cloMlkW+9i?CBaN05TF_ zb;~}QkhdujLorGqZ+Rsie$|#CE|FqOKWTkPq(i`ke@A&>DjBipJt21)kh(Z+J2H$U5 zVSKtz3AyK1t}3@Vfr-=3!PBcL$oQ|jD|~l6X4e^DVU?}P%SLU|$7`r90#kWXAUJ_B zsDFD6TEDA=yZwoa=FePBpAGP5lo}e6jY&j5zT1h|L-3_`F zJz3+tZgWsUq{0662pgea14>^2LAxE9MhkjwaT&|o3@PJ!-uxFX!L3#E6hJx7NYfZDCj(>*BCauCnvxCCkgpIUuQG8d}!msF~6XfxKc1 zzYBYqvyYRzJa8=TcpjH=4CzS-r!HmA-{tRge$i%l(F@AAf2igb&biI~Bl=u|;Uioy z!Q#+aO9cg3Uskv5jHoz7Pv^V|dfHunYh|h5QIueeOjAM*8M~+oizG{2GD2c}RalVT zw=&B_k3=K@%-^=(*+C+X)5?gi)adpPIbiPH`KaYgO_)0`WMR>n_rdhV_8U3P!LOOq zM`-Vb%)H`GZQGdi{09fftN{j#Bj?Jn{Q=U|uIKsSB0lsq1uDoO=C0%Zh>%*OnJ_eWR8qajmzSL)x2kRB+!`mAqNR3l%$^rsOnMxA{e> ze3oE+YhGNY_nBBEgCLpjYF^nQ?(-U~IE=kbj;~cO?iuOzOHE0~&oJ7}`aXjk*n|XP zCW?CscGEMOcUR(cJpQrpWR;y%qeH>O@?9~QplbJ+3~k8tEd-)2{YURP{qd;v)>mA5 zgV0yMYK026gOj#{jLO8!wWC*cgo8g(4mRG7ASsGhe~)X_`x5Y^DOEB+YjjIcHHkh~_rMdL0~GRs{bX&E>6#kx9eXJbs3~bF*1WQg_#agk Bn0^2N literal 0 HcmV?d00001 From d8adcca1cfe9ebfb1f2c528ffcb45bd8aae13d94 Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 12 Jul 2015 12:27:45 -0400 Subject: [PATCH 32/44] Makes log viewing use ftp() instead of run() Carbon copy of tgstation/-tg-station#10467. This should fix not being able to retrieve logs, because BYOND 508 broke run() again. The main difference is that instead of directly opening a log, a prompt will come up asking to save the file to a location. --- code/modules/admin/verbs/getlogs.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index eac11fcac0a..cf939c0ae9f 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -52,7 +52,7 @@ return message_admins("[key_name_admin(src)] accessed file: [path]") - src << run( file(path) ) + src << ftp( file(path) ) src << "Attempting to send file, this may take a fair few minutes if the file is very large." return @@ -72,7 +72,7 @@ return message_admins("[key_name_admin(src)] accessed file: [path]") - src << run( file(path) ) + src << ftp( file(path) ) src << "Attempting to send file, this may take a fair few minutes if the file is very large." return @@ -87,7 +87,7 @@ var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")].log" if( fexists(path) ) - src << run( file(path) ) + src << ftp( file(path) ) else src << "Error: view_txt_log(): File not found/Invalid path([path])." return @@ -102,7 +102,7 @@ var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log" if( fexists(path) ) - src << run( file(path) ) + src << ftp( file(path) ) else src << "Error: view_atk_log(): File not found/Invalid path([path])." return From 0eeed994604e16a1a5cee21bc96fb3080ab70fed Mon Sep 17 00:00:00 2001 From: DZD Date: Sun, 12 Jul 2015 13:08:56 -0400 Subject: [PATCH 33/44] Changeling sting nerfs/changes/tweaks - Prevents transform sting from working on species with NO_BLOOD. - Prevents DNA extraction sting from working on species with NO_BLOOD. - Prevents Plasma Men from being changelings, largely for the same reason Slime People can't be changelings, horribly mutilating people with transform sting. (Alternative way to do this would be for a species check in the DNA sting's Click() proc, which is horrendous because DNA does not contain a species datum, just a string with the species' name.) - Ported some nerfs from tgstation/-tg-station#10482, transform stinging somebody is no longer silent. It won't point you out specifically, but it will create a visible message for everyone in view range, and will make the person jittery. Also forces a cooldown on the use of all changeling powers. - Re-enables cryo sting. This should now be working since mob temperatures were fixed a while ago. --- code/game/gamemodes/changeling/changeling.dm | 6 ++- .../gamemodes/changeling/powers/tiny_prick.dm | 37 ++++++++++++------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 00c199d7332..0b18cbcdde8 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -9,7 +9,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" config_tag = "changeling" restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent") - protected_species = list("Machine", "Slime People") + protected_species = list("Machine", "Slime People", "Plasmaman") required_players = 2 required_players_secret = 10 required_enemies = 1 @@ -304,6 +304,10 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" user << "We do not know how to parse this creature's DNA!" return + if(T.species.flags & NO_BLOOD) + user << "We are not able to use the DNA of a creature without a circulatory system." + return + if(has_dna(target.dna)) user << "We already have this DNA in storage!" diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 0490b00d820..b772cfca49a 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -62,10 +62,11 @@ /obj/effect/proc_holder/changeling/sting/transformation name = "Transformation Sting" desc = "We silently sting a human, injecting a retrovirus that forces them to transform." - helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." + helptext = "The victim will transform much like a changeling would. The effects will be obvious to the victim, and the process will damage our genomes." sting_icon = "sting_transform" chemical_cost = 40 dna_cost = 2 + genetic_damage = 100 var/datum/dna/selected_dna = null /obj/effect/proc_holder/changeling/sting/transformation/Click() @@ -77,12 +78,11 @@ selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") if(!selected_dna) return - ..() /obj/effect/proc_holder/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target) if(!..()) return - if((HUSK in target.mutations) || (!ishuman(target)) ) + if((HUSK in target.mutations) || (!ishuman(target))) user << "Our sting appears ineffective against its DNA." return 0 if(ishuman(target)) @@ -90,20 +90,31 @@ if(H.species.flags & NO_SCAN) //Prevents transforming slimes and killing them instantly user << "This won't work on a creature with abnormal genetic material." return 0 + if(H.species.flags & NO_BLOOD) + user << "This won't work on a creature without a circulatory system." + return 0 return 1 /obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target) add_logs(target, user, "stung", object="transformation sting", addition=" new identity is [selected_dna.real_name]") var/datum/dna/NewDNA = selected_dna if(issmall(target)) - user << "We stealthily sting [target.name]." - target.dna = NewDNA.Clone() - target.real_name = NewDNA.real_name - var/mob/living/carbon/human/H = target - if(istype(H)) - H.set_species() - target.UpdateAppearance() - domutcheck(target, null) + user << "Our genes cry out as we sting [target.name]!" + + if(iscarbon(target) && (target.status_flags & CANWEAKEN)) + var/mob/living/carbon/C = target + C.do_jitter_animation(500) + + target.visible_message("[target] begins to violenty convulse!","You feel a tiny prick and a begin to uncontrollably convulse!") + + spawn(10) + target.dna = NewDNA.Clone() + target.real_name = NewDNA.real_name + var/mob/living/carbon/human/H = target + if(istype(H)) + H.set_species() + target.UpdateAppearance() + domutcheck(target, null) feedback_add_details("changeling_powers","TS") return 1 @@ -172,7 +183,7 @@ obj/effect/proc_holder/changeling/sting/LSD target.hallucination = max(400, target.hallucination) feedback_add_details("changeling_powers","HS") return 1 -/* + obj/effect/proc_holder/changeling/sting/cryo //Enable when mob cooling is fixed so that frostoil actually makes you cold, instead of mostly just hungry. name = "Cryogenic Sting" desc = "We silently sting a human with a cocktail of chemicals that freeze them." @@ -188,4 +199,4 @@ obj/effect/proc_holder/changeling/sting/cryo //Enable when mob cooling is fixed target.reagents.add_reagent("ice", 30) feedback_add_details("changeling_powers","CS") return 1 -*/ + From a1b56cd4a0ad84cac2ccddf93bf93c311824a4dd Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 12 Jul 2015 18:46:13 -0400 Subject: [PATCH 34/44] adjustments --- code/controllers/configuration.dm | 6 +++--- code/game/verbs/ooc.dm | 2 +- config/example/game_options.txt | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 7094f72c9bc..f2fbfd5d730 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -101,7 +101,7 @@ var/revival_brain_life = -1 - var/ooc_during_round = 0 + var/auto_toggle_ooc_during_round = 0 //Used for modifying movement speed for mobs. //Unversal modifiers @@ -537,8 +537,8 @@ config.revival_cloning = value if("revival_brain_life") config.revival_brain_life = value - if("ooc_during_round") - config.ooc_during_round = 1 + if("auto_toggle_ooc_during_round") + config.auto_toggle_ooc_during_round = 1 if("run_speed") config.run_speed = value if("walk_speed") diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index c8a1d058592..1cf5e73bc19 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -83,7 +83,7 @@ var/global/normal_ooc_colour = "#002eb8" world << "The OOC channel has been globally disabled!" /proc/auto_toggle_ooc(var/on) - if(!config.ooc_during_round && ooc_allowed != on) + if(config.auto_toggle_ooc_during_round && ooc_allowed != on) toggle_ooc() /client/proc/set_ooc(newColor as color) diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 0d4b371ae59..31d2bf1d9c8 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -33,9 +33,9 @@ REVIVAL_CLONING 1 REVIVAL_BRAIN_LIFE -1 -### OOC DURING ROUND ### -#Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. -OOC_DURING_ROUND +### AUTO TOGGLE OOC DURING ROUND ### +#Uncomment this if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. +#AUTO_TOGGLE_OOC_DURING_ROUND ### MOB MOVEMENT ### From 98603b8441f003d023558019bf8b57f284c3eb04 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 12 Jul 2015 19:09:05 -0400 Subject: [PATCH 35/44] bleh --- code/LINDA/LINDA_turf_tile.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index 1a0b785d69c..eb43d2d5bca 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -270,10 +270,14 @@ turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduc atom/movable/var/pressure_resistance = 5 +atom/movable/var/last_forced_movement = 0 atom/movable/proc/experience_pressure_difference(pressure_difference, direction) - if(!anchored) + if(last_forced_movement >= air_master.current_cycle) + return 0 + else if(!anchored) if(pressure_difference > pressure_resistance) + last_forced_movement = air_master.current_cycle spawn step(src, direction) return 1 From 5a0db0e3ee62afb37d2db8b6430a2446af4fa735 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 13 Jul 2015 04:32:58 -0400 Subject: [PATCH 36/44] More Explosion Optimizaitons --- code/__HELPERS/game.dm | 5 +++++ code/game/objects/explosion.dm | 16 +++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 58f0cf96daa..ff2ac44ffe2 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -45,6 +45,11 @@ return heard +//We used to use linear regression to approximate the answer, but Mloc realized this was actually faster. +//And lo and behold, it is, and it's more accurate to boot. +/proc/cheap_hypotenuse(Ax,Ay,Bx,By) + return sqrt(abs(Ax - Bx)**2 + abs(Ay - By)**2) //A squared + B squared = C squared + /proc/circlerange(center=usr,radius=3) var/turf/centerturf = get_turf(center) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 9de5dec30dd..71ce05beffc 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -1,11 +1,5 @@ //TODO: Flash range does nothing currently -//A very crude linear approximatiaon of pythagoras theorem. -/proc/cheap_pythag(var/dx, var/dy) - dx = abs(dx); dy = abs(dy); - if(dx>=dy) return dx + (0.5*dy) //The longest side add half the shortest side approximates the hypotenuse - else return dy + (0.5*dx) - /proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive) if(Center==null) return @@ -91,7 +85,7 @@ for(var/turf/T in trange(max_range, epicenter)) - var/dist = cheap_pythag(T.x - x0,T.y - y0) + var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) if(config.reactionary_explosions) var/turf/Trajectory = T @@ -105,7 +99,7 @@ dist += D.explosion_block var/flame_dist = 0 - var/throw_dist = max_range - dist +// var/throw_dist = max_range - dist if(dist < flame_range) flame_dist = 1 @@ -127,7 +121,7 @@ T.ex_act(dist) //--- THROW ITEMS AROUND --- - +/* if(throw_dist > 0) var/throw_dir = get_dir(epicenter,T) for(var/obj/item/I in T) @@ -138,7 +132,7 @@ if(throw_range > 0) var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) I.throw_at(throw_at, throw_range, 2, no_spin = 1) //Throw it at 2 speed, this is purely visual anyway; don't spin the thrown items, it's very costly. - +*/ var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare if(Debug2) world.log << "## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds." @@ -197,7 +191,7 @@ var/list/wipe_colours = list() for(var/turf/T in trange(max_range, epicenter)) wipe_colours += T - var/dist = cheap_pythag(T.x - x0, T.y - y0) + var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) if(newmode == "Yes") var/turf/TT = T From 5d342baffbd6d4288a0d432910293b05eeeb7336 Mon Sep 17 00:00:00 2001 From: Krausus Date: Mon, 13 Jul 2015 07:31:48 -0400 Subject: [PATCH 37/44] Fixes morgues and crematoriums (includes resisting) Fixes their trays breaking for 30 seconds, not logging cremations, not being able to resist out of them, and all these damn uses of src. --- code/game/objects/structures/morgue.dm | 260 +++++++++++++------------ code/modules/mob/living/living.dm | 15 ++ 2 files changed, 150 insertions(+), 125 deletions(-) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 9b22f0e2dd5..80792c53f96 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -21,10 +21,10 @@ anchored = 1.0 /obj/structure/morgue/proc/update() - if(src.connected) - src.icon_state = "morgue0" + if(connected) + icon_state = "morgue0" else - if(src.contents.len) + if(contents.len) var/mob/living/M = locate() in contents @@ -35,14 +35,14 @@ var/mob/dead/observer/G = M.get_ghost() if(M.client) - src.icon_state = "morgue3" + icon_state = "morgue3" else if(G && G.client) //There is a ghost and it is connected to the server - src.icon_state = "morgue5" + icon_state = "morgue5" else - src.icon_state = "morgue2" + icon_state = "morgue2" - else src.icon_state = "morgue4" - else src.icon_state = "morgue1" + else icon_state = "morgue4" + else icon_state = "morgue1" return @@ -50,94 +50,99 @@ switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return return /obj/structure/morgue/alter_health() - return src.loc + return loc /obj/structure/morgue/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.connected.loc) + if (connected) + for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - qdel(src.connected) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + qdel(connected) + connected = null else - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, src.dir) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, src.dir) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + connected = new /obj/structure/m_tray( loc ) + step(connected, dir) + connected.layer = OBJ_LAYER + var/turf/T = get_step(src, dir) + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "morguet" - src.connected.dir = src.dir + A.loc = connected.loc + connected.icon_state = "morguet" + connected.dir = dir else - //src.connected = null - qdel(src.connected) - src.add_fingerprint(user) + qdel(connected) + connected = null + add_fingerprint(user) update() return /obj/structure/morgue/attackby(P as obj, mob/user as mob, params) if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text if (user.get_active_hand() != P) return - if ((!in_range(src, usr) && src.loc != user)) + if ((!in_range(src, usr) && loc != user)) return t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) - src.name = text("Morgue- '[]'", t) - src.overlays += image(src.icon, "morgue_label") + name = text("Morgue- '[]'", t) + overlays += image(icon, "morgue_label") else - src.name = "Morgue" - src.overlays.Cut() - src.add_fingerprint(user) + name = "Morgue" + overlays.Cut() + add_fingerprint(user) return /obj/structure/morgue/relaymove(mob/user as mob) if (user.stat) return - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, EAST) - src.connected.layer = OBJ_LAYER + connected = new /obj/structure/m_tray( loc ) + step(connected, EAST) + connected.layer = OBJ_LAYER var/turf/T = get_step(src, EAST) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "morguet" + A.loc = connected.loc + connected.icon_state = "morguet" else - //src.connected = null - qdel(src.connected) + qdel(connected) + connected = null return +/obj/structure/morgue/Destroy() + if(connected) + qdel(connected) + connected = null + return ..() + /* * Morgue tray @@ -155,15 +160,13 @@ /obj/structure/m_tray/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) + if (connected) + for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = src.connected - //Foreach goto(26) - src.connected.connected = null - src.connected.update() + A.loc = connected + connected.connected = null + connected.update() add_fingerprint(user) - //SN src = null qdel(src) return return @@ -175,13 +178,19 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = src.loc + O.loc = loc if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) B << text("\red [] stuffs [] into []!", user, O, src) return +/obj/structure/m_tray/Destroy() + if(connected && connected.connected == src) + connected.connected = null + connected = null + return ..() + /* * Crematorium @@ -200,116 +209,106 @@ var/locked = 0 /obj/structure/crematorium/proc/update() - if (src.connected) - src.icon_state = "crema0" + if (connected) + icon_state = "crema0" else - if (src.contents.len) - src.icon_state = "crema2" + if (contents.len) + icon_state = "crema2" else - src.icon_state = "crema1" + icon_state = "crema1" return /obj/structure/crematorium/ex_act(severity) switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.loc = loc ex_act(severity) qdel(src) return return /obj/structure/crematorium/alter_health() - return src.loc + return loc /obj/structure/crematorium/attack_hand(mob/user as mob) -// if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH -// user.show_message("\red Uh-oh, that was a bad idea.", 1) -// //usr << "Uh-oh, that was a bad idea." -// src:loc:poison += 20000000 -// src:loc:firelevel = src:loc:poison -// return if (cremating) usr << "\red It's locked." return - if ((src.connected) && (src.locked == 0)) - for(var/atom/movable/A as mob|obj in src.connected.loc) + if ((connected) && (locked == 0)) + for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - qdel(src.connected) - else if (src.locked == 0) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + qdel(connected) + connected = null + else if (locked == 0) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + connected = new /obj/structure/c_tray( loc ) + step(connected, SOUTH) + connected.layer = OBJ_LAYER var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "cremat" + A.loc = connected.loc + connected.icon_state = "cremat" else - //src.connected = null - qdel(src.connected) - src.add_fingerprint(user) + qdel(connected) + connected = null + add_fingerprint(user) update() /obj/structure/crematorium/attackby(P as obj, mob/user as mob, params) if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text if (user.get_active_hand() != P) return - if ((!in_range(src, usr) > 1 && src.loc != user)) + if ((!in_range(src, usr) > 1 && loc != user)) return t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) - src.name = text("Crematorium- '[]'", t) + name = text("Crematorium- '[]'", t) else - src.name = "Crematorium" - src.add_fingerprint(user) + name = "Crematorium" + add_fingerprint(user) return /obj/structure/crematorium/relaymove(mob/user as mob) if (user.stat || locked) return - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER + connected = new /obj/structure/c_tray( loc ) + step(connected, SOUTH) + connected.layer = OBJ_LAYER var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "cremat" + A.loc = connected.loc + connected.icon_state = "cremat" else - //src.connected = null - qdel(src.connected) + qdel(connected) + connected = null return -/obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob) -// for(var/obj/machinery/crema_switch/O in src) //trying to figure a way to call the switch, too drunk to sort it out atm -// if(var/on == 1) -// return +/obj/structure/crematorium/proc/cremate(mob/user as mob) if(cremating) return //don't let you cremate something twice or w/e @@ -319,10 +318,10 @@ return else - if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear))) + if(!isemptylist(search_contents_for(/obj/item/weapon/disk/nuclear))) usr << "You get the feeling that you shouldn't cremate one of the items in the cremator." return - if(!isemptylist(src.search_contents_for(/obj/item/flag/nation))) + if(!isemptylist(search_contents_for(/obj/item/flag/nation))) usr << "You get the feeling that you shouldn't cremate one of the items in the cremator." return for (var/mob/M in viewers(src)) @@ -335,10 +334,10 @@ for(var/mob/living/M in contents) if (M.stat!=2) M.emote("scream") - //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out. - //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point in this when the mob's about to be deleted - //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" - //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") + if(istype(user)) + M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" + user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" + log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") M.death(1) M.ghostize() qdel(M) @@ -351,9 +350,15 @@ cremating = 0 locked = 0 update() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + playsound(loc, 'sound/machines/ding.ogg', 50, 1) return +/obj/structure/crematorium/Destroy() + if(connected) + qdel(connected) + connected = null + return ..() + /* * Crematorium tray @@ -370,15 +375,14 @@ throwpass = 1 /obj/structure/c_tray/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) + if (connected) + for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = src.connected + A.loc = connected //Foreach goto(26) - src.connected.connected = null - src.connected.update() + connected.connected = null + connected.update() add_fingerprint(user) - //SN src = null qdel(src) return return @@ -390,7 +394,7 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = src.loc + O.loc = loc if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) @@ -398,8 +402,14 @@ //Foreach goto(99) return +/obj/structure/m_tray/Destroy() + if(connected && connected.connected == src) + connected.connected = null + connected = null + return ..() + /obj/machinery/crema_switch/attack_hand(mob/user as mob) - if(src.allowed(usr)) + if(allowed(usr)) for (var/obj/structure/crematorium/C in world) if (C.id == id) if (!C.cremating) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 1c1067cb240..65864f5d912 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -485,6 +485,10 @@ if ((!(L.stat) && !(L.restrained()))) resist_grab(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' + // Sliding out of a morgue/crematorium + if(loc && (istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) + resist_tray(L) + //unbuckling yourself if(L.buckled && (L.last_special <= world.time) ) resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' @@ -687,6 +691,17 @@ BD.attack_hand(usr) C.open() +// resist_tray allows a mob to slide themselves out of a morgue or crematorium +/mob/living/proc/resist_tray(var/mob/living/carbon/CM) + if(!istype(CM)) + return + if (usr.stat || usr.restrained()) + return + + usr << "You attempt to slide yourself out of \the [loc]..." + var/obj/structure/S = loc + S.attack_hand(src) + /* resist_stop_drop_roll allows a mob to stop, drop, and roll in order to put out a fire burning on them. *///// /mob/living/proc/resist_stop_drop_roll(var/mob/living/carbon/CM) From 6cbdad58cf646dade5af5b967243fdd253115ee7 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 13 Jul 2015 20:54:10 -0400 Subject: [PATCH 38/44] Sun Controller Scheduler Integration --- code/controllers/Processes/sun.dm | 50 +++++++++++++++++++++++-- code/datums/sun.dm | 61 ------------------------------- code/modules/mob/mob.dm | 4 +- code/modules/power/solar.dm | 8 ++-- paradise.dme | 1 - 5 files changed, 52 insertions(+), 72 deletions(-) delete mode 100644 code/datums/sun.dm diff --git a/code/controllers/Processes/sun.dm b/code/controllers/Processes/sun.dm index f09806cef53..93e626af3bb 100644 --- a/code/controllers/Processes/sun.dm +++ b/code/controllers/Processes/sun.dm @@ -1,7 +1,51 @@ +var/global/datum/controller/process/sun/sun + +/datum/controller/process/sun + var/angle + var/dx + var/dy + var/rate + var/list/solars = list() // for debugging purposes, references solars list at the constructor + /datum/controller/process/sun/setup() name = "sun" - schedule_interval = 20 // every second - sun = new + schedule_interval = 600 // every 60 seconds + sun = src + + angle = rand (0,360) // the station position to the sun is randomised at round start + rate = rand(50,200)/100 // 50% - 200% of standard rotation + if(prob(50)) // same chance to rotate clockwise than counter-clockwise + rate = -rate /datum/controller/process/sun/doWork() - sun.calc_position() + calc_position() + update_solar_machinery() + + +// calculate the sun's position given the time of day +// at the standard rate (100%) the angle is increase/decreased by 6 degrees every minute. +// a full rotation thus take a game hour in that case +/datum/controller/process/sun/proc/calc_position() + angle = (360 + angle + rate * 6) % 360 // increase/decrease the angle to the sun, adjusted by the rate + + // now calculate and cache the (dx,dy) increments for line drawing + var/s = sin(angle) + var/c = cos(angle) + + // Either "abs(s) < abs(c)" or "abs(s) >= abs(c)" + // In both cases, the greater is greater than 0, so, no "if 0" check is needed for the divisions + + if(abs(s) < abs(c)) + dx = s / abs(c) + dy = c / abs(c) + else + dx = s / abs(s) + dy = c / abs(s) + +//now tell the solar control computers to update their status and linked devices +/datum/controller/process/sun/proc/update_solar_machinery() + for(var/obj/machinery/power/solar_control/SC in solars) + if(!SC.powernet) + solars.Remove(SC) + continue + SC.update() diff --git a/code/datums/sun.dm b/code/datums/sun.dm deleted file mode 100644 index eafbcd1ee0c..00000000000 --- a/code/datums/sun.dm +++ /dev/null @@ -1,61 +0,0 @@ -#define SOLAR_UPDATE_TIME 600 //duration between two updates of the whole sun/solars positions - -var/global/datum/sun/sun - -/datum/sun - var/angle - var/dx - var/dy - var/rate - var/list/solars // for debugging purposes, references solars_list at the constructor - var/solar_next_update // last time the sun position was checked and adjusted - -/datum/sun/New() - - solars = solars_list - rate = rand(50,200)/100 // 50% - 200% of standard rotation - if(prob(50)) // same chance to rotate clockwise than counter-clockwise - rate = -rate - solar_next_update = world.time // init the timer - angle = rand (0,360) // the station position to the sun is randomised at round start - -/* HANDLED IN PROCESS SCHEDULER -/hook/startup/proc/createSun() - sun = new /datum/sun() - return 1 -*/ -// calculate the sun's position given the time of day -// at the standard rate (100%) the angle is increase/decreased by 6 degrees every minute. -// a full rotation thus take a game hour in that case -/datum/sun/proc/calc_position() - - if(world.time < solar_next_update) //if less than 60 game secondes have passed, do nothing - return; - - angle = (360 + angle + rate * 6) % 360 // increase/decrease the angle to the sun, adjusted by the rate - - solar_next_update += SOLAR_UPDATE_TIME // since we updated the angle, set the proper time for the next loop - - // now calculate and cache the (dx,dy) increments for line drawing - - var/s = sin(angle) - var/c = cos(angle) - - // Either "abs(s) < abs(c)" or "abs(s) >= abs(c)" - // In both cases, the greater is greater than 0, so, no "if 0" check is needed for the divisions - - if( abs(s) < abs(c)) - - dx = s / abs(c) - dy = c / abs(c) - - else - dx = s/abs(s) - dy = c / abs(s) - - //now tell the solar control computers to update their status and linked devices - for(var/obj/machinery/power/solar_control/SC in solars_list) - if(!SC.powernet) - solars_list.Remove(SC) - continue - SC.update() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5002f258cac..f8eeff8c5f1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -978,8 +978,8 @@ var/list/slot_equipment_priority = list( \ process = processScheduler.getProcess("garbage") stat(null, "GAR\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - //process = processScheduler.getProcess("sun") - //stat(null, "SUN\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("sun") + stat(null, "SUN([sun.solars.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") //process = processScheduler.getProcess("garbage") //stat(null, "GAR\t - #[process.getTicks()]\t - [process.getLastRunTime()]") diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 93c1a961073..43f0911d41c 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -1,8 +1,6 @@ #define SOLAR_MAX_DIST 40 #define SOLARGENRATE 1500 -var/list/solars_list = list() - /obj/machinery/power/solar name = "solar panel" desc = "A solar electrical generator." @@ -308,12 +306,12 @@ var/list/solars_list = list() /obj/machinery/power/solar_control/disconnect_from_network() ..() - solars_list.Remove(src) + sun.solars.Remove(src) /obj/machinery/power/solar_control/connect_to_network() var/to_return = ..() - if(powernet) //if connected and not already in solar_list... - solars_list |= src //... add it + if(powernet) //if connected and not already in solar list... + sun.solars |= src return to_return //search for unconnected panels and trackers in the computer powernet and connect them diff --git a/paradise.dme b/paradise.dme index e2b6c726137..e4f7845b468 100644 --- a/paradise.dme +++ b/paradise.dme @@ -184,7 +184,6 @@ #include "code\datums\periodic_news.dm" #include "code\datums\recipe.dm" #include "code\datums\spell.dm" -#include "code\datums\sun.dm" #include "code\datums\supplypacks.dm" #include "code\datums\uplink_item.dm" #include "code\datums\helper_datums\construction_datum.dm" From 822dc6bac12facb8702075540fbfdf518aa1b1fb Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 14 Jul 2015 00:23:58 -0400 Subject: [PATCH 39/44] solar tweaks --- code/modules/power/solar.dm | 59 ++++++++++++++++++------------------ icons/obj/computer.dmi | Bin 34032 -> 33807 bytes 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 43f0911d41c..3eb5b0dc8e3 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -3,7 +3,7 @@ /obj/machinery/power/solar name = "solar panel" - desc = "A solar electrical generator." + desc = "A solar panel. Generates electricity when in contact with sunlight." icon = 'icons/obj/power.dmi' icon_state = "sp_base" anchored = 1 @@ -59,14 +59,14 @@ if(istype(W, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - user.visible_message("[user] begins to take the glass off the solar panel.") + user.visible_message("[user] begins to take the glass off the solar panel.", "You begin to take the glass off the solar panel...") if(do_after(user, 50)) var/obj/item/solar_assembly/S = locate() in src if(S) S.loc = src.loc S.give_glass() playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user.visible_message("[user] takes the glass off the solar panel.") + user.visible_message("[user] takes the glass off the solar panel.", "You take the glass off the solar panel.") qdel(src) return else if (W) @@ -106,8 +106,6 @@ //calculates the fraction of the sunlight that the panel recieves /obj/machinery/power/solar/proc/update_solar_exposure() - if(!sun) - return if(obscured) sunfrac = 0 return @@ -125,7 +123,7 @@ /obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY if(stat & BROKEN) return - if(!sun || !control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed + if(!control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed return if(powernet) @@ -176,10 +174,12 @@ var/ax = x // start at the solar panel var/ay = y var/turf/T = null + var/dx = sun.dx + var/dy = sun.dy for(var/i = 1 to 20) // 20 steps is enough - ax += sun.dx // do step - ay += sun.dy + ax += dx // do step + ay += dy T = locate( round(ax,0.5),round(ay,0.5),z) @@ -226,13 +226,13 @@ if(!anchored && isturf(loc)) if(istype(W, /obj/item/weapon/wrench)) anchored = 1 - user.visible_message("[user] wrenches the solar assembly into place.") + user.visible_message("[user] wrenches the solar assembly into place.", "You wrench the solar assembly into place.") playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) return 1 else if(istype(W, /obj/item/weapon/wrench)) anchored = 0 - user.visible_message("[user] unwrenches the solar assembly from it's place.") + user.visible_message("[user] unwrenches the solar assembly from its place.", "You unwrench the solar assembly from its place.") playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) return 1 @@ -241,7 +241,7 @@ if(S.use(2)) glass_type = W.type playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - user.visible_message("[user] places the glass on the solar assembly.") + user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.") if(tracker) new /obj/machinery/power/tracker(get_turf(src), src) else @@ -253,16 +253,17 @@ if(!tracker) if(istype(W, /obj/item/weapon/tracker_electronics)) + if(!user.drop_item()) + return tracker = 1 - user.drop_item() qdel(W) - user.visible_message("[user] inserts the electronics into the solar assembly.") + user.visible_message("[user] inserts the electronics into the solar assembly.", "You insert the electronics into the solar assembly.") return 1 else if(istype(W, /obj/item/weapon/crowbar)) new /obj/item/weapon/tracker_electronics(src.loc) tracker = 0 - user.visible_message("[user] takes out the electronics from the solar assembly.") + user.visible_message("[user] takes out the electronics from the solar assembly.", "You take out the electronics from the solar assembly.") return 1 ..() @@ -274,11 +275,13 @@ name = "solar panel control" desc = "A controller for solar panel arrays." icon = 'icons/obj/computer.dmi' - icon_state = "solar" + icon_state = "computer" anchored = 1 density = 1 use_power = 1 idle_power_usage = 250 + var/icon_screen = "solar" + var/icon_keyboard = "power_key" var/id = 0 var/cdir = 0 var/targetdir = 0 // target angle in manual tracking (since it updates every game minute) @@ -286,7 +289,7 @@ var/lastgen = 0 var/track = 0 // 0= off 1=timed 2=auto (tracker) var/trackrate = 600 // 300-900 seconds - var/nexttime = 0 // time for a panel to rotate of 1� in manual tracking + var/nexttime = 0 // time for a panel to rotate of 1° in manual tracking var/obj/machinery/power/tracker/connected_tracker = null var/list/connected_panels = list() @@ -311,7 +314,7 @@ /obj/machinery/power/solar_control/connect_to_network() var/to_return = ..() if(powernet) //if connected and not already in solar list... - sun.solars |= src + sun.solars |= src //... add it return to_return //search for unconnected panels and trackers in the computer powernet and connect them @@ -351,19 +354,17 @@ set_panels(cdir) /obj/machinery/power/solar_control/update_icon() - if(stat & BROKEN) - icon_state = "broken" - overlays.Cut() - return - if(stat & NOPOWER) - icon_state = "c_unpowered" - overlays.Cut() - return - icon_state = "solar" overlays.Cut() + if(stat & NOPOWER) + overlays += "[icon_keyboard]_off" + return + overlays += icon_keyboard + if(stat & BROKEN) + overlays += "[icon_state]_broken" + else + overlays += icon_screen if(cdir > -1) overlays += image('icons/obj/computer.dmi', "solcon-o", FLY_LAYER, angle2dir(cdir)) - return /obj/machinery/power/solar_control/attack_hand(mob/user) if(!..()) @@ -437,9 +438,9 @@ connected_tracker.unset_control() if(track==1 && trackrate) //manual tracking and set a rotation speed - if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1�... + if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1°... targetdir = (targetdir + trackrate/abs(trackrate) + 360) % 360 //... do it - nexttime += 36000/abs(trackrate) //reset the counter for the next 1� + nexttime += 36000/abs(trackrate) //reset the counter for the next 1° /obj/machinery/power/solar_control/Topic(href, href_list) if(..()) diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 4576c253f01f57b80775d0f7d6af1af0d178b060..c70af829c12eb56bb1ae3707092626e69938a98f 100644 GIT binary patch delta 11769 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 From 63769075601f7c81b39df9250bcf318328816faf Mon Sep 17 00:00:00 2001 From: Krausus Date: Tue, 14 Jul 2015 04:08:56 -0400 Subject: [PATCH 40/44] Further fixes to morgues and crematoriums --- code/game/objects/items/bodybag.dm | 12 ++++--- code/game/objects/structures/morgue.dm | 48 ++++++++++++++------------ 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 749a4475af1..3c36ea9dfe8 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -82,12 +82,14 @@ qdel(src) return -/obj/structure/closet/bodybag/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened +/obj/structure/closet/body_bag/relaymove(mob/user as mob) + if(user.stat) + return + // Make it possible to escape from bodybags in morgues and crematoriums + if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) + if(!open()) + user << "It won't budge!" /obj/item/bodybag/cryobag name = "stasis bag" diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 80792c53f96..e4a403b7750 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -50,21 +50,21 @@ switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return @@ -78,7 +78,7 @@ if (connected) for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) - A.loc = src + A.forceMove(src) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) qdel(connected) connected = null @@ -92,7 +92,7 @@ connected.connected = src icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = connected.loc + A.forceMove(connected.loc) connected.icon_state = "morguet" connected.dir = dir else @@ -123,14 +123,14 @@ if (user.stat) return connected = new /obj/structure/m_tray( loc ) - step(connected, EAST) + step(connected, dir) connected.layer = OBJ_LAYER - var/turf/T = get_step(src, EAST) + var/turf/T = get_step(src, dir) if (T.contents.Find(connected)) connected.connected = src icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = connected.loc + A.forceMove(connected.loc) connected.icon_state = "morguet" else qdel(connected) @@ -163,7 +163,7 @@ if (connected) for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = connected + A.forceMove(connected) connected.connected = null connected.update() add_fingerprint(user) @@ -178,7 +178,7 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = loc + O.forceMove(loc) if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) @@ -222,21 +222,21 @@ switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = loc + A.forceMove(loc) ex_act(severity) qdel(src) return @@ -253,7 +253,7 @@ if ((connected) && (locked == 0)) for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) - A.loc = src + A.forceMove(src) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) qdel(connected) connected = null @@ -267,7 +267,7 @@ connected.connected = src icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = connected.loc + A.forceMove(connected.loc) connected.icon_state = "cremat" else qdel(connected) @@ -301,7 +301,7 @@ connected.connected = src icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = connected.loc + A.forceMove(connected.loc) connected.icon_state = "cremat" else qdel(connected) @@ -331,13 +331,15 @@ locked = 1 icon_state = "crema_active" - for(var/mob/living/M in contents) + for(var/mob/living/M in search_contents_for(/mob/living)) + if(!M || !isnull(M.gcDestroyed)) + continue if (M.stat!=2) M.emote("scream") if(istype(user)) - M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" - user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") + M.attack_log += "\[[time_stamp()]\] Has been cremated by [user.name] ([user.ckey])" + user.attack_log +="\[[time_stamp()]\] Cremated [M.name] ([M.ckey])" + log_attack("\[[time_stamp()]\] [user.name] ([user.ckey]) cremated [M.name] ([M.ckey])") M.death(1) M.ghostize() qdel(M) @@ -378,7 +380,7 @@ if (connected) for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = connected + A.forceMove(connected) //Foreach goto(26) connected.connected = null connected.update() @@ -394,7 +396,7 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = loc + O.forceMove(loc) if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) @@ -402,7 +404,7 @@ //Foreach goto(99) return -/obj/structure/m_tray/Destroy() +/obj/structure/c_tray/Destroy() if(connected && connected.connected == src) connected.connected = null connected = null From 8e753ac1a623b3bfdd6028e07fc15a8c6fd247bb Mon Sep 17 00:00:00 2001 From: Krausus Date: Tue, 14 Jul 2015 04:18:35 -0400 Subject: [PATCH 41/44] Removes redundant timestamp --- code/game/objects/structures/morgue.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index e4a403b7750..88ba3e7adf3 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -339,7 +339,7 @@ if(istype(user)) M.attack_log += "\[[time_stamp()]\] Has been cremated by [user.name] ([user.ckey])" user.attack_log +="\[[time_stamp()]\] Cremated [M.name] ([M.ckey])" - log_attack("\[[time_stamp()]\] [user.name] ([user.ckey]) cremated [M.name] ([M.ckey])") + log_attack("[user.name] ([user.ckey]) cremated [M.name] ([M.ckey])") M.death(1) M.ghostize() qdel(M) From 545aaf400342bf4390e3641c1b63c2ee754c28ee Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 14 Jul 2015 04:40:56 -0400 Subject: [PATCH 42/44] Adds in Lighting Controller Debugability --- code/controllers/verbs.dm | 5 ++++- code/modules/lighting/lighting_process.dm | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 3e04e3dc8ae..3d70b903fdc 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -45,7 +45,7 @@ return -/client/proc/debug_controller(controller in list("Master","failsafe","Ticker","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras","Garbage", "Transfer Controller","Event","Scheduler")) +/client/proc/debug_controller(controller in list("Master","failsafe","Ticker","Air","Lighting","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras","Garbage", "Transfer Controller","Event","Scheduler")) set category = "Debug" set name = "Debug Controller" set desc = "Debug the various periodic loop controllers for the game (be careful!)" @@ -64,6 +64,9 @@ if("Air") debug_variables(air_master) feedback_add_details("admin_verb","DAir") + if("Lighting") + debug_variables(lighting_controller) + feedback_add_details("admin_verb","DLighting") if("Jobs") debug_variables(job_master) feedback_add_details("admin_verb","DJobs") diff --git a/code/modules/lighting/lighting_process.dm b/code/modules/lighting/lighting_process.dm index b8f777473f7..a0242f78b69 100644 --- a/code/modules/lighting/lighting_process.dm +++ b/code/modules/lighting/lighting_process.dm @@ -1,6 +1,9 @@ +var/global/datum/controller/process/lighting/lighting_controller + /datum/controller/process/lighting/setup() name = "lighting" schedule_interval = LIGHTING_INTERVAL + lighting_controller = src create_lighting_overlays() From 6f1a7605a01c5de2cde2abdbaf74960425577d86 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Tue, 14 Jul 2015 09:12:23 -0400 Subject: [PATCH 43/44] Bay Light, Sprite move added set light and moved spirtes back into mob.dmi --- .../mob/living/simple_animal/constructs.dm | 5 ++--- icons/mob/cultglows.dmi | Bin 5954 -> 0 bytes icons/mob/mob.dmi | Bin 194476 -> 201040 bytes 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 icons/mob/cultglows.dmi diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 3a287de0d13..007288ed7b8 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -335,10 +335,9 @@ if(layer != MOB_LAYER) overlay_layer=TURF_LAYER+0.2 - overlays += image('icons/mob/cultglows.dmi',"glow-[icon_state]",overlay_layer) + overlays += image(icon,"glow-[icon_state]",overlay_layer) + set_light(2, -2, l_color = "#FFFFFF") - - //set_light(1,2,"red") ////////////////Powers////////////////// diff --git a/icons/mob/cultglows.dmi b/icons/mob/cultglows.dmi deleted file mode 100644 index 09455d193a906ad79ec24c55a9638138686c6fd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5954 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 Bn0^2N diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index a016cfae83aa8700caa899c6713bfad4cff98f88..dbdb000159298227498e044fe65704a036404e07 100644 GIT binary patch delta 12697 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 Date: Wed, 15 Jul 2015 08:17:45 -0400 Subject: [PATCH 44/44] Rename proc updateiocn now updateglow --- code/modules/mob/living/simple_animal/constructs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 007288ed7b8..df9c9171c6a 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -33,7 +33,7 @@ real_name = name for(var/spell in construct_spells) AddSpell(new spell(src)) - updateicon() + updateglow() /mob/living/simple_animal/construct/Die() ..() @@ -329,7 +329,7 @@ ////////////////Glow//////////////////// -/mob/living/simple_animal/construct/proc/updateicon() +/mob/living/simple_animal/construct/proc/updateglow() overlays = 0 var/overlay_layer = LIGHTING_LAYER + 1 if(layer != MOB_LAYER)