diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 8d3aa08493..acb1da7b02 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -17,7 +17,7 @@ Pipelines + Other Objects -> Pipe network var/nodealert = 0 var/power_rating //the maximum amount of power the machine can use to do work, affects how powerful the machine is, in Watts - layer = PIPES_LAYER + layer = ATMOS_LAYER plane = PLATING_PLANE var/pipe_flags = PIPING_DEFAULT_LAYER_ONLY // Allow other layers by exception basis. @@ -202,12 +202,12 @@ Pipelines + Other Objects -> Pipe network if(PIPING_LAYER_SCRUBBER) icon_state = "[icon_state]-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" if(PIPING_LAYER_SUPPLY) icon_state = "[icon_state]-supply" connect_types = CONNECT_TYPE_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" if(pipe_flags & PIPING_ALL_LAYER) connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm index 4658b9c40c..a03ce16af5 100644 --- a/code/ATMOSPHERICS/pipes/cap.dm +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -79,7 +79,7 @@ icon_state = "cap-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -89,7 +89,7 @@ icon_state = "cap-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE @@ -104,7 +104,7 @@ icon_state = "cap-f-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -114,6 +114,6 @@ icon_state = "cap-f-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE diff --git a/code/ATMOSPHERICS/pipes/he_pipes.dm b/code/ATMOSPHERICS/pipes/he_pipes.dm index fe6580b1ce..2d77e3a4ca 100644 --- a/code/ATMOSPHERICS/pipes/he_pipes.dm +++ b/code/ATMOSPHERICS/pipes/he_pipes.dm @@ -12,7 +12,7 @@ construction_type = /obj/item/pipe/binary/bendable pipe_state = "he" - layer = 2.41 + layer = PIPES_HE_LAYER var/initialize_directions_he var/surface = 2 //surface area in m^2 var/icon_temperature = T20C //stop small changes in temperature causing an icon refresh diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index bca6dd3379..524d420d39 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -18,7 +18,6 @@ var/obj/machinery/atmospherics/node3 level = 1 - layer = 2.4 //under wires with their 2.44 /obj/machinery/atmospherics/pipe/manifold/New() ..() @@ -166,7 +165,7 @@ icon_state = "map-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -176,7 +175,7 @@ icon_state = "map-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE @@ -212,7 +211,7 @@ icon_state = "map-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -222,7 +221,7 @@ icon_state = "map-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index 88adc47d62..0cc022423b 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -19,7 +19,6 @@ var/obj/machinery/atmospherics/node4 level = 1 - layer = 2.4 //under wires with their 2.44 /obj/machinery/atmospherics/pipe/manifold4w/New() ..() @@ -168,7 +167,7 @@ icon_state = "map_4way-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -178,7 +177,7 @@ icon_state = "map_4way-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE @@ -214,7 +213,7 @@ icon_state = "map_4way-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -224,7 +223,7 @@ icon_state = "map_4way-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE diff --git a/code/ATMOSPHERICS/pipes/pipe_base.dm b/code/ATMOSPHERICS/pipes/pipe_base.dm index 4e852ed0c8..19b05e8b71 100644 --- a/code/ATMOSPHERICS/pipes/pipe_base.dm +++ b/code/ATMOSPHERICS/pipes/pipe_base.dm @@ -7,7 +7,7 @@ var/datum/pipeline/parent var/volume = 0 - layer = 2.4 //under wires with their 2.44 + layer = PIPES_LAYER use_power = 0 pipe_flags = 0 // Does not have PIPING_DEFAULT_LAYER_ONLY flag. diff --git a/code/ATMOSPHERICS/pipes/simple.dm b/code/ATMOSPHERICS/pipes/simple.dm index 77290e5d8a..6aee81807e 100644 --- a/code/ATMOSPHERICS/pipes/simple.dm +++ b/code/ATMOSPHERICS/pipes/simple.dm @@ -173,7 +173,7 @@ icon_state = "intact-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -183,7 +183,7 @@ icon_state = "intact-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE @@ -219,7 +219,7 @@ icon_state = "intact-scrubbers" connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -229,7 +229,7 @@ icon_state = "intact-supply" connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE diff --git a/code/ATMOSPHERICS/pipes/tank.dm b/code/ATMOSPHERICS/pipes/tank.dm index c96f4ddf1d..751c9ed607 100644 --- a/code/ATMOSPHERICS/pipes/tank.dm +++ b/code/ATMOSPHERICS/pipes/tank.dm @@ -11,6 +11,7 @@ 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 var/start_pressure = 75*ONE_ATMOSPHERE //Vorestation edit + layer = ATMOS_LAYER level = 1 dir = SOUTH initialize_directions = SOUTH diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index a044b16c85..ad2962547c 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -40,10 +40,6 @@ What is the naming convention for planes or layers? */ -#define PLANE_ADMIN1 -92 //Purely for shenanigans -#define PLANE_ADMIN2 -91 //And adminbuse -#define PLANE_ADMIN3 -90 //And generating salt - #define SPACE_PLANE -82 // Reserved for use in space/parallax #define PARALLAX_PLANE -80 // Reserved for use in space/parallax @@ -57,8 +53,9 @@ What is the naming convention for planes or layers? #define SPACE_PLANE -43 // Space turfs themselves #define PLATING_PLANE -44 // Plating #define DISPOSAL_LAYER 2.1 // Under objects, even when planeswapped - #define WIRES_LAYER 2.2 // Under objects, even when planeswapped - #define PIPES_LAYER 2.3 // Under objects, even when planeswapped + #define PIPES_LAYER 2.2 // Under objects, even when planeswapped + #define WIRES_LAYER 2.3 // Under objects, even when planeswapped + #define ATMOS_LAYER 2.4 // Pipe-like atmos machinery that goes on the floor, like filters. #define ABOVE_UTILITY 2.5 // Above stuff like pipes and wires #define TURF_PLANE -45 // Turfs themselves, most flooring #define ABOVE_TURF_LAYER 2.1 // Snow and such @@ -105,7 +102,8 @@ What is the naming convention for planes or layers? #define HUD_LAYER 20 // Above lighting, but below obfuscation. For in-game HUD effects (whereas SCREEN_LAYER is for abstract/OOC things like inventory slots) #define SCREEN_LAYER 22 // Mob HUD/effects layer - + +#define PLANE_ADMIN1 3 //Purely for shenanigans (below lighting) #define PLANE_PLANETLIGHTING 4 //Lighting on planets #define PLANE_LIGHTING 5 //Where the lighting (and darkness) lives #define PLANE_LIGHTING_ABOVE 6 //For glowy eyes etc. that shouldn't be affected by darkness @@ -127,6 +125,8 @@ What is the naming convention for planes or layers? #define PLANE_MESONS 30 //Stuff seen with mesons, like open ceilings. This is 30 for downstreams. +#define PLANE_ADMIN2 33 //Purely for shenanigans (above lighting) + //Fullscreen overlays under inventory #define PLANE_FULLSCREEN 90 //Blindness, mesons, druggy, etc #define OBFUSCATION_LAYER 5 //Where images covering the view for eyes are put @@ -143,6 +143,8 @@ What is the naming convention for planes or layers? #define LAYER_HUD_ABOVE 4 //Things that reside above items (highlights) #define PLANE_PLAYER_HUD_ITEMS 96 //Separate layer with which to apply colorblindness +#define PLANE_ADMIN3 99 //Purely for shenanigans (above HUD) + ////////////////////////// /atom/proc/hud_layerise() diff --git a/code/__defines/construction.dm b/code/__defines/construction.dm index 837ad7ed38..2bae550a22 100644 --- a/code/__defines/construction.dm +++ b/code/__defines/construction.dm @@ -28,7 +28,7 @@ #define PIPE_BENDABLE 1 //6 directions: N/S, E/W, N/E, N/W, S/E, S/W #define PIPE_TRINARY 2 //4 directions: N/E/S, E/S/W, S/W/N, W/N/E #define PIPE_TRIN_M 3 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N -#define PIPE_DIRECTIONAL 4 //4 directions: N, S, E, W +#define PIPE_DIRECTIONAL 4 //4 directions: N, S, E, W #define PIPE_ONEDIR 5 //1 direction: N/S/E/W #define PIPE_UNARY_FLIPPABLE 6 //8 directions: N, S, E, W, N-flipped, S-flipped, E-flipped, W-flipped #define PIPE_TRIN_T 7 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N @@ -45,6 +45,11 @@ #define PIPING_LAYER_SCRUBBER 3 #define PIPING_LAYER_DEFAULT PIPING_LAYER_REGULAR +// We offset the layer values of the different pipe types to ensure they look nice +#define PIPES_SCRUBBER_LAYER (PIPES_LAYER - 0.02) +#define PIPES_SUPPLY_LAYER (PIPES_LAYER - 0.01) +#define PIPES_HE_LAYER (PIPES_LAYER + 0.01) + // Pipe flags #define PIPING_ALL_LAYER 1 //intended to connect with all layers, check for all instead of just one. #define PIPING_ONE_PER_TURF 2 //can only be built if nothing else with this flag is on the tile already. diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index d4fa56d495..bbecbe5f97 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -282,6 +282,7 @@ area/space/atmosalert() /area/shuttle/trade name = "\improper Trade Station" icon_state = "red" + dynamic_lighting = 0 /area/shuttle/trade/centcom name = "\improper Trade Shuttle CentCom" diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index 92004f9afe..84d00eff04 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -1,6 +1,7 @@ /obj/machinery/portable_atmospherics name = "atmoalter" use_power = 0 + layer = OBJ_LAYER // These are mobile, best not be under everything. var/datum/gas_mixture/air_contents = new var/obj/machinery/atmospherics/portables_connector/connected_port diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 2f0fce2bd3..bdf4e95fe0 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -271,6 +271,8 @@ /obj/machinery/computer/arcade/battle/emag_act(var/charges, var/mob/user) if(!emagged) + to_chat(user, span("notice","You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Hyper-Lethal Mode.")) + temp = "If you die in the game, you die for real!" player_hp = 30 player_mp = 10 @@ -399,18 +401,18 @@ dat += "
You ran out of food and starved." if(emagged) user.nutrition = 0 //yeah you pretty hongry - user << "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor." + to_chat(user, span("danger", "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.")) if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." if(emagged) var/mob/living/M = user M.adjust_fire_stacks(5) - M.IgniteMob() //flew into a star, so you're on fire - user << "You feel an immense wave of heat emanate from \the [src]. Your skin bursts into flames." + M.IgniteMob() //flew into a star, so you're on fire + to_chat(user,span("danger", "You feel an immense wave of heat emanate from \the [src]. Your skin bursts into flames.")) dat += "

OK...

" if(emagged) - user << "You're never going to make it to Orion..." + to_chat(user, span("danger", "You're never going to make it to Orion...")) user.death() emagged = 0 //removes the emagged status after you lose gameStatus = ORION_STATUS_START @@ -475,20 +477,20 @@ switch(event) if(ORION_TRAIL_RAIDERS) if(prob(50)) - usr << "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?" + to_chat(usr, span("warning", "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?")) M.hallucination += 30 else - usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..." + to_chat(usr, span("danger", "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...")) M.take_organ_damage(25) if(ORION_TRAIL_ILLNESS) var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS if(severity == 1) - M << "You suddenly feel slightly nauseous." //got off lucky + to_chat(M, span("warning", "You suddenly feel slightly nauseous.")) //got off lucky if(severity == 2) - usr << "You suddenly feel extremely nauseous and hunch over until it passes." + to_chat(usr, span("warning", "You suddenly feel extremely nauseous and hunch over until it passes.")) M.Stun(3) if(severity >= 3) //you didn't pray hard enough - M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit." + to_chat(M, span("warning", "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.")) spawn(30) if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M @@ -499,12 +501,12 @@ src.visible_message("A sudden gust of powerful wind slams \the [M] into the floor!", "You hear a large fwooshing sound, followed by a bang.") M.take_organ_damage(15) else - M << "A violent gale blows past you, and you barely manage to stay standing!" + to_chat(M, span("warning", "A violent gale blows past you, and you barely manage to stay standing!")) if(ORION_TRAIL_COLLISION) //by far the most damaging event if(prob(90) && !hull) var/turf/simulated/floor/F = src.loc F.ChangeTurf(/turf/space) - src.visible_message("Something slams into the floor around \the [src], exposing it to space!", "You hear something crack and break.") + src.visible_message(span("danger", "Something slams into the floor around \the [src], exposing it to space!"), "You hear something crack and break.") else src.visible_message("Something slams into the floor around \the [src] - luckily, it didn't get through!", "You hear something crack.") if(ORION_TRAIL_MALFUNCTION) @@ -573,9 +575,9 @@ event() if(emagged) //has to be here because otherwise it doesn't work src.show_message("\The [src] states, 'YOU ARE EXPERIENCING A BLACKHOLE. BE TERRIFIED.","You hear something say, 'YOU ARE EXPERIENCING A BLACKHOLE. BE TERRFIED'") - usr << "Something draws you closer and closer to the machine." + to_chat(usr, span("warning", "Something draws you closer and closer to the machine.")) sleep(10) - usr << "This is really starting to hurt!" + to_chat(usr, span("danger", "This is really starting to hurt!")) var i; //spawning a literal blackhole would be fun, but a bit disruptive. for(i=0;i<4;i++) var/mob/living/L = usr @@ -1001,12 +1003,12 @@ /obj/machinery/computer/arcade/orion_trail/emag_act(mob/user) if(!emagged) - user << "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode." + to_chat(user, span("notice", "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")) name = "The Orion Trail: Realism Edition" desc = "Learn how our ancestors got to Orion, and try not to die in the process!" newgame() emagged = 1 - + return 1 /obj/item/weapon/orion_ship name = "model settler ship" @@ -1021,9 +1023,9 @@ if(!(in_range(user, src))) return if(!active) - user << "There's a little switch on the bottom. It's flipped down." + to_chat(user, span("notice", "There's a little switch on the bottom. It's flipped down.")) else - user << "There's a little switch on the bottom. It's flipped up." + to_chat(user, span("notice", "There's a little switch on the bottom. It's flipped up.")) /obj/item/weapon/orion_ship/attack_self(mob/user) if(active) @@ -1032,17 +1034,17 @@ message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") - user << "You flip the switch on the underside of [src]." + to_chat(user, span("warning", "You flip the switch on the underside of [src].")) active = 1 - src.visible_message("[src] softly beeps and whirs to life!") + src.visible_message(span("notice", "[src] softly beeps and whirs to life!")) src.audible_message("\The [src] says, 'This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.'") sleep(20) - src.visible_message("[src] begins to vibrate...") + src.visible_message(span("warning", "[src] begins to vibrate...")) src.audible_message("\The [src] says, 'Uh, Port? Having some issues with our reactor, could you check it out? Over.'") sleep(30) src.audible_message("\The [src] says, 'Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-'") sleep(3.6) - src.visible_message("[src] explodes!") + src.visible_message(span("danger", "[src] explodes!")) explosion(src.loc, 1,2,4) qdel(src) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 5ce605afcc..b9bd4a6855 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -935,20 +935,11 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/machinery/newscaster/proc/scan_user(mob/living/user as mob) if(istype(user,/mob/living/carbon/human)) //User is a human var/mob/living/carbon/human/human_user = user - if(human_user.wear_id) //Newscaster scans you - if(istype(human_user.wear_id, /obj/item/device/pda)) //autorecognition, woo! - var/obj/item/device/pda/P = human_user.wear_id - if(P.id) - scanned_user = GetNameAndAssignmentFromId(P.id) - else - scanned_user = "Unknown" - else if(istype(human_user.wear_id, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/ID = human_user.wear_id - scanned_user = GetNameAndAssignmentFromId(ID) - else - scanned_user ="Unknown" + var/obj/item/weapon/card/id/I = human_user.GetIdCard() + if(I) + scanned_user = GetNameAndAssignmentFromId(I) else - scanned_user ="Unknown" + scanned_user = "Unknown" else var/mob/living/silicon/ai_user = user scanned_user = "[ai_user.name] ([ai_user.job])" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index b66e311d49..13a966f71b 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -862,7 +862,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/stoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/toxin = 4, /obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/syringe = 12, /obj/item/device/healthanalyzer = 5,/obj/item/weapon/reagent_containers/glass/beaker = 4, /obj/item/weapon/reagent_containers/dropper = 2, - /obj/item/stack/medical/advanced/bruise_pack = 3, /obj/item/stack/medical/advanced/ointment = 3, /obj/item/stack/medical/splint = 2, + /obj/item/stack/medical/advanced/bruise_pack = 6, /obj/item/stack/medical/advanced/ointment = 6, /obj/item/stack/medical/splint = 4, /obj/item/weapon/storage/pill_bottle/carbon = 2) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/stox = 4,/obj/item/weapon/reagent_containers/pill/antitox = 6) idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 2ad51ca887..f1a99a6090 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -46,11 +46,11 @@ if(colour != "#FFFFFF" && shadeColour != "#000000") colour = "#FFFFFF" shadeColour = "#000000" - to_chat(usr,"You will now draw in white and black with this crayon.") + to_chat(user, "You will now draw in white and black with this crayon.") else colour = "#000000" shadeColour = "#FFFFFF" - to_chat(usr,"You will now draw in black and white with this crayon.") + to_chat(user, "You will now draw in black and white with this crayon.") return /obj/item/weapon/pen/crayon/rainbow @@ -72,22 +72,22 @@ switch(drawtype) if("letter") drawtype = input("Choose the letter.", "Crayon scribbles") in list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") - to_chat(usr,"You start drawing a letter on the [target.name].") + to_chat(user, "You start drawing a letter on the [target.name].") if("graffiti") - to_chat(usr,"You start drawing graffiti on the [target.name].") + to_chat(user, "You start drawing graffiti on the [target.name].") if("rune") - to_chat(usr,"You start drawing a rune on the [target.name].") + to_chat(user, "You start drawing a rune on the [target.name].") if("arrow") drawtype = input("Choose the arrow.", "Crayon scribbles") in list("left", "right", "up", "down") - to_chat(usr,"You start drawing an arrow on the [target.name].") + to_chat(user, "You start drawing an arrow on the [target.name].") if(instant || do_after(user, 50)) new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype) - to_chat(usr,"You finish drawing.") + to_chat(user, "You finish drawing.") target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on. if(uses) uses-- if(!uses) - to_chat(usr,"You used up your crayon!") + to_chat(user, "You used up your crayon!") qdel(src) return @@ -158,11 +158,11 @@ if(colour != "#FFFFFF" && shadeColour != "#000000") colour = "#FFFFFF" shadeColour = "#000000" - to_chat(usr,"You will now draw in white and black with this marker.") + to_chat(user, "You will now draw in white and black with this marker.") else colour = "#000000" shadeColour = "#FFFFFF" - to_chat(usr,"You will now draw in black and white with this marker.") + to_chat(user, "You will now draw in black and white with this marker.") return /obj/item/weapon/pen/crayon/marker/rainbow @@ -179,7 +179,7 @@ /obj/item/weapon/pen/crayon/marker/attack(mob/M as mob, mob/user as mob) if(M == user) - to_chat(usr,"You take a bite of the marker and swallow it.") + to_chat(user, "You take a bite of the marker and swallow it.") user.nutrition += 1 user.reagents.add_reagent("marker_ink",6) if(uses) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index eb62b5d674..b5ff773e8b 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -111,6 +111,7 @@ user.visible_message("\The [user] places a bandaid over \a [W.desc] on [M]'s [affecting.name].", \ "You place a bandaid over \a [W.desc] on [M]'s [affecting.name]." ) W.bandage() + W.disinfect() used++ affecting.update_damages() if(used == amount) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 4d567019ae..cee423a627 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -138,18 +138,18 @@ /obj/item/weapon/storage/backpack/dufflebag/syndie name = "black dufflebag" - desc = "A large dufflebag for holding extra tactical supplies." + desc = "A large dufflebag for holding extra tactical supplies. This one appears to be made out of lighter material than usual." icon_state = "duffle_syndie" slowdown = 0 /obj/item/weapon/storage/backpack/dufflebag/syndie/med name = "medical dufflebag" - desc = "A large dufflebag for holding extra tactical medical supplies." + desc = "A large dufflebag for holding extra tactical medical supplies. This one appears to be made out of lighter material than usual." icon_state = "duffle_syndiemed" /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo name = "ammunition dufflebag" - desc = "A large dufflebag for holding extra weapons ammunition and supplies." + desc = "A large dufflebag for holding extra weapons ammunition and supplies. This one appears to be made out of lighter material than usual." icon_state = "duffle_syndieammo" /obj/item/weapon/storage/backpack/dufflebag/captain @@ -417,4 +417,4 @@ else H.visible_message("\The [src] decides not to unpack \the [src]!", \ "You decide not to unpack \the [src]!") - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 762720e390..c1de372dc1 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -107,10 +107,10 @@ if(istype(W,/obj/item/weapon/pen/crayon)) switch(W:colourName) if("mime") - to_chat(usr,"This crayon is too sad to be contained in this box.") + to_chat(user, "This crayon is too sad to be contained in this box.") return if("rainbow") - to_chat(usr,"This crayon is too powerful to be contained in this box.") + to_chat(user, "This crayon is too powerful to be contained in this box.") return ..() @@ -149,10 +149,10 @@ if(istype(W,/obj/item/weapon/pen/crayon/marker)) switch(W:colourName) if("mime") - to_chat(usr,"This marker is too depressing to be contained in this box.") + to_chat(user, "This marker is too depressing to be contained in this box.") return if("rainbow") - to_chat(usr,"This marker is too childish to be contained in this box.") + to_chat(user, "This marker is too childish to be contained in this box.") return ..() diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 02be9fdfaf..cb376787ab 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -10,6 +10,9 @@ /obj/item/weapon/card, /obj/item/clothing/mask/smokable/cigarette/, /obj/item/device/flashlight/pen, + /obj/item/device/tape, + /obj/item/weapon/cartridge, + /obj/item/device/encryptionkey, /obj/item/seeds, /obj/item/stack/medical, /obj/item/weapon/coin, @@ -18,13 +21,21 @@ /obj/item/weapon/implanter, /obj/item/weapon/flame/lighter, /obj/item/weapon/flame/match, + /obj/item/weapon/forensics, + /obj/item/weapon/glass_extra, + /obj/item/weapon/haircomb, + /obj/item/weapon/hand, + /obj/item/weapon/key, + /obj/item/weapon/lipstick, /obj/item/weapon/paper, /obj/item/weapon/pen, /obj/item/weapon/photo, /obj/item/weapon/reagent_containers/dropper, + /obj/item/weapon/sample, /obj/item/weapon/screwdriver, /obj/item/weapon/stamp, - /obj/item/clothing/accessory/permit + /obj/item/clothing/accessory/permit, + /obj/item/clothing/accessory/badge ) slot_flags = SLOT_ID diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index a83e200b8d..73c4053bfa 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -68,12 +68,26 @@ icon_state = "wood" initial_flooring = /decl/flooring/wood +/turf/simulated/floor/wood/broken + icon_state = "wood_broken0" // This gets changed when spawned. + +/turf/simulated/floor/wood/broken/initialize() + break_tile() + return ..() + /turf/simulated/floor/wood/sif name = "alien wooden floor" icon = 'icons/turf/flooring/wood.dmi' icon_state = "sifwood" initial_flooring = /decl/flooring/wood/sif +/turf/simulated/floor/wood/sif/broken + icon_state = "sifwood_broken0" // This gets changed when spawned. + +/turf/simulated/floor/wood/sif/broken/initialize() + break_tile() + return ..() + /turf/simulated/floor/grass name = "grass patch" icon = 'icons/turf/flooring/grass.dmi' diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 12c00aa708..772c1886a8 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -6,6 +6,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights var/previous_rights = 0 + //Clear profile access + for(var/A in world.GetConfig("admin")) + world.SetConfig("APP/admin", A, null) + //load text from file var/list/Lines = file2list("config/admin_ranks.txt") diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 4f0cba95c4..2d74b43433 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -23,6 +23,8 @@ var/list/admin_datums = list() rank = initial_rank rights = initial_rights admin_datums[ckey] = src + if(rights & R_DEBUG) //grant profile access + world.SetConfig("APP/admin", ckey, "role=admin") /datum/admins/proc/associate(client/C) if(istype(C)) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index e50c563aed..67c82dcf79 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -26,7 +26,9 @@ if(icon_override) if("[tmp_icon_state]_tie" in icon_states(icon_override)) tmp_icon_state = "[tmp_icon_state]_tie" - inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH) + inv_overlay = image(icon = icon_override, icon_state = tmp_icon_state, dir = SOUTH) + else + inv_overlay = image(icon = INV_ACCESSORIES_DEF_ICON, icon_state = tmp_icon_state, dir = SOUTH) return inv_overlay /obj/item/clothing/accessory/proc/get_mob_overlay() @@ -387,4 +389,4 @@ /obj/item/clothing/accessory/bracelet/material/glass/New(var/newloc) ..(newloc, "glass") - ..() \ No newline at end of file + ..() diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 5ffc507888..c6f9503a0a 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -13,6 +13,7 @@ var/list/global/map_templates = list() /datum/map_template var/name = "Default Template Name" var/desc = "Some text should go here. Maybe." + var/template_group = null // If this is set, no more than one template in the same group will be spawned, per submap seeding. var/width = 0 var/height = 0 var/mappath = null @@ -67,7 +68,7 @@ var/list/global/map_templates = list() admin_notice("Initializing newly created atom(s) in submap.", R_DEBUG) SSatoms.InitializeAtoms(atoms) - + admin_notice("Initializing atmos pipenets and machinery in submap.", R_DEBUG) SSmachines.setup_atmos_machinery(atmos_machines) @@ -190,6 +191,7 @@ var/list/global/map_templates = list() CHECK_TICK var/list/loaded_submap_names = list() + var/list/template_groups_used = list() // Used to avoid spawning three seperate versions of the same PoI. // Now lets start choosing some. while(budget > 0 && overall_sanity > 0) @@ -210,6 +212,14 @@ var/list/global/map_templates = list() // Can we afford it? if(chosen_template.cost > budget) + priority_submaps -= chosen_template + potential_submaps -= chosen_template + continue + + // Did we already place down a very similar submap? + if(chosen_template.template_group && chosen_template.template_group in template_groups_used) + priority_submaps -= chosen_template + potential_submaps -= chosen_template continue // If so, try to place it. @@ -242,14 +252,21 @@ var/list/global/map_templates = list() CHECK_TICK + // For pretty maploading statistics. if(loaded_submap_names[chosen_template.name]) loaded_submap_names[chosen_template.name] += 1 else loaded_submap_names[chosen_template.name] = 1 + // To avoid two 'related' similar submaps existing at the same time. + if(chosen_template.template_group) + template_groups_used += chosen_template.template_group + + // To deduct the cost. if(chosen_template.cost >= 0) budget -= chosen_template.cost + // Remove the submap from our options. if(chosen_template in priority_submaps) // Always remove priority submaps. priority_submaps -= chosen_template else if(!chosen_template.allow_duplicates) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 93a293dec6..b7af06c595 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -399,12 +399,9 @@ var/modified = 0 var/perpname = "wot" - if(wear_id) - var/obj/item/weapon/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else perpname = name @@ -438,14 +435,11 @@ var/perpname = "wot" var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.security) @@ -468,14 +462,11 @@ var/perpname = "wot" var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.security) @@ -496,14 +487,11 @@ if (href_list["secrecordadd"]) if(hasHUD(usr,"security")) var/perpname = "wot" - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.security) @@ -527,14 +515,11 @@ var/perpname = "wot" var/modified = 0 - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) @@ -566,14 +551,11 @@ var/perpname = "wot" var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.medical) @@ -597,14 +579,11 @@ var/perpname = "wot" var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.medical) @@ -625,14 +604,11 @@ if (href_list["medrecordadd"]) if(hasHUD(usr,"medical")) var/perpname = "wot" - if(wear_id) - if(istype(wear_id,/obj/item/weapon/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/device/pda)) - var/obj/item/device/pda/tempPda = wear_id - perpname = tempPda.owner + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else - perpname = src.name + perpname = name for (var/datum/data/record/E in data_core.general) if (E.fields["name"] == perpname) for (var/datum/data/record/R in data_core.medical) @@ -1184,7 +1160,7 @@ if(!(gender in species.genders)) gender = species.genders[1] - icon_state = lowertext(species.name) + //icon_state = lowertext(species.name) //Necessary? species.create_organs(src) @@ -1615,12 +1591,9 @@ if(hasHUD(user,"security")) //Try to find their name var/perpname - if(wear_id) - var/obj/item/weapon/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name + var/obj/item/weapon/card/id/I = GetIdCard() + if(I) + perpname = I.registered_name else perpname = name //Try to find their record diff --git a/code/modules/mob/living/simple_animal/slime/ai.dm b/code/modules/mob/living/simple_animal/slime/ai.dm index b35ebb6e03..3a8718c997 100644 --- a/code/modules/mob/living/simple_animal/slime/ai.dm +++ b/code/modules/mob/living/simple_animal/slime/ai.dm @@ -5,9 +5,46 @@ return ..() +/mob/living/simple_animal/slime/Found(mob/living/L) + if(isliving(L)) + if(SA_attackable(L)) + if(L.faction == faction && !attack_same) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. + return H // Monkeys are always food. + else + return + + if(L in friends) + return + + if(istype(L, /mob/living/simple_animal/slime)) + var/mob/living/simple_animal/slime/buddy = L + if(buddy.slime_color == src.slime_color || discipline || unity || buddy.unity) + return // Don't hurt same colored slimes. + else + return buddy //do hurt others + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. + return H // Monkeys are always food. + + if(issilicon(L) || isbot(L)) + if(discipline && !rabid) + return // We're a good slime. For now at least. + return + return + /mob/living/simple_animal/slime/special_target_check(mob/living/L) - if(L.faction == faction && !attack_same) - return FALSE + if(L.faction == faction && !attack_same && !istype(L, /mob/living/simple_animal/slime)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. + return TRUE // Monkeys are always food. + else + return FALSE if(L in friends) return FALSE diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 21e7c62820..691b880574 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -112,6 +112,11 @@ if(!speaker.client) return + //Are all slimes being referred to? + var/mass_order = 0 + if(findtext(message, "slimes")) + mass_order = 1 + // Say hello back. if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings")) delayed_say(pick("Hello...", "Hi..."), speaker) @@ -165,13 +170,14 @@ var/list/valid_names = splittext(L.name, " ") // Should output list("John", "Doe") as an example. for(var/line in valid_names) // Check each part of someone's name. if(findtext(message, lowertext(line))) // If part of someone's name is in the command, the slime targets them if allowed to. - if(special_target_check(L)) - delayed_say("Okay... I attack \the [L]...", speaker) - LoseFollow() - set_target(L) - return - else - delayed_say("No... I won't attack \the [L].", speaker) - return - // If we're here, it couldn't find anyone with that name. - delayed_say("No... I don't know who to attack...", speaker) + if(!(mass_order && line == "slime")) //don't think random other slimes are target + if(special_target_check(L)) + delayed_say("Okay... I attack \the [L]...", speaker) + LoseFollow() + set_target(L, 1) + return + else + delayed_say("No... I won't attack \the [L].", speaker) + return + // If we're here, it couldn't find anyone with that name. + delayed_say("No... I don't know who to attack...", speaker) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 93b1f0e9c6..219074dc6c 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -356,10 +356,13 @@ baby.mutation_chance = mutation_chance baby.power_charge = round(power_charge / 4) baby.resentment = max(resentment - 1, 0) - baby.discipline = max(discipline - 1, 0) - baby.obedience = max(obedience - 1, 0) - baby.unity = unity + if(!istype(baby, /mob/living/simple_animal/slime/light_pink)) + baby.discipline = max(discipline - 1, 0) + baby.obedience = max(obedience - 1, 0) + if(!istype(baby, /mob/living/simple_animal/slime/rainbow)) + baby.unity = unity baby.faction = faction + baby.attack_same = attack_same baby.friends = friends.Copy() if(rabid) baby.enrage() diff --git a/code/modules/mob/living/simple_animal/slime/subtypes.dm b/code/modules/mob/living/simple_animal/slime/subtypes.dm index 486c04866f..d30bdf0d7d 100644 --- a/code/modules/mob/living/simple_animal/slime/subtypes.dm +++ b/code/modules/mob/living/simple_animal/slime/subtypes.dm @@ -120,7 +120,7 @@ /mob/living/simple_animal/slime/dark_purple desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it." - color = "#CC23FF" + color = "#660088" slime_color = "dark purple" coretype = /obj/item/slime_extract/dark_purple reagent_injected = "phoron" diff --git a/code/modules/multiz/pipes.dm b/code/modules/multiz/pipes.dm index 8d03c8f862..e2796ccff8 100644 --- a/code/modules/multiz/pipes.dm +++ b/code/modules/multiz/pipes.dm @@ -201,7 +201,7 @@ obj/machinery/atmospherics/pipe/zpipe/up/scrubbers desc = "A scrubbers pipe segment to connect upwards." connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -211,7 +211,7 @@ obj/machinery/atmospherics/pipe/zpipe/up/supply desc = "A supply pipe segment to connect upwards." connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE @@ -221,7 +221,7 @@ obj/machinery/atmospherics/pipe/zpipe/down/scrubbers desc = "A scrubbers pipe segment to connect downwards." connect_types = CONNECT_TYPE_SCRUBBER piping_layer = PIPING_LAYER_SCRUBBER - layer = 2.38 + layer = PIPES_SCRUBBER_LAYER icon_connect_type = "-scrubbers" color = PIPE_COLOR_RED @@ -231,6 +231,6 @@ obj/machinery/atmospherics/pipe/zpipe/down/supply desc = "A supply pipe segment to connect downwards." connect_types = CONNECT_TYPE_SUPPLY piping_layer = PIPING_LAYER_SUPPLY - layer = 2.39 + layer = PIPES_SUPPLY_LAYER icon_connect_type = "-supply" color = PIPE_COLOR_BLUE diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index cdb963e35b..c0e4e60c98 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -50,7 +50,7 @@ /obj/item/organ/external/diona/arm name = "left upper tendril" - organ_tag = "l_arm" + organ_tag = BP_L_ARM icon_name = "l_arm" max_damage = 30 min_broken_damage = 20 @@ -61,13 +61,13 @@ /obj/item/organ/external/diona/arm/right name = "right upper tendril" - organ_tag = "r_arm" + organ_tag = BP_R_ARM icon_name = "r_arm" body_part = ARM_RIGHT /obj/item/organ/external/diona/leg name = "left lower tendril" - organ_tag = "l_leg" + organ_tag = BP_L_LEG icon_name = "l_leg" max_damage = 30 min_broken_damage = 20 @@ -79,50 +79,50 @@ /obj/item/organ/external/diona/leg/right name = "right lower tendril" - organ_tag = "r_leg" + organ_tag = BP_R_LEG icon_name = "r_leg" body_part = LEG_RIGHT icon_position = RIGHT /obj/item/organ/external/diona/foot name = "left foot" - organ_tag = "l_foot" + organ_tag = BP_L_FOOT icon_name = "l_foot" max_damage = 25 min_broken_damage = 10 w_class = ITEMSIZE_SMALL body_part = FOOT_LEFT icon_position = LEFT - parent_organ = "l_leg" + parent_organ = BP_R_LEG can_stand = 1 /obj/item/organ/external/diona/foot/right name = "right foot" - organ_tag = "r_foot" + organ_tag = BP_R_FOOT icon_name = "r_foot" body_part = FOOT_RIGHT icon_position = RIGHT - parent_organ = "r_leg" + parent_organ = BP_R_LEG joint = "right ankle" amputation_point = "right ankle" /obj/item/organ/external/diona/hand name = "left grasper" - organ_tag = "l_hand" + organ_tag = BP_L_HAND icon_name = "l_hand" max_damage = 25 min_broken_damage = 15 w_class = ITEMSIZE_SMALL body_part = HAND_LEFT - parent_organ = "l_arm" + parent_organ = BP_L_ARM can_grasp = 1 /obj/item/organ/external/diona/hand/right name = "right grasper" - organ_tag = "r_hand" + organ_tag = BP_R_HAND icon_name = "r_hand" body_part = HAND_RIGHT - parent_organ = "r_arm" + parent_organ = BP_R_ARM //DIONA ORGANS. /obj/item/organ/external/diona/removed() @@ -157,26 +157,32 @@ /obj/item/organ/internal/diona/strata name = "neural strata" parent_organ = BP_TORSO + organ_tag = O_STRATA /obj/item/organ/internal/diona/bladder name = "gas bladder" parent_organ = BP_HEAD + organ_tag = O_GBLADDER /obj/item/organ/internal/diona/polyp name = "polyp segment" parent_organ = BP_GROIN + organ_tag = O_POLYP /obj/item/organ/internal/diona/ligament name = "anchoring ligament" parent_organ = BP_GROIN + organ_tag = O_ANCHOR /obj/item/organ/internal/diona/node name = "receptor node" parent_organ = BP_HEAD + organ_tag = O_RESPONSE /obj/item/organ/internal/diona/nutrients name = O_NUTRIENT parent_organ = BP_TORSO + organ_tag = O_NUTRIENT // These are different to the standard diona organs as they have a purpose in other // species (absorbing radiation and light respectively) @@ -191,8 +197,8 @@ /obj/item/organ/internal/diona/node name = "response node" - parent_organ = "head" - organ_tag = "receptor node" + parent_organ = BP_HEAD + organ_tag = O_RESPONSE icon = 'icons/mob/alien.dmi' icon_state = "claw" diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 35cdc6a51a..449d7c5137 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -72,7 +72,7 @@ owner.custom_pain("A jolt of pain surges through your [name]!",1) /obj/item/organ/external/arm - organ_tag = "l_arm" + organ_tag = BP_L_ARM name = "left arm" icon_name = "l_arm" max_damage = 80 @@ -98,13 +98,13 @@ if (. >= 2) if(prob(.)) owner.custom_pain("A jolt of pain surges through your [name]!",1) - if(organ_tag == "l_arm") //Specific level 2 'feature + if(organ_tag == BP_L_ARM) //Specific level 2 'feature owner.drop_l_hand() - else if(organ_tag == "r_arm") + else if(organ_tag == BP_R_ARM) owner.drop_r_hand() /obj/item/organ/external/arm/right - organ_tag = "r_arm" + organ_tag = BP_R_ARM name = "right arm" icon_name = "r_arm" body_part = ARM_RIGHT @@ -112,7 +112,7 @@ amputation_point = "right shoulder" /obj/item/organ/external/leg - organ_tag = "l_leg" + organ_tag = BP_L_LEG name = "left leg" icon_name = "l_leg" max_damage = 80 @@ -142,7 +142,7 @@ owner.Weaken(5) /obj/item/organ/external/leg/right - organ_tag = "r_leg" + organ_tag = BP_R_LEG name = "right leg" icon_name = "r_leg" body_part = LEG_RIGHT @@ -151,7 +151,7 @@ amputation_point = "right hip" /obj/item/organ/external/foot - organ_tag = "l_foot" + organ_tag = BP_L_FOOT name = "left foot" icon_name = "l_foot" max_damage = 50 @@ -159,7 +159,7 @@ w_class = ITEMSIZE_SMALL body_part = FOOT_LEFT icon_position = LEFT - parent_organ = "l_leg" + parent_organ = BP_L_LEG joint = "left ankle" amputation_point = "left ankle" can_stand = 1 @@ -186,24 +186,24 @@ owner.Weaken(5) /obj/item/organ/external/foot/right - organ_tag = "r_foot" + organ_tag = BP_R_FOOT name = "right foot" icon_name = "r_foot" body_part = FOOT_RIGHT icon_position = RIGHT - parent_organ = "r_leg" + parent_organ = BP_R_LEG joint = "right ankle" amputation_point = "right ankle" /obj/item/organ/external/hand - organ_tag = "l_hand" + organ_tag = BP_L_HAND name = "left hand" icon_name = "l_hand" max_damage = 50 min_broken_damage = 15 w_class = ITEMSIZE_SMALL body_part = HAND_LEFT - parent_organ = "l_arm" + parent_organ = BP_L_ARM joint = "left wrist" amputation_point = "left wrist" can_grasp = 1 @@ -229,17 +229,17 @@ if (. >= 2) if(prob(.)) owner.custom_pain("A jolt of pain surges through your [name]!",1) - if(organ_tag == "l_hand") //Specific level 2 'feature + if(organ_tag == BP_L_HAND) //Specific level 2 'feature owner.drop_l_hand() - else if(organ_tag == "r_hand") + else if(organ_tag == BP_R_HAND) owner.drop_r_hand() /obj/item/organ/external/hand/right - organ_tag = "r_hand" + organ_tag = BP_R_HAND name = "right hand" icon_name = "r_hand" body_part = HAND_RIGHT - parent_organ = "r_arm" + parent_organ = BP_R_ARM joint = "right wrist" amputation_point = "right wrist" diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 853705abed..5ad1e727da 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -53,7 +53,8 @@ var/list/possible_cable_coil_colours = list( icon_state = "0-1" var/d1 = 0 var/d2 = 1 - layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4 + plane = PLATING_PLANE + layer = WIRES_LAYER color = COLOR_RED var/obj/machinery/power/breakerbox/breaker_box diff --git a/code/modules/power/cable_ender.dm b/code/modules/power/cable_ender.dm index 3276855271..d6975091ea 100644 --- a/code/modules/power/cable_ender.dm +++ b/code/modules/power/cable_ender.dm @@ -8,7 +8,8 @@ icon = 'icons/obj/power_cond_heavy.dmi' name = "large power cable" desc = "This cable is tough. It cannot be cut with simple hand tools." - layer = 2.39 //Just below pipes, which are at 2.4 + plane = PLATING_PLANE + layer = PIPES_LAYER - 0.05 //Just below pipes color = null unacidable = 1 var/id = null diff --git a/code/modules/power/cable_heavyduty.dm b/code/modules/power/cable_heavyduty.dm index 99c91a6b74..a286517965 100644 --- a/code/modules/power/cable_heavyduty.dm +++ b/code/modules/power/cable_heavyduty.dm @@ -7,7 +7,8 @@ icon = 'icons/obj/power_cond_heavy.dmi' name = "large power cable" desc = "This cable is tough. It cannot be cut with simple hand tools." - layer = 2.39 //Just below pipes, which are at 2.4 + plane = PLATING_PLANE + layer = PIPES_LAYER - 0.05 //Just below pipes color = null /obj/structure/cable/heavyduty/attackby(obj/item/W, mob/user) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 0e9cf95eb6..94cf0ab21e 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -50,6 +50,7 @@ /obj/item/ammo_magazine/s38/rubber name = "speedloader (.38 rubber)" + icon_state = "T38" ammo_type = /obj/item/ammo_casing/a38r /obj/item/ammo_magazine/s38/emp @@ -493,6 +494,23 @@ max_ammo = 9 multiple_sprites = 1 +/obj/item/ammo_magazine/s44 + name = "speedloader (.44)" + icon_state = "44" + ammo_type = /obj/item/ammo_casing/a44 + matter = list(DEFAULT_WALL_MATERIAL = 1260) //metal costs are very roughly based around 1 .45 casing = 75 metal + caliber = ".44" + max_ammo = 6 + multiple_sprites = 1 + +/obj/item/ammo_magazine/s44/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/s44/rubber + name = "speedloader (.44 rubber)" + icon_state = "R44" + ammo_type = /obj/item/ammo_casing/a44r + ///////// 7.62mm ///////// /obj/item/ammo_magazine/m762 diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 330e11d89b..028d1cac1e 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -59,6 +59,12 @@ caliber = ".44" projectile_type = /obj/item/projectile/bullet/pistol/strong +/obj/item/ammo_casing/a44r + icon_state = "r-casing" + desc = "A .44 rubber bullet casing." + caliber = ".44" + projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong + /* * .75 (aka Gyrojet Rockets, aka admin abuse) */ diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index aa3faa7468..55eefade82 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -58,6 +58,7 @@ var/move_delay = 1 var/fire_sound = 'sound/weapons/Gunshot.ogg' var/fire_sound_text = "gunshot" + var/fire_anim = null var/recoil = 0 //screen shake var/silenced = 0 var/muzzle_flash = 3 @@ -492,7 +493,7 @@ if(!(target && target.loc)) target = targloc //pointblank = 0 - + var/target_for_log if(ismob(target)) target_for_log = target @@ -533,6 +534,9 @@ //called after successfully firing /obj/item/weapon/gun/proc/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0) + if(fire_anim) + flick(fire_anim, src) + if(silenced) if(reflex) user.visible_message( diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index b33cf11950..481530856f 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -118,7 +118,6 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun() return 1 - // Blade Runner pistol. /obj/item/weapon/gun/projectile/revolver/deckard name = "\improper Deckard .38" @@ -259,3 +258,24 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun() to_chat(user, "\The [src] has a secondary barrel loaded with \a [to_print]") else to_chat(user, "\The [src] has a secondary barrel that is empty.") + + +//Ported from Bay +/obj/item/weapon/gun/projectile/revolver/webley + name = "service revolver" + desc = "A rugged top break revolver based on the Webley Mk. VI model, with modern improvements. Uses .44 magnum rounds." + icon_state = "webley2" + item_state = "webley2" + caliber = ".44" + origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) + handle_casings = CYCLE_CASINGS + max_shells = 6 + ammo_type = /obj/item/ammo_casing/a44 + +/obj/item/weapon/gun/projectile/revolver/webley/auto + name = "autorevolver" + icon_state = "mosley" + desc = "A shiny Mosley Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds." + fire_delay = 5.7 //Autorevolver. Also synced with the animation + fire_anim = "mosley_fire" + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index d47e729898..36a93a89b0 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -147,6 +147,14 @@ fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg' damage = 60 +/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas + fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg' + damage = 10 + agony = 60 + embed_chance = 0 + sharp = 0 + check_armour = "melee" + /obj/item/projectile/bullet/pistol/rubber //"rubber" bullets name = "rubber bullet" damage = 5 diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index fdae51e647..07c8429bfb 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -663,6 +663,7 @@ var/dpdir = 0 // bitmask of pipe directions dir = 0 // dir will contain dominant direction for junction pipes var/health = 10 // health points 0-10 + plane = PLATING_PLANE layer = DISPOSAL_LAYER // slightly lower than wires and other pipes var/base_icon_state // initial icon state on map var/sortType = "" diff --git a/html/changelog.html b/html/changelog.html index 3796656cc9..e81411a62c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,46 @@ -->
+

01 April 2018

+

Anewbe updated:

+ +

Cameron653 updated:

+ +

Heroman3003 updated:

+ +

MistyLuminescence updated:

+ +

Woodrat updated:

+ +

battlefieldCommander updated:

+ +

15 March 2018

Anewbe updated: