diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 151b75843b..ece8f6f8b5 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -142,12 +142,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
/obj/machinery/newscaster/attack_hand(mob/user as mob)
if(!src.ispowered || src.isbroken)
return
- if(istype(user, /mob/living/carbon/human) )
- var/mob/living/carbon/human/human_user = user
+ if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
+ var/mob/living/human_or_robot_user = user
var/dat
dat = text("
NewscasterNewscaster Unit #[src.unit_no]
")
- src.scan_user(human_user) //Newscaster scans you
+ src.scan_user(human_or_robot_user) //Newscaster scans you
switch(screen)
if(0)
@@ -160,7 +160,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+= "
Submit new Feed story"
dat+= "
Print newspaper"
dat+= "
Re-scan User"
- dat+= "
Exit"
+ dat+= "
Exit"
if(src.securityCaster)
var/wanted_already = 0
for(var/obj/machinery/newscaster/N in allCasters)
@@ -174,7 +174,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="
The newscaster recognises you as: [src.scanned_user]"
if(1)
dat+= "Station Feed Channels
"
- if(channel_list.len)
+ if( isemptylist(src.channel_list) )
dat+="No active channels found..."
else
for(var/datum/feed_channel/CHANNEL in src.channel_list)
@@ -255,7 +255,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
dat+="No further feed story additions are allowed while the D-Notice is in effect.
"
else
- if(!viewing_channel.messages.len)
+ if( isemptylist(src.viewing_channel.messages) )
dat+="No feed messages found in channel...
"
else
for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
@@ -267,7 +267,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.
"
dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it."
dat+="
Select Feed channel to get Stories from:
"
- if(!channel_list.len)
+ if(isemptylist(src.channel_list))
dat+="No feed channels found active...
"
else
for(var/datum/feed_channel/CHANNEL in src.channel_list)
@@ -278,7 +278,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.
"
- if(channel_list.len)
+ if(isemptylist(src.channel_list))
dat+="No feed channels found active...
"
else
for(var/datum/feed_channel/CHANNEL in src.channel_list)
@@ -290,7 +290,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
"
- if( !viewing_channel.messages.len )
+ if( isemptylist(src.viewing_channel.messages) )
dat+="No feed messages found in channel...
"
else
for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
@@ -304,7 +304,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
dat+="No further feed story additions are allowed while the D-Notice is in effect.
"
else
- if( !viewing_channel.messages.len )
+ if( isemptylist(src.viewing_channel.messages) )
dat+="No feed messages found in channel...
"
else
for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
@@ -363,8 +363,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
- human_user << browse(dat, "window=newscaster_main;size=400x600")
- onclose(human_user, "newscaster_main")
+ human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600")
+ onclose(human_or_robot_user, "newscaster_main")
/*if(src.isbroken) //debugging shit
return
@@ -377,7 +377,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
/obj/machinery/newscaster/Topic(href, href_list)
if(..())
return
- if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
+ if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if(href_list["set_channel_name"])
src.channel_name = strip_html(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))
@@ -444,6 +444,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //list that will contain r
FC.messages += newMsg // To avoid further confusion, this one for adds the message to all existing newscasters' channel_list's channels.
break // Another for to go through newscasters is not needed. Due to the nature of submit_new_CHANNEL, every reference
src.screen=4 // to a channel in ANY newscaster is the same. Editing one will edit them all.
+
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
NEWSCASTER.newsAlert(src.channel_name)
@@ -685,7 +686,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
if(0) //Cover
dat+="The Griffon
"
dat+="Nanotrasen-standard newspaper, for use on Nanotrasen© Space Facilities
"
- if(!news_content.len)
+ if(isemptylist(src.news_content))
if(src.important_message)
dat+="Contents:
**Important Security Announcement** \[page [src.pages+2]\]
"
else
@@ -712,7 +713,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
if(C.censored)
dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing."
else
- if(!C.messages.len)
+ if(isemptylist(C.messages))
dat+="No Feed stories stem from this channel..."
else
dat+=""
@@ -747,7 +748,7 @@ obj/item/weapon/newspaper/attack_self(mob/user as mob)
obj/item/weapon/newspaper/Topic(href, href_list)
var/mob/living/U = usr
..()
- if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
+ if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ))
U.machine = src
if(href_list["next_page"])
if(curr_page==src.pages+1)
@@ -796,21 +797,26 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
////////////////////////////////////helper procs
-/obj/machinery/newscaster/proc/scan_user(mob/living/carbon/human/human_user as mob)
- if(human_user.wear_id) //Newscaster scans you
- if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo!
- var/obj/item/device/pda/P = human_user.wear_id
- if(P.id)
- src.scanned_user = "[P.id.registered_name] ([P.id.assignment])"
+/obj/machinery/newscaster/proc/scan_user(mob/living/user as mob)
+ if(istype(user,/mob/living/carbon/human)) //User is a human
+ var/mob/living/carbon/human/human_user = user
+ if(human_user.wear_id) //Newscaster scans you
+ if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo!
+ var/obj/item/device/pda/P = human_user.wear_id
+ if(P.id)
+ src.scanned_user = "[P.id.registered_name] ([P.id.assignment])"
+ else
+ src.scanned_user = "Unknown"
+ else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
+ var/obj/item/weapon/card/id/ID = human_user.wear_id
+ src.scanned_user ="[ID.registered_name] ([ID.assignment])"
else
- src.scanned_user = "Unknown"
- else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
- var/obj/item/weapon/card/id/ID = human_user.wear_id
- src.scanned_user ="[ID.registered_name] ([ID.assignment])"
+ src.scanned_user ="Unknown"
else
src.scanned_user ="Unknown"
else
- src.scanned_user ="Unknown"
+ var/mob/living/silicon/ai_user = user
+ src.scanned_user = "[ai_user.name] ([ai_user.job])"
/obj/machinery/newscaster/proc/print_paper()
diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm
index 76d63e9d33..d21d25886b 100644
--- a/code/game/objects/stacks/glass.dm
+++ b/code/game/objects/stacks/glass.dm
@@ -262,6 +262,8 @@ SHARDS
playsound(src.loc, 'glass_step.ogg', 50, 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
+ if(H.mutantrace == "lizard") //Soghun have... Scales? Yeah that works
+ return
if(!((H.shoes) || (H.wear_suit && H.wear_suit.body_parts_covered & FEET)))
var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot"))
if(affecting.status & ROBOT)
diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi
deleted file mode 100644
index 2dbaedd639..0000000000
Binary files a/icons/obj/vehicles.dmi and /dev/null differ
diff --git a/icons/vehicles/vehicles.dmi b/icons/vehicles/vehicles.dmi
new file mode 100644
index 0000000000..5650366b18
Binary files /dev/null and b/icons/vehicles/vehicles.dmi differ