diff --git a/code/__defines/flags.dm b/code/__defines/flags.dm index 66a59bc96f..19a67310f1 100644 --- a/code/__defines/flags.dm +++ b/code/__defines/flags.dm @@ -45,6 +45,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define FLEXIBLEMATERIAL (1<<4) // At the moment, masks with this flag will not prevent eating even if they are covering your face. #define ALLOW_SURVIVALFOOD (1<<5) // Allows special survival food items to be eaten through it #define INFINITE_AIR (1<<6) // Provides an infinite air supply. +#define NOSTRIP (1<<7) // Items that should never get stripped // Flags for pass_flags. - Used in /atom/var/pass_flags #define PASSTABLE (1<<0) diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index 2b3c9d8d70..5dd0abbd77 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -1,12 +1,12 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -/proc/dopage(src,target) +/proc/dopage(source, target) var/href_list var/href - href_list = params2list("src=\ref[src]&[target]=1") - href = "src=\ref[src];[target]=1" - src:temphtml = null - src:Topic(href, href_list) + href_list = params2list("src=\ref[source]&[target]=1") + href = "src=\ref[source];[target]=1" + source:temphtml = null + source:Topic(href, href_list) return null /proc/is_on_same_plane_or_station(var/z1, var/z2) diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index 87c6f6ef29..d09e83efb3 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -423,9 +423,9 @@ GLOBAL_LIST_EMPTY(text_tag_cache) t = replacetext(t, "\[/grid\]", "") t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[logo\]", "") - t = replacetext(t, "\[redlogo\]", "") - t = replacetext(t, "\[sglogo\]", "") + t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[sglogo\]", "", "\[/grid\]") t = replacetext(t, "", "\[row\]") t = replacetext(t, "", "\[cell\]") - t = replacetext(t, "", "\[logo\]") - t = replacetext(t, "", "\[redlogo\]") - t = replacetext(t, "", "\[sglogo\]") + t = replacetext(t, "", "\[logo\]") + t = replacetext(t, "", "\[redlogo\]") + t = replacetext(t, "", "\[sglogo\]") t = replacetext(t, "", "\[field\]") t = replacetext(t, "R E D A C T E D", "\[redacted\]") t = strip_html_properly(t) diff --git a/code/controllers/hooks.dm b/code/controllers/hooks.dm index 293a90aff0..20ba87735d 100644 --- a/code/controllers/hooks.dm +++ b/code/controllers/hooks.dm @@ -23,7 +23,7 @@ * @param hook Identifier of the hook to call. * @returns 1 if all hooked code runs successfully, 0 otherwise. */ -/proc/callHook(hook, list/args=null) +/proc/callHook(hook, list/arguments=null) var/hook_path = text2path("/hook/[hook]") if(!hook_path) error("Invalid hook '/hook/[hook]' called.") @@ -32,7 +32,7 @@ var/requester = new hook_path var/status = 1 for(var/P in typesof("[hook_path]/proc")) - if(!call(requester, P)(arglist(args))) + if(!call(requester, P)(arglist(arguments))) error("Hook '[P]' failed or runtimed.") status = 0 diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index 855032597f..1711af7407 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -118,13 +118,13 @@ SUBSYSTEM_DEF(xenoarch) artifact_turf.artifact_find = new() /// This is the proc that is used when a Z level runs out of artifacts. This means you have 'completed' your job and now you get bonus goodies to keep you occupied. -/datum/controller/subsystem/xenoarch/proc/continual_generation(var/mob/living/caller) +/datum/controller/subsystem/xenoarch/proc/continual_generation(var/mob/living/user) /// So, to preface this, I had to do a lot of testing with this to ensure it wouldn't cause mass lag and that it properly functioned. /// At first, I tried to make it scan mineral in the user's Z. There's not really any preexisting functionality for this that I could find, so that was a negative. - /// Next, I saw what would happen if it did 'in world' and then went 'if M.z != caller.z continue' and that caused...A lot of lag. For a long time. + /// Next, I saw what would happen if it did 'in world' and then went 'if M.z != user.z continue' and that caused...A lot of lag. For a long time. /// This range(100) was for me was completely lagless. It gives a good amount of artifacts to keep digging and keep archeo working so they don't 'run out' of things to do. - for(var/turf/simulated/mineral/M in range(100, caller)) + for(var/turf/simulated/mineral/M in range(100, user)) if(!M.density) continue diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm index c17fb99ab2..c66b6113df 100644 --- a/code/datums/uplink/announcements.dm +++ b/code/datums/uplink/announcements.dm @@ -24,9 +24,9 @@ return return list("title" = title, "message" = message) -/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user, var/list/args) - post_comm_message(args["title"], replacetext(args["message"], "\n", "
")) - command_announcement.Announce(args["message"], args["title"]) +/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/uplink/U, var/location, var/mob/user, var/list/arguments) + post_comm_message(arguments["title"], replacetext(arguments["message"], "\n", "
")) + command_announcement.Announce(arguments["message"], arguments["title"]) return 1 /datum/uplink_item/abstract/announcements/fake_crew_arrival @@ -34,7 +34,7 @@ desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!" item_cost = 15 -/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user, var/list/args) +/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/uplink/U, var/location, var/mob/user, var/list/arguments) if(!user) return 0 @@ -93,7 +93,7 @@ desc = "Interferes with the station's ion sensors. Triggers immediately upon investment." item_cost = 10 -/datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/uplink/U, var/loc) +/datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/uplink/U, var/location) ion_storm_announcement() return 1 @@ -102,7 +102,7 @@ desc = "Interferes with the station's radiation sensors. Triggers immediately upon investment." item_cost = 15 -/datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/uplink/U, var/loc) +/datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/uplink/U, var/location) var/datum/event_meta/EM = new(EVENT_LEVEL_MUNDANE, "Fake Radiation Storm", add_to_queue = 0) new/datum/event/radiation_storm/syndicate(EM) return 1 diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm index d2f3731e06..e73a921dbc 100644 --- a/code/datums/uplink/badassery.dm +++ b/code/datums/uplink/badassery.dm @@ -35,11 +35,11 @@ /datum/uplink_item/item/badassery/random_many/cost(obj/item/uplink/U, telecrystals) return max(1, telecrystals) -/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/uplink/U, var/loc, var/mob/M) +/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/uplink/U, var/location, var/mob/M) var/list/bought_items = list() - for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, loc)) + for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, location)) UI.purchase_log(U) - var/obj/item/I = UI.get_goods(U, loc) + var/obj/item/I = UI.get_goods(U, location) if(istype(I)) bought_items += I @@ -77,8 +77,8 @@ ..() desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers." -/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/uplink/U, var/loc) - var/obj/structure/largecrate/C = new(loc) +/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/uplink/U, var/location) + var/obj/structure/largecrate/C = new(location) var/random_items = get_surplus_items(null, item_worth, C) for(var/datum/uplink_item/I in random_items) I.purchase_log(U) diff --git a/code/datums/uplink/telecrystals.dm b/code/datums/uplink/telecrystals.dm index 5c22d9bd3f..a527a7a97f 100644 --- a/code/datums/uplink/telecrystals.dm +++ b/code/datums/uplink/telecrystals.dm @@ -5,8 +5,8 @@ category = /datum/uplink_category/telecrystals blacklisted = 1 -/datum/uplink_item/item/telecrystal/get_goods(obj/item/uplink/U, loc, mob/M) - return new /obj/item/stack/telecrystal(loc, cost(U, M.mind.tcrystals)) +/datum/uplink_item/item/telecrystal/get_goods(obj/item/uplink/U, location, mob/M) + return new /obj/item/stack/telecrystal(location, cost(U, M.mind.tcrystals)) /datum/uplink_item/item/telecrystal/one name = "Telecrystal - 01" diff --git a/code/datums/uplink/uplink_items.dm b/code/datums/uplink/uplink_items.dm index 44596074a6..cf4dfea459 100644 --- a/code/datums/uplink/uplink_items.dm +++ b/code/datums/uplink/uplink_items.dm @@ -84,7 +84,7 @@ var/datum/uplink/uplink = new() return desc // get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying -/datum/uplink_item/proc/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user) +/datum/uplink_item/proc/get_goods(var/obj/item/uplink/U, var/location, var/mob/user) return FALSE /datum/uplink_item/proc/log_icon() @@ -117,8 +117,8 @@ var/datum/uplink/uplink = new() A.put_in_any_hand_if_possible(I) return I -/datum/uplink_item/item/get_goods(obj/item/uplink/U, loc, mob/user) - var/obj/item/I = new path(loc) +/datum/uplink_item/item/get_goods(obj/item/uplink/U, location, mob/user) + var/obj/item/I = new path(location) return I /datum/uplink_item/item/description() @@ -154,8 +154,8 @@ var/datum/uplink/uplink = new() var/crate_path = /obj/structure/largecrate var/list/paths = list() // List of paths to be spawned into the crate. -/datum/uplink_item/crated/get_goods(obj/item/uplink/U, loc, mob/user) - var/obj/L = new crate_path(get_turf(loc)) +/datum/uplink_item/crated/get_goods(obj/item/uplink/U, location, mob/user) + var/obj/L = new crate_path(get_turf(location)) L.adjust_scale(rand(9, 12) / 10, rand(9, 12) / 10) // Some variation in the crate / locker size. @@ -179,7 +179,7 @@ var/datum/uplink/uplink = new() /**************** * Support procs * ****************/ -/proc/get_random_uplink_items(var/obj/item/uplink/U, var/remaining_TC, var/loc) +/proc/get_random_uplink_items(var/obj/item/uplink/U, var/remaining_TC, var/location) var/list/bought_items = list() while(remaining_TC) var/datum/uplink_item/I = default_uplink_selection.get_random_item(remaining_TC, U, bought_items) @@ -190,7 +190,7 @@ var/datum/uplink/uplink = new() return bought_items -/proc/get_surplus_items(var/obj/item/uplink/U, var/remaining_TC, var/loc) +/proc/get_surplus_items(var/obj/item/uplink/U, var/remaining_TC, var/location) var/list/bought_items = list() var/override = TRUE while(remaining_TC) diff --git a/code/datums/wires/particle_accelerator.dm b/code/datums/wires/particle_accelerator.dm index 1b1f03bd19..2c6cbb6460 100644 --- a/code/datums/wires/particle_accelerator.dm +++ b/code/datums/wires/particle_accelerator.dm @@ -20,7 +20,7 @@ C.toggle_power() if(WIRE_PARTICLE_STRENGTH) - C.add_strength() + C.add_strength(usr) if(WIRE_PARTICLE_INTERFACE) C.interface_control = !C.interface_control diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm index 263f74491b..a73c45b27b 100644 --- a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm +++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm @@ -57,7 +57,7 @@ //Copypasta valid_turfs: for(var/turf/simulated/T in A.contents) - if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall + if(T.density || ismineralturf(T)) //Don't blink to vacuum or a wall continue for(var/atom/movable/stuff in T.contents) if(stuff.density) diff --git a/code/game/gamemodes/technomancer/spells/blink.dm b/code/game/gamemodes/technomancer/spells/blink.dm index 65ca55696c..91f019b355 100644 --- a/code/game/gamemodes/technomancer/spells/blink.dm +++ b/code/game/gamemodes/technomancer/spells/blink.dm @@ -28,7 +28,7 @@ valid_turfs: for(var/turf/simulated/T in range(AM, range)) - if(T.density || T.block_tele || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall + if(T.density || T.block_tele || ismineralturf(T)) //Don't blink to vacuum or a wall continue for(var/atom/movable/stuff in T.contents) if(stuff.density) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 8afbf4beac..368ab4da07 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -289,8 +289,7 @@ return ..() /obj/machinery/porta_turret/Destroy() - qdel(spark_system) - spark_system = null + QDEL_NULL(spark_system) return ..() /obj/machinery/porta_turret/update_icon() @@ -588,7 +587,7 @@ health -= force if(force > 5 && prob(45)) - spark_system.start() + spark_system?.start() if(health <= 0) die() //the death process :( diff --git a/code/game/mecha/equipment/tools/drill.dm b/code/game/mecha/equipment/tools/drill.dm index 7d69bee9fe..c2cdb0955e 100644 --- a/code/game/mecha/equipment/tools/drill.dm +++ b/code/game/mecha/equipment/tools/drill.dm @@ -34,7 +34,7 @@ log_message("Drilled through [target]") target.ex_act(2) - else if(istype(target, /turf/simulated/mineral)) + else if(ismineralturf(target)) if(enable_special) for(var/turf/simulated/mineral/M in range(chassis,1)) if(get_dir(chassis,M)&chassis.dir) @@ -116,7 +116,7 @@ else log_message("Bored through [target]") target.ex_act(2) - else if(istype(target, /turf/simulated/mineral)) + else if(ismineralturf(target)) var/turf/simulated/mineral/M = target if(enable_special && !M.density) M.ex_act(2) diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm index 252212f0b9..ad17e237af 100644 --- a/code/game/mecha/micro/micro_equipment.dm +++ b/code/game/mecha/micro/micro_equipment.dm @@ -133,7 +133,7 @@ else log_message("Drilled through [target]") target.ex_act(2) - else if(istype(target, /turf/simulated/mineral)) + else if(ismineralturf(target)) for(var/turf/simulated/mineral/M in range(chassis,1)) if(get_dir(chassis,M)&chassis.dir) M.GetDrilled() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0fec4a7733..70f5108fab 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1023,6 +1023,8 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/MouseEntered(location,control,params) . = ..() + if(QDELETED(src)) + return if(usr?.read_preference(/datum/preference/toggle/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at var/user = usr tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), 5, TIMER_STOPPABLE) diff --git a/code/game/objects/items/devices/ticket_printer.dm b/code/game/objects/items/devices/ticket_printer.dm index 8bc1194f54..e656a2c185 100644 --- a/code/game/objects/items/devices/ticket_printer.dm +++ b/code/game/objects/items/devices/ticket_printer.dm @@ -33,7 +33,7 @@ var/turf/our_turf = get_turf(user) - var/final = "

Nanotrasen Security Citation


This security citation has been issued to
[capitalize(ticket_name)]
Reason:
[details]
See your local representative at Central Command after the shift is over to resolve this issue.
" + var/final = "

Nanotrasen Security Citation


This security citation has been issued to
[capitalize(ticket_name)]
Reason:
[details]
See your local representative at Central Command after the shift is over to resolve this issue.
" var/obj/item/paper/sec_ticket/p = new /obj/item/paper/sec_ticket(our_turf) diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index abb0d419c0..4ea6ba9c1b 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -367,12 +367,14 @@ configured = 1 to_chat(user, span_notice("Card settings set.")) -/obj/item/card/id/event/attackby(obj/item/I as obj, var/mob/user) +/obj/item/card/id/event/attackby(obj/item/I, var/mob/user) if(istype(I, /obj/item/card/id) && !accessset) var/obj/item/card/id/O = I access |= O.GetAccess() desc = I.desc rank = O.rank + mining_points = O.mining_points + survey_points = O.survey_points to_chat(user, span_notice("You copy the access from \the [I] to \the [src].")) user.drop_from_inventory(I) qdel(I) diff --git a/code/game/objects/structures/ghost_pods/event_vr.dm b/code/game/objects/structures/ghost_pods/event_vr.dm index cc73428a83..0306467947 100644 --- a/code/game/objects/structures/ghost_pods/event_vr.dm +++ b/code/game/objects/structures/ghost_pods/event_vr.dm @@ -238,7 +238,7 @@ for(var/lang in new_character.client.prefs.alternate_languages) var/datum/language/chosen_language = GLOB.all_languages[lang] if(chosen_language) - if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs))) + if(is_lang_whitelisted(M, chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs))) new_character.add_language(lang) SEND_SIGNAL(new_character, COMSIG_HUMAN_DNA_FINALIZED) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 5d183f4a90..3251dd9cd4 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -11,7 +11,7 @@ /obj/structure/lattice/Initialize(mapload) . = ..() - if(!(isopenturf(src.loc) || istype(src.loc, /turf/simulated/mineral) || istype(src.loc, /turf/simulated/shuttle/plating/airless/carry))) + if(!(isopenturf(src.loc) || ismineralturf(src.loc) || istype(src.loc, /turf/simulated/shuttle/plating/airless/carry))) return INITIALIZE_HINT_QDEL for(var/obj/structure/lattice/LAT in src.loc) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 5194f34d51..e6c5e5ab26 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -53,7 +53,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0) to_chat(usr, "Error: you are not an admin!") return - var/body = "Options panel for" + span_bold("[M]") + var/body = "Options panel for " + span_bold("[M]") if(M.client) body += " played by " + span_bold("[M.client]") body += "\[[M.client.holder ? M.client.holder.rank_names() : "Player"]\]" @@ -596,7 +596,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0) Choose a default ZAS setting
"} - var/datum/browser/popup = new(owner, "admin2", "Game Panel", 210, 280) + var/datum/browser/popup = new(owner, "admin2", "Game Panel", 220, 295) popup.set_content(dat) popup.open() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2ddde3fd86..7abc9e3fe3 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -374,15 +374,15 @@ ADMIN_VERB(game_panel, R_ADMIN|R_SERVER|R_FUN, "Game Panel", "Look at the state ADMIN_VERB(deadmin, R_NONE, "DeAdmin", "Shed your admin powers.", ADMIN_CATEGORY_MAIN) user.holder.deactivate() - to_chat(src, span_interface("You are now a normal player.")) - log_admin("[key_name(src)] deadminned themselves.") - message_admins("[key_name_admin(src)] deadminned themselves.") + to_chat(user, span_interface("You are now a normal player.")) + log_admin("[key_name(user)] deadminned themselves.") + message_admins("[key_name_admin(user)] deadminned themselves.") //BLACKBOX_LOG_ADMIN_VERB("Deadmin") feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! if(isobserver(user.mob)) var/mob/observer/dead/our_mob = user.mob - our_mob.visualnet?.removeVisibility(our_mob, src) + our_mob.visualnet?.removeVisibility(our_mob, user) /client/proc/toggle_log_hrefs() set name = "Toggle href logging" diff --git a/code/modules/admin/news.dm b/code/modules/admin/news.dm index 30defc11c2..3d15199b75 100644 --- a/code/modules/admin/news.dm +++ b/code/modules/admin/news.dm @@ -77,8 +77,8 @@ text = replacetext(text, "\[/grid\]", "") text = replacetext(text, "\[row\]", "") text = replacetext(text, "\[cell\]", "") - text = replacetext(text, "\[logo\]", "") // Not sure if these would get used but why not - text = replacetext(text, "\[sglogo\]", "") + text = replacetext(text, "\[logo\]", "") // Not sure if these would get used but why not + text = replacetext(text, "\[sglogo\]", "") return text // This is used when reading text that went through paper_markup2html(), to reverse it so that edits don't need to replace everything once more to avoid sanitization. @@ -114,8 +114,8 @@ text = replacetext(text, "", "\[/grid\]") text = replacetext(text, "", "\[row\]") text = replacetext(text, "", "\[cell\]") - text = replacetext(text, "", "\[logo\]") // Not sure if these would get used but why not - text = replacetext(text, "", "\[sglogo\]") + text = replacetext(text, "", "\[logo\]") // Not sure if these would get used but why not + text = replacetext(text, "", "\[sglogo\]") return text #undef NEWSFILE diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 4d25f34d3a..9045936d8b 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -84,7 +84,7 @@ irc = 1 else recipient = GLOB.directory[whom] - else if(istype(whom,/client)) + else if(isclient(whom)) recipient = whom @@ -105,7 +105,8 @@ if(!recipient) if(holder) to_chat(src, span_admin_pm_warning("Error: Admin-PM: Client not found.")) - to_chat(src, msg) + if(msg) + to_chat(src, msg) else current_ticket.MessageNoRecipient(msg) return @@ -128,11 +129,11 @@ current_ticket.MessageNoRecipient(msg) return - if (src.handle_spam_prevention(msg,MUTE_ADMINHELP)) + if (src.handle_spam_prevention(MUTE_ADMINHELP)) return //clean the message if it's not sent by a high-rank admin - if(!check_rights(R_SERVER|R_DEBUG,0)||irc)//no sending html to the poor bots + if(!check_rights(R_SERVER|R_DEBUG, FALSE)||irc)//no sending html to the poor bots msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN))) if(!msg) return @@ -142,27 +143,27 @@ var/keywordparsedmsg = keywords_lookup(msg) if(irc) - to_chat(src, span_admin_pm_notice("PM to-Admins: [rawmsg]")) - admin_ticket_log(src, span_admin_pm_warning("Reply PM from-[key_name(src, TRUE, TRUE)] to IRC: [keywordparsedmsg]")) + to_chat(src, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [rawmsg]")) + admin_ticket_log(src, span_admin_pm_warning("Reply PM from-" + span_bold("[key_name(src, TRUE, TRUE)]") + " to " + span_italics("IRC") + ": [keywordparsedmsg]")) ircreplyamount-- send2irc("Reply: [ckey]",rawmsg) else if(recipient.holder) if(holder) //both are admins - to_chat(recipient, span_admin_pm_warning("Admin PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]")) - to_chat(src, span_admin_pm_notice("Admin PM to-[key_name(recipient, src, 1)]: [keywordparsedmsg]")) + to_chat(recipient, span_admin_pm_warning("Admin PM from-" + span_bold("[key_name(src, recipient, 1)]") + ": [keywordparsedmsg]")) + to_chat(src, span_admin_pm_notice("Admin PM to-" + span_bold("[key_name(recipient, src, 1)]") + ": [keywordparsedmsg]")) //omg this is dumb, just fill in both their tickets - var/interaction_message = span_admin_pm_notice("PM from-[key_name(src, recipient, 1)] to-[key_name(recipient, src, 1)]: [keywordparsedmsg]") + var/interaction_message = span_admin_pm_notice("PM from-" + span_bold("[key_name(src, recipient, 1)]") + " to-" + span_bold("[key_name(recipient, src, 1)]") + ": [keywordparsedmsg]") admin_ticket_log(src, interaction_message) if(recipient != src) //reeee admin_ticket_log(recipient, interaction_message) else //recipient is an admin but sender is not - var/replymsg = span_admin_pm_warning("Reply PM from-[key_name(src, recipient, 1)]: [keywordparsedmsg]") + var/replymsg = span_admin_pm_warning("Reply PM from-" + span_bold("[key_name(src, recipient, 1)]") + ": [keywordparsedmsg]") admin_ticket_log(src, replymsg) to_chat(recipient, replymsg) - to_chat(src, span_admin_pm_notice("PM to-Admins: [msg]")) + to_chat(src, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [msg]")) //play the recieving admin the adminhelp sound (if they have them enabled) if(recipient.prefs?.read_preference(/datum/preference/toggle/holder/play_adminhelp_ping)) @@ -174,9 +175,9 @@ new /datum/ticket(msg, recipient, TRUE, 1) to_chat(recipient, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --")))) - to_chat(recipient, span_admin_pm_warning("Admin PM from-[key_name(src, recipient, 0)]: [msg]")) + to_chat(recipient, span_admin_pm_warning("Admin PM from-" + span_bold("[key_name(src, recipient, 0)]") + ": [msg]")) to_chat(recipient, span_admin_pm_warning(span_italics("Click on the administrator's name to reply."))) - to_chat(src, span_admin_pm_notice("Admin PM to-[key_name(recipient, src, 1)]: [msg]")) + to_chat(src, span_admin_pm_notice("Admin PM to-" + span_bold("[key_name(recipient, src, 1)]") + ": [msg]")) admin_ticket_log(recipient, span_admin_pm_notice("PM From [key_name_admin(src)]: [keywordparsedmsg]")) @@ -263,7 +264,7 @@ log_admin("IRC PM: [sender] -> [key_name(C)] : [msg]") to_chat(C, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --")))) - to_chat(C, span_admin_pm_warning("Admin PM from-[adminname]: [msg]")) + to_chat(C, span_admin_pm_warning("Admin PM from-" + span_bold("[adminname]") + ": [msg]")) to_chat(C, span_admin_pm_warning(span_italics("Click on the administrator's name to reply."))) admin_ticket_log(C, span_admin_pm_notice("PM From [irc_tagged]: [msg]")) diff --git a/code/modules/admin/verbs/entity_narrate.dm b/code/modules/admin/verbs/entity_narrate.dm index 9014c532b7..c8b96ec26b 100644 --- a/code/modules/admin/verbs/entity_narrate.dm +++ b/code/modules/admin/verbs/entity_narrate.dm @@ -314,8 +314,8 @@ ADMIN_VERB(narrate_mob_args, R_FUN, "Narrate Entity", "Narrate entities using po if(tgui_narrate_mode && tgui_narrate_privacy) A.visible_message(span_italics(span_bold("\The [A.name]") + " [message]"), range = 1) else if(tgui_narrate_mode && !tgui_narrate_privacy) - A.visible_message(span_bold("\The [A.name]") + "[message]",) + A.visible_message(span_bold("\The [A.name]") + " [message]",) else if(!tgui_narrate_mode && tgui_narrate_privacy) A.audible_message(span_italics(span_bold("\The [A.name]") + " [message]"), hearing_distance = 1) else if(!tgui_narrate_mode && !tgui_narrate_privacy) - A.audible_message(span_bold("\The [A.name]") + "[message]") + A.audible_message(span_bold("\The [A.name]") + " [message]") diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index fec8c53874..d45ad302bc 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -1,7 +1,7 @@ -ADMIN_VERB(get_server_logs, R_ADMIN, "Get Server Logs", "View or retrieve logfiles.", ADMIN_CATEGORY_MAIN) +ADMIN_VERB(get_server_logs, (R_ADMIN | R_SERVER), "Get Server Logs", "View or retrieve logfiles.", ADMIN_CATEGORY_MAIN) user.browseserverlogs() -ADMIN_VERB(get_current_logs, R_ADMIN, "Get Current Logs", "View or retrieve logfiles for the current round.", ADMIN_CATEGORY_MAIN) +ADMIN_VERB(get_current_logs, (R_ADMIN | R_SERVER), "Get Current Logs", "View or retrieve logfiles for the current round.", ADMIN_CATEGORY_MAIN) user.browseserverlogs(current=TRUE) /client/proc/browseserverlogs(current=FALSE) diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm index 52d786b27c..879a4db6e7 100644 --- a/code/modules/blob/blob.dm +++ b/code/modules/blob/blob.dm @@ -53,7 +53,7 @@ update_icon() /obj/effect/blob/proc/expand(var/turf/T) - if(istype(T, /turf/unsimulated/) || istype(T, /turf/space) || (istype(T, /turf/simulated/mineral) && T.density)) + if(istype(T, /turf/unsimulated/) || isopenturf(T) || (ismineralturf(T) && T.density)) return if(istype(T, /turf/simulated/wall)) var/turf/simulated/wall/SW = T diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 9ecdad69b8..88ac0cadba 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -279,7 +279,7 @@ prefs.last_ip = address //these are gonna be used for banning prefs.last_id = computer_id //these are gonna be used for banning - hook_vr("client_new",list(src)) //VOREStation Code. For now this only loads vore prefs, so better put before mob.Login() call but after normal prefs are loaded. + prefs_vr = new/datum/vore_preferences(src) . = ..() //calls mob.Login() prefs.sanitize_preferences() diff --git a/code/modules/client/preference_setup/loadout/01_equipment.dm b/code/modules/client/preference_setup/loadout/01_equipment.dm index 1584152a6c..abc85619aa 100644 --- a/code/modules/client/preference_setup/loadout/01_equipment.dm +++ b/code/modules/client/preference_setup/loadout/01_equipment.dm @@ -146,8 +146,8 @@ var/global/list/valid_ringtones = list( data["pda_type"] = pdachoicelist[pref.pdachoice] data["communicator_visibility"] = pref.communicator_visibility // boolean data["ringtone"] = pref.ringtone - data["shoes"] = pref.shoe_hater - data["jacket"] = pref.no_jacket + data["shoes"] = !pref.shoe_hater + data["jacket"] = !pref.no_jacket return data diff --git a/code/modules/client/preference_setup/loadout/02_loadout.dm b/code/modules/client/preference_setup/loadout/02_loadout.dm index 5a754046ab..d3ec99310f 100644 --- a/code/modules/client/preference_setup/loadout/02_loadout.dm +++ b/code/modules/client/preference_setup/loadout/02_loadout.dm @@ -235,7 +235,7 @@ var/list/gear_datums = list() if(TG.display_name in active_gear_list) active_gear_list -= TG.display_name else if(get_total() + TG.cost <= MAX_GEAR_COST) - active_gear_list[TG.display_name] = list() + LAZYSET(active_gear_list, TG.display_name, list()) return TOPIC_REFRESH_UPDATE_PREVIEW if("gear_tweak") diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index 89556bccca..9595e25666 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -35,7 +35,7 @@ GLOB.transaction_devices -= src . = ..() -/obj/machinery/cash_register/examine(mob/user as mob) +/obj/machinery/cash_register/examine(mob/user) . = ..(user) if(transaction_amount) . += "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""]." @@ -46,7 +46,7 @@ . += "It's completely empty." -/obj/machinery/cash_register/attack_hand(mob/user as mob) +/obj/machinery/cash_register/attack_hand(mob/user) // Don't be accessible from the wrong side of the machine if(get_dir(src, user) & GLOB.reverse_dir[src.dir]) return @@ -67,7 +67,7 @@ open_cash_box() -/obj/machinery/cash_register/interact(mob/user as mob) +/obj/machinery/cash_register/interact(mob/user) var/dat = "

Cash Register

" if (locked) dat += "Unlock
" @@ -172,7 +172,7 @@ -/obj/machinery/cash_register/attackby(obj/item/O as obj, user as mob) +/obj/machinery/cash_register/attackby(obj/item/O, mob/user) // Check for a method of paying (ID, PDA, e-wallet, cash, ect.) var/obj/item/card/id/I = O.GetID() if(I) @@ -203,6 +203,8 @@ /obj/machinery/cash_register/MouseDrop_T(atom/dropping, mob/user) + if(!isobj(dropping)) + return if(Adjacent(dropping) && Adjacent(user) && !user.stat) attackby(dropping, user) diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index 8687e9bd66..0bcfa37bf6 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -26,7 +26,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null /datum/ErrorViewer/proc/browseTo(var/user, var/html) if(user) - var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 700, 500) + var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 900, 500) popup.add_head_content({""}) popup.set_content(html) diff --git a/code/modules/ext_scripts/python.dm b/code/modules/ext_scripts/python.dm index acc5708086..d7cb462d19 100644 --- a/code/modules/ext_scripts/python.dm +++ b/code/modules/ext_scripts/python.dm @@ -16,7 +16,7 @@ arg = "'[arg]'" return arg -/proc/ext_python(var/script, var/args, var/scriptsprefix = 1) +/proc/ext_python(var/script, var/arguments, var/scriptsprefix = 1) return // VOREStation Edit - Can't exploit shell if we never call shell! /* Unreachable with above vorestation edit if(scriptsprefix) @@ -25,6 +25,6 @@ if(world.system_type == MS_WINDOWS) script = replacetext(script, "/", "\\") - var/command = config.python_path + " " + script + " " + args + var/command = config.python_path + " " + script + " " + arguments return shell(command) */ diff --git a/code/modules/food/kitchen/cooking_machines/container.dm b/code/modules/food/kitchen/cooking_machines/container.dm index 1cfcbea2cb..238514fe2c 100644 --- a/code/modules/food/kitchen/cooking_machines/container.dm +++ b/code/modules/food/kitchen/cooking_machines/container.dm @@ -92,7 +92,9 @@ for (var/atom/movable/A in contents) A.forceMove(get_turf(src)) + food_items = 0 to_chat(user, span_notice("You remove all the solid items from the [src].")) + update_icon() /obj/item/reagent_containers/cooking_container/proc/check_contents() if (contents.len == 0) @@ -105,8 +107,6 @@ /obj/item/reagent_containers/cooking_container/AltClick(var/mob/user) do_empty(user) - food_items = 0 - update_icon() //Deletes contents of container. //Used when food is burned, before replacing it with a burned mess diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index 78dbb3aad2..db906eb661 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -152,7 +152,7 @@ return //Drill through the flooring, if any. - if(istype(get_turf(src), /turf/simulated/mineral)) + if(ismineralturf(get_turf(src))) var/turf/simulated/mineral/M = get_turf(src) M.GetDrilled() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 22b9cb9f61..ea8506a869 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -256,7 +256,7 @@ var/obj/item/stack/flag/F = locate() in get_turf(src) var/turf/T = get_turf(src) - if(!T || !istype(T,/turf/simulated/mineral)) + if(!T || !ismineralturf(T)) to_chat(user, "The flag won't stand up in this terrain.") return diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index cb1e434abf..f9c9377468 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -267,7 +267,7 @@ var/list/mining_overlay_cache = list() if(LAZYACCESS(ignore_list, T)) continue - if(istype(T, /turf/simulated/mineral)) + if(ismineralturf(T)) T.update_icon() if(istype(T, /turf/simulated/wall/solidrock)) diff --git a/code/modules/mining/resonator.dm b/code/modules/mining/resonator.dm index 34f454720b..397e1fff48 100644 --- a/code/modules/mining/resonator.dm +++ b/code/modules/mining/resonator.dm @@ -74,7 +74,7 @@ new /obj/effect/temp_visual/resonance_crush(T) // Mineral turfs get drilled! - if(istype(T, /turf/simulated/mineral)) + if(ismineralturf(T)) var/turf/simulated/mineral/M = T M.GetDrilled() qdel(src) diff --git a/code/modules/mining/resonator_vr.dm b/code/modules/mining/resonator_vr.dm index ff811194b1..9f79ca2169 100644 --- a/code/modules/mining/resonator_vr.dm +++ b/code/modules/mining/resonator_vr.dm @@ -138,7 +138,7 @@ new /obj/effect/temp_visual/resonance_crush(T) // Mineral turfs get drilled! - if(istype(T, /turf/simulated/mineral)) + if(ismineralturf(T)) var/turf/simulated/mineral/M = T M.GetDrilled() qdel(src) diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm index 424a698737..44465108da 100644 --- a/code/modules/mob/living/bot/floorbot.dm +++ b/code/modules/mob/living/bot/floorbot.dm @@ -220,7 +220,7 @@ target = null busy = 0 update_icons() - else if(istype(A, /turf/space) || istype(A, /turf/simulated/mineral/floor)) + else if(isopenturf(A) || istype(A, /turf/simulated/mineral/floor)) var/building = 2 if(locate(/obj/structure/lattice, A)) building = 1 diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm index 8db5326471..6ccf34a0c2 100644 --- a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm +++ b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm @@ -125,11 +125,11 @@ base_species = SPECIES_LLEILL var/list/lleill_abilities = list(/datum/power/lleill/invisibility, - /datum/power/lleill/transmute, - /datum/power/lleill/rings, - /datum/power/lleill/contact, - /datum/power/lleill/alchemy, - /datum/power/lleill/beastform) + /datum/power/lleill/transmute, + /datum/power/lleill/rings, + /datum/power/lleill/contact, + /datum/power/lleill/alchemy, + /datum/power/lleill/beastform) var/list/lleill_ability_datums = list() @@ -221,7 +221,7 @@ H.lleill_display.icon_state = "lleill-4" /datum/species/proc/update_lleill_hud(var/mob/living/carbon/human/H) - var/relative_energy = ((lleill_energy/lleill_energy_max)*100) + var/relative_energy = lleill_energy_max ? ((lleill_energy/lleill_energy_max)*100) : 0 if(H.lleill_display) H.lleill_display.invisibility = INVISIBILITY_NONE switch(relative_energy) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 3efc52028b..63d3bb5f47 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -668,7 +668,7 @@ return TRUE // Used to find a special target for falling on, such as pouncing on someone from above. -/datum/species/proc/find_fall_target_special(src, landing) +/datum/species/proc/find_fall_target_special(source, landing) return FALSE // Used to override normal fall behaviour. Use only when the species does fall down a level. diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index 0f91d6df4b..23df9f0662 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -527,8 +527,8 @@ to_chat(src, span_warning("You must remain still to blobform!")) //For some reason, there's no way to force drop all the mobs grabbed. This ought to fix that. And be moved elsewhere. Call with caution, doesn't handle cycles. -/proc/remove_micros(var/src, var/mob/root) - for(var/obj/item/I in src) +/proc/remove_micros(var/source, var/mob/root) + for(var/obj/item/I in source) remove_micros(I, root) //Recursion. I'm honestly depending on there being no containment loop, but at the cost of performance that can be fixed too. if(istype(I, /obj/item/holder)) root.remove_from_mob(I) diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm index c022d9f2bf..753ed68e47 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm @@ -16,6 +16,7 @@ seal_delay = 0 var/mob/living/myprotean initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor, /obj/item/rig_module/protean/healing) + item_flags = NOSTRIP helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers boot_type = /obj/item/clothing/shoes/magboots/rig/protean diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index f95496c9ac..17e06b2a68 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -44,5 +44,6 @@ else voice_sounds_list = DEFAULT_TALK_SOUNDS resize(size_multiplier, animate = FALSE, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE, aura_animation = FALSE) + init_vore() return . diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7cf70b9996..cea503a0db 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1041,7 +1041,7 @@ for(var/belly_class in vore_fullness_ex) reset_belly_lights(belly_class) var/vs_fullness = vore_fullness_ex[belly_class] - if(belly_class == "sleeper") + if(belly_class == "sleeper" && vore_selected) if(sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper") continue if(sleeper_state != 0 && !(vs_fullness + 1 > vore_capacity_ex[belly_class])) if(vore_selected.silicon_belly_overlay_preference == "Sleeper") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index c1d530b94c..47955b2343 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -686,7 +686,9 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? else if (not_hungy) var/nutrition_cost = 500 + (nutrition / 2) adjust_nutrition(-nutrition_cost) - new /mob/living/simple_mob/vore/alienanimals/teppi(loc, src) + new /mob/living/simple_mob/vore/alienanimals/teppi(loc, store_teppi_data(src)) + qdel(src) + return else visible_message("\The [src] whines pathetically...", runemessage = "whines") if(prob(50)) @@ -765,7 +767,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? GLOB.teppi_count ++ if(teppi1 && !teppi2) inherit_from_baby(teppi1) - qdel(teppi1) else if (teppi1 && teppi2) inherit_from_parents(teppi1, teppi2) . = ..() @@ -919,26 +920,46 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? /mob/living/simple_mob/vore/alienanimals/teppi/baby/init_vore() //shouldn't need all the vore bidness if they aren't using it as babbies. They get their tummies when they grow up. return +/mob/living/simple_mob/vore/alienanimals/teppi/proc/store_teppi_data(mob/living/simple_mob/vore/alienanimals/teppi/teppi) + var/list/teppi_data = list( + "dir" = teppi.dir, + "name" = teppi.name, + "real_name" = teppi.real_name, + "faction" = teppi.faction, + "affinity" = teppi.affinity, + "affection_factor" = teppi.affection_factor, + "nutrition" = teppi.nutrition, + "allergen_preference" = teppi.allergen_preference, + "allergen_unpreference" = teppi.allergen_unpreference, + "color" = teppi.color, + "marking_color" = teppi.marking_color, + "horn_color" = teppi.horn_color, + "eye_color" = teppi.eye_color, + "skin_color" = teppi.skin_color, + ) + + return teppi_data + //This sets all the things on adult teppi when they grow from a baby -/mob/living/simple_mob/vore/alienanimals/teppi/proc/inherit_from_baby(mob/living/simple_mob/vore/alienanimals/teppi/baby/baby) +/mob/living/simple_mob/vore/alienanimals/teppi/proc/inherit_from_baby(list/teppi_data) inherit_colors = TRUE inherit_allergen = TRUE - dir = baby.dir - name = baby.name - real_name = baby.real_name - faction = baby.faction - affinity = baby.affinity - affection_factor = baby.affection_factor - nutrition = baby.nutrition - allergen_preference = baby.allergen_preference - allergen_unpreference = baby.allergen_unpreference - color = baby.color - marking_color = baby.marking_color - horn_color = baby.horn_color - eye_color = baby.eye_color - skin_color = baby.skin_color + dir = teppi_data["dir"] + name = teppi_data["name"] + real_name = teppi_data["real_name"] + faction = teppi_data["faction"] + affinity = teppi_data["affinity"] + affection_factor = teppi_data["affection_factor"] + nutrition = teppi_data["nutrition"] + allergen_preference = teppi_data["allergen_preference"] + allergen_unpreference = teppi_data["allergen_unpreference"] + color = teppi_data["color"] + marking_color = teppi_data["marking_color"] + horn_color = teppi_data["horn_color"] + eye_color = teppi_data["eye_color"] + skin_color = teppi_data["skin_color"] ghostjoin = 1 - GLOB.active_ghost_pods |= src + GLOB.active_ghost_pods += src update_icon() //This sets all the things on baby teppi when they are bred from adult teppi diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm index d3af70f384..4724120396 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm @@ -147,7 +147,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have? var/mob/living/simple_mob/animal/passive/chicken/C = new (src.loc) C.ghostjoin = 1 C.ghostjoin_icon() - GLOB.active_ghost_pods |= C + GLOB.active_ghost_pods += C qdel(src) // Say Lists diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3a13a7d503..f365773839 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -76,7 +76,6 @@ living_mob_list += src lastarea = get_area(src) set_focus(src) // VOREStation Add - Key Handling - hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. . = ..() //return QDEL_HINT_HARDDEL_NOW Just keep track of mob references. They delete SO much faster now. diff --git a/code/modules/paperwork/adminpaper.dm b/code/modules/paperwork/adminpaper.dm index d74cc9bffb..e258be16a3 100644 --- a/code/modules/paperwork/adminpaper.dm +++ b/code/modules/paperwork/adminpaper.dm @@ -44,15 +44,15 @@ if(!logo) return if(logo == "SolGov") - logo = "sglogo.png" + logo = 'html/images/sglogo.png' //VOREStation Edit/Add else if(logo == "NanoTrasen") - logo = "ntlogo.png" + logo = 'html/images/ntlogo.png' else - logo = "trader.png" + logo = 'html/images/trader.png' //VOREStation Edit/Add End //TODO change logo based on who you're contacting. - text = "

" + text = "

" text += span_bold("[origin] Quantum Uplink Signed Message") + "
" text += span_small("Encryption key: [originhash]
Challenge: [timehash]") + "

" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 1e70e06e36..6d86263353 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -341,8 +341,10 @@ t = replacetext(t, "\[/grid\]", "") t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[logo\]", "") - t = replacetext(t, "\[sglogo\]", "") + t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[sglogo\]", "") + t = replacetext(t, "\[trlogo\]", "") + // t = replacetext(t, "\[pclogo\]", "") // Not available on virgo t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm index acd8c288bd..f87d7d386d 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -180,7 +180,7 @@ return damage * 3 //made for boring holes /obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0) - if(istype(A, /turf/simulated/mineral)) + if(ismineralturf(A)) var/turf/simulated/mineral/MI = A loc = get_turf(A) // Careful. permutated.Add(A) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index ba8878c3cf..bf3401f9ab 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -372,7 +372,7 @@ ..() /obj/item/projectile/beam/tungsten/on_impact(var/atom/A) - if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (istype(A,/turf/simulated/mineral) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door)) + if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (ismineralturf(A) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door)) var/blast_dir = src.dir A.visible_message(span_danger("\The [A] begins to glow!")) spawn(2 SECONDS) diff --git a/code/modules/random_map/noise/magma.dm b/code/modules/random_map/noise/magma.dm index aa2a7b4dd4..4f94b69687 100644 --- a/code/modules/random_map/noise/magma.dm +++ b/code/modules/random_map/noise/magma.dm @@ -39,6 +39,6 @@ if(value>=178) if(istype(T,/turf/simulated/floor/asteroid)) T.ChangeTurf(/turf/simulated/floor/airless/lava) - else if(istype(T,/turf/simulated/mineral)) + else if(ismineralturf(T)) var/turf/simulated/mineral/M = T M.mined_turf = /turf/simulated/floor/airless/lava diff --git a/code/modules/reagents/machinery/distillery.dm b/code/modules/reagents/machinery/distillery.dm index a8288ac4f0..c5d6dd0dc4 100644 --- a/code/modules/reagents/machinery/distillery.dm +++ b/code/modules/reagents/machinery/distillery.dm @@ -204,7 +204,9 @@ OutputBeaker = null if("adjust temp") - target_temp = tgui_input_number(user, "Choose a target temperature.", "Temperature.", T20C, max_temp, min_temp, round_value = FALSE) + var/new_temp = tgui_input_number(user, "Choose a target temperature.", "Temperature.", T20C, max_temp, min_temp, round_value = FALSE) + if(isnum(new_temp)) + target_temp = new_temp update_icon() diff --git a/code/modules/tickets/procs.dm b/code/modules/tickets/procs.dm index 11255afb26..0ff0a650db 100644 --- a/code/modules/tickets/procs.dm +++ b/code/modules/tickets/procs.dm @@ -10,7 +10,7 @@ if(prefs.muted & MUTE_ADMINHELP) to_chat(src, span_danger("Error: Mentor-PM: You cannot send adminhelps (Muted).")) return - if(handle_spam_prevention(msg,MUTE_ADMINHELP)) + if(handle_spam_prevention(MUTE_ADMINHELP)) return if(!msg) @@ -91,7 +91,7 @@ ADMIN_VERB(cmd_mentor_ticket_panel, (R_ADMIN|R_SERVER|R_MOD|R_MENTOR), "Mentor T if(prefs.muted & MUTE_ADMINHELP) to_chat(src, span_danger("Error: Admin-PM: You cannot send adminhelps (Muted).")) return - if(handle_spam_prevention(msg,MUTE_ADMINHELP)) + if(handle_spam_prevention(MUTE_ADMINHELP)) return if(!msg) @@ -261,7 +261,7 @@ ADMIN_VERB(cmd_mentor_ticket_panel, (R_ADMIN|R_SERVER|R_MOD|R_MENTOR), "Mentor T to_chat(src, span_mentor_notice("Message: [msg]")) return - if (src.handle_spam_prevention(msg,MUTE_ADMINHELP)) + if (src.handle_spam_prevention(MUTE_ADMINHELP)) return msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN))) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index bab290768c..764165bdbe 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -662,7 +662,10 @@ var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly, severity) // preserving save data var/datum/belly_overlays/lookup_belly_path = text2path("/datum/belly_overlays/[lowertext(belly_fullscreen)]") if(!lookup_belly_path) - CRASH("Icon datum was not defined for [belly_fullscreen]") + var/used_fullscreen = belly_fullscreen + to_chat(owner, span_warning("The belly overlay ([used_fullscreen]) you've selected for [src] no longer exists. Please reselect your overlay.")) + belly_fullscreen = null + CRASH("Icon datum was not defined for [used_fullscreen]") var/alpha = min(belly_fullscreen_alpha, L.max_voreoverlay_alpha) F.icon = initial(lookup_belly_path.belly_icon) diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 7a5831e47d..e5689706b8 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -220,6 +220,8 @@ if((mode_flags & DM_FLAG_STRIPPING) && H.strip_pref) //Stripping pref check for(var/slot in slots) var/obj/item/I = H.get_equipped_item(slot = slot) + if(I.flags & NOSTRIP) + continue if(I && H.unEquip(I, force = FALSE)) handle_digesting_item(I) digestion_noise_chance = 25 diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 7a7e0a18a3..a922852c9a 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -39,19 +39,6 @@ /mob/living/proc/handle_special_unlocks() return -// -// Hook for generic creation of stuff on new creatures -// -/hook/living_new/proc/vore_setup(mob/living/M) - - //Tries to load prefs if a client is present otherwise gives freebie stomach - spawn(2 SECONDS) - if(!QDELETED(M)) - M.init_vore() - - //return TRUE to hook-caller - return TRUE - /mob/proc/init_vore() //Something else made organs, meanwhile. if(!isnewplayer(src)) @@ -1436,7 +1423,10 @@ to_chat(user, span_vwarning("This person's prefs dont allow that!")) return FALSE - var/obj/belly/RTB = tgui_input_list(user, "Choose which vore belly to transfer from", "Select Belly", vore_organs) + if(!LAZYLEN(TG.vore_organs)) + return FALSE + + var/obj/belly/RTB = tgui_input_list(user, "Choose which vore belly to transfer from", "Select Belly", TG.vore_organs) if(!RTB) return FALSE diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index e53f55ff94..c4d414d2a1 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -33,13 +33,6 @@ /client var/datum/vore_preferences/prefs_vr -/hook/client_new/proc/add_prefs_vr(client/C) - C.prefs_vr = new/datum/vore_preferences(C) - if(C.prefs_vr) - return TRUE - - return FALSE - /datum/vore_preferences //Actual preferences var/digestable = TRUE diff --git a/code/modules/vore/hook-defs_vr.dm b/code/modules/vore/hook-defs_vr.dm index f5aa075a9b..5482d2b2a3 100644 --- a/code/modules/vore/hook-defs_vr.dm +++ b/code/modules/vore/hook-defs_vr.dm @@ -1,40 +1,2 @@ -//The base hooks themselves - -//New() hooks -/hook/client_new - -/hook/mob_new - -/hook/living_new - -/hook/carbon_new - -/hook/human_new - -/hook/simple_mob_new - -//Hooks for interactions -/hook/living_attackby - // Hook for when a mob de-spawns! /hook/despawn - -// -//Hook helpers to expand hooks to others -// -/hook/mob_new/proc/chain_hooks(mob/M) - var/result = 1 - if(isliving(M)) - if(!hook_vr("living_new",args)) - result = 0 - - if(iscarbon(M)) - if(!hook_vr("carbon_new",args)) - result = 0 - - if(ishuman(M)) - if(!hook_vr("human_new",args)) - result = 0 - - //Return 1 to superhook - return result diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 997ad26b88..0663f8a3b5 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -179,13 +179,6 @@ // but just in case it does, I'm leaving the null-src checking log_admin("[key_name(src)] used the resize command in-game to be [new_size]% size. [src ? ADMIN_JMP(src) : "null"]") -/* -//Add the set_size() proc to usable verbs. By commenting this out, we can leave the proc and hand it to species that need it. -/hook/living_new/proc/resize_setup(mob/living/H) - add_verb(H, /mob/living/proc/set_size) - return 1 -*/ - /** * Attempt to scoop up this mob up into M's hands, if the size difference is large enough. * @return false if normal code should continue, 1 to prevent normal code. diff --git a/code/modules/vore/trycatch_vr.dm b/code/modules/vore/trycatch_vr.dm index fa1b556280..a383f0caff 100644 --- a/code/modules/vore/trycatch_vr.dm +++ b/code/modules/vore/trycatch_vr.dm @@ -12,13 +12,13 @@ if(attempt_vr(object,proc to call,args)) return The proc you're attemping should return nonzero values on success. */ -/proc/attempt_vr(callon, procname, list/args=null) +/proc/attempt_vr(callon, procname, list/arguments=null) try if(!callon || !procname) error("attempt_vr: Invalid obj/proc: [callon]/[procname]") return 0 - var/result = call(callon,procname)(arglist(args)) + var/result = call(callon,procname)(arglist(arguments)) return result @@ -42,7 +42,7 @@ if(hook_vr(proc,args)) return The hooks you're calling should return nonzero values on success. */ -/proc/hook_vr(hook, list/args=null) +/proc/hook_vr(hook, list/arguments=null) try var/hook_path = text2path("/hook/[hook]") if(!hook_path) @@ -52,7 +52,7 @@ The hooks you're calling should return nonzero values on success. var/hook_instance = new hook_path var/status = 1 for(var/P in typesof("[hook_path]/proc")) - if(!call(hook_instance, P)(arglist(args))) + if(!call(hook_instance, P)(arglist(arguments))) error("hook_vr: Hook '[P]' failed or runtimed.") status = 0 diff --git a/code/modules/xenoarcheaology/artifacts/gigadrill.dm b/code/modules/xenoarcheaology/artifacts/gigadrill.dm index e285a2b90d..922d38728e 100644 --- a/code/modules/xenoarcheaology/artifacts/gigadrill.dm +++ b/code/modules/xenoarcheaology/artifacts/gigadrill.dm @@ -21,7 +21,7 @@ /obj/machinery/giga_drill/Bump(atom/A) if(active && !drilling_turf) - if(istype(A,/turf/simulated/mineral)) + if(ismineralturf(A)) var/turf/simulated/mineral/M = A drilling_turf = get_turf(src) src.visible_message(span_bold("\The [src]") + " begins to drill into \the [M].") diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm index fb18b0e89e..6d995fe23c 100644 --- a/code/modules/xenoarcheaology/sampling.dm +++ b/code/modules/xenoarcheaology/sampling.dm @@ -117,7 +117,7 @@ /obj/item/core_sampler/proc/sample_item(var/item_to_sample, var/mob/user) var/datum/geosample/geo_data - if(istype(item_to_sample, /turf/simulated/mineral)) + if(ismineralturf(item_to_sample)) var/turf/simulated/mineral/T = item_to_sample T.geologic_data.UpdateNearbyArtifactInfo(T) geo_data = T.geologic_data diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm index c79470b41a..fb5707feb5 100644 --- a/code/modules/xenoarcheaology/tools/suspension_generator.dm +++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm @@ -167,7 +167,7 @@ add_overlay("shield2") visible_message(span_blue("[icon2html(suspension_field,viewers(src))] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].")) else - if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) + if(ismineralturf(T) || istype(T,/turf/simulated/wall)) suspension_field.icon_state = "shieldsparkles" else suspension_field.icon_state = "shield2" diff --git a/code/unit_tests/unit_test_vr.dm b/code/unit_tests/unit_test_vr.dm index ea4023d7b2..ae3d871b15 100644 --- a/code/unit_tests/unit_test_vr.dm +++ b/code/unit_tests/unit_test_vr.dm @@ -19,6 +19,7 @@ return 0 var/mob/living/carbon/human/H = new mobtype(mobloc) + H.init_vore() if(with_mind) H.mind_initialize("TestKey[rand(0,10000)]") diff --git a/tgui/packages/tgui/interfaces/AtmosControl.tsx b/tgui/packages/tgui/interfaces/AtmosControl.tsx index b62d26481b..3569c5d492 100644 --- a/tgui/packages/tgui/interfaces/AtmosControl.tsx +++ b/tgui/packages/tgui/interfaces/AtmosControl.tsx @@ -97,9 +97,7 @@ export const AtmosControlContent = (props) => { - - {tab[tabIndex]} - + {tab[tabIndex]} ); };