diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index bd68296861..b46e6f1753 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -33,13 +33,6 @@ }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) -"aad" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -11096,21 +11089,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "aCd" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, +/obj/machinery/cryopod, /turf/open/floor/carpet, /area/crew_quarters/dorms) "aCe" = ( @@ -11730,7 +11709,7 @@ "aDK" = ( /obj/machinery/door/airlock{ id_tag = "Dorm1"; - name = "Dorm 1" + name = "Cryogenics" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -16696,10 +16675,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQX" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, +/obj/machinery/vending/kink, /turf/open/floor/plasteel, /area/crew_quarters/locker) "aQY" = ( @@ -21100,10 +21076,6 @@ }, /turf/closed/wall, /area/quartermaster/warehouse) -"bcU" = ( -/obj/item/stack/tile/plasteel, -/turf/open/space, -/area/space/nearstation) "bcV" = ( /obj/machinery/airalarm{ dir = 8; @@ -21494,10 +21466,6 @@ /obj/structure/closet/crate/medical, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"bdV" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/airless, -/area/space/nearstation) "bdW" = ( /obj/item/clothing/gloves/color/rainbow, /obj/item/clothing/head/soft/rainbow, @@ -34912,10 +34880,6 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) -"bJP" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/plasteel/bar, -/area/maintenance/port/aft) "bJQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -37457,34 +37421,8 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) -"bPR" = ( -/obj/effect/decal/cleanable/robot_debris/old, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bPS" = ( -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bPT" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/port/aft) "bPU" = ( -/obj/item/shard, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bPV" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Maint Bar Access"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bPW" = ( -/obj/effect/decal/cleanable/oil, +/obj/effect/spawner/lootdrop/keg, /turf/open/floor/plating, /area/maintenance/port/aft) "bPX" = ( @@ -37898,27 +37836,6 @@ /obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/white, /area/science/circuit) -"bRc" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/port/aft) -"bRe" = ( -/obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 4; - name = "4maintenance loot spawner" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bRf" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/port/aft) "bRg" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -38386,18 +38303,6 @@ icon_state = "platingdmg3" }, /area/maintenance/starboard/aft) -"bSn" = ( -/obj/machinery/space_heater, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bSo" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bSp" = ( -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bSq" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen, @@ -38421,11 +38326,12 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "bSu" = ( -/obj/item/stack/cable_coil{ - amount = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "bSv" = ( /obj/machinery/camera{ c_tag = "Construction Area"; @@ -38876,54 +38782,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"bTs" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/port/aft) -"bTt" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/port/aft) -"bTu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"bTv" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTw" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTx" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"bTy" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bTz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -41569,11 +41427,9 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "car" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/closed/wall, -/area/maintenance/port/aft) +/area/maintenance/bar) "cas" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -42097,16 +41953,14 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cbw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/port/aft) "cbx" = ( @@ -45097,10 +44951,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cjn" = ( -/obj/item/weldingtool, -/turf/open/floor/plating/airless, -/area/space/nearstation) "cjo" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel, @@ -51054,10 +50904,6 @@ /obj/item/clothing/under/burial, /turf/open/floor/plasteel/grimy, /area/chapel/office) -"cCa" = ( -/obj/item/clothing/head/hardhat, -/turf/open/floor/plating/airless, -/area/space/nearstation) "cCb" = ( /obj/structure/table, /obj/item/stack/cable_coil{ @@ -53327,6 +53173,11 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"eiu" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/wood, +/area/maintenance/bar) "eyM" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -53341,6 +53192,12 @@ }, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) +"eOM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "eRz" = ( /obj/structure/lattice, /obj/structure/grille, @@ -53362,6 +53219,12 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) +"fip" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/bar) "flc" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, @@ -53383,6 +53246,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"fFm" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) "fGf" = ( /obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, @@ -53392,6 +53260,21 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) +"fOZ" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/maintenance/bar) +"fQl" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/wood, +/area/maintenance/bar) +"fZE" = ( +/obj/item/restraints/legcuffs, +/obj/item/restraints/handcuffs/fake, +/obj/structure/bed/dogbed, +/turf/open/floor/plating, +/area/maintenance/bar) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53467,6 +53350,17 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"hiC" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"hsg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/bar) "hRa" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -53479,6 +53373,19 @@ /obj/item/stock_parts/cell/super, /turf/open/floor/plasteel/white, /area/science/circuit) +"hZp" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/lootdrop/gambling, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) +"iaK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/bar) "ijc" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -53510,6 +53417,11 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) +"iVZ" = ( +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, +/obj/item/assembly/signaler, +/turf/open/floor/plating, +/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -53547,6 +53459,12 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"jsx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -53626,6 +53544,11 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"kjd" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/bar) "knx" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/engineering{ @@ -53652,6 +53575,11 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) +"kEK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) "kOw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, @@ -53663,6 +53591,9 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) +"kPI" = ( +/turf/open/floor/wood, +/area/maintenance/bar) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -53686,6 +53617,20 @@ /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) +"lBy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/vending/games, +/turf/open/floor/wood, +/area/maintenance/bar) +"lEg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/wood, +/area/maintenance/bar) +"lFY" = ( +/turf/closed/wall, +/area/maintenance/bar) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -53696,6 +53641,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/science/circuit) +"lSY" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, @@ -53711,6 +53660,16 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"mEa" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/bar) +"mLY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/maintenance/bar) "mNi" = ( /obj/machinery/light_switch{ pixel_x = -20 @@ -53723,6 +53682,16 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"mVS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) +"nnj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "noK" = ( /obj/structure/girder, /turf/open/floor/plasteel/dark, @@ -53753,18 +53722,41 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nJJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/bar) "nRG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"nYh" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/wood, +/area/maintenance/bar) "oce" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plasteel/white, /area/science/mixing) +"opk" = ( +/obj/structure/table/wood/poker, +/obj/effect/spawner/lootdrop/gambling, +/turf/open/floor/wood, +/area/maintenance/bar) +"oCW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/maintenance/bar) "oDF" = ( /obj/machinery/light, /turf/open/floor/plating, @@ -53782,6 +53774,16 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel/white, /area/science/circuit) +"pcd" = ( +/obj/machinery/door/airlock/wood{ + name = "Maintenance Bar" + }, +/turf/open/floor/wood, +/area/maintenance/bar) +"pxN" = ( +/obj/item/weaponcrafting/stock, +/turf/open/floor/wood, +/area/maintenance/bar) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -53821,6 +53823,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) +"pVG" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/dorms) +"pXH" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) +"pYX" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "qeQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -53839,6 +53853,11 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) +"qTS" = ( +/obj/effect/spawner/lootdrop/costume, +/obj/item/electropack/shockcollar, +/turf/open/floor/plating, +/area/maintenance/bar) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -53854,12 +53873,34 @@ /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"rpN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/stool/bar, +/turf/open/floor/wood, +/area/maintenance/bar) +"rvm" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/wood, +/area/maintenance/bar) +"rGn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/bar) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) +"rLR" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/wood, +/area/maintenance/bar) +"rTJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/bar) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -53872,6 +53913,17 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) +"scN" = ( +/obj/item/clothing/mask/breath/medical, +/obj/item/tank/internals/anesthetic, +/turf/open/floor/plating, +/area/maintenance/bar) +"sjA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -53890,6 +53942,13 @@ /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) +"sKA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) "sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -53932,12 +53991,28 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) +"tfq" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) +"tfA" = ( +/obj/structure/reagent_dispensers/keg/aphro/strong, +/obj/item/reagent_containers/glass/beaker, +/turf/open/floor/plating, +/area/maintenance/bar) "trb" = ( /obj/machinery/light{ dir = 4 }, /turf/open/floor/plasteel, /area/security/courtroom) +"tsl" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/maintenance/bar) "tMl" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, @@ -53955,6 +54030,10 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"uao" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "udp" = ( /obj/item/crowbar/large, /obj/structure/rack, @@ -53981,6 +54060,10 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"uAx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/bar) "uNu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54000,6 +54083,10 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"uVh" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/maintenance/port/aft) "uVS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -54023,6 +54110,15 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) +"vmI" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/maintenance/bar) +"vsJ" = ( +/obj/structure/table/wood, +/obj/item/weaponcrafting/receiver, +/turf/open/floor/wood, +/area/maintenance/bar) "vxh" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -54047,6 +54143,11 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) +"vPe" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck/syndicate, +/turf/open/floor/wood, +/area/maintenance/bar) "vPE" = ( /obj/machinery/light{ dir = 4 @@ -54054,6 +54155,12 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) +"wgE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/bar) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -54131,6 +54238,14 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"xEE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/maintenance/bar) "xIa" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -54142,6 +54257,9 @@ }, /turf/open/floor/plasteel, /area/science/circuit) +"ydY" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms) (1,1,1) = {" aaa @@ -72804,8 +72922,8 @@ aaa aaf aaf aaf -aaa -aaa +gXs +gXs aag aaa bVx @@ -73060,11 +73178,11 @@ aaa aaa aaa aaa -bCq -bCq -bCq -bLv -bCq +aaa +aaa +aaa +pYX +aaa aoV cbj aoV @@ -73317,11 +73435,11 @@ aaa aaa aaa aaa -bCq -bJP -bCq -bSn -bCq +aaa +aaa +aaa +pYX +aaa bCq cbj bLv @@ -73574,11 +73692,11 @@ aaa aaa aaa aaa -bCq -bPS -aad -bPS -bPS +aaa +aaa +aaa +pYX +aaa bCq cbk bLv @@ -73793,7 +73911,7 @@ aLJ aLE aOl aPA -aQW +aQN aQW aTD aQW @@ -73831,11 +73949,11 @@ aaa aaa aaa aaa -bLv -bPR -bRc -bSo -bTs +aaa +aaa +aaa +pYX +aaa bCq bVy bLv @@ -74088,11 +74206,11 @@ aaa aaa aaa aaa -bCq -bPS -bRf -bSo -bTu +aaa +aaa +aaa +pYX +aaa bCq bVB bHE @@ -74345,11 +74463,11 @@ aaa aaa aaa aaa -bLv -bPT -bRe -bSo -bTt +aaa +aaa +aaa +pYX +aaa bCq bVA bWw @@ -74603,10 +74721,10 @@ aaa aaa aaa bCq -bPV bCq bCq -bTw +bCq +bCq bCq bVD bWy @@ -74862,8 +74980,8 @@ aoV bCq bPU bHE -bSp -bTv +bPU +bPU bCq bVC bWx @@ -75117,10 +75235,10 @@ bGi aoV aoV bCq -bPW +bCq +uVh bCq bCq -bTy bCq bVF bWA @@ -75376,8 +75494,8 @@ aoV bCq bHE bHE -bSq -bTx +bHE +bHE bCq bVE bWz @@ -75640,14 +75758,14 @@ bCq bCq bCq bYy -bCq -bCq -bLv -bCq -bCq -bCq -bCq -bLv +lFY +lFY +rTJ +lFY +lFY +lFY +lFY +lFY bUs bLv aaa @@ -75897,14 +76015,14 @@ bVG bHE bHE bHE -bLv -aaf -aoV -aoV -aoV -aoV -aoV -bLv +pcd +kjd +kPI +kPI +hiC +pXH +pXH +lFY bUs bLv aaa @@ -76150,18 +76268,18 @@ bHE bHE bCq bHE -bLv -bLv -bLv -bLv -bLv -aoV -aoV -aoV -aoV -aoV -aaf -bLv +lFY +lFY +lFY +lFY +lFY +kPI +fFm +kPI +pXH +vPe +opk +lFY bUs bLv aaf @@ -76407,18 +76525,18 @@ bHE bHE cTF bHE -bLv -aoV -aoV -aoV -aoV -aoV -aoV -aoV -aoV -aoV -aoV -bLv +lFY +vmI +qTS +fZE +lFY +kPI +kPI +kPI +pXH +nYh +hZp +lFY bUs bLv aaa @@ -76664,18 +76782,18 @@ bHE bSs bCq bHE -bLv -aoV -aoV -aoV -bcU -aaf -aaH -cCa -aoV -aoV -aoV -bLv +lFY +tfA +iVZ +scN +lFY +pXH +pXH +fFm +eOM +pXH +pXH +lFY bUs bLv aaa @@ -76921,18 +77039,18 @@ bRh bLu bCq bHE -bLv -aaf -aaf -aoV -aoV -aaH -bdV -aaH -aaf -aaf -aaf -bLv +lFY +lFY +mEa +lFY +lFY +uao +uao +pXH +wgE +kPI +kPI +lFY bUs bLv aaf @@ -77178,19 +77296,19 @@ bCq bCq bCq bHE -bLv -aoV -aoV -aoV -aoV -cjn +lFY +fQl +kPI +fFm +eiu +kPI bSu -aaH -aoV -aoV -aoV -bLv -bUs +kEK +nJJ +mVS +mLY +rGn +sKA bLv aaa cjJ @@ -77435,19 +77553,19 @@ bLv aaa bLv bHE -bLv -aoV -aoV -aoV -aoV -aoV -aaH -aaf -aoV -aoV -aoV -bLv -bUs +lFY +vsJ +nnj +oCW +lEg +iaK +xEE +rpN +sjA +oCW +lBy +fip +bUz bLv aaa cjJ @@ -77692,19 +77810,19 @@ bLv aaf bLv bUt -bLv -aaf -aaf -aoV -aoV -aoV -aaH -aoV -aoV -aaf -aaf -bLv -bUs +lFY +rLR +jsx +kjd +rvm +kPI +uao +pXH +kPI +hiC +fOZ +hsg +bUz bLv aaf cjJ @@ -77949,19 +78067,19 @@ bCq aaa bLv bUs -bLv -aoV -aoV -aoV -aoV -aoV -aaf -aoV -aoV -aoV -aoV -bCq -bUs +lFY +pxN +fFm +kPI +lSY +kPI +kPI +kPI +kPI +kPI +tsl +hsg +bUz bCq aaa aaf @@ -78206,19 +78324,19 @@ aaa aaa bTB bUv -bES -bES -bES -bES -bGp -bGp -bGp -bGp -bES -bES -bES +uAx +uAx +uAx +uAx +uAx +uAx +uAx +uAx +uAx +uAx +uAx car -bUs +bUz bCq bCq bCq @@ -84065,8 +84183,8 @@ arf arf arf arf -anF -ahn +aoa +arf aJn aJn aJq @@ -84319,11 +84437,11 @@ arf aqa atf arf -aqa -atf +tfq +tfq +tfq +tfq arf -anF -ahn aaa aJn aJq @@ -84575,12 +84693,12 @@ ath arf apY ath +pVG +ydY +ath +ydY +ydY arf -apY -ate -arf -anF -ahn aaa aJn aLY @@ -84835,9 +84953,9 @@ ath arf aCd ath +aCd +aCd arf -anF -ahn aJw aJw aMh @@ -85093,8 +85211,8 @@ arf asd aDK arf -aoa -ahn +arf +arf aJv aKG aMg diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 71f23231b9..912cc6743b 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -902,6 +902,7 @@ dir = 8; pixel_x = 24 }, +/obj/machinery/cryopod, /turf/open/floor/plasteel/floorgrime, /area/security/prison) "acy" = ( @@ -3638,25 +3639,6 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) -"ahU" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/table, -/obj/item/stock_parts/manipulator, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "ahW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4073,22 +4055,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"aiP" = ( -/obj/structure/table, -/obj/item/folder, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiQ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/crew_quarters/fitness/recreation) "aiR" = ( /obj/structure/table, /obj/item/clothing/under/sl_suit{ @@ -4492,7 +4458,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 + }, /area/crew_quarters/fitness/recreation) "ajS" = ( /obj/structure/table, @@ -5137,10 +5105,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"alf" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/fitness/recreation) "alg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5844,10 +5808,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"amv" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/fitness/recreation) "amw" = ( /obj/structure/window/reinforced, /obj/machinery/door/window/eastright{ @@ -7795,9 +7755,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aqR" = ( -/obj/structure/chair{ - dir = 8 - }, +/obj/machinery/vending/kink, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -21761,7 +21719,7 @@ /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUR" = ( -/obj/structure/closet/wardrobe/green, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) "aUS" = ( @@ -25567,7 +25525,7 @@ }, /area/security/checkpoint/engineering) "bcO" = ( -/obj/structure/easel, +/obj/machinery/vending/kink, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -58038,10 +57996,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cto" = ( -/obj/machinery/vending/assist, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/port/aft) "ctq" = ( @@ -70720,6 +70675,13 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, /area/science/xenobiology) +"cUd" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/fitness/recreation) "cUH" = ( /obj/structure/table/optable, /turf/open/floor/plasteel/white, @@ -73591,19 +73553,12 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "dhp" = ( -/obj/machinery/light{ - dir = 8 - }, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/turf/open/floor/plasteel/neutral/corner{ + dir = 8 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "dhq" = ( /obj/structure/table/reinforced, @@ -75975,6 +75930,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"dWa" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/security/prison) "dYu" = ( /obj/machinery/door/airlock/external{ name = "Auxiliary Airlock" @@ -76143,6 +76102,13 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"hdw" = ( +/obj/machinery/cryopod{ + dir = 4; + tag = "0" + }, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/fitness/recreation) "hfJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -76407,6 +76373,15 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"mSt" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/neutral/corner{ + dir = 1 + }, +/area/crew_quarters/fitness/recreation) "nnK" = ( /obj/item/stack/sheet/glass/fifty, /obj/item/paper_bin, @@ -76667,6 +76642,10 @@ }, /turf/open/floor/wood, /area/library) +"rzf" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/fitness/recreation) "rzX" = ( /obj/structure/chair/office/light{ dir = 1; @@ -101766,7 +101745,7 @@ aax aax aax aax -abe +dWa abe abe abe @@ -111540,8 +111519,8 @@ acQ afs agr acP -ahU -aiP +acP +acP acP acP acP @@ -111797,12 +111776,12 @@ acP acP ags acP -acP -acP -acP -alf -amv -acP +hdw +cUd +cUd +cUd +cUd +rzf aoS acP arB @@ -112053,9 +112032,9 @@ aaa acQ aft agt +mSt +ahf ahf -ahV -aiQ dhp alg alg @@ -112314,7 +112293,7 @@ ahg ahg ahg ajR -ahg +ahl ahg anG aoU diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index ee6ee533f4..e0de739f99 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -7813,6 +7813,7 @@ dir = 4; pixel_x = 28 }, +/obj/machinery/cryopod, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avm" = ( @@ -10447,7 +10448,7 @@ /turf/open/floor/plasteel/arrival, /area/crew_quarters/fitness/recreation) "aBV" = ( -/obj/structure/closet/wardrobe/green, +/obj/machinery/vending/kink, /turf/open/floor/plasteel/arrival, /area/crew_quarters/fitness/recreation) "aBW" = ( @@ -11037,6 +11038,7 @@ /turf/open/floor/plasteel/white/side, /area/crew_quarters/dorms) "aDk" = ( +/obj/machinery/cryopod, /turf/open/floor/plasteel/white/corner{ icon_state = "whitecorner"; dir = 8 @@ -46986,10 +46988,7 @@ /turf/open/floor/plasteel/dark, /area/library) "cBk" = ( -/obj/machinery/vending/boozeomat{ - products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, /obj/item/reagent_containers/food/drinks/bottle/cream = 1, /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/reagent_containers/food/drinks/ice = 3, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, /obj/item/reagent_containers/food/drinks/flask = 1); - req_access_txt = "0" - }, +/obj/machinery/vending/boozeomat/maint, /turf/closed/wall, /area/maintenance/department/crew_quarters/dorms) "cBl" = ( @@ -49436,6 +49435,10 @@ }, /turf/closed/wall/r_wall, /area/engine/engineering) +"jqN" = ( +/obj/effect/spawner/lootdrop/keg, +/turf/open/floor/wood, +/area/maintenance/department/crew_quarters/dorms) "jrG" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -52323,6 +52326,11 @@ "rHA" = ( /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"rHP" = ( +/obj/structure/lattice, +/obj/structure/reagent_dispensers/keg/aphro/strong, +/turf/open/space, +/area/space/nearstation) "rJg" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/machinery/light/small{ @@ -52447,7 +52455,7 @@ /turf/open/floor/plating, /area/engine/engineering) "sbk" = ( -/obj/structure/girder, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "sbY" = ( @@ -54412,6 +54420,10 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"yap" = ( +/obj/machinery/computer/cryopod, +/turf/closed/wall, +/area/crew_quarters/dorms) "ybX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -88677,7 +88689,7 @@ aaa aaa aaa aby -abI +rHP abO abX acg @@ -91540,7 +91552,7 @@ cBo alQ alb cBw -alb +jqN aiS aiS aiS @@ -94637,7 +94649,7 @@ aaa aaa apX apX -apX +yap avl fIu dbi diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 2a8f455e64..255464d406 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -58,7 +58,9 @@ #define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" +#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] ([src.x], [src.y], [src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" +#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define ADMIN_INDIVIDUALLOG(user) "(LOGS)" #define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt" diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index c5c88b18f1..157069f4eb 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -45,11 +45,6 @@ #define GLASS_CORE 4 #define AI_READY_CORE 5 -//emitter construction defines -#define EM_UNSECURED 0 -#define EM_SECURED 1 -#define EM_WELDED 2 - //Construction defines for the pinion airlock #define GEAR_SECURE 1 #define GEAR_LOOSE 2 diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 6d7cf12789..197c315f78 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -20,4 +20,7 @@ #define INDIVIDUAL_SAY_LOG "Say log" #define INDIVIDUAL_EMOTE_LOG "Emote log" #define INDIVIDUAL_OOC_LOG "OOC log" -#define INDIVIDUAL_SHOW_ALL_LOG "All logs" \ No newline at end of file +#define INDIVIDUAL_OWNERSHIP_LOG "Ownership log" +#define INDIVIDUAL_SHOW_ALL_LOG "All logs" +#define LOGSRC_CLIENT "Client" +#define LOGSRC_MOB "Mob" diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index 8418cc8505..93dcdb4b0e 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -42,5 +42,6 @@ last_huge_pulse = world.time log = TRUE if(log) - log_game("Radiation pulse with intensity:[intensity] and range modifier:[range_modifier] in area [get_area(source)] ") + var/turf/_source_T = isturf(source) ? source : get_turf(source) + log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [AREACOORD(_source_T)] ") return TRUE \ No newline at end of file diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 545ffbcbef..e00e4775ac 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -41,6 +41,4 @@ GLOBAL_PROTECT(OOClog) GLOBAL_LIST_EMPTY(adminlog) GLOBAL_PROTECT(adminlog) -GLOBAL_LIST_EMPTY(individual_log_list) // Logs each mob individual logs, a global so it doesn't get lost on cloning/changing mobs - GLOBAL_LIST_EMPTY(active_turfs_startlist) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index e15d4f035c..59598b9d7f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -46,8 +46,8 @@ if(!can_see(A)) if(isturf(A)) //On unmodified clients clicking the static overlay clicks the turf underneath return //So there's no point messaging admins - message_admins("[key_name_admin(src)] might be running a modified client! (failed can_see on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))") - var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A]([COORD(pixel_turf)]))" + message_admins("[ADMIN_LOOKUPFLW(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))") + var/message = "[key_name(src)] might be running a modified client! (failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)]))" log_admin(message) if(REALTIMEOFDAY >= chnotify + 9000) chnotify = REALTIMEOFDAY diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm index ce5f2c9884..aea87827a6 100644 --- a/code/_onclick/hud/picture_in_picture.dm +++ b/code/_onclick/hud/picture_in_picture.dm @@ -1,7 +1,7 @@ /obj/screen/movable/pic_in_pic name = "Picture-in-picture" screen_loc = "CENTER" - plane = GAME_PLANE + plane = FLOOR_PLANE var/atom/center var/width = 0 var/height = 0 diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 351852e00a..f25244a6b1 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -257,10 +257,18 @@ Versioning /datum/controller/subsystem/blackbox/proc/ReportDeath(mob/living/L) if(sealed) return - if(!SSdbcore.Connect()) - return if(!L || !L.key || !L.mind) return + if(!L.suiciding && !first_death.len) + first_death["name"] = "[(L.real_name == L.name) ? L.real_name : "[L.real_name] as [L.name]"]" + first_death["role"] = null + if(L.mind.assigned_role) + first_death["role"] = L.mind.assigned_role + first_death["area"] = "[AREACOORD(L)]" + first_death["damage"] = "[L.getBruteLoss()]/[L.getFireLoss()]/[L.getToxLoss()]/[L.getOxyLoss()]/[L.getCloneLoss()]" + first_death["last_words"] = L.last_words + if(!SSdbcore.Connect()) + return var/area/placeofdeath = get_area(L) var/sqlname = sanitizeSQL(L.real_name) var/sqlkey = sanitizeSQL(L.ckey) @@ -282,13 +290,5 @@ Versioning var/last_words = sanitizeSQL(L.last_words) var/suicide = sanitizeSQL(L.suiciding) var/map = sanitizeSQL(SSmapping.config.map_name) - if(!L.suiciding && !first_death.len) - first_death["name"] = "[(L.real_name == L.name) ? L.real_name : "[L.real_name] as [L.name]"]" - first_death["role"] = null - if(L.mind.assigned_role) - first_death["role"] = L.mind.assigned_role - first_death["area"] = "[get_area_name(L, TRUE)] [COORD(L)]" - first_death["damage"] = "[sqlbrute]/[sqlfire]/[sqltox]/[sqloxy]/[sqlclone]" - first_death["last_words"] = L.last_words var/datum/DBQuery/query_report_death = SSdbcore.NewQuery("INSERT INTO [format_table_name("death")] (pod, x_coord, y_coord, z_coord, mapname, server_ip, server_port, round_id, tod, job, special, name, byondkey, laname, lakey, bruteloss, fireloss, brainloss, oxyloss, toxloss, cloneloss, staminaloss, last_words, suicide) VALUES ('[sqlpod]', '[x_coord]', '[y_coord]', '[z_coord]', '[map]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', [GLOB.round_id], '[SQLtime()]', '[sqljob]', '[sqlspecial]', '[sqlname]', '[sqlkey]', '[laname]', '[lakey]', [sqlbrute], [sqlfire], [sqlbrain], [sqloxy], [sqltox], [sqlclone], [sqlstamina], '[last_words]', [suicide])") - query_report_death.Execute() + query_report_death.Execute() \ No newline at end of file diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index d4838a21c3..5a791e28ef 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -26,7 +26,7 @@ SUBSYSTEM_DEF(communications) priority_announce(html_decode(user.treat_message(input)), null, 'sound/misc/announce.ogg', "Captain") nonsilicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN log_talk(user,"[key_name(user)] has made a priority announcement: [input]",LOGSAY) - message_admins("[key_name_admin(user)] has made a priority announcement.") + message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.") /datum/controller/subsystem/communications/proc/send_message(datum/comm_message/sending,print = TRUE,unique = FALSE) for(var/obj/machinery/computer/communications/C in GLOB.machines) diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 1ad3a8ab15..6c5721531d 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -85,12 +85,4 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Recover() initialized = SSlighting.initialized - ..() - - -/datum/controller/subsystem/lighting/proc/initialize_lighting_objects(list/turfs) - for(var/turf/T in turfs) - if(!IS_DYNAMIC_LIGHTING(T)) - continue - new/atom/movable/lighting_object(T) - CHECK_TICK \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 3ffb669084..fe57bca354 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -277,7 +277,7 @@ SUBSYSTEM_DEF(shuttle) if(call_reason) SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]") log_game("Shuttle call reason: [call_reason]") - message_admins("[key_name_admin(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") + message_admins("[ADMIN_LOOKUPFLW(user)] has called the shuttle. (TRIGGER CENTCOM RECALL)") /datum/controller/subsystem/shuttle/proc/centcom_recall(old_timer, admiral_message) if(emergency.mode != SHUTTLE_CALL || emergency.timer != old_timer) @@ -310,9 +310,8 @@ SUBSYSTEM_DEF(shuttle) if(canRecall()) emergency.cancel(get_area(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle.") - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] has recalled the shuttle at [A.name].", user) + message_admins("[ADMIN_LOOKUPFLW(user)] has recalled the shuttle.") + deadchat_broadcast("[user.real_name] has recalled the shuttle from [get_area_name(user, TRUE)].", user) return 1 /datum/controller/subsystem/shuttle/proc/canRecall() diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index f33a69a3af..a1f6ff15fb 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -28,7 +28,7 @@ var/mob/dead/observer/C = pick(candidates) stranger_backseat.key = C.key log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.") - message_admins("[key_name_admin(stranger_backseat)] became [key_name_admin(owner)]'s split personality.") + message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") else qdel(src) diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index 3d63d9a63e..be4e08eaca 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -1,4 +1,5 @@ /datum/component/anti_magic + var/active = TRUE var/magic = FALSE var/holy = FALSE @@ -7,7 +8,7 @@ holy = _holy /datum/component/anti_magic/proc/can_protect(_magic = TRUE, _holy = FALSE) - if(!enabled) + if(!active) return FALSE if((_magic && magic) || (_holy && holy)) return TRUE diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 4a720b6550..2ff322fd72 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -1,5 +1,5 @@ /datum/component/riding - var/next_vehicle_move = 0 //used for move delays + var/last_vehicle_move = 0 //used for move delays var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower var/keytype @@ -146,9 +146,9 @@ Unbuckle(user) return - if(world.time < next_vehicle_move) + if(world.time < last_vehicle_move + vehicle_move_delay) return - next_vehicle_move = world.time + vehicle_move_delay + last_vehicle_move = world.time if(keycheck(user)) var/turf/next = get_step(AM, direction) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index ecfb0ca902..136431b5ee 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -39,9 +39,9 @@ var/turf/currentturf = get_turf(src) to_chat(get(parent, /mob), "You can't help but feel that you just lost something back there...") var/turf/targetturf = relocate() - log_game("[parent] has been moved out of bounds in [COORD(currentturf)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been moved out of bounds in [AREACOORD(currentturf)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been moved out of bounds in [ADMIN_COORDJMP(currentturf)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been moved out of bounds in [ADMIN_VERBOSEJMP(currentturf)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") /datum/component/stationloving/proc/check_soul_imbue() return disallow_soul_imbue @@ -67,13 +67,13 @@ var/turf/T = get_turf(parent) if(inform_admins && force) - message_admins("[parent] has been !!force deleted!! in [ADMIN_COORDJMP(T)].") - log_game("[parent] has been !!force deleted!! in [COORD(T)].") + message_admins("[parent] has been !!force deleted!! in [ADMIN_VERBOSEJMP(T)].") + log_game("[parent] has been !!force deleted!! in [AREACOORD(T)].") if(!force) var/turf/targetturf = relocate() - log_game("[parent] has been destroyed in [COORD(T)]. Moving it to [COORD(targetturf)].") + log_game("[parent] has been destroyed in [AREACOORD(T)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) - message_admins("[parent] has been destroyed in [ADMIN_COORDJMP(T)]. Moving it to [ADMIN_COORDJMP(targetturf)].") + message_admins("[parent] has been destroyed in [ADMIN_VERBOSEJMP(T)]. Moving it to [ADMIN_VERBOSEJMP(targetturf)].") return TRUE return FALSE diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index 6b624afadb..c14b1f5270 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -18,8 +18,8 @@ if(istype(T, /turf/open/space/transit)) continue T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic) - message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [get_area_name(loccheck, TRUE)] [ADMIN_COORDJMP(loccheck)].") - log_game("[key_name(user)] detonated a bag of holding at [get_area_name(loccheck, TRUE)] [COORD(loccheck)].") + message_admins("[ADMIN_LOOKUPFLW(user)] detonated a bag of holding at [ADMIN_VERBOSEJMP(loccheck)].") + log_game("[key_name(user)] detonated a bag of holding at [AREACOORD(loccheck)].") qdel(A) return . = ..() diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 0baddd87eb..49c628385b 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -175,7 +175,7 @@ if(!LAZYLEN(time_left_list)) if(on_init) var/turf/T = parent - stack_trace("Warning: Wet floor component gc'd right initializatoin! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Coords = [istype(T)? COORD(T) : "ERROR - INVALID PARENT"].") + stack_trace("Warning: Wet floor component gc'd right after initialization! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Location = [istype(T)? AREACOORD(T) : "ERROR - INVALID PARENT"].") qdel(src) return TRUE return FALSE diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index 7e9e9c870f..78314d4fd3 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -84,16 +84,15 @@ GLOBAL_LIST_EMPTY(explosions) var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) - var/area/epi_area = get_area(epicenter) if(adminlog) - message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [epi_area] [ADMIN_COORDJMP(epicenter)]") - log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") + message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]") + log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [AREACOORD(epicenter)]") var/x0 = epicenter.x var/y0 = epicenter.y var/z0 = epicenter.z - - SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = epi_area.type)) + var/area/areatype = get_area(epicenter) + SSblackbox.record_feedback("associative", "explosion", 1, list("dev" = devastation_range, "heavy" = heavy_impact_range, "light" = light_impact_range, "flash" = flash_range, "flame" = flame_range, "orig_dev" = orig_dev_range, "orig_heavy" = orig_heavy_range, "orig_light" = orig_light_range, "x" = x0, "y" = y0, "z" = z0, "area" = areatype.type)) // Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves. // Stereo users will also hear the direction of the explosion! diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index ce5f5df1d9..e5d43fd02b 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -112,13 +112,13 @@ if(force_teleport) teleatom.forceMove(destturf) if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") playSpecials(destturf,effectout,soundout) else if(teleatom.Move(destturf)) playSpecials(destturf,effectout,soundout) if(ismegafauna(teleatom)) - message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_COORDJMP(curturf)] to [ADMIN_COORDJMP(destturf)].") + message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].") if(ismob(teleatom)) var/mob/M = teleatom M.cancel_camera() diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 12070f6fe2..ef4edbb6cf 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -60,14 +60,19 @@ user.remote_control = null if(!QDELETED(eye)) - qdel(eye) - eye = null + eye.RemoveImages() + QDEL_NULL(eye) + + if(connected_holopad && !QDELETED(hologram)) + hologram = null + connected_holopad.clear_holo(user) user = null - if(hologram) + //Hologram survived holopad destro + if(!QDELETED(hologram)) hologram.HC = null - hologram = null + QDEL_NULL(hologram) for(var/I in dialed_holopads) var/obj/machinery/holopad/H = I @@ -90,9 +95,10 @@ /datum/holocall/proc/Disconnect(obj/machinery/holopad/H) testing("Holocall disconnect") if(H == connected_holopad) - calling_holopad.say("[usr] disconnected.") + var/area/A = get_area(connected_holopad) + calling_holopad.say("[A] holopad disconnected.") else if(H == calling_holopad && connected_holopad) - connected_holopad.say("[usr] disconnected.") + connected_holopad.say("[user] disconnected.") ConnectionFailure(H, TRUE) @@ -154,6 +160,7 @@ eye.setLoc(H.loc) hangup = new(eye, src) + hangup.Grant(user) //Checks the validity of a holocall and qdels itself if it's not. Returns TRUE if valid, FALSE otherwise /datum/holocall/proc/Check() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 6c744b3d84..f377037301 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -202,9 +202,7 @@ special_role = null /datum/mind/proc/remove_traitor() - if(src in SSticker.mode.traitors) - remove_antag_datum(/datum/antagonist/traitor) - SSticker.mode.update_traitor_icons_removed(src) + remove_antag_datum(/datum/antagonist/traitor) /datum/mind/proc/remove_brother() if(src in SSticker.mode.brothers) @@ -252,7 +250,6 @@ remove_wizard() remove_cultist() remove_rev() - SSticker.mode.update_traitor_icons_removed(src) SSticker.mode.update_cult_icons_removed(src) /datum/mind/proc/equip_traitor(employer = "The Syndicate", silent = FALSE, datum/antagonist/uplink_owner) diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 043110f5d3..92cc1770b3 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -88,5 +88,5 @@ if(istype(B, /obj/machinery/syndicatebomb/training)) return var/turf/T = get_turf(B) - log_game("\A [B] was detonated via boom wire at [COORD(T)].") - message_admins("A [B.name] was detonated via boom wire at [ADMIN_COORDJMP(T)].") + log_game("\A [B] was detonated via boom wire at [AREACOORD(T)].") + message_admins("A [B.name] was detonated via boom wire at [ADMIN_VERBOSEJMP(T)].") diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 1ebfe78c5d..4c9a01eda4 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -11,7 +11,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th antag_flag = ROLE_CHANGELING false_report_weight = 10 restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 15 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 95d1aaaa1d..4de1bfa3f8 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 0 required_enemies = 1 recommended_enemies = 4 @@ -90,14 +90,4 @@ /datum/game_mode/traitor/generate_report() return "Although more specific threats are commonplace, you should always remain vigilant for Syndicate agents aboard your station. Syndicate communications have implied that many \ - Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." - -/datum/game_mode/proc/update_traitor_icons_added(datum/mind/traitor_mind) - var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] - traitorhud.join_hud(traitor_mind.current) - set_antag_hud(traitor_mind.current, "traitor") - -/datum/game_mode/proc/update_traitor_icons_removed(datum/mind/traitor_mind) - var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] - traitorhud.leave_hud(traitor_mind.current) - set_antag_hud(traitor_mind.current, null) + Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." \ No newline at end of file diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 83e0f8e0ba..8d23d47a53 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -170,7 +170,7 @@ return if(mob_occupant.health < min_health && chem != "epinephrine") return - if(inject_chem(chem)) + if(inject_chem(chem, usr)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chem System Re-route detected, results may not be as expected!") @@ -179,9 +179,11 @@ scramble_chem_buttons() to_chat(user, "You scramble the sleeper's user interface!") -/obj/machinery/sleeper/proc/inject_chem(chem) +/obj/machinery/sleeper/proc/inject_chem(chem, mob/user) if((chem in available_chems) && chem_allowed(chem)) occupant.reagents.add_reagent(chem_buttons[chem], 10) //emag effect kicks in here so that the "intended" chem is used for all checks, for extra FUUU + if(user) + add_logs(user, occupant, "injected [chem] into", additional = "via [src]") return TRUE /obj/machinery/sleeper/proc/chem_allowed(chem) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 648432c0ea..6ade93b520 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -122,12 +122,12 @@ active_apc.locked = TRUE active_apc.update_icon() active_apc = null - to_chat(usr, "[icon2html(src, usr)] Connected to APC in [APC.area]. Interface request sent.") - log_activity("remotely accessed APC in [APC.area]") + to_chat(usr, "[icon2html(src, usr)] Connected to APC in [get_area_name(APC.area, TRUE)]. Interface request sent.") + log_activity("remotely accessed APC in [get_area_name(APC.area, TRUE)]") APC.ui_interact(usr, state = GLOB.not_incapacitated_state) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - message_admins("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].") - log_game("[key_name(usr)] remotely accessed [APC] from [src] at [get_area(src)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") + log_game("[key_name(usr)] remotely accessed [APC] from [src] at [AREACOORD(src)].") if(APC.locked) APC.say("Remote access detected. Interface unlocked.") playsound(APC, 'sound/machines/boltsup.ogg', 25, 0) @@ -188,7 +188,7 @@ log_activity("logged in") else if(!(obj_flags & EMAGGED)) user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") - log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") + log_game("[key_name(user)] emagged [src] at [AREACOORD(src)], disabling operator tracking.") obj_flags |= EMAGGED playsound(src, "sparks", 50, 1) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 3ce64c9030..abb2f3c079 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -235,7 +235,7 @@ if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) - message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() obj_flags &= ~EMAGGED @@ -1030,7 +1030,7 @@ say("Congratulations, you made it to Orion!") if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) - message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") + message_admins("[ADMIN_LOOKUPFLW(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") else prizevend(user) @@ -1075,8 +1075,8 @@ if(active) return - 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.") + message_admins("[ADMIN_LOOKUPFLW(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") + log_game("[key_name(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].") to_chat(user, "You flip the switch on the underside of [src].") active = 1 diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 7e901667ab..7b75d06321 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -6,7 +6,6 @@ circuit = /obj/item/circuitboard/computer/security var/last_pic = 1 var/list/network = list("ss13") - var/mapping = 0//For the overview file, interesting bit of code. var/list/watchers = list() //who's using the console, associated with the camera they're on. light_color = LIGHT_COLOR_RED diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 71c62327e6..4846610671 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,3 +1,5 @@ +#define AUTOCLONING_MINIMAL_LEVEL 3 + /obj/machinery/computer/cloning name = "cloning console" desc = "Used to clone people and manage DNA." @@ -79,6 +81,10 @@ src.scanner = findscanner() if(findfirstcloner && !LAZYLEN(pods)) findcloner() + if(!autoprocess) + STOP_PROCESSING(SSmachines, src) + else + START_PROCESSING(SSmachines, src) /obj/machinery/computer/cloning/proc/findscanner() var/obj/machinery/dna_scannernew/scannerf = null @@ -151,7 +157,7 @@ var/dat = "" dat += "Refresh" - if(scanner && HasEfficientPod() && scanner.scan_level > 2) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) if(!autoprocess) dat += "Autoprocess" else @@ -276,10 +282,13 @@ if(href_list["task"]) switch(href_list["task"]) if("autoprocess") - autoprocess = 1 - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) + if(scanner && HasEfficientPod() && scanner.scan_level >= AUTOCLONING_MINIMAL_LEVEL) + autoprocess = TRUE + START_PROCESSING(SSmachines, src) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if("stopautoprocess") - autoprocess = 0 + autoprocess = FALSE + STOP_PROCESSING(SSmachines, src) playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) else if ((href_list["scan"]) && !isnull(scanner) && scanner.is_operational()) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 37282c6478..61dc3ad919 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -56,8 +56,6 @@ return usr.set_machine(src) - var/area/A = get_area(usr) - var/area_name = A.name if(!href_list["operation"]) return @@ -115,9 +113,9 @@ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] at [area_name].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] with [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] with [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 else to_chat(usr, "You are not authorized to do this!") @@ -146,7 +144,7 @@ send2otherserver("[station_name()]", input,"Comms_Console") minor_announce(input, title = "Outgoing message to allied station") log_talk(usr,"[key_name(usr)] has sent a message to the other server: [input]",LOGSAY) - message_admins("[key_name_admin(usr)] has sent a message to the other server.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has sent a message to the other server.") deadchat_broadcast("[usr.real_name] has sent an outgoing message to the other station(s).", usr) CM.lastTimeUsed = world.time @@ -176,7 +174,7 @@ M.action_load(S) SSshuttle.points -= S.credit_cost minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase") - message_admins("[key_name_admin(usr)] purchased [S.name].") + message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].") SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]") else to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.") @@ -249,14 +247,14 @@ if("enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT if("disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") - deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [area_name].", usr) + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") + deadchat_broadcast("[usr.real_name] disabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) state = STATE_DEFAULT // Status display stuff @@ -290,7 +288,7 @@ CentCom_announce(input, usr) to_chat(usr, "Message transmitted to Central Command.") log_talk(usr,"[key_name(usr)] has made a CentCom announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged CentCom, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time // OMG SYNDICATE ...LETTERHEAD @@ -307,7 +305,7 @@ Syndicate_announce(input, usr) to_chat(usr, "SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND.") log_talk(usr,"[key_name(usr)] has made a Syndicate announcement: [input]",LOGSAY) - deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [area_name].", usr) + deadchat_broadcast("[usr.real_name] has messaged the Syndicate, \"[input]\" at [get_area_name(usr, TRUE)].", usr) CM.lastTimeUsed = world.time if("RestoreBackup") @@ -388,9 +386,9 @@ if(GLOB.security_level != old_level) //Only notify people if an actual change happened var/security_level = get_security_level() - log_game("[key_name(usr)] has changed the security level to [security_level].") - message_admins("[key_name_admin(usr)] has changed the security level to [security_level].") - deadchat_broadcast("[usr.real_name] has changed the security level to [security_level].", usr) + log_game("[key_name(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [security_level] from [src] at [AREACOORD(usr)].") + deadchat_broadcast("[usr.real_name] has changed the security level to [security_level] from [src] at [get_area_name(usr, TRUE)].", usr) tmp_alertlevel = 0 aistate = STATE_DEFAULT if("ai-changeseclevel") @@ -400,13 +398,13 @@ if("ai-enableemergency") make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] enabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] enabled emergency maintenance access.", usr) aistate = STATE_DEFAULT if("ai-disableemergency") revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") - message_admins("[key_name_admin(usr)] disabled emergency maintenance access.") + message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] disabled emergency maintenance access.", usr) aistate = STATE_DEFAULT @@ -556,6 +554,9 @@ if(STATE_PURCHASE) dat += "Budget: [SSshuttle.points] Credits.
" + dat += "
" + dat += "Caution: Purchasing dangerous shuttles may lead to mutiny and/or death.
" + dat += "
" for(var/shuttle_id in SSmapping.shuttle_templates) var/datum/map_template/shuttle/S = SSmapping.shuttle_templates[shuttle_id] if(S.can_be_bought && S.credit_cost < INFINITY) @@ -700,8 +701,7 @@ if(!input || !user.canUseTopic(src)) return SScommunications.make_announcement(user, is_silicon, input) - var/area/A = get_area(user) - deadchat_broadcast("[user.real_name] made an priority announcement at [A.name].", user) + deadchat_broadcast("[user.real_name] made an priority announcement from [get_area_name(usr, TRUE)].", user) /obj/machinery/computer/communications/proc/post_status(command, data1, data2) diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index 4e80883a31..98c398a2c2 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -148,7 +148,7 @@ id_goal_not_set = TRUE id.goal = default_goal say("[id]'s ID card goal defaulting to [id.goal] points.") - log_game("[user]([user.ckey] teleported [prisoner]([prisoner.ckey]) to the Labor Camp ([beacon.x], [beacon.y], [beacon.z]) for [id_goal_not_set ? "default goal of ":""][id.goal] points.") + log_game("[user]([user.ckey] teleported [prisoner]([prisoner.ckey]) to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][id.goal] points.") teleporter.handle_prisoner(id, temporary_record) playsound(src, 'sound/weapons/emitter.ogg', 50, 1) prisoner.forceMove(get_turf(beacon)) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index c0d514f9a5..41aaac85db 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -104,7 +104,7 @@ var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) var/turf/T = get_turf(R) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name(R, R.client)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!") log_game("\[key_name(usr)] detonated [key_name(R)]!") if(R.connected_ai) to_chat(R.connected_ai, "

ALERT - Cyborg detonation detected: [R.name]
") @@ -134,7 +134,7 @@ var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs if(istype(R) && !R.emagged && (R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) log_game("[key_name(usr)] emagged [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") R.SetEmagged(1) else if(href_list["convert"]) @@ -142,7 +142,7 @@ var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs if(istype(R) && !is_servant_of_ratvar(R) && R.connected_ai == usr) log_game("[key_name(usr)] converted [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + message_admins("[ADMIN_LOOKUPFLW(usr)] converted cyborg [key_name_admin(R)] using robotic console!") add_servant_of_ratvar(R) else if (href_list["killdrone"]) @@ -152,7 +152,7 @@ to_chat(usr, "ERROR: [D] is not responding to external commands.") else var/turf/T = get_turf(D) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)][ADMIN_JMP(T)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") log_game("[key_name(usr)] detonated [key_name(D)]!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, D) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 318bf237af..31e9480429 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -653,6 +653,7 @@ What a mess.*/ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMinorCrime(active1.fields["id"], crime) + investigate_log("New Minor Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("mi_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) @@ -667,6 +668,7 @@ What a mess.*/ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, station_time_timestamp()) GLOB.data_core.addMajorCrime(active1.fields["id"], crime) + investigate_log("New Major Crime: [t1]: [t2] | Added to [active1.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) if("ma_crim_delete") if(istype(active1, /datum/data/record)) if(href_list["cdataid"]) @@ -724,18 +726,18 @@ What a mess.*/ active2.fields["criminal"] = "Parolled" if("released") active2.fields["criminal"] = "Discharged" - investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) + investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [key_name(usr)].", INVESTIGATE_RECORDS) for(var/mob/living/carbon/human/H in GLOB.carbon_list) H.sec_hud_set_security_status() if("Delete Record (Security) Execute") - investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS) if(active2) qdel(active2) active2 = null if("Delete Record (ALL) Execute") if(active1) - investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) + investigate_log("[key_name(usr)] has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS) for(var/datum/data/record/R in GLOB.data_core.medical) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) qdel(R) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 00c683af85..65d1264030 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -178,7 +178,7 @@ limit-- while(!FoundDoor && limit) if (!FoundDoor) - log_world("### MAP WARNING, [src] at [get_area_name(src, TRUE)] [COORD(src)] failed to find a valid airlock to cyclelink with!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] failed to find a valid airlock to cyclelink with!") return FoundDoor.cyclelinkedairlock = src cyclelinkedairlock = FoundDoor diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 33bd47126c..8704a4c749 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -250,8 +250,8 @@ /obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params) if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]") - log_game("Plasma airlock ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma airlock ignited by [key_name(user)] in [AREACOORD(src)]") ignite(C.is_hot()) else return ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 887335f16a..e5aef868fc 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -666,7 +666,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/effect/overlay/holo_pad_hologram/Destroy() Impersonation = null - if(HC) + if(!QDELETED(HC)) HC.Disconnect(HC.calling_holopad) return ..() diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm deleted file mode 100644 index 6aa4cdade9..0000000000 --- a/code/game/machinery/overview.dm +++ /dev/null @@ -1,332 +0,0 @@ -//#define AMAP - -/obj/machinery/computer/security/verb/station_map() - set name = ".map" - set category = "Object" - set src in view(1) - usr.set_machine(src) - if(!mapping) - return - - log_game("[usr]([usr.key]) used station map L[z] in [src.loc.loc]") - - src.drawmap(usr) - -/obj/machinery/computer/security/proc/drawmap(mob/user) - - var/icx = round(world.maxx/16) + 1 - var/icy = round(world.maxy/16) + 1 - - var/xoff = round( (icx*16-world.maxx)-2) - var/yoff = round( (icy*16-world.maxy)-2) - - var/icount = icx * icy - - - var/list/imap = list() - -#ifdef AMAP - - for(var/i = 0; i.") - log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [A.name][COORD(bombturf)]") + message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] ([payload]) for detonation at [ADMIN_VERBOSEJMP(bombturf)].") + log_game("[key_name(user)] has primed a [name] ([payload]) for detonation at [AREACOORD(bombturf)]") payload.adminlog = "The [name] that [key_name(user)] had primed detonated!" ///Bomb Subtypes/// @@ -523,12 +522,11 @@ to_chat(user, "[existant] found, [detonated] triggered.") if(detonated) var/turf/T = get_turf(src) - var/area/A = get_area(T) detonated-- - var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] [ADMIN_JMP(T)]." + var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [ADMIN_VERBOSEJMP(T)]." GLOB.bombers += log_str message_admins(log_str) - log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name][COORD(T)]") + log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [AREACOORD(T)]") detonated = 0 existant = 0 timer = world.time + BUTTON_COOLDOWN diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 0d1651c491..b7796849f1 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -58,8 +58,8 @@ return var/list/obj/effect/portal/created = create_portal_pair(get_turf(src), target_turf, src, 300, 1, /obj/effect/portal/anom) var/turf/T = get_turf(target) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_COORDJMP(T)]",0,1) - log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Wormhole Generator in [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(chassis.occupant)] used a Wormhole Generator in [AREACOORD(T)]") src = null QDEL_LIST_IN(created, rand(150,300)) return 1 @@ -97,7 +97,7 @@ locked.throw_at(target, 14, 1.5) locked = null send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) - log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked]([COORD(orig)]) at [target]([COORD(targ)]).") + log_game("[key_name(chassis.occupant)] used a Gravitational Catapult to throw [locked] (From [AREACOORD(orig)]) at [target] ([AREACOORD(targ)]).") return TRUE else locked = null @@ -118,7 +118,7 @@ step_away(A,target) sleep(2) var/turf/T = get_turf(target) - log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on ([COORD(T)])") + log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on [AREACOORD(T)]") return TRUE diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 50d1f0be0d..fe10bf510b 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -186,8 +186,8 @@ log_message("Honked from [src.name]. HONK!") var/turf/T = get_turf(src) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_COORDJMP(T)]",0,1) - log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] used a Mecha Honker in [ADMIN_VERBOSEJMP(T)]") + log_game("[chassis.occupant.ckey]([chassis.occupant]) used a Mecha Honker in [AREACOORD(T)]") return 1 @@ -336,8 +336,8 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(var/obj/item/grenade/flashbang/F) var/turf/T = get_turf(src) - message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_COORDJMP(T)]",0,1) - log_game("[key_name(chassis.occupant)] fired a [src] [COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]") addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 80e5877fe7..5618ca9a91 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -279,20 +279,19 @@ contained += " [reagent] " if(contained) contained = "\[[contained]\]" - var/area/A = get_area(location) - var/where = "[A.name] | [location.x], [location.y]" + var/where = "[AREACOORD(location)]" var/whereLink = "[where]" if(carry.my_atom.fingerprintslast) var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/more = "" if(M) - more = "(?) (FLW) " - message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1) + more = "[ADMIN_LOOKUPFLW(M)] " + message_admins("Smoke: ([whereLink])[contained]. Key: [more ? more : carry.my_atom.fingerprintslast].") log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else - message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1) + message_admins("Smoke: ([whereLink])[contained]. No associated key.") log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 65e216fd4c..e3a5c85719 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -153,7 +153,7 @@ if(!force && (!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored && !allow_anchored)) return if(ismegafauna(M)) - message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].") + message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [usr].") if(do_teleport(M, real_target, innate_accuracy_penalty)) if(istype(M, /obj/item/projectile)) var/obj/item/projectile/P = M diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index 593c953adf..a41f4b4c9b 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -7,14 +7,13 @@ /obj/effect/spawner/xeno_egg_delivery/Initialize(mapload) ..() var/turf/T = get_turf(src) - var/area/A = get_area(T) new /obj/structure/alien/egg(T) new /obj/effect/temp_visual/gravpush(T) playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1) - message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].") - log_game("An alien egg has been delivered to [A] at [COORD(T)]") - var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen." + message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].") + log_game("An alien egg has been delivered to [AREACOORD(T)]") + var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen." SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)) return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 5d83f3ac1e..5d41b90dc0 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -55,7 +55,7 @@ AI MODULES tot_laws++ if(tot_laws > CONFIG_GET(number/silicon_max_law_amount) && !bypass_law_amt_check)//allows certain boards to avoid this check, eg: reset to_chat(user, "Not enough memory allocated to [law_datum.owner ? law_datum.owner : "the AI core"]'s law processor to handle this amount of laws.") - message_admins("[key_name_admin(user)] tried to upload laws to [law_datum.owner ? key_name_admin(law_datum.owner) : "an AI core"] that would exceed the law cap.") + message_admins("[ADMIN_LOOKUPFLW(user)] tried to upload laws to [law_datum.owner ? ADMIN_LOOKUPFLW(law_datum.owner) : "an AI core"] that would exceed the law cap.") overflow = TRUE var/law2log = transmitInstructions(law_datum, user, overflow) //Freeforms return something extra we need to log @@ -69,8 +69,8 @@ AI MODULES var/ainame = law_datum.owner ? law_datum.owner.name : "empty AI core" var/aikey = law_datum.owner ? law_datum.owner.ckey : "null" GLOB.lawchanges.Add("[time] : [user.name]([user.key]) used [src.name] on [ainame]([aikey]).[law2log ? " The law specified [law2log]" : ""]") - log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]).[law2log ? " The law specified [law2log]" : ""]") - message_admins("[key_name_admin(user)] used [src.name] on [key_name_admin(law_datum.owner)].[law2log ? " The law specified [law2log]" : ""]") + log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]) from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]") + message_admins("[ADMIN_LOOKUPFLW(user)] used [src.name] on [ADMIN_LOOKUPFLW(law_datum.owner)] from [AREACOORD(user)].[law2log ? " The law specified [law2log]" : ""]") //The proc that actually changes the silicon's laws. /obj/item/aiModule/proc/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow = FALSE) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 9401579e61..8daf0f5202 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -72,8 +72,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!isliving(M)) return if(lit && M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) @@ -582,8 +582,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/attack(mob/living/carbon/M, mob/living/carbon/user) if(lit && M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index dfbf6db88c..2544cc0154 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -75,10 +75,8 @@ if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) U.show_message("An error flashes on your [src].", 1) else - var/turf/T = get_turf(target) - var/area/A = get_area(T) - message_admins("[!is_special_character(U) ? "Non-antag " : ""][key_name_admin(U)][ADMIN_FLW(U)] triggered a PDA explosion on [target.name] at [A] [ADMIN_COORDJMP(T)].") - var/message_log = "triggered a PDA explosion on [target.name] at at [A] [COORD(T)]." + message_admins("[!is_special_character(U) ? "Non-antag " : ""][ADMIN_LOOKUPFLW(U)] triggered a PDA explosion on [target.name] at [ADMIN_VERBOSEJMP(target)].") + var/message_log = "triggered a PDA explosion on [target.name] at at [AREACOORD(target)]." U.log_message(message_log, INDIVIDUAL_ATTACK_LOG) log_game("[key_name(U)] [message_log]") log_attack("[key_name(U)] [message_log]") diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 063676ea62..a059c06284 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -142,20 +142,6 @@ detect_state = PROXIMITY_NEAR break -/obj/item/multitool/ai_detect/admin - desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'." //What else should I say for a meme item? - track_delay = 5 - -/obj/item/multitool/ai_detect/admin/multitool_detect() - var/turf/our_turf = get_turf(src) - for(var/mob/J in urange(rangewarning,our_turf)) - if(GLOB.admin_datums[J.ckey]) - detect_state = PROXIMITY_NEAR - var/turf/detect_turf = get_turf(J) - if(get_dist(our_turf, detect_turf) < rangealert) - detect_state = PROXIMITY_ON_SCREEN - break - /obj/item/multitool/cyborg name = "multitool" desc = "Optimised and stripped-down version of a regular multitool." diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index bc24e4bf83..737f71a978 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -22,7 +22,8 @@ /obj/item/paicard/Destroy() //Will stop people throwing friend pAIs into the singularity so they can respawn SSpai.pai_card_list -= src - QDEL_NULL(pai) + if (!QDELETED(pai)) + QDEL_NULL(pai) return ..() /obj/item/paicard/attack_self(mob/user) @@ -90,7 +91,7 @@ to_chat(pai, "Byte by byte you lose your sense of self.") to_chat(pai, "Your mental faculties leave you.") to_chat(pai, "oblivion... ") - removePersonality() + qdel(pai) if(href_list["wires"]) var/wire = text2num(href_list["wires"]) if(pai.radio) @@ -122,11 +123,6 @@ playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1) audible_message("\The [src] plays a cheerful startup noise!") -/obj/item/paicard/proc/removePersonality() - QDEL_NULL(pai) - cut_overlays() - add_overlay("pai-off") - /obj/item/paicard/proc/setEmotion(emotion) if(pai) src.cut_overlays() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 8d36fd9986..1a5c7a9b43 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -100,8 +100,8 @@ "[user] activates \the [src]!", \ "You activate \the [src].", "You hear a click.") - message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(src)]") - log_game("Power sink activated by [key_name(user)] at [COORD(src)]") + message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(src)]") + log_game("Power sink activated by [key_name(user)] at [AREACOORD(src)]") set_mode(OPERATING) if(OPERATING) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index c6028b1193..0ef20dea19 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -52,7 +52,7 @@ A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve." - message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.") + message_admins("[ADMIN_LOOKUPFLW(user)] attached a [item] to a transfer valve.") log_game("[key_name(user)] attached a [item] to a transfer valve.") attacher = user return @@ -184,41 +184,33 @@ if(!valve_open && tank_one && tank_two) valve_open = TRUE var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) - var/attachment = "no device" + var/attachment if(attached_device) if(istype(attached_device, /obj/item/assembly/signaler)) attachment = "[attached_device]" else attachment = attached_device - var/attacher_name = "" - if(!attacher) - attacher_name = "Unknown" - else - attacher_name = "[key_name_admin(attacher)]" + var/admin_attachment_message + var/attachment_message + if(attachment) + admin_attachment_message = " with [attachment] attached by [attacher ? ADMIN_LOOKUPFLW(attacher) : "Unknown"]" + attachment_message = " with [attachment] attached by [attacher ? key_name_admin(attacher) : "Unknown"]" - var/log_str1 = "Bomb valve opened in " - var/log_str2 = "with [attachment] attacher: [attacher_name]" + var/mob/bomber = get_mob_by_key(fingerprintslast) + var/admin_bomber_message + var/bomber_message + if(bomber) + admin_bomber_message = " - Last touched by: [ADMIN_LOOKUPFLW(bomber)]" + bomber_message = " - Last touched by: [key_name_admin(bomber)]" - var/log_attacher = "" - if(attacher) - log_attacher = "[ADMIN_QUE(attacher)] [ADMIN_FLW(attacher)]" - var/mob/mob = get_mob_by_key(src.fingerprintslast) - var/last_touch_info = "" - if(mob) - last_touch_info = "[ADMIN_QUE(mob)] [ADMIN_FLW(mob)]" + var/admin_bomb_message = "Bomb valve opened in [ADMIN_VERBOSEJMP(bombturf)][admin_attachment_message][admin_bomber_message]" + GLOB.bombers += admin_bomb_message + message_admins(admin_bomb_message, 0, 1) + log_game("Bomb valve opened in [AREACOORD(bombturf)][attachment_message][bomber_message]") - var/log_str3 = " Last touched by: [key_name_admin(mob)]" - - var/bomb_message = "[log_str1] [A.name][ADMIN_JMP(bombturf)] [log_str2][log_attacher] [log_str3][last_touch_info]" - - GLOB.bombers += bomb_message - - message_admins(bomb_message, 0, 1) - log_game("[log_str1] [A.name][COORD(bombturf)] [log_str2] [log_str3]") merge_gases() for(var/i in 1 to 6) addtimer(CALLBACK(src, .proc/update_icon), 20 + (i - 1) * 10) diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 0e8c82d963..a4b9cf708b 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -38,7 +38,7 @@ HM.force_lose(M) for(var/datum/mutation/human/HM in add_mutations) if(HM.name == RACEMUT) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") log_msg += " (MONKEY)" HM.force_give(M) if(fields) @@ -328,7 +328,7 @@ if((HM in M.dna.mutations) && !(M.dna.temporary_mutations[HM.name])) continue //Skip permanent mutations we already have. if(HM.name == RACEMUT && ishuman(M)) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") log_msg += " (MONKEY)" M = HM.force_give(M) else diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 8bc1665a3f..bed7ba24e4 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -174,15 +174,13 @@ stage_change(EMPTY) return - var/areas_name = get_area_name(src, TRUE) - if(nadeassembly) var/mob/M = get_mob_by_ckey(assemblyattacher) var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) - message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [ADMIN_JMP(detonation_turf)].") - log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [COORD(detonation_turf)]") + message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [ADMIN_VERBOSEJMP(detonation_turf)].") + log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [AREACOORD(detonation_turf)]") - log_game("A grenade detonated at [areas_name] [COORD(detonation_turf)]") + log_game("A grenade detonated at [AREACOORD(detonation_turf)]") update_mob() @@ -284,18 +282,15 @@ RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1) chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale) + var/turf/DT = get_turf(src) if(nadeassembly) var/mob/M = get_mob_by_ckey(assemblyattacher) var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) - var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") - log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") + message_admins("grenade primed by an assembly at [AREACOORD(DT)], attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]).") + log_game("grenade primed by an assembly at [AREACOORD(DT)], attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name])") else addtimer(CALLBACK(src, .proc/prime), det_time) - var/turf/DT = get_turf(src) - var/area/DA = get_area(DT) - log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])") + log_game("A grenade detonated at [AREACOORD(DT)]") diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 6a08777e61..b627d42ab2 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -61,10 +61,10 @@ preprime(user) /obj/item/grenade/proc/log_grenade(mob/user, turf/T) - var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_COORDJMP(T)]" + var/message = "[ADMIN_LOOKUPFLW(user)]) has primed \a [src] for detonation at [ADMIN_VERBOSEJMP(T)]" GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] has primed \a [src] for detonation at [get_area_name(T, TRUE)] [COORD(T)].") + log_game("[key_name(user)] has primed \a [src] for detonation at [AREACOORD(T)].") /obj/item/grenade/proc/preprime(mob/user, delayoverride, msg = TRUE, volume = 60) var/turf/T = get_turf(src) diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 28be94afb4..8e96e97389 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -111,8 +111,8 @@ return target = AM - message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1) - log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse") + message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [det_time] second fuse") + log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(user)] with [det_time] second fuse") moveToNullspace() //Yep @@ -148,8 +148,8 @@ M.say(message_say) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_COORDJMP(user)]",0,1) - log_game("[key_name(user)] suicided with [src] at [COORD(user)]") + message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]") + log_game("[key_name(user)] suicided with [src] at [AREACOORD(user)]") user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") shout_syndicate_crap(user) explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes @@ -188,8 +188,8 @@ user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") shout_syndicate_crap(user) target = user - message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_COORDJMP(src)]",0,1) - message_admins("[key_name(user)] suicided with [name] at ([x],[y],[z])") + message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]") + log_game("[key_name(user)] suicided with [name] at [AREACOORD(user)]") sleep(10) explode(get_turf(user)) user.gib(1, 1) @@ -228,10 +228,10 @@ src.target = AM moveToNullspace() - var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [timer] second fuse" + var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [timer] second fuse" GLOB.bombers += message message_admins(message,0,1) - log_game("[key_name(user)] planted [name] on [target.name] at [COORD(target)] with [timer] second fuse") + log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(target)] with [timer] second fuse") target.add_overlay(plastic_overlay, TRUE) to_chat(user, "You plant the bomb. Timer counting down from [timer].") diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 9777deaf6d..c374ab94fd 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -139,8 +139,8 @@ detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE) START_PROCESSING(SSfastprocess, src) var/turf/T = get_turf(src) - message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])") - log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [COORD(T)]([T.loc])") + message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [ADMIN_VERBOSEJMP(T)]") + log_game("[user? "[user] has primed [src]" : "A [src] has been primed"] ([detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [AREACOORD(T)]") active = TRUE /obj/item/hot_potato/proc/deactivate() diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index 0dc22c3d83..5aa0e31d08 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -41,8 +41,7 @@ to_chat(imp_in, "You activate your [name].") active = TRUE var/turf/boomturf = get_turf(imp_in) - var/area/A = get_area(boomturf) - message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [A.name] [ADMIN_JMP(boomturf)], with cause of [cause].") + message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [ADMIN_VERBOSEJMP(boomturf)], with cause of [cause].") //If the delay is short, just blow up already jeez if(delay <= 7) explosion(src,heavy,medium,weak,weak, flame_range = weak) diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index e6d1486053..a135cc3af4 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -183,11 +183,11 @@ if(!user || !user.Adjacent(src)) return FALSE objective = stripped_input(usr,"What order do you want to imprint on [C]?","Enter the order","",120) - message_admins("[key_name_admin(user)] set brainwash machine objective to '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] set brainwash machine objective to '[objective]'.") log_game("[key_name(user)] set brainwash machine objective to '[objective]'.") if(C.isloyal()) return FALSE brainwash(C, objective) - message_admins("[key_name_admin(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") log_game("[key_name(user)] brainwashed [key_name(C)] with objective '[objective]'.") return TRUE \ No newline at end of file diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index ae73692cd4..0d993da41b 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -141,8 +141,8 @@ user.visible_message("[user] slides [grenade] into [src].", \ "You slide [I] into [src].") grenade = I - var/turf/T = get_turf(user) - log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [COORD(T)].") + var/turf/grenade_turf = get_turf(src) + log_game("[key_name(user)] added a grenade ([I.name]) to [src] at [AREACOORD(grenade_turf)].") return if(istype(I, /obj/item/toy/plush)) love(I, user) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index be7507e3d2..300f18cbeb 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -172,8 +172,8 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) - message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma sheets ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma sheets ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma sheets ignited by [key_name(user)] in [AREACOORD(T)]") fire_act(W.is_hot()) else return ..() diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index b8eb2dcc00..70ec8243b2 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -291,7 +291,7 @@ resin_cooldown = TRUE R.remove_any(100) var/obj/effect/resin_container/A = new (get_turf(src)) - log_game("[key_name(user)] used Resin Launcher at [get_area(user)] [COORD(user)].") + log_game("[key_name(user)] used Resin Launcher at [AREACOORD(user)].") playsound(src,'sound/items/syringeproj.ogg',40,1) for(var/a=0, a<5, a++) step_towards(A, target) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index dc6fbfe25b..a16e3faa81 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -204,7 +204,7 @@ active_portal_pairs[created[1]] = created[2] var/obj/effect/portal/c1 = created[1] var/obj/effect/portal/c2 = created[2] - investigate_log("was used by [key_name(user)] at [COORD(user)] to create a portal pair with destinations [COORD(c1)] and [COORD(c2)].", INVESTIGATE_PORTAL) + investigate_log("was used by [key_name(user)] at [AREACOORD(user)] to create a portal pair with destinations [AREACOORD(c1)] and [AREACOORD(c2)].", INVESTIGATE_PORTAL) add_fingerprint(user) /obj/item/hand_tele/proc/on_portal_destroy(obj/effect/portal/P) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 4875ef324c..c343abaa68 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -34,7 +34,7 @@ cooldown = world.time flick(pulseicon, src) radiation_pulse(src, 400, 2) - + /obj/item/nuke_core/suicide_act(mob/user) user.visible_message("[user] is rubbing [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") return (TOXLOSS) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 229aa70ee0..08d0b8bd30 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -136,13 +136,13 @@ if(isliving(O)) var/mob/living/L = O if(L.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") - log_game("[key_name(user)] set [key_name(L)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(L)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(L)] on fire with [src] at [AREACOORD(user)]") /obj/item/weldingtool/attack_self(mob/user) if(src.reagents.has_reagent("plasma")) - message_admins("[key_name_admin(user)] activated a rigged welder.") + message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) if(welding) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm index 995f858fb0..79af1e0bdc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm @@ -106,11 +106,13 @@ /obj/effect/DPtarget/Initialize(mapload, var/SO, var/podID, var/target) . = ..() - var/delayTime = 30//default time is 30 seconds + var/delayTime = 17 //We're forcefully adminspawned, make it faster switch(podID) + if(POD_STANDARD) + delayTime = 30 if(POD_BLUESPACE) delayTime = 15 - if(POD_CENTCOM) + if(POD_CENTCOM) //Admin smite, even faster. delayTime = 5//speedy delivery addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5 @@ -121,18 +123,21 @@ addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds /obj/effect/DPtarget/proc/endLaunch(var/SO, var/podID) - if (podID == POD_STANDARD) + if(podID == POD_STANDARD) new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing - else if (podID == POD_BLUESPACE) + else if(podID == POD_BLUESPACE) new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss) - else + else if(podID == POD_CENTCOM) new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO)//CentCom supplypods dont create explosions; instead they directly deal 40 fire damage to people on the turf var/turf/T = get_turf(src) T.hotspot_expose(700, 50, 1)//same as fireball for(var/mob/living/M in T.contents) M.adjustFireLoss(40) + else //We're buildmoded or directly spawned, blow them up damnit. + new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO) + explosion(src, 0, 0, 2, flame_range = 3) qdel(src) /obj/effect/DPtarget/Destroy() @@ -146,4 +151,4 @@ icon = 'icons/obj/module.dmi' icon_state = "cargodisk" item_state = "card-id" - w_class = WEIGHT_CLASS_SMALL \ No newline at end of file + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index 4ffc2fe060..a98b800e09 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -18,7 +18,7 @@ return to_chat(user, "You attempt to sacrifice [L] by invoking the sacrificial ritual.") L.gib() - message_admins("[key_name_admin(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar.") + message_admins("[ADMIN_LOOKUPFLW(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar at [AREACOORD(src)].") /obj/structure/healingfountain name = "healing fountain" diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 842e540551..c877488601 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -245,8 +245,8 @@ /obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300) var/turf/T = get_turf(src) - message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma falsewall ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma falsewall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma falsewall ignited by [key_name(user)] in [AREACOORD(T)]") burnbabyburn() else return ..() diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index f2635770c6..561cc8ef8c 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -204,8 +204,8 @@ /obj/structure/mineral_door/transparent/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot()) var/turf/T = get_turf(src) - message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma mineral door ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma mineral door ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma mineral door ignited by [key_name(user)] in [AREACOORD(T)]") TemperatureAct() else return ..() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 1f7991e374..d22dbddd52 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -123,18 +123,18 @@ if(burn) var/turf/T = get_turf(src) if(Proj.firer) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [key_name(Proj.firer)] in [COORD(T)]") + message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [key_name(Proj.firer)] in [AREACOORD(T)]") else - message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [Proj] in [COORD(T)]. No known firer.") + message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) - message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("Plasma statue ignited by [key_name(user)] in [COORD(T)]") + message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") ignite(W.is_hot()) else return ..() diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 396358ae47..0f68e68b7b 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -42,7 +42,7 @@ switch(state) if(ENGINE_UNWRENCHED) to_chat(user, "The [src.name] needs to be wrenched to the floor!") - if(EM_SECURED) + if(ENGINE_WRENCHED) if(!I.tool_start_check(user, amount=0)) return TRUE @@ -55,7 +55,7 @@ to_chat(user, "You weld \the [src] to the floor.") alter_engine_power(engine_power) - if(EM_WELDED) + if(ENGINE_WELDED) if(!I.tool_start_check(user, amount=0)) return TRUE @@ -149,3 +149,8 @@ bound_width = 96 bound_height = 96 appearance_flags = 0 + +#undef ENGINE_UNWRENCHED +#undef ENGINE_WRENCHED +#undef ENGINE_WELDED +#undef ENGINE_WELDTIME diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 657bf89a34..db1dba66cf 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -36,6 +36,14 @@ icon = 'icons/turf/shuttleold.dmi' icon_state = "block" +/turf/closed/indestructible/sandstone + name = "sandstone wall" + desc = "A wall with sandstone plating. Rough." + icon = 'icons/turf/walls/sandstone_wall.dmi' + icon_state = "sandstone" + baseturfs = /turf/closed/indestructible/sandstone + smooth = SMOOTH_TRUE + /turf/closed/indestructible/oldshuttle/corner icon_state = "corner" @@ -152,4 +160,4 @@ name = "wall" desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." icon = 'icons/turf/walls/hierophant_wall.dmi' - icon_state = "wall" \ No newline at end of file + icon_state = "wall" diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index e2e3356684..0ac7154592 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -44,8 +44,8 @@ /turf/open/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Plasma flooring was ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma flooring was ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma flooring was ignited by [key_name(user)] in [AREACOORD(src)]") ignite(W.is_hot()) return ..() diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 9928f9cdc5..5393df669b 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -451,20 +451,19 @@ stage = GIBTONITE_ACTIVE visible_message("There was gibtonite inside! It's going to explode!") var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5) notify_admins = 1 if(!triggered_by_explosion) - message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].") + message_admins("[ADMIN_LOOKUPFLW(user)] has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].") else - message_admins("An explosion has triggered a gibtonite deposit reaction at [A.name] [ADMIN_JMP(bombturf)].") + message_admins("An explosion has triggered a gibtonite deposit reaction at [ADMIN_VERBOSEJMP(bombturf)].") if(!triggered_by_explosion) - log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)].") + log_game("[key_name(user)] has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)].") else - log_game("An explosion has triggered a gibtonite deposit reaction at [A.name] [COORD(bombturf)]") + log_game("An explosion has triggered a gibtonite deposit reaction at [AREACOORD(bombturf)]") countdown(notify_admins) diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index c8ec3a5c5f..94e5a0a063 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -94,8 +94,8 @@ /turf/closed/wall/mineral/plasma/attackby(obj/item/W, mob/user, params) if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Plasma wall ignited by [key_name(user)] in [COORD(src)]") + message_admins("Plasma wall ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Plasma wall ignited by [key_name(user)] in [AREACOORD(src)]") ignite(W.is_hot()) return ..() diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 90eac62b16..09d0d5d2e2 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -266,7 +266,7 @@ var/datum/DBQuery/query_edit_ban_reason = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from \\\"[reason]\\\" to \\\"[value]\\\"
') WHERE id = [banid]") if(!query_edit_ban_reason.warn_execute()) return - message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]",1) + message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s reason from [reason] to [value]") if("duration") if(!value) value = input("Insert the new duration (in minutes) for [pckey]'s ban", "New Duration", "[duration]", null) as null|num @@ -277,7 +277,7 @@ var/datum/DBQuery/query_edit_ban_duration = SSdbcore.NewQuery("UPDATE [format_table_name("ban")] SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]
'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]") if(!query_edit_ban_duration.warn_execute()) return - message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]",1) + message_admins("[key_name_admin(usr)] has edited a ban for [pckey]'s duration from [duration] to [value]") if("unban") if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes") DB_ban_unban_by_id(banid) @@ -328,7 +328,7 @@ var/datum/DBQuery/query_unban = SSdbcore.NewQuery(sql_update) if(!query_unban.warn_execute()) return - message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.",1) + message_admins("[key_name_admin(usr)] has lifted [pckey]'s ban.") /client/proc/DB_ban_panel() set category = "Admin" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index d67bbfd6c5..7958e8e943 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -63,7 +63,11 @@ body += "PM - " body += "SM - " body += "FLW - " - body += "LOGS\]
" + //Default to client logs if available + var/source = LOGSRC_MOB + if(M.client) + source = LOGSRC_CLIENT + body += "LOGS\]
" body += "Mob type = [M.type]

" diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 5138089a6c..a3f7823b58 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -367,7 +367,7 @@ continue if(is_special_character(H)) continue - var/datum/antagonist/traitor/human/T = new() + var/datum/antagonist/traitor/T = new() T.give_objectives = FALSE var/datum/objective/new_objective = new new_objective.owner = H diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 298e38f295..028af313b0 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -143,7 +143,7 @@ if(M.client.prefs.toggles & SOUND_MIDI) M.playsound_local(M, sound_file, sound_volume, FALSE, channel = CHANNEL_ADMIN, pressure_affected = FALSE) if(user) - log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [COORD(src)]") + log_admin("[ADMIN_LOOKUPFLW(user)] activated a sound emitter with file \"[sound_file]\" at [AREACOORD(src)]") flick("shield1", src) #undef SOUND_EMITTER_LOCAL diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 83b3d48380..d4dd5951d2 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -146,9 +146,9 @@ if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return - var/output + var/list/output = list() var/ruler = "
" - var/navbar = "\[All\]|\[#\]" + var/list/navbar = list("\[All\]|\[#\]") for(var/letter in GLOB.alphabet) navbar += "|\[[letter]\]" navbar += "|\[Memos\]|\[Watchlist\]" @@ -198,9 +198,9 @@ var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, adminckey, text, timestamp, server, lasteditor, DATEDIFF(NOW(), timestamp) AS `age` FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 ORDER BY timestamp DESC") if(!query_get_messages.warn_execute()) return - var/messagedata - var/watchdata - var/notedata + var/list/messagedata = list() + var/list/watchdata = list() + var/list/notedata = list() var/skipped = 0 while(query_get_messages.NextRow()) type = query_get_messages.item[1] @@ -230,8 +230,7 @@ skipped = TRUE alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];" - var/data - data += "

[timestamp] | [server] | [admin_ckey]" + var/list/data = list("

[timestamp] | [server] | [admin_ckey]") if(!linkless) data += " \[Delete\]" if(type == "note") @@ -304,7 +303,7 @@ else if(!type && !target_ckey && !index) output += "

\[Add message\]\[Add watchlist entry\]\[Add note\]
" output += ruler - usr << browse({"[output]"}, "window=browse_messages;size=900x500") + usr << browse({"[jointext(output, "")]"}, "window=browse_messages;size=900x500") proc/get_message_output(type, target_ckey) if(!SSdbcore.Connect()) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b4d92b1fbe..0eacdd5c5e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1905,7 +1905,7 @@ to_chat(usr, "This can only be used on instances of type /mob.") return - show_individual_logging_panel(M, href_list["log_type"]) + show_individual_logging_panel(M, href_list["log_src"], href_list["log_type"]) else if(href_list["languagemenu"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 0136efc3b3..6dcd4e98ca 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -20,8 +20,8 @@ to_chat(src, "Nowhere to jump to!") return usr.forceMove(T) - log_admin("[key_name(usr)] jumped to [A]") - message_admins("[key_name_admin(usr)] jumped to [A]") + log_admin("[key_name(usr)] jumped to [AREACOORD(A)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(A)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Area") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/jumptoturf(turf/T in world) @@ -31,8 +31,8 @@ to_chat(src, "Only administrators may use this command.") return - log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") - message_admins("[key_name_admin(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") + log_admin("[key_name(usr)] jumped to [AREACOORD(T)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(T)]") usr.forceMove(T) SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Turf") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -46,7 +46,7 @@ return log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)] at [AREACOORD(M)]") if(src.mob) var/mob/A = src.mob var/turf/T = get_turf(M) @@ -89,7 +89,7 @@ return var/mob/M = selection.mob log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]") + message_admins("[key_name_admin(usr)] jumped to [ADMIN_LOOKUPFLW(M)]") usr.forceMove(M.loc) @@ -104,8 +104,8 @@ return var/atom/loc = get_turf(usr) - log_admin("[key_name(usr)] teleported [key_name(M)] to [COORD(loc)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [ADMIN_COORDJMP(loc)]" + log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(loc)]") + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [ADMIN_VERBOSEJMP(loc)]" message_admins(msg) admin_ticket_log(M, msg) M.forceMove(loc) @@ -131,7 +131,7 @@ if(!M) return log_admin("[key_name(usr)] teleported [key_name(M)]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)]" + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)]" message_admins(msg) admin_ticket_log(M, msg) if(M) @@ -149,8 +149,8 @@ if(A && istype(A)) if(M.forceMove(safepick(get_area_turfs(A)))) - log_admin("[key_name(usr)] teleported [key_name(M)] to [A]") - var/msg = "[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]" + log_admin("[key_name(usr)] teleported [key_name(M)] to [AREACOORD(A)]") + var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)] to [AREACOORD(A)]" message_admins(msg) admin_ticket_log(M, msg) else diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 1f14934065..75407eae9c 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -9,17 +9,17 @@ //all plumbing - yes, some things might get stated twice, doesn't matter. for (var/obj/machinery/atmospherics/plumbing in GLOB.machines) if (plumbing.nodealert) - to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_COORDJMP(plumbing)] ([get_area(plumbing.loc)])") + to_chat(usr, "Unconnected [plumbing.name] located at [ADMIN_VERBOSEJMP(plumbing)]") //Manifolds for (var/obj/machinery/atmospherics/pipe/manifold/pipe in GLOB.machines) if (!pipe.nodes[1] || !pipe.nodes[2] || !pipe.nodes[3]) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") //Pipes for (var/obj/machinery/atmospherics/pipe/simple/pipe in GLOB.machines) if (!pipe.nodes[1] || !pipe.nodes[2]) - to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_COORDJMP(pipe)] ([get_area(pipe.loc)])") + to_chat(usr, "Unconnected [pipe.name] located at [ADMIN_VERBOSEJMP(pipe)]") /client/proc/powerdebug() set category = "Mapping" @@ -33,9 +33,9 @@ if (!PN.nodes || !PN.nodes.len) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]") + to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") if (!PN.cables || (PN.cables.len < 10)) if(PN.cables && (PN.cables.len > 1)) var/obj/structure/cable/C = PN.cables[1] - to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_COORDJMP(C)] in area [get_area(C.loc)]") + to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ADMIN_VERBOSEJMP(C)]") diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index 8a162e7794..ec921e78bc 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -87,11 +87,11 @@ var/newcharge = input("New charge (0-[borg.cell.maxcharge]):", borg.name, borg.cell.charge) as num|null if (newcharge) borg.cell.charge = CLAMP(newcharge, 0, borg.cell.maxcharge) - message_admins("[key_name_admin(user)] set the charge of [key_name_admin(borg)][ADMIN_FLW(borg)] to [borg.cell.charge].") + message_admins("[key_name_admin(user)] set the charge of [ADMIN_LOOKUPFLW(borg)] to [borg.cell.charge].") log_admin("[key_name(user)] set the charge of [key_name(borg)] to [borg.cell.charge].") if ("remove_cell") QDEL_NULL(borg.cell) - message_admins("[key_name_admin(user)] deleted the cell of [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] deleted the cell of [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] deleted the cell of [key_name(borg)].") if ("change_cell") var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/cell))) @@ -104,45 +104,45 @@ borg.cell = new_cell borg.cell.charge = borg.cell.maxcharge borg.diag_hud_set_borgcell() - message_admins("[key_name_admin(user)] changed the cell of [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_cell].") + message_admins("[key_name_admin(user)] changed the cell of [ADMIN_LOOKUPFLW(borg)] to [new_cell].") log_admin("[key_name(user)] changed the cell of [key_name(borg)] to [new_cell].") if ("toggle_emagged") borg.SetEmagged(!borg.emagged) if (borg.emagged) - message_admins("[key_name_admin(user)] emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] emagged [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] emagged [key_name(borg)].") else - message_admins("[key_name_admin(user)] un-emagged [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] un-emagged [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] un-emagged [key_name(borg)].") if ("toggle_lawupdate") borg.lawupdate = !borg.lawupdate if (borg.lawupdate) - message_admins("[key_name_admin(user)] enabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] enabled lawsync on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] enabled lawsync on [key_name(borg)].") else - message_admins("[key_name_admin(user)] disabled lawsync on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] disabled lawsync on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] disabled lawsync on [key_name(borg)].") if ("toggle_lockdown") borg.SetLockdown(!borg.lockcharge) if (borg.lockcharge) - message_admins("[key_name_admin(user)] locked down [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] locked down [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] locked down [key_name(borg)].") else - message_admins("[key_name_admin(user)] released [key_name_admin(borg)][ADMIN_FLW(borg)] from lockdown.") + message_admins("[key_name_admin(user)] released [ADMIN_LOOKUPFLW(borg)] from lockdown.") log_admin("[key_name(user)] released [key_name(borg)] from lockdown.") if ("toggle_scrambledcodes") borg.scrambledcodes = !borg.scrambledcodes if (borg.scrambledcodes) - message_admins("[key_name_admin(user)] enabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] enabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] enabled scrambled codes on [key_name(borg)].") else - message_admins("[key_name_admin(user)] disabled scrambled codes on [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] disabled scrambled codes on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] disabled scrambled codes on [key_name(borg)].") if ("rename") var/new_name = stripped_input(user,"What would you like to name this cyborg?","Input a name",borg.real_name,MAX_NAME_LEN) if(!new_name) return - message_admins("[key_name_admin(user)] renamed [key_name_admin(borg)][ADMIN_FLW(borg)] to [new_name].") + message_admins("[key_name_admin(user)] renamed [ADMIN_LOOKUPFLW(borg)] to [new_name].") log_admin("[key_name(user)] renamed [key_name(borg)] to [new_name].") borg.fully_replace_character_name(borg.real_name,new_name) if ("toggle_upgrade") @@ -151,14 +151,14 @@ if (installedupgrade) installedupgrade.deactivate(borg, user) borg.upgrades -= installedupgrade - message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].") qdel(installedupgrade) else var/obj/item/borg/upgrade/upgrade = new upgradepath(borg) upgrade.action(borg, user) borg.upgrades += upgrade - message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].") if ("toggle_radio") var/channel = params["channel"] @@ -175,7 +175,7 @@ borg.radio.keyslot.syndie = FALSE else if (channel == "CentCom") borg.radio.keyslot.independent = FALSE - message_admins("[key_name_admin(user)] removed the [channel] radio channel from [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] removed the [channel] radio channel from [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].") else // We're adding a channel if (!borg.radio.keyslot) // Assert that an encryption key exists @@ -185,14 +185,14 @@ borg.radio.keyslot.syndie = TRUE else if (channel == "CentCom") borg.radio.keyslot.independent = TRUE - message_admins("[key_name_admin(user)] added the [channel] radio channel to [key_name_admin(borg)][ADMIN_FLW(borg)].") + message_admins("[key_name_admin(user)] added the [channel] radio channel to [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] added the [channel] radio channel to [key_name(borg)].") borg.radio.recalculateChannels() if ("setmodule") var/newmodulepath = text2path(params["module"]) if (ispath(newmodulepath)) borg.module.transform_to(newmodulepath) - message_admins("[key_name_admin(user)] changed the module of [key_name_admin(borg)][ADMIN_FLW(borg)] to [newmodulepath].") + message_admins("[key_name_admin(user)] changed the module of [ADMIN_LOOKUPFLW(borg)] to [newmodulepath].") log_admin("[key_name(user)] changed the module of [key_name(borg)] to [newmodulepath].") if ("slavetoai") var/mob/living/silicon/ai/newai = locate(params["slavetoai"]) in GLOB.ai_list @@ -202,14 +202,14 @@ borg.undeploy() borg.connected_ai = newai borg.notify_ai(TRUE) - message_admins("[key_name_admin(user)] slaved [key_name_admin(borg)][ADMIN_FLW(borg)] to the AI [key_name_admin(newai)][ADMIN_FLW(newai)].") + message_admins("[key_name_admin(user)] slaved [ADMIN_LOOKUPFLW(borg)] to the AI [ADMIN_LOOKUPFLW(newai)].") log_admin("[key_name(user)] slaved [key_name(borg)] to the AI [key_name(newai)].") else if (params["slavetoai"] == "null") borg.notify_ai(DISCONNECT) if(borg.shell) borg.undeploy() borg.connected_ai = null - message_admins("[key_name_admin(user)] freed [key_name_admin(borg)][ADMIN_FLW(borg)] from being slaved to an AI.") + message_admins("[key_name_admin(user)] freed [ADMIN_LOOKUPFLW(borg)] from being slaved to an AI.") log_admin("[key_name(user)] freed [key_name(borg)] from being slaved to an AI.") if (borg.lawupdate) borg.lawsync() diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index e837953f4e..e6ddd72e3a 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -333,8 +333,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] made [key_name(M)] into an alien.") - message_admins("[key_name_admin(usr)] made [key_name(M)] into an alien.") + log_admin("[key_name(usr)] made [key_name(M)] into an alien at [AREACOORD(M)].") + message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into an alien.") else alert("Invalid mob") @@ -348,8 +348,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(ishuman(M)) INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] made [key_name(M)] into a slime.") - message_admins("[key_name_admin(usr)] made [key_name(M)] into a slime.") + log_admin("[key_name(usr)] made [key_name(M)] into a slime at [AREACOORD(M)].") + message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into a slime.") else alert("Invalid mob") @@ -434,7 +434,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) qdel(O) CHECK_TICK log_admin("[key_name(src)] has deleted all ([counter]) instances of [hsbitem].") - message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].", 0) + message_admins("[key_name_admin(src)] has deleted all ([counter]) instances of [hsbitem].") SSblackbox.record_feedback("tally", "admin_verb", 1, "Delete All") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -443,7 +443,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) set name = "Make Powernets" SSmachines.makepowernets() log_admin("[key_name(src)] has remade the powernet. makepowernets() called.") - message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.", 0) + message_admins("[key_name_admin(src)] has remade the powernets. makepowernets() called.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Powernets") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list) @@ -522,7 +522,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/bad_shit = 0 for(var/obj/machinery/computer/atmos_control/tank/console in GLOB.atmos_air_controllers) - dat += "

[console] at [get_area_name(console, TRUE)] [COORD(console)]:


" + dat += "

[console] at [AREACOORD(console)]:


" if(console.input_tag == console.output_tag) dat += "Error: input_tag is the same as the output_tag, \"[console.input_tag]\"!
" bad_shit++ @@ -752,7 +752,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) H.regenerate_icons() log_admin("[key_name(usr)] changed the equipment of [key_name(H)] to [dresscode].") - message_admins("[key_name_admin(usr)] changed the equipment of [key_name_admin(H)] to [dresscode].") + message_admins("[key_name_admin(usr)] changed the equipment of [ADMIN_LOOKUPFLW(H)] to [dresscode].") /client/proc/robust_dress_shop() var/list/outfits = list("Cancel","Naked","Custom","As Job...") diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 5e21955800..2bd67eaf37 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -7,7 +7,7 @@ if(T.active_hotspot) burning = TRUE - var/list/lines = list("[COORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]") + var/list/lines = list("[AREACOORD(target)]: [env.temperature] K ([env.temperature - T0C] C), [env.return_pressure()] kPa[(burning)?(", burning"):(null)]") for(var/id in env_gases) var/gas = env_gases[id] var/moles = gas[MOLES] @@ -49,8 +49,8 @@ log_admin("DEBUG: [key_name(M)] next_move = [M.next_move] lastDblClick = [M.next_click] world.time = [world.time]") M.next_move = 1 M.next_click = 0 - message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!") - message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!") + message_admins("[ADMIN_LOOKUPFLW(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [DisplayTimeText(largest_move_time)]!") + message_admins("[ADMIN_LOOKUPFLW(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [DisplayTimeText(largest_click_time)]!") message_admins("world.time = [world.time]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Unfreeze Everyone") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm index 50b00da9a6..df151cfef9 100644 --- a/code/modules/admin/verbs/individual_logging.dm +++ b/code/modules/admin/verbs/individual_logging.dm @@ -1,32 +1,52 @@ -/proc/show_individual_logging_panel(mob/M, type = INDIVIDUAL_ATTACK_LOG) +/proc/show_individual_logging_panel(mob/M, source = LOGSRC_CLIENT, type = INDIVIDUAL_ATTACK_LOG) if(!M || !ismob(M)) return - var/dat = "
Attack log | " - dat += "Say log | " - dat += "Emote log | " - dat += "OOC log | " - dat += "Show all | " - dat += "Refresh
" + + //Add client links + var/dat = "" + if(M.client) + dat += "

Client

" + dat += "
Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
" + else + dat += "

No client attached to mob

" + + dat += "
" + dat += "

Mob

" + //Add the links for the mob specific log + dat += "
Attack log | " + dat += "Say log | " + dat += "Emote log | " + dat += "OOC log | " + dat += "Show all | " + dat += "Refresh
" dat += "
" + var/log_source = M.logging; + if(source == LOGSRC_CLIENT && M.client) //if client doesn't exist just fall back to the mob log + log_source = M.client.player_details.logging //should exist, if it doesn't that's a bug, don't check for it not existing if(type == INDIVIDUAL_SHOW_ALL_LOG) - dat += "
Displaying all logs of [key_name(M)]


" - for(var/log_type in M.logging) + dat += "
Displaying all [source] logs of [key_name(M)]


" + for(var/log_type in log_source) dat += "
[log_type]

" - var/list/reversed = M.logging[log_type] + var/list/reversed = log_source[log_type] if(islist(reversed)) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" dat += "
" else - dat += "
[type] of [key_name(M)]

" - var/list/reversed = M.logging[type] + dat += "
[source] [type] of [key_name(M)]

" + var/list/reversed = log_source[type] if(reversed) reversed = reverseRange(reversed.Copy()) for(var/entry in reversed) dat += "[entry]: [reversed[entry]]
" - usr << browse(dat, "window=invidual_logging_[M];size=600x480") + usr << browse(dat, "window=invidual_logging_[key_name(M)];size=600x480") diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm index e82a99815e..4d1de50e47 100644 --- a/code/modules/admin/verbs/manipulate_organs.dm +++ b/code/modules/admin/verbs/manipulate_organs.dm @@ -15,7 +15,7 @@ organ = new organ organ.Insert(C) log_admin("[key_name(usr)] has added organ [organ.type] to [key_name(C)]") - message_admins("[key_name_admin(usr)] has added organ [organ.type] to [key_name(C)]") + message_admins("[key_name_admin(usr)] has added organ [organ.type] to [ADMIN_LOOKUPFLW(C)]") if("add implant") for(var/path in subtypesof(/obj/item/implant)) @@ -27,7 +27,7 @@ organ = new organ organ.implant(C) log_admin("[key_name(usr)] has added implant [organ.type] to [key_name(C)]") - message_admins("[key_name_admin(usr)] has added implant [organ.type] to [key_name(C)]") + message_admins("[key_name_admin(usr)] has added implant [organ.type] to [ADMIN_LOOKUPFLW(C)]") if("drop organ/implant", "remove organ/implant") for(var/X in C.internal_organs) @@ -46,7 +46,7 @@ var/obj/item/implant/I log_admin("[key_name(usr)] has removed [organ.type] from [key_name(C)]") - message_admins("[key_name_admin(usr)] has removed [organ.type] from [key_name(C)]") + message_admins("[key_name_admin(usr)] has removed [organ.type] from [ADMIN_LOOKUPFLW(C)]") if(isorgan(organ)) O = organ diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index c62ee34dac..800a94c4ba 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -105,11 +105,11 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( for(var/obj/machinery/camera/C2 in CL) if(C1 != C2) if(C1.c_tag == C2.c_tag) - output += "
  • c_tag match for cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) and [ADMIN_COORDJMP(C2)] ([C2.loc.loc]) - c_tag is [C1.c_tag]
  • " + output += "
  • c_tag match for cameras at [ADMIN_VERBOSEJMP(C1)] and [ADMIN_VERBOSEJMP(C2)] - c_tag is [C1.c_tag]
  • " if(C1.loc == C2.loc && C1.dir == C2.dir && C1.pixel_x == C2.pixel_x && C1.pixel_y == C2.pixel_y) - output += "
  • FULLY overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " + output += "
  • FULLY overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " if(C1.loc == C2.loc) - output += "
  • Overlapping cameras at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " + output += "
  • Overlapping cameras at [ADMIN_VERBOSEJMP(C1)] Networks: [json_encode(C1.network)] and [json_encode(C2.network)]
  • " var/turf/T = get_step(C1,turn(C1.dir,180)) if(!T || !isturf(T) || !T.density ) if(!(locate(/obj/structure/grille) in T)) @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( window_check = 1 break if(!window_check) - output += "
  • Camera not connected to wall at [ADMIN_COORDJMP(C1)] ([C1.loc.loc]) Network: [json_encode(C1.network)]
  • " + output += "
  • Camera not connected to wall at [ADMIN_VERBOSEJMP(C1)] Network: [json_encode(C1.network)]
  • " output += "" usr << browse(output,"window=airreport;size=1000x500") @@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( for(var/t in GLOB.active_turfs_startlist) var/turf/T = t - dat += "[ADMIN_COORDJMP(T)]\n" + dat += "[ADMIN_VERBOSEJMP(T)]\n" dat += "
    " usr << browse(dat, "window=at_list") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 07c19e2b43..f97cdd7d57 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -14,7 +14,7 @@ M.regenerate_icons() log_admin("[key_name(usr)] made [key_name(M)] drop everything!") - var/msg = "[key_name_admin(usr)] made [key_name_admin(M)] drop everything!" + var/msg = "[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] drop everything!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -149,8 +149,8 @@ for(var/mob/M in view(range,A)) to_chat(M, msg) - log_admin("LocalNarrate: [key_name(usr)] at [get_area(A)][COORD(A)]: [msg]") - message_admins(" LocalNarrate: [key_name_admin(usr)] at [get_area(A)][ADMIN_JMP(A)]: [msg]
    ") + log_admin("LocalNarrate: [key_name(usr)] at [AREACOORD(A)]: [msg]") + message_admins(" LocalNarrate: [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(A)]: [msg]
    ") SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list) @@ -163,7 +163,7 @@ to_chat(usr, "Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]") log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]") - var/msg = "[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" + var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -504,7 +504,7 @@ Traitors and the like can also be revived with the previous role mostly intact. M.revive(full_heal = 1, admin_revive = 1) log_admin("[key_name(usr)] healed / revived [key_name(M)]") - var/msg = "Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!" + var/msg = "Admin [key_name_admin(usr)] healed / revived [ADMIN_LOOKUPFLW(M)]!" message_admins(msg) admin_ticket_log(M, msg) SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -609,8 +609,8 @@ Traitors and the like can also be revived with the previous role mostly intact. return explosion(O, devastation, heavy, light, flash, null, null,flames) - log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return else @@ -633,8 +633,8 @@ Traitors and the like can also be revived with the previous role mostly intact. if (heavy || light) empulse(O, heavy, light) - log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])") + log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") + message_admins("[key_name_admin(usr)] created an EM Pulse ([heavy],[light]) at [AREACOORD(O)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -821,7 +821,7 @@ Traitors and the like can also be revived with the previous role mostly intact. N.set_active() log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at ([N.x],[N.y],[N.z]).") - message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_COORDJMP(N)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].") SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index a1241d5998..0dcd5e6c21 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -497,12 +497,12 @@ structure_check() searches for nearby cultist structures required for the invoca user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") if(do_after(user, 50, target = src)) //Prevents accidental erasures. log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with [I.name]") - message_admins("[key_name_admin(user)] erased a Narsie rune with [I.name]") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with [I.name]") ..() else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. log_game("Summon Narsie rune erased by [user.mind.key] (ckey) using a null rod") - message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod") + message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") ..() //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm index ad66ee0cbb..7183ed5455 100644 --- a/code/modules/antagonists/disease/disease_event.dm +++ b/code/modules/antagonists/disease/disease_event.dm @@ -20,7 +20,7 @@ var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center()) virus.key = selected.key INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name) - message_admins("[key_name_admin(virus)] has been made into a sentient disease by an event.") + message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.") log_game("[key_name(virus)] was spawned as a sentient disease by an event.") spawned_mobs += virus return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 6572584eab..12f8d22897 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -238,7 +238,7 @@ player_mind.add_antag_datum(/datum/antagonist/morph) to_chat(S, S.playstyle_string) SEND_SOUND(S, sound('sound/magic/mutate.ogg')) - message_admins("[key_name_admin(S)] has been made into a morph by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a morph by an event.") log_game("[key_name(S)] was spawned as a morph by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 4d3ccf8a34..1beb60f624 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -371,11 +371,11 @@ if(timing) previous_level = get_security_level() bomb_set = TRUE - set_security_level("delta") detonation_timer = world.time + (timer_set * 10) for(var/obj/item/pinpointer/nuke/syndicate/S in GLOB.pinpointer_list) S.switch_mode_to(TRACK_INFILTRATOR) countdown.start() + set_security_level("delta") else bomb_set = FALSE detonation_timer = null diff --git a/code/modules/antagonists/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm index 483be4dc34..c9a892cd64 100644 --- a/code/modules/antagonists/revenant/revenant_spawn_event.dm +++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm @@ -53,7 +53,7 @@ var/mob/living/simple_animal/revenant/revvie = new(pick(spawn_locs)) revvie.key = selected.key - message_admins("[key_name_admin(revvie)] [ADMIN_FLW(revvie)] has been made into a revenant by an event.") + message_admins("[ADMIN_LOOKUPFLW(revvie)] has been made into a revenant by an event.") log_game("[key_name(revvie)] was spawned as a revenant by an event.") spawned_mobs += revvie return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm index 38054fccec..4d81741c91 100644 --- a/code/modules/antagonists/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -41,7 +41,7 @@ to_chat(S, S.playstyle_string) to_chat(S, "You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest.") SEND_SOUND(S, 'sound/magic/demon_dies.ogg') - message_admins("[key_name_admin(S)] has been made into a slaughter demon by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a slaughter demon by an event.") log_game("[key_name(S)] was spawned as a slaughter demon by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm index 605db9797d..28f562d23e 100644 --- a/code/modules/antagonists/traitor/IAA/internal_affairs.dm +++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm @@ -6,11 +6,10 @@ /datum/antagonist/traitor/internal_affairs name = "Internal Affairs Agent" - human_datum = /datum/antagonist/traitor/human/internal_affairs - ai_datum = /datum/antagonist/traitor/AI/internal_affairs antagpanel_category = "IAA" -/datum/antagonist/traitor/AI/internal_affairs + +/datum/antagonist/traitor/internal_affairs name = "Internal Affairs Agent" employer = "Nanotrasen" special_role = "internal affairs agent" @@ -20,47 +19,29 @@ var/list/datum/mind/targets_stolen -/datum/antagonist/traitor/human/internal_affairs - name = "Internal Affairs Agent" - employer = "Nanotrasen" - special_role = "internal affairs agent" - antagpanel_category = "IAA" - var/syndicate = FALSE - var/last_man_standing = FALSE - var/list/datum/mind/targets_stolen - - -/datum/antagonist/traitor/human/internal_affairs/proc/give_pinpointer() +/datum/antagonist/traitor/internal_affairs/proc/give_pinpointer() if(owner && owner.current) owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer) -/datum/antagonist/traitor/human/internal_affairs/apply_innate_effects() +/datum/antagonist/traitor/internal_affairs/apply_innate_effects() .=..() //in case the base is used in future if(owner && owner.current) give_pinpointer(owner.current) -/datum/antagonist/traitor/human/internal_affairs/remove_innate_effects() +/datum/antagonist/traitor/internal_affairs/remove_innate_effects() .=..() if(owner && owner.current) owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer) -/datum/antagonist/traitor/human/internal_affairs/on_gain() +/datum/antagonist/traitor/internal_affairs/on_gain() START_PROCESSING(SSprocessing, src) .=..() -/datum/antagonist/traitor/human/internal_affairs/on_removal() +/datum/antagonist/traitor/internal_affairs/on_removal() STOP_PROCESSING(SSprocessing,src) .=..() -/datum/antagonist/traitor/human/internal_affairs/process() +/datum/antagonist/traitor/internal_affairs/process() iaa_process() -/datum/antagonist/traitor/AI/internal_affairs/on_gain() - START_PROCESSING(SSprocessing, src) - .=..() -/datum/antagonist/traitor/AI/internal_affairs/on_removal() - STOP_PROCESSING(SSprocessing,src) - .=..() -/datum/antagonist/traitor/AI/internal_affairs/process() - iaa_process() /datum/status_effect/agent_pinpointer id = "agent_pinpointer" @@ -142,21 +123,14 @@ continue remove_objective(objective_) -/datum/antagonist/traitor/human/internal_affairs/reinstate_escape_objective() +/datum/antagonist/traitor/internal_affairs/reinstate_escape_objective() ..() - var/datum/objective/escape/escape_objective = new + var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive + var/datum/objective/escape_objective = new objtype escape_objective.owner = owner add_objective(escape_objective) -/datum/antagonist/traitor/AI/internal_affairs/reinstate_escape_objective() - ..() - var/datum/objective/survive/survive_objective = new - survive_objective.owner = owner - add_objective(survive_objective) - -/datum/antagonist/traitor/proc/steal_targets(datum/mind/victim) - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA - +/datum/antagonist/traitor/internal_affairs/proc/steal_targets(datum/mind/victim) if(!owner.current||owner.current.stat==DEAD) return to_chat(owner.current, " Target eliminated: [victim.name]") @@ -165,13 +139,13 @@ var/datum/objective/assassinate/internal/objective = objective_ if(objective.target==owner) continue - else if(this.targets_stolen.Find(objective.target) == 0) + else if(targets_stolen.Find(objective.target) == 0) var/datum/objective/assassinate/internal/new_objective = new new_objective.owner = owner new_objective.target = objective.target new_objective.update_explanation_text() add_objective(new_objective) - this.targets_stolen += objective.target + targets_stolen += objective.target var/status_text = objective.check_completion() ? "neutralised" : "active" to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") else if(istype(objective_, /datum/objective/destroy/internal)) @@ -179,31 +153,30 @@ var/datum/objective/destroy/internal/new_objective = new if(objective.target==owner) continue - else if(this.targets_stolen.Find(objective.target) == 0) + else if(targets_stolen.Find(objective.target) == 0) new_objective.owner = owner new_objective.target = objective.target new_objective.update_explanation_text() add_objective(new_objective) - this.targets_stolen += objective.target + targets_stolen += objective.target var/status_text = objective.check_completion() ? "neutralised" : "active" to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") - this.last_man_standing = TRUE + last_man_standing = TRUE for(var/objective_ in owner.objectives) if(!is_internal_objective(objective_)) continue var/datum/objective/assassinate/internal/objective = objective_ if(!objective.check_completion()) - this.last_man_standing = FALSE + last_man_standing = FALSE return - if(this.last_man_standing) - if(this.syndicate) + if(last_man_standing) + if(syndicate) to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ") else to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") replace_escape_objective(owner) -/datum/antagonist/traitor/proc/iaa_process() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA +/datum/antagonist/traitor/internal_affairs/proc/iaa_process() if(owner&&owner.current&&owner.current.stat!=DEAD) for(var/objective_ in owner.objectives) if(!is_internal_objective(objective_)) @@ -220,20 +193,18 @@ else if(objective.stolen) var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! " - if(this.last_man_standing) - if(this.syndicate) + if(last_man_standing) + if(syndicate) fail_msg += " You no longer have permission to die. " else fail_msg += " The truth could still slip out! Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated." reinstate_escape_objective(owner) - this.last_man_standing = FALSE + last_man_standing = FALSE to_chat(owner.current, fail_msg) objective.stolen = FALSE -/datum/antagonist/traitor/proc/forge_iaa_objectives() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA +/datum/antagonist/traitor/internal_affairs/proc/forge_iaa_objectives() if(SSticker.mode.target_list.len && SSticker.mode.target_list[owner]) // Is a double agent - // Assassinate var/datum/mind/target_mind = SSticker.mode.target_list[owner] if(issilicon(target_mind.current)) @@ -253,31 +224,25 @@ employer = "The Syndicate" owner.special_role = TRAITOR_AGENT_ROLE special_role = TRAITOR_AGENT_ROLE - this.syndicate = TRUE + syndicate = TRUE forge_single_objective() - else ..() // Give them standard objectives. return -/datum/antagonist/traitor/human/internal_affairs/forge_traitor_objectives() +/datum/antagonist/traitor/internal_affairs/forge_traitor_objectives() forge_iaa_objectives() - var/datum/objective/escape/escape_objective = new + + var/objtype = traitor_kind == TRAITOR_HUMAN ? /datum/objective/escape : /datum/objective/survive + var/datum/objective/escape_objective = new objtype escape_objective.owner = owner add_objective(escape_objective) -/datum/antagonist/traitor/AI/internal_affairs/forge_traitor_objectives() - forge_iaa_objectives() - var/datum/objective/survive/survive_objective = new - survive_objective.owner = owner - add_objective(survive_objective) - -/datum/antagonist/traitor/proc/greet_iaa() - var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA +/datum/antagonist/traitor/internal_affairs/proc/greet_iaa() var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") to_chat(owner.current, "You are the [special_role].") - if(this.syndicate) + if(syndicate) to_chat(owner.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.") to_chat(owner.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.") to_chat(owner.current, " You have been provided with a standard uplink to accomplish your task. ") @@ -289,13 +254,9 @@ to_chat(owner.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") owner.announce_objectives() -/datum/antagonist/traitor/AI/internal_affairs/greet() +/datum/antagonist/traitor/internal_affairs/greet() greet_iaa() -/datum/antagonist/traitor/human/internal_affairs/greet() - greet_iaa() - - #undef PROB_ACTUAL_TRAITOR #undef PINPOINTER_EXTRA_RANDOM_RANGE #undef PINPOINTER_MINIMUM_RANGE diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index ae750adebc..9066759648 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -1,39 +1,23 @@ +#define TRAITOR_HUMAN "human" +#define TRAITOR_AI "AI" + /datum/antagonist/traitor name = "Traitor" roundend_category = "traitors" antagpanel_category = "Traitor" job_rank = ROLE_TRAITOR antag_moodlet = /datum/mood_event/focused - var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only - var/ai_datum = /datum/antagonist/traitor/AI - var/human_datum = /datum/antagonist/traitor/human var/special_role = ROLE_TRAITOR var/employer = "The Syndicate" var/give_objectives = TRUE var/should_give_codewords = TRUE - - - -/datum/antagonist/traitor/human - show_in_antagpanel = FALSE - should_specialise = FALSE var/should_equip = TRUE - - -/datum/antagonist/traitor/AI - show_in_antagpanel = FALSE - should_specialise = FALSE - -/datum/antagonist/traitor/specialization(datum/mind/new_owner) - if(should_specialise) - if(new_owner.current && isAI(new_owner.current)) - return new ai_datum() - else - return new human_datum() - else - return ..() + var/traitor_kind = TRAITOR_HUMAN //Set on initial assignment /datum/antagonist/traitor/on_gain() + if(owner.current && isAI(owner.current)) + traitor_kind = TRAITOR_AI + SSticker.mode.traitors += owner owner.special_role = special_role if(give_objectives) @@ -56,19 +40,18 @@ traitor_mob.dna.add_mutation(CLOWNMUT) /datum/antagonist/traitor/on_removal() - SSticker.mode.traitors -= owner - if(!silent && owner.current) - to_chat(owner.current," You are no longer the [special_role]! ") - owner.special_role = null - ..() - -/datum/antagonist/traitor/AI/on_removal() - if(owner.current && isAI(owner.current)) + //Remove malf powers. + if(traitor_kind == TRAITOR_AI && owner.current && isAI(owner.current)) var/mob/living/silicon/ai/A = owner.current A.set_zeroth_law("") A.verbs -= /mob/living/silicon/ai/proc/choose_modules A.malf_picker.remove_malf_verbs(A) qdel(A.malf_picker) + + SSticker.mode.traitors -= owner + if(!silent && owner.current) + to_chat(owner.current," You are no longer the [special_role]! ") + owner.special_role = null ..() /datum/antagonist/traitor/proc/add_objective(var/datum/objective/O) @@ -80,9 +63,13 @@ objectives -= O /datum/antagonist/traitor/proc/forge_traitor_objectives() - return + switch(traitor_kind) + if(TRAITOR_AI) + forge_ai_objectives() + else + forge_human_objectives() -/datum/antagonist/traitor/human/forge_traitor_objectives() +/datum/antagonist/traitor/proc/forge_human_objectives() var/is_hijacker = FALSE if (GLOB.joined_player_list.len >= 30) // Less murderboning on lowpop thanks is_hijacker = prob(10) @@ -127,7 +114,7 @@ add_objective(escape_objective) return -/datum/antagonist/traitor/AI/forge_traitor_objectives() +/datum/antagonist/traitor/proc/forge_ai_objectives() var/objective_count = 0 if(prob(30)) @@ -142,9 +129,16 @@ var/datum/objective/survive/exist/exist_objective = new exist_objective.owner = owner add_objective(exist_objective) + + /datum/antagonist/traitor/proc/forge_single_objective() - return 0 -/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added + switch(traitor_kind) + if(TRAITOR_AI) + return forge_single_AI_objective() + else + return forge_single_human_objective() + +/datum/antagonist/traitor/proc/forge_single_human_objective() //Returns how many objectives are added .=1 if(prob(50)) var/list/active_ais = active_ais() @@ -175,7 +169,7 @@ steal_objective.find_target() add_objective(steal_objective) -/datum/antagonist/traitor/AI/forge_single_objective() +/datum/antagonist/traitor/proc/forge_single_AI_objective() .=1 var/special_pick = rand(1,4) switch(special_pick) @@ -209,34 +203,41 @@ if(should_give_codewords) give_codewords() +/datum/antagonist/traitor/proc/update_traitor_icons_added(datum/mind/traitor_mind) + var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] + traitorhud.join_hud(owner.current) + set_antag_hud(owner.current, "traitor") + +/datum/antagonist/traitor/proc/update_traitor_icons_removed(datum/mind/traitor_mind) + var/datum/atom_hud/antag/traitorhud = GLOB.huds[ANTAG_HUD_TRAITOR] + traitorhud.leave_hud(owner.current) + set_antag_hud(owner.current, null) + /datum/antagonist/traitor/proc/finalize_traitor() - SSticker.mode.update_traitor_icons_added(owner) - return + switch(traitor_kind) + if(TRAITOR_AI) + add_law_zero() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) + owner.current.grant_language(/datum/language/codespeak) + if(TRAITOR_HUMAN) + if(should_equip) + equip(silent) + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) -/datum/antagonist/traitor/AI/finalize_traitor() - ..() - add_law_zero() - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) - owner.current.grant_language(/datum/language/codespeak) - -/datum/antagonist/traitor/AI/apply_innate_effects(mob/living/mob_override) +/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override) . = ..() + update_traitor_icons_added() var/mob/living/silicon/ai/A = mob_override || owner.current - if(istype(A)) + if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = TRUE -/datum/antagonist/traitor/AI/remove_innate_effects(mob/living/mob_override) +/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override) . = ..() + update_traitor_icons_removed() var/mob/living/silicon/ai/A = mob_override || owner.current - if(istype(A)) + if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = FALSE -/datum/antagonist/traitor/human/finalize_traitor() - ..() - if(should_equip) - equip(silent) - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) - /datum/antagonist/traitor/proc/give_codewords() if(!owner.current) return @@ -251,7 +252,7 @@ to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.") -/datum/antagonist/traitor/AI/proc/add_law_zero() +/datum/antagonist/traitor/proc/add_law_zero() var/mob/living/silicon/ai/killer = owner.current if(!killer || !istype(killer)) return @@ -263,12 +264,10 @@ killer.add_malf_picker() /datum/antagonist/traitor/proc/equip(var/silent = FALSE) - return + if(traitor_kind == TRAITOR_HUMAN) + owner.equip_traitor(employer, silent, src) -/datum/antagonist/traitor/human/equip(var/silent = FALSE) - owner.equip_traitor(employer, silent, src) - -/datum/antagonist/traitor/human/proc/assign_exchange_role() +/datum/antagonist/traitor/proc/assign_exchange_role() //set faction var/faction = "red" if(owner == SSticker.mode.exchange_blue) diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 9e3ffaf483..d40666babb 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -52,7 +52,7 @@ if(I.use_tool(src, user, 0, volume=40)) status = TRUE GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]" - message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") + message_admins("[ADMIN_LOOKUPFLW(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") add_fingerprint(user) return TRUE diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 4a6c9d2db3..fe6e94605b 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -33,6 +33,7 @@ /obj/item/assembly/infra/Destroy() STOP_PROCESSING(SSobj, src) + QDEL_NULL(listener) QDEL_LIST(beams) . = ..() @@ -166,7 +167,9 @@ listener = newloc.AddComponent(/datum/component/redirect, COMSIG_ATOM_EXITED, CALLBACK(src, .proc/check_exit)) /obj/item/assembly/infra/proc/check_exit(atom/movable/offender) - if(offender && ((offender.flags_1 & ABSTRACT_1) || offender == src)) + if(QDELETED(src)) + return + if(offender == src || istype(offender,/obj/effect/beam/i_beam)) return return refreshBeam() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 132e750343..1771609125 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -437,8 +437,8 @@ danger[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //ex. "plasma" = 20 if(danger.len) - message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following: [ADMIN_JMP(src)]") - log_admin("[key_name(usr)] opened a canister that contains the following at [COORD(src)]:") + message_admins("[ADMIN_LOOKUPFLW(usr)] opened a canister that contains the following at [ADMIN_VERBOSEJMP(src)]:") + log_admin("[key_name(usr)] opened a canister that contains the following at [AREACOORD(src)]:") for(var/name in danger) var/msg = "[name]: [danger[name]] moles." log_admin(msg) diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index 88b7f2d38a..c0658c781d 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -114,9 +114,8 @@ var/plasma = air_contents.gases[/datum/gas/plasma] var/n2o = air_contents.gases[/datum/gas/nitrous_oxide] if(n2o || plasma) - var/area/A = get_area(src) - message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][ADMIN_JMP(src)]") - log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [A][COORD(src)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [ADMIN_VERBOSEJMP(src)]") + log_admin("[key_name(usr)] turned on a pump that contains [n2o ? "N2O" : ""][n2o && plasma ? " & " : ""][plasma ? "Plasma" : ""] at [AREACOORD(src)]") else if(on && direction == PUMP_OUT) investigate_log("[key_name(usr)] started a transfer into [holding].
    ", INVESTIGATE_ATMOS) . = TRUE diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index ad6f9e24a5..9bebcfe546 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -46,7 +46,7 @@ return if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) priority_announce("Bluespace artillery fire detected. Brace for impact.") - message_admins("[key_name_admin(usr)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(usr)] has launched an artillery strike.") var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) L+=T diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index ae119db9e7..b233235d81 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -131,7 +131,7 @@ if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Wizard Academy Defender") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Wizard Academy Defender") current_wizard.ghostize() // on the off chance braindead defender gets back in current_wizard.key = C.key @@ -273,7 +273,7 @@ var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) - message_admins("[key_name_admin(C)] was spawned as Dice Servant") + message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant") H.key = C.key var/obj/effect/proc_holder/spell/targeted/summonmob/S = new diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 2723370cb9..f3e2ad84ec 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( topiclimiter[ADMINSWARNED_AT] = minute msg += " Administrators have been informed." log_game("[key_name(src)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute topic limit of [mtl] topic calls in a given game minute") to_chat(src, "[msg]") return @@ -684,11 +684,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) msg += " Administrators have been informed." if (ab) log_game("[key_name(src)] is using the middle click aimbot exploit") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] is using the middle click aimbot exploit") add_system_note("aimbot", "Is using the middle click aimbot exploit") log_game("[key_name(src)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") - message_admins("[key_name_admin(src)] [ADMIN_FLW(usr)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") + message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] Has hit the per-minute click limit of [mcl] clicks in a given game minute") to_chat(src, "[msg]") return diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index a842607235..ecc113b89c 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -1,2 +1,3 @@ /datum/player_details - var/list/player_actions = list() \ No newline at end of file + var/list/player_actions = list() + var/list/logging = list(INDIVIDUAL_ATTACK_LOG, INDIVIDUAL_SAY_LOG, INDIVIDUAL_EMOTE_LOG, INDIVIDUAL_OOC_LOG) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index c968cc9c76..06e555bb32 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -199,16 +199,10 @@ death(0) /mob/living/proc/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] committed suicide at [get_area(src)][COORD(T)] as [src.type].") - message_admins("[key_name(src)] committed suicide at [get_area(src)] as [src.type].") + log_game("[key_name(src)] committed suicide at [AREACOORD(src)] as [src.type].") /mob/living/carbon/human/suicide_log() - var/turf/T = get_turf(src) - - log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [get_area(src)][COORD(T)].") - message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") + log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [AREACOORD(src)].") /mob/living/proc/canSuicide() if(stat == CONSCIOUS) diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index c3345dc761..e71704132a 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -10,8 +10,8 @@ var/static/list/anomaly_armour_types = list( /obj/effect/anomaly/grav = /obj/item/clothing/suit/armor/reactive/repulse, /obj/effect/anomaly/flux = /obj/item/clothing/suit/armor/reactive/tesla, - /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport, - /obj/effect/anomaly/pyro = /obj/item/clothing/suit/armor/reactive/fire) + /obj/effect/anomaly/bluespace = /obj/item/clothing/suit/armor/reactive/teleport + ) if(istype(I, /obj/item/assembly/signaler/anomaly)) var/obj/item/assembly/signaler/anomaly/A = I diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 87b12ad4cf..ddc75830d6 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -65,7 +65,7 @@ spawncount-- successSpawn = TRUE - message_admins("[key_name_admin(new_xeno)] has been made into an alien by an event.") + message_admins("[ADMIN_LOOKUPFLW(new_xeno)] has been made into an alien by an event.") log_game("[key_name(new_xeno)] was spawned as an alien by an event.") spawned_mobs += new_xeno diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 45968df0cf..c17918d733 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -34,6 +34,6 @@ var/mob/dead/observer/new_blob = pick(candidates) var/mob/camera/blob/BC = new_blob.become_overmind() spawned_mobs += BC - message_admins("[key_name_admin(BC)] has been made into a blob overmind by an event.") + message_admins("[ADMIN_LOOKUPFLW(BC)] has been made into a blob overmind by an event.") log_game("[key_name(BC)] was spawned as a blob overmind by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 83c6dcb83d..3760cbe05d 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -34,7 +34,7 @@ add_devil(devil, ascendable = FALSE) spawned_mobs += devil - message_admins("[key_name_admin(devil)] has been made into a devil by an event.") + message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") log_game("[key_name(devil)] was spawned as a devil by an event.") var/datum/job/jobdatum = SSjob.GetJob("Assistant") devil.job = jobdatum.title diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index b19c8358c2..81e93244ea 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -70,7 +70,7 @@ var/list/name_symptoms = list() //for feedback for(var/datum/symptom/S in A.symptoms) name_symptoms += S.name - message_admins("An event has triggered a random advanced virus outbreak on [key_name_admin(H)]! It has these symptoms: [english_list(name_symptoms)]") + message_admins("An event has triggered a random advanced virus outbreak on [ADMIN_LOOKUPFLW(H)]! It has these symptoms: [english_list(name_symptoms)]") log_game("An event has triggered a random advanced virus outbreak on [key_name(H)]! It has these symptoms: [english_list(name_symptoms)]") break diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index b1cebb98c5..698f5130f1 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -37,7 +37,7 @@ player_mind.add_antag_datum(/datum/antagonist/nightmare) S.set_species(/datum/species/shadow/nightmare) playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1) - message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.") + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.") log_game("[key_name(S)] was spawned as a Nightmare by an event.") spawned_mobs += S return SUCCESSFUL_SPAWN diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index 424888f99b..7fca4188b7 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -33,7 +33,7 @@ Mind.transfer_to(operative) Mind.add_antag_datum(/datum/antagonist/nukeop/lone) - message_admins("[key_name_admin(operative)] has been made into lone operative by an event.") + message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into lone operative by an event.") log_game("[key_name(operative)] was spawned as a lone operative by an event.") spawned_mobs += operative return SUCCESSFUL_SPAWN diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index cda2f50ca2..7153587c79 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -422,12 +422,10 @@ /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) if(I.is_hot() && !active) active = 1 - var/turf/bombturf = get_turf(src) - var/area/bombarea = get_area(bombturf) - var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]." + var/message = "[ADMIN_LOOKUP(user)] has primed a [name] for detonation at [ADMIN_VERBOSEJMP(user)]." GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] [COORD(bombturf)].") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(user)].") to_chat(user, "You light [src] on fire.") add_overlay(GLOB.fire_overlay) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 8affd79e52..bd1dbc4f8e 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -189,7 +189,7 @@ var/mob/living/carbon/monkey/bananas = new(drop_location(), TRUE, spammer) if (!QDELETED(bananas)) visible_message("[src] expands!") - bananas.log_message("Spawned via [src] at [COORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) + bananas.log_message("Spawned via [src] at [AREACOORD(src)], Last attached mob: [key_name(spammer)].", INDIVIDUAL_ATTACK_LOG) else if (!spammer) // Visible message in case there are no fingerprints visible_message("[src] fails to expand!") qdel(src) diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 38f8a40ec3..30b4865a9d 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -111,12 +111,11 @@ foodtype = FRUIT /obj/item/reagent_containers/food/snacks/grown/firelemon/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] primes [src]!", "You prime [src]!") - var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [A] [ADMIN_COORDJMP(user)]" + var/message = "[ADMIN_LOOKUPFLW(user)] primed a combustible lemon for detonation at [ADMIN_VERBOSEJMP(user)]" GLOB.bombers += message message_admins(message) - log_game("[key_name(user)] primed a combustible lemon for detonation at [A] [COORD(user)].") + log_game("[key_name(user)] primed a combustible lemon for detonation at [AREACOORD(user)].") if(iscarbon(user)) var/mob/living/carbon/C = user C.throw_mode_on() diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 8455df887e..62c3c0b064 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -195,8 +195,8 @@ to_chat(M, "You are lit on fire from the intense heat of the [name]!") M.adjust_fire_stacks(seed.potency / 20) if(M.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(M)] on fire") - log_game("[key_name(user)] set [key_name(M)] on fire") + message_admins("[ADMIN_LOOKUPFLW(user)] set [ADMIN_LOOKUPFLW(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") /obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity) if(!proximity) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index c35281088d..e9dec09799 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -36,8 +36,8 @@ to_chat(user, "There is too much kudzu here to plant [src].") return FALSE to_chat(user, "You plant [src].") - message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(user)]",0,1) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + message_admins("Kudzu planted by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(user)]") + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) new /datum/spacevine_controller(get_turf(user), mutations, potency, production) qdel(src) diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 5a7c8c93cf..82ff56e7c9 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -136,10 +136,9 @@ max_integrity = 40 /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/attack_self(mob/living/user) - var/area/A = get_area(user) user.visible_message("[user] plucks the stem from [src]!", "You pluck the stem from [src], which begins to hiss loudly!") - message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [A] [ADMIN_COORDJMP(user)]") - log_game("[key_name(user)] primed a cherry bomb for detonation at [A] [COORD(user)].") + message_admins("[ADMIN_LOOKUPFLW(user)] primed a cherry bomb for detonation at [ADMIN_VERBOSEJMP(user)]") + log_game("[key_name(user)] primed a cherry bomb for detonation at [AREACOORD(user)].") prime() /obj/item/reagent_containers/food/snacks/grown/cherry_bomb/deconstruct(disassembled = TRUE) diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index 352d4eff7b..4668f12c3c 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -303,7 +303,7 @@ /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom/attack_self(mob/user) . = ..() if(.) - investigate_log("was planted by [key_name(user)] at [COORD(user)]", INVESTIGATE_BOTANY) + investigate_log("was planted by [key_name(user)] at [AREACOORD(user)]", INVESTIGATE_BOTANY) //// LAVALAND MUSHROOMS //// diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm index 28ee321f50..c53e034ddf 100644 --- a/code/modules/jobs/job_types/silicon.dm +++ b/code/modules/jobs/job_types/silicon.dm @@ -60,9 +60,7 @@ AI /datum/job/ai/announce(mob/living/silicon/ai/AI) . = ..() - var/area/A = get_area(AI) - var/turf/T = get_turf(AI) - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [COORD(T)], [A.name].")) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)].")) /datum/job/ai/config_check() return CONFIG_GET(flag/allow_ai) diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 0cfdf322c4..2cc5a74b6b 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -59,7 +59,6 @@ repopulate_sorted_areas() - SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) //initialize things that are normally initialized after map load initTemplateBounds(bounds) smooth_zlevel(world.maxz) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 9fed915c98..8a7f5cb91e 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -9,7 +9,7 @@ var/list/baseturf_to_replace var/baseturf - + layer = POINT_LAYER /obj/effect/baseturf_helper/Initialize() @@ -30,7 +30,7 @@ var/area/our_area = get_area(src) for(var/i in get_area_turfs(our_area, z)) replace_baseturf(i) - + qdel(src) /obj/effect/baseturf_helper/proc/replace_baseturf(turf/thing) @@ -108,11 +108,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.cyclelinkeddir) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!") else airlock.cyclelinkeddir = dir else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") /obj/effect/mapping_helpers/airlock/locked @@ -127,11 +127,11 @@ var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc if(airlock) if(airlock.locked) - log_world("### MAP WARNING, [src] at [COORD(src)] tried to bolt [airlock] but it's already locked!") + log_world("### MAP WARNING, [src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!") else airlock.locked = TRUE else - log_world("### MAP WARNING, [src] failed to find an airlock at [COORD(src)]") + log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]") //needs to do its thing before spawn_rivers() is called diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 8ad4053f6a..9ad6d59c3a 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -57,12 +57,12 @@ used = FALSE return - playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) + playsound(src, 'sound/effects/phasein.ogg', 100, 1) var/turf/T = deploy_location if(!is_mining_level(T.z)) //only report capsules away from the mining/lavaland level - message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_JMP(T)]") - log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [get_area(T)][COORD(T)]") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a bluespace capsule away from the mining level! [ADMIN_VERBOSEJMP(T)]") + log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [AREACOORD(T)]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) qdel(src) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 953eb1d02c..de5dd92879 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -266,26 +266,29 @@ /obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) to_chat(user, "The wisp has gone missing!") + icon_state = "lantern" return + if(wisp.loc == src) to_chat(user, "You release the wisp. It begins to bob around your head.") - user.sight |= SEE_MOBS icon_state = "lantern" wisp.orbit(user, 20) + user.update_sight() SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") else to_chat(user, "You return the wisp to the lantern.") + var/mob/target if(wisp.orbiting) - var/atom/A = wisp.orbiting.orbiting - if(isliving(A)) - var/mob/living/M = A - M.sight &= ~SEE_MOBS - to_chat(M, "Your vision returns to normal.") - + target = wisp.orbiting.orbiting wisp.stop_orbit() wisp.forceMove(src) + + if (istype(target)) + target.update_sight() + to_chat(target, "Your vision returns to normal.") + icon_state = "lantern-blue" SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") @@ -308,6 +311,8 @@ icon_state = "orb" light_range = 7 layer = ABOVE_ALL_MOB_LAYER + var/sight_flags = SEE_MOBS + var/lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE //Red/Blue Cubes /obj/item/warp_cube @@ -915,8 +920,8 @@ var/old_name = T.name if(T.TerraformTurf(turf_type)) user.visible_message("[user] turns \the [old_name] into [transform_string]!") - message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)]. [ADMIN_COORDJMP(T)]") - log_game("[key_name(user)] fired the lava staff at [get_area(target)] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired the lava staff at [ADMIN_VERBOSEJMP(T)]") + log_game("[key_name(user)] fired the lava staff at [AREACOORD(T)].") timer = world.time + create_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) else @@ -968,7 +973,7 @@ INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) to_chat(user, "You shatter the bottle!") playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - message_admins("[key_name_admin(user)][ADMIN_FLW(user)] has activated a bottle of mayhem!") + message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!") add_logs(user, null, "activated a bottle of mayhem", src) qdel(src) @@ -1008,7 +1013,7 @@ var/mob/living/L = choice - message_admins("[key_name_admin(L)][ADMIN_FLW(L)] has been marked for death by [key_name_admin(user)]!") + message_admins("[ADMIN_LOOKUPFLW(L)] has been marked for death by [ADMIN_LOOKUPFLW(user)]!") var/datum/objective/survive/survive = new survive.owner = L.mind diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 62ef7bde65..2835323172 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -263,25 +263,24 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) icon_state = "Gibtonite active" var/turf/bombturf = get_turf(src) - var/area/A = get_area(bombturf) var/notify_admins = 0 if(z != 5)//Only annoy the admins ingame if we're triggered off the mining zlevel notify_admins = 1 if(notify_admins) if(triggered_by == 1) - message_admins("An explosion has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("An explosion has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") else if(triggered_by == 2) - message_admins("A signal has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") + message_admins("A signal has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)]. Igniter attacher: [ADMIN_LOOKUPFLW(attacher)]") else - message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_COORDJMP(bombturf)].") + message_admins("[ADMIN_LOOKUPFLW(attacher)] has triggered a [name] to detonate at [ADMIN_VERBOSEJMP(bombturf)].") if(triggered_by == 1) - log_game("An explosion has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("An explosion has primed a [name] for detonation at [AREACOORD(bombturf)]") else if(triggered_by == 2) - log_game("A signal has primed a [name] for detonation at [A][COORD(bombturf)]. Igniter attacher: [key_name(attacher)].") + log_game("A signal has primed a [name] for detonation at [AREACOORD(bombturf)]. Igniter attacher: [key_name(attacher)].") else user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.") - log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]") + log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]") det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE) /obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins) diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 8699e02b29..b44daefd3f 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -777,6 +777,32 @@ icon_state = "female_commie" gender = FEMALE +/datum/sprite_accessory/underwear/swimsuit + name = "Ladies Black Swimsuit" + icon_state = "swim_black" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_blue + name = "Ladies Blue Swimsuit" + icon_state = "swim_blue" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_green + name = "Ladies Green Swimsuit" + icon_state = "swim_green" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_purple + name = "Ladies Purple Swimsuit" + icon_state = "swim_purple" + gender = FEMALE + +/datum/sprite_accessory/underwear/swimsuit_red + name = "Ladies Red Swimsuit" + icon_state = "swim_red" + gender = FEMALE + + //////////////////////////// // Undershirt Definitions // //////////////////////////// diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e11a4fc886..5715a1fe87 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -79,7 +79,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/mob/body = loc if(ismob(body)) T = get_turf(body) //Where is the body located? - logging = body.logging //preserve our logs by copying them to our ghost gender = body.gender if(body.mind && body.mind.name) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e4e76f16b9..ffeee159ee 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -169,9 +169,7 @@ var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) - var/start_T_descriptor = "tile in [get_area_name(start_T, TRUE)] ([start_T.x],[start_T.y],[start_T.z])" - var/end_T_descriptor = "tile at [get_area_name(end_T, TRUE)] ([end_T.x],[end_T.y],[end_T.z])" - add_logs(src, throwable_mob, "thrown", addition="grab from [start_T_descriptor] towards [end_T_descriptor]") + add_logs(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") else if(!(I.flags_1 & (NODROP_1|ABSTRACT_1))) thrown_thing = I diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 944e5774ad..4a8870281b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -392,7 +392,7 @@ if(R) if(H.canUseHUD()) if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.getorganslot(ORGAN_SLOT_HUD), /obj/item/organ/cyberimp/eyes/hud/security)) - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS) + investigate_log("[key_name(src)] has been set from [R.fields["criminal"]] to [setcriminal] by [key_name(usr)].", INVESTIGATE_RECORDS) R.fields["criminal"] = setcriminal sec_hud_set_security_status() return @@ -434,6 +434,7 @@ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) GLOB.data_core.addMinorCrime(R.fields["id"], crime) + investigate_log("New Minor Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added a minor crime.") return if("Major Crime") @@ -449,6 +450,7 @@ return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, allowed_access, station_time_timestamp()) GLOB.data_core.addMajorCrime(R.fields["id"], crime) + investigate_log("New Major Crime: [t1]: [t2] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added a major crime.") return @@ -916,6 +918,9 @@ /mob/living/carbon/human/species/corporate race = /datum/species/corporate +/mob/living/carbon/human/species/dullahan + race = /datum/species/dullahan + /mob/living/carbon/human/species/fly race = /datum/species/fly @@ -979,18 +984,36 @@ /mob/living/carbon/human/species/golem/plastic race = /datum/species/golem/plastic +/mob/living/carbon/human/species/golem/clockwork + race = /datum/species/golem/clockwork + +/mob/living/carbon/human/species/golem/clockwork/no_scrap + race = /datum/species/golem/clockwork/no_scrap + /mob/living/carbon/human/species/jelly race = /datum/species/jelly /mob/living/carbon/human/species/jelly/slime race = /datum/species/jelly/slime +/mob/living/carbon/human/species/jelly/stargazer + race = /datum/species/jelly/stargazer + +/mob/living/carbon/human/species/jelly/luminescent + race = /datum/species/jelly/luminescent + /mob/living/carbon/human/species/lizard race = /datum/species/lizard /mob/living/carbon/human/species/lizard/ashwalker race = /datum/species/lizard/ashwalker +/mob/living/carbon/human/species/moth + race = /datum/species/moth + +/mob/living/carbon/human/species/mush + race = /datum/species/mush + /mob/living/carbon/human/species/plasma race = /datum/species/plasmaman @@ -1000,6 +1023,9 @@ /mob/living/carbon/human/species/shadow race = /datum/species/shadow +/mob/living/carbon/human/species/shadow/nightmare + race = /datum/species/shadow/nightmare + /mob/living/carbon/human/species/skeleton race = /datum/species/skeleton @@ -1009,6 +1035,9 @@ /mob/living/carbon/human/species/synth/military race = /datum/species/synth/military +/mob/living/carbon/human/species/vampire + race = /datum/species/vampire + /mob/living/carbon/human/species/zombie race = /datum/species/zombie diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2b5ed79d7b..9d32cab4a8 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1260,6 +1260,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += ((health_deficiency-39) / 75) // CIT CHANGE - adds -39 to health deficiency penalty to make the transition to low health movement a little less jarring else . += ((health_deficiency-39) / 25) // CIT CHANGE - ditto + if(CONFIG_GET(flag/disable_human_mood)) + var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 + if((hungry >= 70) && !flight) //Being hungry will still allow you to use a flightsuit/wings. + . += hungry / 50 GET_COMPONENT_FROM(mood, /datum/component/mood, H) if(mood && !flight) //How can depression slow you down if you can just fly away from your problems? diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 3ad39bb016..c5820eb8c1 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -45,10 +45,10 @@ var/turf/padturf = get_turf(T) var/padloc if(padturf) - padloc = COORD(padturf) + padloc = AREACOORD(padturf) else padloc = "(UNKNOWN)" - log_talk(src,"HOLOPAD [padloc]: [key_name(src)] : [message]", LOGSAY) + log_talk(src,"HOLOPAD in [padloc]: [key_name(src)] : [message]", LOGSAY) send_speech(message, 7, T, "robot", get_spans(), language) to_chat(src, "Holopad transmitted, [real_name] \"[message]\"") else diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index a75089ed68..f558ff3907 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -3,8 +3,6 @@ return stat = DEAD canmove = 0 - card.removePersonality() - card.forceMove(loc) update_sight() clear_fullscreens() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 29ae671d03..0135fca88e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -90,6 +90,11 @@ return FALSE /mob/living/silicon/pai/Destroy() + if (loc != card) + card.forceMove(drop_location()) + card.pai = null + card.cut_overlays() + card.add_overlay("pai-off") GLOB.pai_list -= src return ..() diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index ce2605e2cf..41bd62ea16 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -57,7 +57,7 @@ if(client) client.perspective = EYE_PERSPECTIVE client.eye = card - var/turf/T = get_turf(src) + var/turf/T = drop_location() card.forceMove(T) forceMove(card) canmove = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index ef1da59c36..0356c934ff 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -130,7 +130,7 @@ SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown lawupdate = 0 connected_ai = null - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.") log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") var/time = time2text(world.realtime,"hh:mm:ss") GLOB.lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 90532829df..51698d1ddb 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -558,7 +558,7 @@ name = "Lisa" real_name = "Lisa" gender = FEMALE - desc = "It's a corgi with a cute pink bow." + desc = "She's tearing you apart." gold_core_spawnable = NO_SPAWN unique_pet = TRUE icon_state = "lisa" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 61e7153434..dc917f4210 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -108,6 +108,15 @@ /mob/living/simple_animal/Destroy() GLOB.simple_animals[AIStatus] -= src + + if(nest) + nest.spawned_mobs -= src + nest = null + + var/turf/T = get_turf(src) + if (T && AIStatus == AI_Z_OFF) + SSidlenpcpool.idle_mobs_by_zlevel[T.z] -= src + return ..() /mob/living/simple_animal/updatehealth() @@ -424,16 +433,6 @@ if(changed) animate(src, transform = ntransform, time = 2, easing = EASE_IN|EASE_OUT) - - -/mob/living/simple_animal/Destroy() - if(nest) - nest.spawned_mobs -= src - nest = null - GLOB.simple_animals -= src - return ..() - - /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion toggle_ai(AI_OFF) // To prevent any weirdness. diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 6dd8b73a4b..80af604d99 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -48,7 +48,4 @@ for(var/datum/action/A in client.player_details.player_actions) A.Grant(src) - if(!GLOB.individual_log_list[ckey]) - GLOB.individual_log_list[ckey] = logging - else - logging = GLOB.individual_log_list[ckey] + log_message("Client [key_name(src)] has taken ownership of mob [src]", INDIVIDUAL_OWNERSHIP_LOG) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index aadb7e6d58..fbd29e86a5 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -1,4 +1,5 @@ /mob/Logout() + log_message("[key_name(src)] is no longer owning mob [src]", INDIVIDUAL_OWNERSHIP_LOG) SStgui.on_logout(src) unset_machine() GLOB.player_list -= src @@ -8,4 +9,4 @@ if(loc) loc.on_log(FALSE) - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c9ec43c387..931eb68f13 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -785,6 +785,7 @@ //This will update a mob's name, real_name, mind.name, GLOB.data_core records, pda, id and traitor text //Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn /mob/proc/fully_replace_character_name(oldname,newname) + log_message("[src] name changed from [oldname] to [newname]", INDIVIDUAL_OWNERSHIP_LOG) if(!newname) return 0 real_name = newname @@ -841,6 +842,14 @@ return /mob/proc/update_sight() + for(var/O in orbiters) + var/datum/orbit/orbit = O + var/obj/effect/wisp/wisp = orbit.orbiter + if (istype(wisp)) + sight |= wisp.sight_flags + if(!isnull(wisp.lighting_alpha)) + lighting_alpha = min(lighting_alpha, wisp.lighting_alpha) + sync_lighting_plane_alpha() /mob/proc/sync_lighting_plane_alpha() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 67f77307e5..4cb9723dbd 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -67,8 +67,6 @@ var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining. - var/list/mapobjs = list() - var/in_throw_mode = 0 var/job = null//Living diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 8ef39f3b06..55e6798053 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -434,7 +434,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp to_chat(M, "Control of your mob has been offered to dead players.") if(usr) log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.") - message_admins("[key_name_admin(usr)] has offered control of ([key_name_admin(M)]) to ghosts") + message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts") var/poll_message = "Do you want to play as [M.real_name]?" if(M.mind && M.mind.assigned_role) poll_message = "[poll_message] Job:[M.mind.assigned_role]." @@ -455,7 +455,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp return TRUE else to_chat(M, "There were no ghosts willing to take control.") - message_admins("No ghosts were willing to take control of [key_name_admin(M)])") + message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])") return FALSE /mob/proc/is_flying(mob/M = src) @@ -477,12 +477,18 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(!LAZYLEN(message) || !message_type) return + if(client) + if(!islist(client.player_details.logging[message_type])) + client.player_details.logging[message_type] = list() + if(!islist(logging[message_type])) logging[message_type] = list() var/list/timestamped_message = list("[LAZYLEN(logging[message_type]) + 1]\[[time_stamp()]\] [key_name(src)]" = message) logging[message_type] += timestamped_message + if(client) + client.player_details.logging[message_type] += timestamped_message /mob/proc/can_hear() . = TRUE diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 258f470e3f..9fd8e4baf2 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -72,7 +72,7 @@ Contents: throw EXCEPTION("Ninja created with incorrect mind") spawned_mobs += Ninja - message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.") + message_admins("[ADMIN_LOOKUPFLW(Ninja)] has been made into a ninja by an event.") log_game("[key_name(Ninja)] was spawned as a ninja by an event.") return SUCCESSFUL_SPAWN diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 66b90f4a1e..a2bbe73937 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -140,7 +140,7 @@ By design, d1 is the smallest direction and d2 is the highest return user.visible_message("[user] cuts the cable.", "You cut the cable.") stored.add_fingerprint(user) - investigate_log("was cut by [key_name(usr, usr.client)] in [get_area(T)]", INVESTIGATE_WIRES) + investigate_log("was cut by [key_name(usr, usr.client)] in [AREACOORD(src)]", INVESTIGATE_WIRES) deconstruct() return diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 0ea6a8a6f0..0e6c3176e7 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -289,18 +289,17 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE // Sound the alert if gravity was just enabled or disabled. var/alert = FALSE - var/area/A = get_area(src) if(SSticker.IsRoundInProgress()) if(on) // If we turned on and the game is live. if(gravity_in_level() == 0) alert = 1 investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought online [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") else if(gravity_in_level() == 1) alert = 1 investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought offline with no backup generator. [A][ADMIN_COORDJMP(src)]") + message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") update_icon() update_list() diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index f3c6da7631..79e94be7f0 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -82,8 +82,8 @@ /obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj) ..() if(!going_kaboom && istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE))) - message_admins("[key_name_admin(Proj.firer)] triggered an Abductor Core explosion via projectile.") - log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion via projectile.") + message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") + log_game("[key_name(Proj.firer)] triggered an Abductor Core explosion at [AREACOORD(src)] via projectile.") overload() /obj/machinery/power/rtg/abductor/blob_act(obj/structure/blob/B) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 27ba1dcaf5..670dd0a8e1 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,3 +1,8 @@ +//emitter construction defines +#define EMITTER_UNWRENCHED 0 +#define EMITTER_WRENCHED 1 +#define EMITTER_WELDED 2 + /obj/machinery/power/emitter name = "emitter" desc = "A heavy-duty industrial laser, often used in containment fields and power generation." @@ -14,14 +19,14 @@ active_power_usage = 300 var/icon_state_on = "emitter_+a" - var/active = 0 - var/powered = 0 + var/active = FALSE + var/powered = FALSE var/fire_delay = 100 var/maximum_fire_delay = 100 var/minimum_fire_delay = 20 var/last_shot = 0 var/shot_number = 0 - var/state = 0 + var/state = EMITTER_UNWRENCHED var/locked = FALSE var/allow_switch_interact = TRUE @@ -46,14 +51,14 @@ idle_power_usage = FALSE locked = TRUE req_access_txt = "100" - state = 2 + state = EMITTER_WELDED use_power = FALSE /obj/machinery/power/emitter/Initialize() . = ..() RefreshParts() wires = new /datum/wires/emitter(src) - if(state == 2 && anchored) + if(state == EMITTER_WELDED && anchored) connect_to_network() sparks = new @@ -93,9 +98,9 @@ /obj/machinery/power/emitter/Destroy() if(SSticker.IsRoundInProgress()) var/turf/T = get_turf(src) - message_admins("Emitter deleted at [ADMIN_COORDJMP(T)]",0,1) - log_game("Emitter deleted at [COORD(T)]") - investigate_log("deleted at [get_area(src)] [COORD(T)]", INVESTIGATE_SINGULO) + message_admins("Emitter deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("Emitter deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) QDEL_NULL(sparks) return ..() @@ -108,33 +113,35 @@ /obj/machinery/power/emitter/interact(mob/user) add_fingerprint(user) - if(state == 2) + if(state == EMITTER_WELDED) if(!powernet) - to_chat(user, "The emitter isn't connected to a wire!") - return 1 + to_chat(user, "\The [src] isn't connected to a wire!") + return TRUE if(!locked && allow_switch_interact) - if(src.active==1) - src.active = 0 - to_chat(user, "You turn off \the [src].") - message_admins("Emitter turned off by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("Emitter turned off by [key_name(user)] in [COORD(src)]") - investigate_log("turned off by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + if(active == TRUE) + active = FALSE + to_chat(user, "You turn off [src].") else - src.active = 1 - to_chat(user, "You turn on \the [src].") - src.shot_number = 0 - src.fire_delay = maximum_fire_delay - investigate_log("turned on by [key_name(user)] at [get_area(src)]", INVESTIGATE_SINGULO) + active = TRUE + to_chat(user, "You turn on [src].") + shot_number = 0 + fire_delay = maximum_fire_delay + + message_admins("Emitter turned [active ? "ON" : "OFF"] by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(src)]") + log_game("Emitter turned [active ? "ON" : "OFF"] by [key_name(user)] in [AREACOORD(src)]") + investigate_log("turned [active ? "ON" : "OFF"] by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + update_icon() + else to_chat(user, "The controls are locked!") else to_chat(user, "[src] needs to be firmly secured to the floor first!") - return 1 + return TRUE /obj/machinery/power/emitter/attack_animal(mob/living/simple_animal/M) if(ismegafauna(M) && anchored) - state = 0 + state = EMITTER_UNWRENCHED anchored = FALSE M.visible_message("[M] rips [src] free from its moorings!") else @@ -145,26 +152,26 @@ /obj/machinery/power/emitter/process() if(stat & (BROKEN)) return - if(src.state != 2 || (!powernet && active_power_usage)) - src.active = 0 + if(state != EMITTER_WELDED || (!powernet && active_power_usage)) + active = FALSE update_icon() return - if(src.active == 1) + if(active == TRUE) if(!active_power_usage || avail(active_power_usage)) add_load(active_power_usage) if(!powered) - powered = 1 + powered = TRUE update_icon() - investigate_log("regained power and turned on at [get_area(src)]", INVESTIGATE_SINGULO) + investigate_log("regained power and turned ON at [AREACOORD(src)]", INVESTIGATE_SINGULO) else if(powered) - powered = 0 + powered = FALSE update_icon() - investigate_log("lost power and turned off at [get_area(src)]", INVESTIGATE_SINGULO) - log_game("Emitter lost power in ([x],[y],[z])") + investigate_log("lost power and turned OFF at [AREACOORD(src)]", INVESTIGATE_SINGULO) + log_game("Emitter lost power in [AREACOORD(src)]") return - if(charge <=80) - charge+=5 + if(charge <= 80) + charge += 5 if(!check_delay() || manual == TRUE) return FALSE fire_beam() @@ -177,7 +184,7 @@ /obj/machinery/power/emitter/proc/fire_beam_pulse() if(!check_delay()) return FALSE - if(state != 2) + if(state != EMITTER_WELDED) return FALSE if(avail(active_power_usage)) add_load(active_power_usage) @@ -185,7 +192,7 @@ /obj/machinery/power/emitter/proc/fire_beam(mob/user) var/obj/item/projectile/P = new projectile_type(get_turf(src)) - playsound(get_turf(src), projectile_sound, 50, 1) + playsound(get_turf(src), projectile_sound, 50, TRUE) if(prob(35)) sparks.start() P.firer = user? user : src @@ -212,7 +219,7 @@ to_chat(user, "Turn \the [src] off first!") return FAILED_UNFASTEN - else if(state == EM_WELDED) + else if(state == EMITTER_WELDED) if(!silent) to_chat(user, "[src] is welded to the floor!") return FAILED_UNFASTEN @@ -223,9 +230,9 @@ . = ..() if(. == SUCCESSFUL_UNFASTEN) if(anchored) - state = EM_SECURED + state = EMITTER_WRENCHED else - state = EM_UNSECURED + state = EMITTER_UNWRENCHED /obj/machinery/power/emitter/wrench_act(mob/living/user, obj/item/I) default_unfasten_wrench(user, I) @@ -237,26 +244,26 @@ return TRUE switch(state) - if(EM_UNSECURED) + if(EMITTER_UNWRENCHED) to_chat(user, "The [src.name] needs to be wrenched to the floor!") - if(EM_SECURED) + if(EMITTER_WRENCHED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to weld the [name] to the floor.", \ "You start to weld \the [src] to the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_WELDED + state = EMITTER_WELDED to_chat(user, "You weld \the [src] to the floor.") connect_to_network() - if(EM_WELDED) + if(EMITTER_WELDED) if(!I.tool_start_check(user, amount=0)) return TRUE user.visible_message("[user.name] starts to cut the [name] free from the floor.", \ "You start to cut \the [src] free from the floor...", \ "You hear welding.") if(I.use_tool(src, user, 20, volume=50)) - state = EM_SECURED + state = EMITTER_WRENCHED to_chat(user, "You cut \the [src] free from the floor.") disconnect_from_network() @@ -307,14 +314,14 @@ icon_state = "protoemitter" icon_state_on = "protoemitter_+a" can_buckle = TRUE - buckle_lying = 0 + buckle_lying = FALSE var/view_range = 12 var/datum/action/innate/protoemitter/firing/auto //BUCKLE HOOKS /obj/machinery/power/emitter/prototype/unbuckle_mob(mob/living/buckled_mob,force = 0) - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) manual = FALSE for(var/obj/item/I in buckled_mob.held_items) if(istype(I, /obj/item/turret_control)) @@ -335,7 +342,7 @@ return M.forceMove(get_turf(src)) ..() - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(src,'sound/mecha/mechmove01.ogg', 50, TRUE) M.pixel_y = 14 layer = 4.1 if(M.client) @@ -362,7 +369,7 @@ /datum/action/innate/protoemitter/firing/Activate() if(PE.manual) - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) PE.manual = FALSE name = "Switch to Manual Firing" desc = "The emitter will only fire on your command and at your designated target" @@ -373,7 +380,7 @@ UpdateButtonIcon() return else - playsound(PE,'sound/mecha/mechmove01.ogg', 50, 1) + playsound(PE,'sound/mecha/mechmove01.ogg', 50, TRUE) name = "Switch to Automatic Firing" desc = "Emitters will switch to periodic firing at your last target" button_icon_state = "mech_zoom_off" @@ -444,4 +451,9 @@ E.fire_beam(user) delay = world.time + 10 else if (E.charge < 10) - playsound(get_turf(user),'sound/machines/buzz-sigh.ogg', 50, 1) + playsound(src,'sound/machines/buzz-sigh.ogg', 50, TRUE) + + +#undef EMITTER_UNWRENCHED +#undef EMITTER_WRENCHED +#undef EMITTER_WELDED diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 909feeea07..4399939caf 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -332,9 +332,8 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("A singulo exists and a containment field has failed at [A] [ADMIN_COORDJMP(T)].") - investigate_log("has failed whilst a singulo exists at [A] [COORD(T)].", INVESTIGATE_SINGULO) + message_admins("A singulo exists and a containment field has failed at [ADMIN_VERBOSEJMP(T)].") + investigate_log("has failed whilst a singulo exists at [AREACOORD(T)].", INVESTIGATE_SINGULO) O.last_warning = world.time /obj/machinery/field/generator/shock(mob/living/user) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 4d4eb73687..66870d73e8 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -119,9 +119,9 @@ strength++ strength_change() - message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("increased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer increased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer increased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("increased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/proc/remove_strength(s) @@ -129,9 +129,9 @@ strength-- strength_change() - message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [COORD(src)]") - investigate_log("decreased to [strength] by [key_name(usr)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer decreased to [strength] by [ADMIN_LOOKUPFLW(usr)] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer decreased to [strength] by [key_name(usr)] in [AREACOORD(src)]") + investigate_log("decreased to [strength] by [key_name(usr)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) /obj/machinery/particle_accelerator/control_box/power_change() @@ -206,9 +206,9 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active - investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"]", INVESTIGATE_SINGULO) - message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name_admin(usr) : "outside forces"][ADMIN_QUE(usr)] [ADMIN_FLW(usr)] in [ADMIN_COORDJMP(src)]",0,1) - log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] in [COORD(src)]") + investigate_log("turned [active?"ON":"OFF"] by [usr ? key_name(usr) : "outside forces"] at [AREACOORD(src)]", INVESTIGATE_SINGULO) + message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? ADMIN_LOOKUPFLW(usr) : "outside forces"] in [ADMIN_VERBOSEJMP(src)]") + log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? "[key_name(usr)]" : "outside forces"] at [AREACOORD(src)]") if(active) use_power = ACTIVE_POWER_USE for(var/CP in connected_parts) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 5df8fb1d13..25623661d6 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -129,12 +129,11 @@ /obj/singularity/proc/admin_investigate_setup() var/turf/T = get_turf(src) - var/area/A = get_area(T) last_warning = world.time var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1) if(!count) - message_admins("A singulo has been created without containment fields active at [A] [ADMIN_COORDJMP(T)].") - investigate_log("was created at [A] [COORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) + message_admins("A singulo has been created without containment fields active at [ADMIN_VERBOSEJMP(T)].") + investigate_log("was created at [AREACOORD(T)]. [count?"":"No containment fields were active"]", INVESTIGATE_SINGULO) /obj/singularity/proc/dissipate() if(!dissipate) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 7bfdd86dfa..8612b2d9ec 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -151,9 +151,9 @@ //crowbarring it ! var/turf/T = get_turf(src) if(default_deconstruction_crowbar(I)) - message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) - log_game("[src] has been deconstructed by [key_name(user)]") - investigate_log("SMES deconstructed by [key_name(user)]", INVESTIGATE_SINGULO) + message_admins("[src] has been deconstructed by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") + log_game("[src] has been deconstructed by [key_name(user)] at [AREACOORD(src)]") + investigate_log("SMES deconstructed by [key_name(user)] at [AREACOORD(src)]", INVESTIGATE_SINGULO) return else if(panel_open && istype(I, /obj/item/crowbar)) return @@ -173,11 +173,10 @@ /obj/machinery/power/smes/Destroy() if(SSticker.IsRoundInProgress()) - var/area/A = get_area(src) var/turf/T = get_turf(src) - message_admins("SMES deleted at [A][ADMIN_JMP(T)]") - log_game("SMES deleted at [A][COORD(T)]") - investigate_log("deleted at [A][COORD(T)]", INVESTIGATE_SINGULO) + message_admins("SMES deleted at [ADMIN_VERBOSEJMP(T)]") + log_game("SMES deleted at [AREACOORD(T)]") + investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) if(terminal) disconnect_terminal() return ..() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 9a6d8ed3af..cf9b697d00 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -21,7 +21,7 @@ . = ..() GLOB.poi_list += src var/turf/T = get_turf(src) - var/msg = "A pulse rifle prize has been created at [ADMIN_COORDJMP(T)]" + var/msg = "A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]" message_admins(msg) log_game(msg) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 7c7af4e27b..e7b628653f 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -83,7 +83,7 @@ playsound(user, "explosion", 100, 1) var/turf/starting = get_turf(user) var/turf/targturf = get_turf(target) - var/log_str = "Blast wave fired from [ADMIN_COORDJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_COORDJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." + var/log_str = "Blast wave fired from [ADMIN_VERBOSEJMP(starting)] ([get_area_name(user, TRUE)]) at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [user.name]([user.ckey]) with power [heavy]/[medium]/[light]." message_admins(log_str) log_game(log_str) var/obj/item/projectile/blastwave/BW = new(loc, heavy, medium, light) diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index e57d77bdf9..e51c3573e3 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -44,8 +44,8 @@ grenades -= F F.forceMove(user.loc) F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired a grenade ([F.name]) from a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") + log_game("[key_name(user)] fired a grenade ([F.name]) with a grenade launcher ([src]) from [AREACOORD(user)] at [target] [AREACOORD(target)].") F.active = 1 F.icon_state = initial(F.icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index cf06f55e79..94d4d49ded 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -231,7 +231,6 @@ if(!new_mob) return new_mob.grant_language(/datum/language/common) - new_mob.logging = M.logging // Some forms can still wear some items for(var/obj/item/W in contents) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index d64096c71f..a8b0919906 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -142,9 +142,9 @@ on = !on update_icon() if(on) - message_admins("[key_name_admin(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(src)].") - log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [COORD(src)].") - add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)].") + message_admins("[ADMIN_LOOKUPFLW(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [ADMIN_VERBOSEJMP(src)].") + log_game("[key_name(usr)] activated a smoke machine that contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") + add_logs(usr, src, "has activated [src] which contains [english_list(reagents.reagent_list)] at [AREACOORD(src)].") if("goScreen") screen = params["screen"] . = TRUE diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 51fda371c1..e19d2c20d7 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -24,7 +24,7 @@ if(holder && holder.my_atom) var/atom/A = holder.my_atom var/turf/T = get_turf(A) - var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]" + var/message = "A [reaction_name] reaction has occurred in [ADMIN_VERBOSEJMP(T)]" message += " (VV)" var/mob/M = get(A, /mob) @@ -34,7 +34,7 @@ message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" message_admins(message, 0, 1) - log_game("[reaction_name] chemical mob spawn reaction occuring at [COORD(T)]([get_area_name(T)]) carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") + log_game("[reaction_name] chemical mob spawn reaction occuring at [AREACOORD(T)] carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]") playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 1e65a96389..8b8c009a43 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -6,18 +6,17 @@ /datum/chemical_reaction/reagent_explosion/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/inside_msg if(ismob(holder.my_atom)) var/mob/M = holder.my_atom - inside_msg = " inside [key_name_admin(M)]" + inside_msg = " inside [ADMIN_LOOKUPFLW(M)]" var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]" - message_admins("Reagent explosion reaction occurred at [A] [ADMIN_COORDJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") - log_game("Reagent explosion reaction occurred at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) + message_admins("Reagent explosion reaction occurred at [ADMIN_VERBOSEJMP(T)][inside_msg]. Last Fingerprint: [touch_msg].") + log_game("Reagent explosion reaction occurred at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"]." ) var/datum/effect_system/reagents_explosion/e = new() e.set_up(modifier + round(created_volume/strengthdiv, 1), T, 0, 0) e.start() diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 0ab98a1f99..c68c0a16b0 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -428,14 +428,13 @@ /datum/chemical_reaction/slime/slimeexplosion/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) - var/area/A = get_area(T) var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) var/mob/toucher = get_mob_by_key(lastkey) touch_msg = "[ADMIN_LOOKUPFLW(toucher)]." - message_admins("Slime Explosion reaction started at [A] [ADMIN_COORDJMP(T)]. Last Fingerprint: [touch_msg]") - log_game("Slime Explosion reaction started at [A] [COORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") + message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]") + log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") T.visible_message("The slime extract begins to vibrate violently !") addtimer(CALLBACK(src, .proc/boom, holder), 50) var/obj/item/slime_extract/M = holder.my_atom diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 054fe077c3..4a40addc5d 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -110,9 +110,9 @@ else if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].") visible_message("[src] spills its contents all over [target].") reagents.reaction(target, TOUCH) if(QDELETED(src)) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 7dfe095a6d..3a64da8f04 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -29,9 +29,9 @@ R += A.id + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) - add_logs(thrownby, target, "splashed [english_list(reagents.reagent_list)]", "at [target][COORD(target)]") - log_game("[key_name(thrownby)] splashed [english_list(reagents.reagent_list)] at [COORD(target)].") - message_admins("[key_name_admin(thrownby)] splashed [english_list(reagents.reagent_list)] at [ADMIN_COORDJMP(target)].") + add_logs(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] at [ADMIN_VERBOSEJMP(target)].") reagents.reaction(M, TOUCH) add_logs(user, M, "splashed", R) reagents.clear_reagents() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9a492d9a33..b0e101f76a 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -50,16 +50,15 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - var/area/area = get_area(src) if(reagents.has_reagent("sacid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired sulphuric acid from \a [src] at [area] ([T.x], [T.y], [T.z]).") + message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("facid")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Fluacid from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") if(reagents.has_reagent("lube")) - message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [area] [ADMIN_COORDJMP(T)].") - log_game("[key_name(user)] fired Space lube from \a [src] at [area] [COORD(T)].") + message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") + log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index ddc88301b2..508f3815a0 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -78,7 +78,7 @@ ..() if(!QDELETED(src)) //wasn't deleted by the projectile's effects. if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - var/boom_message = "[key_name_admin(P.firer)] triggered a fueltank explosion via projectile." + var/boom_message = "[ADMIN_LOOKUPFLW(P.firer)] triggered a fueltank explosion via projectile." GLOB.bombers += boom_message message_admins(boom_message) var/log_message = "triggered a fueltank explosion via projectile." @@ -102,12 +102,11 @@ W.update_icon() else var/turf/T = get_turf(src) - var/area/A = get_area(T) user.visible_message("[user] catastrophically fails at refilling [user.p_their()] [W.name]!", "That was stupid of you.") - var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool at [A] [ADMIN_COORDJMP(T)]." + var/message_admins = "[ADMIN_LOOKUPFLW(user)] triggered a fueltank explosion via welding tool at [ADMIN_VERBOSEJMP(T)]." GLOB.bombers += message_admins message_admins(message_admins) - var/message_log = "triggered a fueltank explosion via welding tool at [A] [COORD(T)]." + var/message_log = "triggered a fueltank explosion via welding tool at [AREACOORD(T)]." user.log_message(message_log, INDIVIDUAL_ATTACK_LOG) log_game("[key_name(user)] [message_log]") log_attack("[key_name(user)] [message_log]") diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 889bb2e0c5..a29722b4af 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor/inverted/Initialize(mapload) . = ..() if(mapload && !(dir in GLOB.diagonals)) - log_game("### MAPPING ERROR: [src] at [COORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") + log_game("### MAPPING ERROR: [src] at [AREACOORD(src)] spawned without using a diagonal dir. Please replace with a normal version.") // Auto conveyour is always on unless unpowered diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 1e4536058a..5b42c777f1 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -512,8 +512,8 @@ /obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName) var/turf/T = get_turf(user) - message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1) - log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])") + message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(T)]") + log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in [AREACOORD(T)]") #undef SCANTYPE_POKE #undef SCANTYPE_IRRADIATE @@ -658,8 +658,8 @@ //Admin Warning proc for relics /obj/item/relic/proc/warn_admins(mob/user, RelicType, priority = 1) var/turf/T = get_turf(src) - var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])" + var/log_msg = "[RelicType] relic used by [key_name(user)] in [AREACOORD(T)]" if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK! - message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1) + message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game(log_msg) investigate_log(log_msg, "experimentor") diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index cf45b91dfe..d37ecfe052 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -176,7 +176,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) message_admins("Legion took damage while the necropolis gate was closed, and has released itself!") log_game("Legion took damage while the necropolis gate was closed and released itself.") else - message_admins("[user ? key_name_admin(user):"Unknown"] has released Legion!") + message_admins("[user ? ADMIN_LOOKUPFLW(user):"Unknown"] has released Legion!") log_game("[user ? key_name(user):"Unknown"] released Legion.") var/sound/legion_sound = sound('sound/creatures/legion_spawn.ogg') diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 8c5f5aec8d..fc32b60e6d 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -104,7 +104,7 @@ authorized += ID - message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch", 0, 1) + message_admins("[ADMIN_LOOKUPFLW(user)] has authorized early shuttle launch") log_game("[key_name(user)] has authorized early shuttle launch in [COORD(src)]") // Now check if we're on our way . = TRUE @@ -143,12 +143,8 @@ return var/time = TIME_LEFT - message_admins("[key_name_admin(user.client)] \ - (?) \ - (FLW) \ - has emagged the emergency shuttle [time] seconds before launch.", 0, 1) - log_game("[key_name(user)] has emagged the emergency shuttle in \ - [COORD(src)] [time] seconds before launch.") + message_admins("[ADMIN_LOOKUPFLW(user.client)] has emagged the emergency shuttle [time] seconds before launch.") + log_game("[key_name(user)] has emagged the emergency shuttle in [COORD(src)] [time] seconds before launch.") obj_flags |= EMAGGED SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL var/datum/species/S = new diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index cab76612b9..bfdd391f05 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -155,8 +155,7 @@ if(M.id == params["id"] && M.timer && M.timeLeft() >= 50) M.setTimer(50) . = TRUE - message_admins("[key_name_admin(usr)] fast travelled \ - [M]") + message_admins("[key_name_admin(usr)] fast travelled [M]") log_admin("[key_name(usr)] fast travelled [M]") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[M.name]") break @@ -181,10 +180,8 @@ var/obj/docking_port/mobile/mdp = action_load(S) if(mdp) user.forceMove(get_turf(mdp)) - message_admins("[key_name_admin(usr)] loaded [mdp] \ - with the shuttle manipulator.") - log_admin("[key_name(usr)] loaded [mdp] with the \ - shuttle manipulator.") + message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.") + log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]") update_icon() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 6a14fca455..f42f7bfc9c 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", INVESTIGATE_CARGO) if(SO.pack.dangerous) - message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.") + message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)] has shipped.") purchases++ investigate_log("[purchases] orders in this shipment, worth [value] credits. [SSshuttle.points] credits left.", INVESTIGATE_CARGO) diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 92db588be1..414aa10933 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -137,7 +137,7 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE) /proc/rightandwrong(summon_type, mob/user, survivor_probability) if(user) //in this case either someone holding a spellbook or a badmin to_chat(user, "You summoned [summon_type]!") - message_admins("[key_name_admin(user, 1)] summoned [summon_type]!") + message_admins("[key_name_admin(user, TRUE)] summoned [summon_type]!") log_game("[key_name(user)] summoned [summon_type]!") if(summon_type == SUMMON_MAGIC) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 9e56e94d74..be2c4f92bd 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -185,7 +185,7 @@ T.ex_act(EXPLODE_DEVASTATE) point.Beam(get_target_turf(),icon_state="bsa_beam",time=50,maxdistance = world.maxx) //ZZZAP - message_admins("[key_name_admin(user)] has launched an artillery strike.") + message_admins("[ADMIN_LOOKUPFLW(user)] has launched an artillery strike.") explosion(bullseye,ex_power,ex_power*2,ex_power*4) reload() diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 0c67b8267d..03215aa6d6 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -46,7 +46,7 @@ user.visible_message("[user] successfully brainwashes [target]!", "You succeed in brainwashing [target].") to_chat(target, "A new compulsion fills your mind... you feel forced to obey it!") brainwash(target, objective) - message_admins("[key_name_admin(user)] surgically brainwashed [key_name_admin(target)] with the objective '[objective]'.") + message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.") log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.") return TRUE diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 10c825cb4a..2521037963 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -569,7 +569,7 @@ cooldown = COOLDOWN_NONE if(message_admins) - message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") + message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") SSblackbox.record_feedback("tally", "voice_of_god", 1, log_message) diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 2738e18b19..f5f7bf1d9d 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -38,6 +38,18 @@ req_access_txt = "25" refill_canister = /obj/item/vending_refill/boozeomat +/obj/machinery/vending/boozeomat/maint + products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/reagent_containers/food/drinks/bottle/absinthe = 1, + /obj/item/reagent_containers/food/drinks/bottle/limejuice = 1, + /obj/item/reagent_containers/food/drinks/bottle/cream = 1, + /obj/item/reagent_containers/food/drinks/soda_cans/tonic = 1, + /obj/item/reagent_containers/food/drinks/drinkingglass = 10, + /obj/item/reagent_containers/food/drinks/ice = 3, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6, + /obj/item/reagent_containers/food/drinks/flask = 1) + req_access_txt = "0" + /obj/item/vending_refill/boozeomat machine_name = "Booze-O-Mat" icon_state = "refill_booze" diff --git a/html/changelogs/AutoChangeLog-pr-7022.yml b/html/changelogs/AutoChangeLog-pr-7022.yml new file mode 100644 index 0000000000..7c9f43d2de --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7022.yml @@ -0,0 +1,5 @@ +author: "iksyp" +delete-after: True +changes: + - bugfix: "Ever since the great emotion purge of 2558, people were able to work at top efficiency, even while starving to death. This is no longer the case, Nanotrasen Scientists say." + - admin: "Hunger slowdown only applies if mood is disabled in the config." diff --git a/html/changelogs/AutoChangeLog-pr-7024.yml b/html/changelogs/AutoChangeLog-pr-7024.yml new file mode 100644 index 0000000000..133c0feb43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7024.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "The Pubbystation maint bar Booze-O-Mat now shows its contents correctly." diff --git a/html/changelogs/AutoChangeLog-pr-7030.yml b/html/changelogs/AutoChangeLog-pr-7030.yml new file mode 100644 index 0000000000..5f89cc6abb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7030.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "Vehicle speed changes now happen immediately instead of on the next movement cycle" diff --git a/html/changelogs/AutoChangeLog-pr-7031.yml b/html/changelogs/AutoChangeLog-pr-7031.yml new file mode 100644 index 0000000000..cb65231c9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7031.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Picture-in-picture objects now are no longer overlapped by other certain objects" diff --git a/html/changelogs/AutoChangeLog-pr-7039.yml b/html/changelogs/AutoChangeLog-pr-7039.yml new file mode 100644 index 0000000000..4c5fce38d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7039.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "A pAI dying while in holoform no longer deletes the card, instead merely emptying it." diff --git a/html/changelogs/AutoChangeLog-pr-7040.yml b/html/changelogs/AutoChangeLog-pr-7040.yml new file mode 100644 index 0000000000..0da19e008e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7040.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Added a warning to the shuttle purchase menu." diff --git a/html/changelogs/AutoChangeLog-pr-7041.yml b/html/changelogs/AutoChangeLog-pr-7041.yml new file mode 100644 index 0000000000..c6f54eb459 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7041.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The thermal sight benefits of lantern wisps no longer disappear if you change glasses." diff --git a/html/changelogs/AutoChangeLog-pr-7042.yml b/html/changelogs/AutoChangeLog-pr-7042.yml new file mode 100644 index 0000000000..2a5553f3e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7042.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "sandstone wall sprite for indestructible object" diff --git a/html/changelogs/AutoChangeLog-pr-7045.yml b/html/changelogs/AutoChangeLog-pr-7045.yml new file mode 100644 index 0000000000..65bd3e0c46 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7045.yml @@ -0,0 +1,5 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "It appears that ancient pieces of armor have wound up on the open market! These armors have degraded beyond usefulness. Grab one now in the loadout!" + - imageadd: "added flak jacket and M1 Helmet sprites" diff --git a/html/changelogs/AutoChangeLog-pr-7059.yml b/html/changelogs/AutoChangeLog-pr-7059.yml new file mode 100644 index 0000000000..ee666b26e1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7059.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Fixed anti-magic not working at all." diff --git a/html/changelogs/AutoChangeLog-pr-7062.yml b/html/changelogs/AutoChangeLog-pr-7062.yml new file mode 100644 index 0000000000..7a7917c2f3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7062.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Quartermaster added to the list of changeling and traitor restricted jobs" diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 483883b94c..385cd21516 100644 Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index c6f6798076..38d97e0440 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/modular_citadel/code/game/machinery/cryopod.dm b/modular_citadel/code/game/machinery/cryopod.dm index 87089d57fd..d4d982d5e6 100644 --- a/modular_citadel/code/game/machinery/cryopod.dm +++ b/modular_citadel/code/game/machinery/cryopod.dm @@ -165,7 +165,10 @@ ) // These items will NOT be preserved var/list/do_not_preserve_items = list ( - /obj/item/mmi/posibrain + /obj/item/mmi/posibrain, + /obj/item/gun/energy/disabler/cyborg, + /obj/item/gun/energy/kinetic_accelerator/cyborg, + /obj/item/gun/energy/laser/cyborg ) /obj/machinery/cryopod/Initialize() diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 7c72350a17..c70b6179b0 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -290,6 +290,12 @@ datum/gear/darksabresheath path = /obj/item/custom/leechjar ckeywhitelist = list("sgtryder") +/datum/gear/darkarmor + name = "Dark Armor" + category = SLOT_IN_BACKPACK + path = /obj/item/clothing/suit/armor/vest/darkcarapace + ckeywhitelist = list("inferno707") + /datum/gear/devilwings name = "Strange Wings" category = SLOT_NECK diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 45bf7a3058..1ef203d538 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -48,6 +48,12 @@ category = SLOT_HEAD path = /obj/item/clothing/head/that +/datum/gear/flakhelm + name = "Flak Helmet" + category = SLOT_HEAD + path = /obj/item/clothing/head/flakhelm + cost = 2 + //trek fancy Hats! /datum/gear/trekcap name = "Federation Officer's Cap" diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index 1e1610ae75..9d3a6b9a02 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -74,6 +74,12 @@ category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/ianshirt +/datum/gear/flakjack + name = "Flak Jacket" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/flakjack + cost = 2 + /datum/gear/trekds9_coat name = "DS9 Overcoat (use uniform)" category = SLOT_WEAR_SUIT diff --git a/modular_citadel/code/modules/clothing/head/head.dm b/modular_citadel/code/modules/clothing/head/head.dm new file mode 100644 index 0000000000..03b092d038 --- /dev/null +++ b/modular_citadel/code/modules/clothing/head/head.dm @@ -0,0 +1,14 @@ +/*///////////////////////////////////////////////////////////////////////////////// +/////// /////// +/////// Cit's exclusive hats, helmets, etc. go here /////// +/////// /////// +*////////////////////////////////////////////////////////////////////////////////// + +/obj/item/clothing/head/flakhelm + name = "flak helmet" + icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi' + alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi' + icon_state = "m1helm" + item_state = "helmet" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = -1) + desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell." \ No newline at end of file diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index 60b951bdb4..8d7de7be01 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -11,7 +11,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' icon_state = "hostrench" item_state = "hostrench" - + /obj/item/clothing/suit/hooded/cloak/david name = "red cloak" icon_state = "goliath_cloak" @@ -24,3 +24,15 @@ icon_state = "golhood" desc = "conceal your face in shame with this nanotrasen brand hood" flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR + +/obj/item/clothing/suit/flakjack + name = "flak jacket" + desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm." + icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi' + alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi' + icon_state = "flakjack" + item_state = "redtag" + blood_overlay_type = "armor" + body_parts_covered = CHEST + resistance_flags = NONE + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid \ No newline at end of file diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 8c18755c82..82d5865a64 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -328,6 +328,18 @@ /obj/item/toy/sword/darksabre )) +/obj/item/clothing/suit/armor/vest/darkcarapace + name = "Dark Armor" + desc = "A dark, non-functional piece of armor sporting a red and black finish." + icon = 'icons/obj/custom.dmi' + icon_override = 'icons/mob/custom_w.dmi' + icon_state = "darkcarapace" + item_state = "darkcarapace" + blood_overlay_type = "armor" + dog_fashion = /datum/dog_fashion/back + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + + /obj/item/clothing/neck/cloak/green name = "Generic Green Cloak" desc = "This cloak doesn't seem too special." diff --git a/modular_citadel/icons/mob/clothing/space_nam.dmi b/modular_citadel/icons/mob/clothing/space_nam.dmi new file mode 100644 index 0000000000..05eb00a346 Binary files /dev/null and b/modular_citadel/icons/mob/clothing/space_nam.dmi differ diff --git a/modular_citadel/icons/obj/clothing/space_nam.dmi b/modular_citadel/icons/obj/clothing/space_nam.dmi new file mode 100644 index 0000000000..79e1bd6d77 Binary files /dev/null and b/modular_citadel/icons/obj/clothing/space_nam.dmi differ diff --git a/tgstation.dme b/tgstation.dme index b895f951bb..527db71b8c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -560,7 +560,6 @@ #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" #include "code\game\machinery\newscaster.dm" -#include "code\game\machinery\overview.dm" #include "code\game\machinery\PDApainter.dm" #include "code\game\machinery\quantum_pad.dm" #include "code\game\machinery\recharger.dm" @@ -2774,6 +2773,7 @@ #include "modular_citadel\code\modules\client\verbs\who.dm" #include "modular_citadel\code\modules\clothing\clothing.dm" #include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm" +#include "modular_citadel\code\modules\clothing\head\head.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm"