diff --git a/code/defines/obj.dm b/code/defines/obj.dm index d78a7ece74b..5032f53dc1f 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -681,7 +681,7 @@ update_icon() spawn(2) //So it properly updates when deleting var/dir_sum = 0 - for(var/direction in cardinal) + for(var/direction in list(1,2,4,8,5,6,9,10)) var/skip_sum = 0 for(var/obj/structure/window/W in src.loc) if(W.dir == direction) //So smooth tables don't go smooth through windows @@ -697,15 +697,35 @@ inv_direction = 8 if(8) inv_direction = 4 + if(5) + inv_direction = 10 + if(6) + inv_direction = 9 + if(9) + inv_direction = 6 + if(10) + inv_direction = 5 for(var/obj/structure/window/W in get_step(src,direction)) if(W.dir == inv_direction) //So smooth tables don't go smooth through windows when the window is on the other table's tile skip_sum = 1 continue if(!skip_sum) //means there is a window between the two tiles in this direction if(locate(/obj/structure/table,get_step(src,direction))) - dir_sum += direction + if(direction <5) + dir_sum += direction + else + if(direction == 5) //This permits the use of all table directions. (Set up so clockwise around the central table is a higher value, from north) + dir_sum += 16 + if(direction == 6) + dir_sum += 32 + if(direction == 8) //Aherp and Aderp. Jezes I am stupid. -- SkyMarshal + dir_sum += 8 + if(direction == 10) + dir_sum += 64 + if(direction == 9) + dir_sum += 128 - //dir_sum: + //dir_sum%16: // 1,2,4,8 = endtable // 3,12 = streight 1 tile thick table // 5,6,9,10 = corner, if it finds a table in get_step(src,dir_sum) then it's a full corner table, else it's a 1 tile chick corner table @@ -720,31 +740,75 @@ // 4 = middle table (full, 4 connections) var/table_type = 0 //stand_alone table - if(dir_sum in cardinal) + world << dir_sum%16 + world << dir_sum + if(dir_sum%16 in cardinal) table_type = 1 //endtable - if(dir_sum in list(3,12)) + dir_sum %= 16 + if(dir_sum%16 in list(3,12)) table_type = 2 //1 tile thick, streight table if(dir_sum == 3) //3 doesn't exist as a dir dir_sum = 2 if(dir_sum == 12) //12 doesn't exist as a dir. dir_sum = 4 - if(dir_sum in list(5,6,9,10)) - if(locate(/obj/structure/table,get_step(src.loc,dir_sum))) + if(dir_sum%16 in list(5,6,9,10)) + if(locate(/obj/structure/table,get_step(src.loc,dir_sum%16))) table_type = 3 //full table (not the 1 tile thick one, but one of the 'tabledir' tables) else table_type = 2 //1 tile thick, corner table (treated the same as streight tables in code later on) - if(dir_sum in list(13,14,7,11)) //Three-way intersection - table_type = 5 //full table as three-way intersections are not sprited, would require 64 sprites to handle all combinations - switch(dir_sum) + dir_sum %= 16 + if(dir_sum%16 in list(13,14,7,11)) //Three-way intersection + table_type = 5 //full table as three-way intersections are not sprited, would require 64 sprites to handle all combinations. TOO BAD -- SkyMarshal + switch(dir_sum%16) //Begin computation of the special type tables. --SkyMarshal if(7) - dir_sum = 4 + if(dir_sum == 23) + table_type = 6 + dir_sum = 8 + else if(dir_sum == 39) + dir_sum = 4 + table_type = 6 + else if(dir_sum == 55 || dir_sum == 119 || dir_sum == 247 || dir_sum == 183) + dir_sum = 8 + table_type = 3 + else + dir_sum = 4 if(11) - dir_sum = 8 + if(dir_sum == 75) + dir_sum = 5 + table_type = 6 + else if(dir_sum == 139) + dir_sum = 9 + table_type = 6 + else if(dir_sum == 203 || dir_sum == 219 || dir_sum == 251 || dir_sum == 235) + dir_sum = 4 + table_type = 3 + else + dir_sum = 8 if(13) - dir_sum = 1 + if(dir_sum == 29) + dir_sum = 6 + table_type = 6 + else if(dir_sum == 141) + dir_sum = 10 + table_type = 6 + else if(dir_sum == 189 || dir_sum == 221 || dir_sum == 253 || dir_sum == 157) + dir_sum = 1 + table_type = 3 + else + dir_sum = 1 if(14) - dir_sum = 2 //These translate the dir_sum to the correct dirs from the 'tabledir' icon_state. - if(dir_sum == 15) + if(dir_sum == 46) + dir_sum = 1 + table_type = 6 + else if(dir_sum == 78) + dir_sum = 2 + table_type = 6 + else if(dir_sum == 110 || dir_sum == 254 || dir_sum == 238 || dir_sum == 126) + dir_sum = 2 + table_type = 3 + else + dir_sum = 2 //These translate the dir_sum to the correct dirs from the 'tabledir' icon_state. + if(dir_sum%16 == 15) table_type = 4 //4-way intersection, the 'middle' table sprites will be used. if(istype(src,/obj/structure/table/reinforced)) @@ -760,7 +824,9 @@ if(4) icon_state = "reinf_middle" if(5) - icon_state = "reinf_tabledir" + icon_state = "reinf_tabledir2" + if(6) + icon_state = "reinf_tabledir3" else if(istype(src,/obj/structure/table/woodentable)) switch(table_type) if(0) @@ -774,7 +840,9 @@ if(4) icon_state = "wood_middle" if(5) - icon_state = "wood_tabledir" + icon_state = "wood_tabledir2" + if(6) + icon_state = "wood_tabledir3" else switch(table_type) if(0) @@ -789,6 +857,8 @@ icon_state = "table_middle" if(5) icon_state = "tabledir2" + if(6) + icon_state = "tabledir3" if (dir_sum in list(1,2,4,8,5,6,9,10)) dir = dir_sum else diff --git a/code/game/specops_shuttle.dm b/code/game/specops_shuttle.dm index f2cbd6d8c59..29179a7e17a 100644 --- a/code/game/specops_shuttle.dm +++ b/code/game/specops_shuttle.dm @@ -159,9 +159,6 @@ var/specops_shuttle_timeleft = 0 if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return 0 else return 1 -/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob) - return attack_hand(user) - /obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob) return attack_hand(user) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 1186d68cd05..32ef83173b7 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -779,7 +779,9 @@ if(!istype(M, /mob/living/carbon/human)) usr << "\red You can only do this to humans!" return - + switch(alert("You sure you wish to edit this mob's appearance?",,"Yes","No")) + if("No") + return var/new_facial = input("Please select facial hair color.", "Character Generation") as color if(new_facial) M.r_facial = hex2num(copytext(new_facial, 2, 4)) diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index a6bae31c618..4cca4ed0ff7 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -172,8 +172,7 @@ afterattack(atom/target as mob|obj|turf|area, mob/user as mob) - if (istype(target, /obj/item/weapon/storage)) return ..() - if (istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..() + if (istype(target, /obj/item/weapon/storage || istype(target, /obj/item/weapon/gun/grenadelauncher) || istype(target, /obj/structure/table))) return ..() if (!src.state && stage == 2 && !crit_fail) user << "\red You prime the grenade! 3 seconds!" message_admins("[key_name_admin(user)] used a chemistry grenade ([src.name]).") diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index c8a16328ba2..e5f3a8d0d57 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index 3a6d3d1403f..c29f731e003 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -3173,7 +3173,7 @@ "bja" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 4; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 4; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjb" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bjd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/chemistry) +"bjd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor/plating,/area/medical/chemistry) "bje" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/structure/disposalpipe/sortjunction{backsort = 1; backType = list("Morgue"); dir = 4; icon_state = "pipe-j1s"; sortType = list("Genetics")},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bjf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/sortjunction{backsort = 1; backType = list("Morgue","Genetics"); dir = 4; icon_state = "pipe-j2s"; sortType = list("Chemistry")},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bjg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/sortjunction{sortType = list("Chemistry","Morgue","Genetics")},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) @@ -3333,7 +3333,7 @@ "bme" = (/turf/simulated/wall,/area/medical/genetics) "bmf" = (/obj/machinery/dna_scannernew,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bmg" = (/obj/machinery/computer/cloning{wantspod = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) -"bmh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"bmh" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/alarm{frequency = 1437; pixel_y = 23},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bmi" = (/turf/simulated/wall/r_wall,/area/medical/genetics) "bmj" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/medical/genetics) "bmk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/medical/genetics) @@ -3397,7 +3397,7 @@ "bnq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bnr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bns" = (/obj/structure/stool/chair{dir = 1},/obj/effect/landmark/start{name = "Geneticist"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) -"bnt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"bnt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/door_control{dir = 4; id = "genetics"; name = "Medbay Shutters"; pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bnu" = (/obj/machinery/clonepod,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bnv" = (/obj/machinery/computer/cloning{wantsscan = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bnw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/structure/table,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)