diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 29a64007..589a7d24 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -407,6 +407,10 @@ occupantData["isViableSubject"] = 1 if (NOCLONE in connected.occupant.mutations || !src.connected.occupant.dna) occupantData["isViableSubject"] = 0 + if(ishuman(connected.occupant)) + var/mob/living/carbon/human/C = connected.occupant + if (C.species.flags & (NO_SCAN)) + occupantData["isViableSubject"] = 0 occupantData["health"] = connected.occupant.health occupantData["maxHealth"] = connected.occupant.maxHealth occupantData["minHealth"] = config.health_threshold_dead @@ -424,15 +428,15 @@ if (connected.beaker.reagents && connected.beaker.reagents.reagent_list.len) for(var/datum/reagent/R in connected.beaker.reagents.reagent_list) data["beakerVolume"] += R.volume - + // update the ui if it exists, returns null if no ui is passed/found - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm ui = new(user, src, ui_key, "dna_modifier.tmpl", "DNA Modifier Console", 660, 700) // when the ui is first opened this is the data it will use - ui.set_initial_data(data) + ui.set_initial_data(data) // open the new ui window ui.open() // auto update every Master Controller tick diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index f4dcf090..52fbed37 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -423,6 +423,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() screen = 11 if(href_list["print"]) + if(paperstock == 0) + alert("Error! No paper to print on! Aborting!") + return var/printid = sanitizeSQL(href_list["print"]) establish_db_connection() diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 0da99369..add1e7e9 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -4,7 +4,8 @@ w_class = 4 icon = 'icons/obj/device.dmi' icon_state = "suitcooler0" - slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage + item_state = "suitcooler0" //hacky, but yeah, works for now. + slot_flags = SLOT_BACK //will now work while on back - Skull132 //copied from tank.dm flags = FPRINT | TABLEPASS | CONDUCT @@ -83,10 +84,10 @@ var/mob/living/carbon/human/H = M - if (!H.wear_suit || H.s_store != src) - return 0 + if (H.wear_suit && (H.back == src || H.s_store == src)) + return 1 - return 1 + return 0 /obj/item/device/suit_cooling_unit/proc/turn_on() if(!cell) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index e65abf26..c32dda79 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -111,6 +111,9 @@ if (user) if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/C = M + if (C.species.flags & (IS_SYNTHETIC | NO_SCAN)) + return if(!inuse) var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) O.source = user diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index c37e6ce2..9ac82b03 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -173,7 +173,7 @@ attack_verb = list("jabbed","stabbed","ripped") /obj/item/weapon/canesword - name = "cane sword" + name = "thin sword" sharp = 1 edge = 1 desc = "A thin, sharp blade with an elegant handle." @@ -190,7 +190,7 @@ //Using a modified cane, with a storage var, instead of a box. Because the box idea is meh, in terms of the interface. /obj/item/weapon/cane/syndie - var/sword //For holding the blade + var/obj/item/weapon/canesword/sword //For holding the blade var/locked //A small lock, so that you can't accidentally unsheathe it New() @@ -201,7 +201,9 @@ proc/unsheathe(mob/user as mob) if(sword) user.put_in_hands(sword) - user.visible_message("[user] takes the handle and draws a sword from inside the [src].", "You take the [src] by the handle and draw out a sharp blade from it.") + user.visible_message("\blue [user] takes the handle and draws a sword from inside the [src].", "\blue You take the [src] by the handle and draw out a sharp blade from it.") + sword.add_fingerprint(user) + add_fingerprint(user) sword = null icon_state = "cane_empty" update_icon() @@ -211,10 +213,10 @@ switch(locked) if(1) locked = 0 - user << "You twist and unlock the sword handle from the [src]." + user << "\blue You twist and unlock the sword handle from the [src]." if(0) locked = 1 - user << "You twist and lock the sword handle to the [src]." + user << "\blue You twist and lock the sword handle to the [src]." attack_self(mob/user as mob) if(iscarbon(user)) @@ -235,7 +237,7 @@ W.add_fingerprint(user) add_fingerprint(user) icon_state = "cane" - user << "You sheathe the sword, and lock its handle to the [src]." + user << "\blue You sheathe the sword, and lock its handle to the [src]." locked = 1 update_icon() diff --git a/code/modules/aurora/sqlnews_controller.dm b/code/modules/aurora/sqlnews_controller.dm index f3120494..22d6b4db 100644 --- a/code/modules/aurora/sqlnews_controller.dm +++ b/code/modules/aurora/sqlnews_controller.dm @@ -20,11 +20,16 @@ datum/sqlnews var/time //publishtime, time in gametime var/id //id, primary-key, of the news article that's destined for pulling. var/running = 1 //whenever no results are found, this ticks over to a 0, and thus, no more updates. + var/fails = 0 datum/sqlnews/proc/process() if(!running == 1) //No more news, immediate kill and return. return + if(fails >= 5) //If it sucks at running, we'll off it. + kill() + return + if(!id && !time) //No entry loaded, update and load one. update() return @@ -37,6 +42,7 @@ datum/sqlnews/proc/update() //Updates the stored variables and preppes it for a establish_db_connection() if(!dbcon.IsConnected()) error("SQL database connection failed. Attempted to fetch news information.") + fails++ return var/DBQuery/query = dbcon.NewQuery("SELECT id, publishtime FROM aurora_news WHERE isnull(notpublishing) ORDER BY publishtime ASC LIMIT [count],1") @@ -59,6 +65,7 @@ datum/sqlnews/proc/publish() //Uses data stored from the update() proc and: pull establish_db_connection() if(!dbcon.IsConnected()) error("SQL database connection failed. Attempted to fetch news information.") + fails++ return var/DBQuery/fetchquery = dbcon.NewQuery("SELECT channel, author, body FROM aurora_news WHERE id=[id]") @@ -93,4 +100,8 @@ datum/sqlnews/proc/publish() //Uses data stored from the update() proc and: pull NEWSCASTER.newsAlert("[channel]") id = null - time = null \ No newline at end of file + time = null + +datum/sqlnews/proc/kill() + running = 0 + return \ No newline at end of file diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 654d35b6..52db8a3d 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi index 1a7219ab..99ee56a1 100644 Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index 2cf6c293..bc0eafe0 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 3461fd47..a492b871 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index be9e7e6e..5ebfbfd2 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index 367693a6..b4b3c859 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index 9a2fe5a4..74c29181 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi index faf209c3..83547faf 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index 5f6f5843..eedbbf78 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi index 65b959c8..0de513c2 100644 Binary files a/icons/obj/clothing/species/tajaran/hats.dmi and b/icons/obj/clothing/species/tajaran/hats.dmi differ diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi index 0028463f..7af157fd 100644 Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index f8cb49ed..7f541867 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index f67b2668..095313ee 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ