diff --git a/code/controllers/Processes/garbage.dm b/code/controllers/Processes/garbage.dm index 0203875e43..8106320fbf 100644 --- a/code/controllers/Processes/garbage.dm +++ b/code/controllers/Processes/garbage.dm @@ -136,7 +136,7 @@ world/loop_checks = 0 return ..()+"([garbage_collector.destroyed.len]/[garbage_collector.dels]/[garbage_collector.hard_dels])" // Tests if an atom has been deleted. -/proc/deleted(atom/A) +/proc/deleted(atom/A) return !A || !isnull(A.gcDestroyed) // Should be treated as a replacement for the 'del' keyword. @@ -187,6 +187,7 @@ world/loop_checks = 0 // This should be overridden to remove all references pointing to the object being destroyed. // Return true if the the GC controller should allow the object to continue existing. (Useful if pooling objects.) /datum/proc/Destroy() + nanomanager.close_uis(src) tag = null return diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 7e0d1e2d25..aa13f07510 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -24,7 +24,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle /datum/emergency_shuttle_controller/proc/process() if (wait_for_launch) - if (auto_recall && world.time >= auto_recall_time) + if (evac && auto_recall && world.time >= auto_recall_time) recall() if (world.time >= launch_time) //time to launch the shuttle stop_launch_countdown() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index fcb8fa3eac..412e9033d4 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -438,6 +438,8 @@ var/global/list/additional_antag_types = list() for(var/mob/player in player_list) if(!player.client) continue + if(istype(player, /mob/new_player)) + continue if(!role || (player.client.prefs.be_special & role)) log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") candidates |= player.mind diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 6f3041dd6d..ac5ae8d8c7 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -197,8 +197,7 @@ build_overlays() /obj/machinery/recharge_station/Bumped(var/mob/living/silicon/robot/R) - if(istype(R)) - go_in(R) + go_in(R) /obj/machinery/recharge_station/proc/go_in(var/mob/living/silicon/robot/R) if(!istype(R)) @@ -206,10 +205,17 @@ if(occupant) return + if(R.incapacitated()) + return + if(!R.cell) + return + + add_fingerprint(R) R.reset_view(src) R.forceMove(src) occupant = R update_icon() + return 1 /obj/machinery/recharge_station/proc/go_out() if(!occupant) @@ -225,8 +231,7 @@ set name = "Eject Recharger" set src in oview(1) - // TODO : Change to incapacitated() on merge. - if(usr.stat || usr.lying || usr.resting || usr.buckled) + if(usr.incapacitated()) return go_out() @@ -238,9 +243,4 @@ set name = "Enter Recharger" set src in oview(1) - // TODO : Change to incapacitated() on merge. - if(usr.stat || usr.lying || usr.resting || usr.buckled) - return - go_in(usr) - add_fingerprint(usr) diff --git a/code/game/objects/items/devices/uplink_items.dm b/code/game/objects/items/devices/uplink_items.dm index f5481c0fdd..cddd87879d 100644 --- a/code/game/objects/items/devices/uplink_items.dm +++ b/code/game/objects/items/devices/uplink_items.dm @@ -100,6 +100,7 @@ var/datum/uplink/uplink = new() /datum/uplink_item/proc/purchase_log(obj/item/device/uplink/U) feedback_add_details("traitor_uplink_items_bought", "[src]") + log_and_message_admins("used \the [U.loc] to buy \a [src]") U.purchase_log[src] = U.purchase_log[src] + 1 datum/uplink_item/dd_SortValue() @@ -542,6 +543,7 @@ datum/uplink_item/dd_SortValue() /datum/uplink_item/item/badassery/random_many/purchase_log(obj/item/device/uplink/U) feedback_add_details("traitor_uplink_items_bought", "[src]") + log_and_message_admins("used \the [U.loc] to buy \a [src]") /**************** * Surplus Crate * diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 783177d5e6..4f168556d2 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -8,17 +8,24 @@ w_class = 2.0 var/obj/item/weapon/implant/imp = null +/obj/item/weapon/implanter/attack_self(var/mob/user) + if(!imp) + return ..() + imp.loc = get_turf(src) + user.put_in_hands(imp) + user << "You remove \the [imp] from \the [src]." + name = "implanter" + imp = null + update() + return + /obj/item/weapon/implanter/proc/update() - - -/obj/item/weapon/implanter/update() if (src.imp) src.icon_state = "implanter1" else src.icon_state = "implanter0" return - /obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob) if (!istype(M, /mob/living/carbon)) return @@ -52,8 +59,6 @@ return - - /obj/item/weapon/implanter/loyalty name = "implanter-loyalty" diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 7f7e556657..800659307e 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -17,7 +17,6 @@ /obj/Destroy() processing_objects -= src - nanomanager.close_uis(src) return ..() /obj/Topic(href, href_list, var/datum/topic_state/state = default_state) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 5440e4143c..50d02edca6 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -778,7 +778,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(confirm != "Yes") return var/choice - if(ticker.mode.name == "revolution" || ticker.mode.name == "confliction") + if(ticker.mode.auto_recall_shuttle) choice = input("The shuttle will just return if you call it. Call anyway?") in list("Confirm", "Cancel") if(choice == "Confirm") emergency_shuttle.auto_recall = 1 //enable auto-recall diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index c90dc6de8a..995105a2bc 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -91,6 +91,10 @@ return 0 /datum/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) + + if(!owner || !owner.species) + return + generate_data(check_whitelist, whitelist, blacklist) var/data[0] diff --git a/html/changelog.html b/html/changelog.html index f08e92c320..afa21cd997 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->