diff --git a/code/datums/trading/trade.dm b/code/datums/trading/trade.dm index 030f710b880..873b5fb84ee 100644 --- a/code/datums/trading/trade.dm +++ b/code/datums/trading/trade.dm @@ -145,8 +145,13 @@ var/is_wanted = 0 if(is_type_in_list(offer,wanted_items)) is_wanted = 1 - if(blacklisted_trade_items && blacklisted_trade_items.len && is_type_in_list(offer,blacklisted_trade_items)) - return 0 + if(blacklisted_trade_items && blacklisted_trade_items.len) + if(ishuman(offer)) + var/mob/living/carbon/human/A = offer + if(is_type_in_list(A.species, blacklisted_trade_items)) + return 0 + else if(is_type_in_list(offer,blacklisted_trade_items)) + return 0 if(istype(offer,/obj/item/weapon/spacecash)) if(!(trade_flags & TRADER_MONEY)) diff --git a/code/datums/trading/unique.dm b/code/datums/trading/unique.dm index 0b523aec697..b478bea36ed 100644 --- a/code/datums/trading/unique.dm +++ b/code/datums/trading/unique.dm @@ -43,7 +43,7 @@ /obj/item/weapon/gun/energy/rifle/pulse = TRADER_THIS_TYPE ) - blacklisted_trade_items = null + blacklisted_trade_items = list(/datum/species/monkey, /datum/species/machine, /datum/species/bug, /datum/species/diona) speech = list( "hail_generic" = "H-hello. Can you hear me? G-good... I have... specific needs... I have a lot to t-trade with you in return of course.", diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 00372c8c737..6fa9b5b33bf 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -119,6 +119,8 @@ datum/announcement/proc/Log(message as text, message_title as text) message_admins("[key_name_admin(usr)] has made \a [announcement_type].", 1) /proc/GetNameAndAssignmentFromId(var/obj/item/weapon/card/id/I) + if(!I) + return "Unknown" // Format currently matches that of newscaster feeds: Registered Name (Assigned Rank) return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name diff --git a/code/game/antagonist/antagonist_helpers.dm b/code/game/antagonist/antagonist_helpers.dm index d6c08f0d126..13fdc257277 100644 --- a/code/game/antagonist/antagonist_helpers.dm +++ b/code/game/antagonist/antagonist_helpers.dm @@ -8,7 +8,7 @@ return 0 if(config.protect_roles_from_antagonist && (player.assigned_role in protected_jobs)) return 0 - if(player.current.client.prefs.species in restricted_species) + if(player.current.client.prefs && player.current.client.prefs.species in restricted_species) return 0 return 1 diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index c524f068cf3..232cf7c4435 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -108,6 +108,13 @@ var/list/obj/machinery/requests_console/allConsoles = list() req_console_supplies -= department if (departmentType & RC_INFO) req_console_information -= department + + if (LAZYLEN(alert_pdas)) + for (var/pp in alert_pdas) + var/obj/item/device/pda/P = pp + P.linked_consoles -= src + + alert_pdas.Cut() return ..() /obj/machinery/requests_console/attack_hand(user as mob) @@ -244,6 +251,7 @@ var/list/obj/machinery/requests_console/allConsoles = list() //Update the name real quick. alert_pdas[pda] = pda.name else + LAZYADD(pda.linked_consoles, src) alert_pdas += pda alert_pdas[pda] = pda.name usr << "You link \the [pda] to \the [src]. It will now ping upon the arrival of a fax to this machine." diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c10d02d84a2..6c91dc1f700 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -67,6 +67,7 @@ var/global/list/obj/item/device/pda/PDAs = list() var/obj/item/device/paicard/pai = null // A slot for a personal AI device var/obj/item/weapon/pen/pen + var/list/obj/machinery/requests_console/linked_consoles /obj/item/device/pda/examine(mob/user) if(..(user, 1)) @@ -1419,6 +1420,11 @@ var/global/list/obj/item/device/pda/PDAs = list() if (src.id && prob(90)) //IDs are kept in 90% of the cases src.id.loc = get_turf(src.loc) QDEL_NULL(pen) + if (LAZYLEN(linked_consoles)) + for(var/A in linked_consoles) + var/obj/machinery/requests_console/B = A + B.alert_pdas -= src + linked_consoles -= B return ..() /obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 241783d2746..34d95457908 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -157,6 +157,9 @@ if(M == user && target_zone == "mouth" && contents.len > 0 && !user.wear_mask) var/obj/item/clothing/mask/smokable/cigarette/W = new /obj/item/clothing/mask/smokable/cigarette(user) + if(!istype(W)) + user <<"The [W] is blocking the cigarettes." + return reagents.trans_to_obj(W, (reagents.total_volume/contents.len)) user.equip_to_slot_if_possible(W, slot_wear_mask) reagents.maximum_volume = 15 * contents.len diff --git a/code/modules/cargo/randomstock.dm b/code/modules/cargo/randomstock.dm index e685e032300..5748fb6c3f6 100644 --- a/code/modules/cargo/randomstock.dm +++ b/code/modules/cargo/randomstock.dm @@ -1156,6 +1156,7 @@ var/list/global/random_stock_large = list( allsigns -= typesof(/obj/structure/sign/double) allsigns -= typesof(/obj/structure/sign/poster) allsigns -= /obj/structure/sign/directions + allsigns -= typesof(/obj/structure/sign/christmas) var/number = rand(1,5) while (number > 0) diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index b66d1c5929a..2e307327807 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -239,6 +239,10 @@ else target_mob = H + if(!H.Adjacent(target_mob)) + H << "You are not close enough to inject them!" + return 0 + if(target_mob != H) H << "You inject [target_mob] with [chems_to_use] unit\s of [charge.display_name]." diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fd28ae6b76e..75dbfc161d2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -911,7 +911,7 @@ var/total_phoronloss = 0 for(var/obj/item/I in src) - if(I.contaminated) + if(I.contaminated && !(isvaurca(src) && src.species.has_organ["filtration bit"])) total_phoronloss += vsc.plc.CONTAMINATION_LOSS if(!(status_flags & GODMODE)) adjustToxLoss(total_phoronloss)