Merge branch 'release' of https://github.com/VOREStation/VOREStation into voreupdate

This commit is contained in:
izac112
2025-01-14 02:20:30 +01:00
815 changed files with 7129 additions and 8204 deletions
+2 -2
View File
@@ -51,7 +51,7 @@ var/global/floorIsLava = 0
body += " played by <b>[M.client]</b> "
body += "\[<A href='byond://?src=\ref[src];[HrefToken()];editrights=show'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\]"
if(istype(M, /mob/new_player))
if(isnewplayer(M))
body += " <B>Hasn't Entered Game</B> "
else
body += " \[<A href='byond://?src=\ref[src];[HrefToken()];revive=\ref[M]'>Heal</A>\] "
@@ -105,7 +105,7 @@ var/global/floorIsLava = 0
"}
if (M.client)
if(!istype(M, /mob/new_player))
if(!isnewplayer(M))
body += "<br><br>"
body += span_bold("Transformation:")
body += "<br>"
@@ -35,7 +35,6 @@ var/list/admin_verbs_admin = list(
/datum/admins/proc/announce, //priority announce something to all clients.,
/datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement,
/datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange,
/client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc,
/client/proc/admin_ghost, //allows us to ghost/reenter body at will,
/datum/admins/proc/show_player_panel, //shows an interface for individual players, with various links (links require additional flags, //VOREStation Add,
/client/proc/player_panel_new, //shows an interface for all players, with links to various panels, //VOREStation Add,
@@ -317,7 +316,6 @@ var/list/admin_verbs_hideable = list(
/datum/admins/proc/toggleenter,
/datum/admins/proc/toggleguests,
/datum/admins/proc/announce,
/client/proc/colorooc,
/client/proc/admin_ghost,
/client/proc/toggle_view_range,
/datum/admins/proc/view_txt_log,
@@ -407,7 +405,6 @@ var/list/admin_verbs_mod = list(
/client/proc/cmd_event_say,
/datum/admins/proc/show_player_info,
/datum/admins/proc/show_traitor_panel,
/client/proc/colorooc,
/client/proc/player_panel_new,
/client/proc/dsay,
/datum/admins/proc/show_player_panel,
@@ -501,7 +498,6 @@ var/list/admin_verbs_event_manager = list(
/datum/admins/proc/announce, //priority announce something to all clients.,
/datum/admins/proc/intercom, //send a fake intercom message, like an arrivals announcement,
/datum/admins/proc/intercom_convo, //send a fake intercom conversation, like an ATC exchange,
/client/proc/colorooc, //allows us to set a custom colour for everythign we say in ooc,
/client/proc/admin_ghost, //allows us to ghost/reenter body at will,
/client/proc/toggle_view_range, //changes how far we can see,
/client/proc/cmd_admin_pm_context, //right-click adminPM interface,
+4 -18
View File
@@ -42,7 +42,7 @@
if(build_mode != "Yes")
to_chat(src, "Will not re-enter buildmode after switch.")
if(istype(mob,/mob/observer/dead))
if(isobserver(mob))
//re-enter
var/mob/observer/dead/ghost = mob
if(ghost.can_reenter_corpse)
@@ -59,7 +59,7 @@
feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else if(istype(mob,/mob/new_player))
else if(isnewplayer(mob))
to_chat(src, span_filter_system(span_warning("Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.")))
else
//ghostize
@@ -157,20 +157,6 @@
feedback_add_details("admin_verb","S") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/client/proc/colorooc()
set category = "Admin.Misc"
set name = "OOC Text Color"
if(!holder) return
var/response = tgui_alert(src, "Please choose a distinct color that is easy to read and doesn't mix with all the other chat and radio frequency colors.", "Change own OOC color", list("Pick new color", "Reset to default", "Cancel"))
if(response == "Pick new color")
prefs.ooccolor = input(src, "Please select your OOC colour.", "OOC colour") as color
else if(response == "Reset to default")
prefs.ooccolor = initial(prefs.ooccolor)
SScharacter_setup.queue_preferences_save(prefs)
feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/client/proc/findStealthKey(txt)
if(txt)
for(var/P in GLOB.stealthminID)
@@ -196,7 +182,7 @@
if(holder)
if(holder.fakekey)
holder.fakekey = null
if(istype(src.mob, /mob/new_player))
if(isnewplayer(src.mob))
mob.name = capitalize(ckey)
else
var/new_key = ckeyEx(tgui_input_text(usr, "Enter your desired display name.", "Fake Key", key))
@@ -206,7 +192,7 @@
new_key = copytext(new_key, 1, 26)
holder.fakekey = new_key
createStealthKey()
if(istype(mob, /mob/new_player))
if(isnewplayer(mob))
mob.name = new_key
log_and_message_admins("[key_name(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]")
feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+1 -1
View File
@@ -46,7 +46,7 @@
if(A)
var/icon/img = getFlatIcon(A)
if(istype(img, /icon))
if(istype(A, /mob/living) && A:lying)
if(isliving(A) && A:lying)
img.BecomeLying()
var/xoff = (A.x - tx) * 32
var/yoff = (A.y - ty) * 32
+6 -6
View File
@@ -45,13 +45,13 @@
/datum/eventkit/modify_robot/ui_assets(mob/user)
return list(
get_asset_datum(/datum/asset/spritesheet/robot_icons)
get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
)
/datum/eventkit/modify_robot/tgui_data(mob/user)
. = list()
// Target section for general data
var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons)
var/datum/asset/spritesheet_batched/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
if(target)
.["target"] = list()
@@ -349,8 +349,8 @@
target.radio.keyslot = new /obj/item/encryptionkey/syndicate(target)
target.radio.syndie = 1
target.module.channels += list("[selected_radio_channel]" = 1)
target.radio.channels[selected_radio_channel] += target.module.channels[selected_radio_channel]
target.radio.secure_radio_connections[selected_radio_channel] += radio_controller.add_object(target.radio, radiochannels[selected_radio_channel], RADIO_CHAT)
target.radio.channels[selected_radio_channel] = target.module.channels[selected_radio_channel]
target.radio.secure_radio_connections[selected_radio_channel] = radio_controller.add_object(target.radio, radiochannels[selected_radio_channel], RADIO_CHAT)
return TRUE
if("rem_channel")
var/selected_radio_channel = params["channel"]
@@ -363,7 +363,7 @@
target.radio.syndie = 0
target.radio.channels = list()
for(var/n_chan in target.module.channels)
target.radio.channels[n_chan] -= target.module.channels[n_chan]
target.radio.channels[n_chan] = target.module.channels[n_chan]
radio_controller.remove_object(target.radio, radiochannels[selected_radio_channel])
target.radio.secure_radio_connections -= selected_radio_channel
return TRUE
@@ -589,7 +589,7 @@
target_items += list(list("name" = item.name, "ref" = "\ref[item]", "icon" = icon2html(item, user, sourceonly=TRUE), "desc" = item.desc))
return target_items
/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user, var/datum/asset/spritesheet/robot_icons/spritesheet)
/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user, var/datum/asset/spritesheet_batched/robot_icons/spritesheet)
var/list/source_list = list()
source_list["model"] = source.module
source_list["sprite"] = sanitize_css_class_name("[source.sprite_datum.type]")
+1 -1
View File
@@ -776,7 +776,7 @@
X.orbit(target)
if("ai")
if(!istype(target, /mob/living))
if(!isliving(target))
to_chat(ui.user, span_notice("This can only be used on instances of type /mob/living"))
return
var/mob/living/L = target
+4 -4
View File
@@ -257,7 +257,7 @@
else
M_job = JOB_LIVING
else if(istype(M,/mob/new_player))
else if(isnewplayer(M))
M_job = JOB_NEW_PLAYER
else if(isobserver(M))
@@ -336,9 +336,9 @@
dat += "<td>Cyborg</td>"
else if(ishuman(M))
dat += "<td>[M.real_name]</td>"
else if(istype(M, /mob/living/silicon/pai))
else if(ispAI(M))
dat += "<td>pAI</td>"
else if(istype(M, /mob/new_player))
else if(isnewplayer(M))
dat += "<td>New Player</td>"
else if(isobserver(M))
dat += "<td>Ghost</td>"
@@ -350,7 +350,7 @@
dat += "<td>Unknown</td>"
if(istype(M,/mob/living/carbon/human))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.mind && H.mind.assigned_role)
dat += "<td>[H.mind.assigned_role]</td>"
+8 -8
View File
@@ -1091,7 +1091,7 @@
if(!ismob(M))
to_chat(usr, span_filter_adminlog("This can only be used on instances of type /mob"))
return
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/living/silicon/ai"))
return
@@ -1112,7 +1112,7 @@
if(!M) return
M.loc = prison_cell
if(istype(M, /mob/living/carbon/human))
if(ishuman(M))
var/mob/living/carbon/human/prisoner = M
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
@@ -1154,7 +1154,7 @@
if(!ismob(M))
to_chat(usr, span_filter_adminlog("This can only be used on instances of type /mob"))
return
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/living/silicon/ai"))
return
@@ -1179,7 +1179,7 @@
if(!ismob(M))
to_chat(usr, span_filter_adminlog("This can only be used on instances of type /mob"))
return
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/living/silicon/ai"))
return
@@ -1204,7 +1204,7 @@
if(!ismob(M))
to_chat(usr, span_filter_adminlog("This can only be used on instances of type /mob"))
return
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/living/silicon/ai"))
return
@@ -1226,14 +1226,14 @@
if(!ismob(M))
to_chat(usr, span_filter_adminlog("This can only be used on instances of type /mob"))
return
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/living/silicon/ai"))
return
for(var/obj/item/I in M)
M.drop_from_inventory(I)
if(istype(M, /mob/living/carbon/human))
if(ishuman(M))
var/mob/living/carbon/human/observer = M
observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform)
observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(observer), slot_shoes)
@@ -1296,7 +1296,7 @@
if(!check_rights(R_SPAWN)) return
var/mob/M = locate(href_list["makeanimal"])
if(istype(M, /mob/new_player))
if(isnewplayer(M))
to_chat(usr, span_filter_adminlog("This cannot be used on instances of type /mob/new_player"))
return
+1 -2
View File
@@ -20,8 +20,7 @@
if(areaname)
A = return_sorted_areas()[areaname]
else
var/newareaname = tgui_input_list(usr, "Pick an area:", "Jump to Area", return_sorted_areas())
A = return_sorted_areas()[newareaname] // YW EDIT - tgui_input_list returns strings even if var is area... Get area from name with this
A = return_sorted_areas()[tgui_input_list(usr, "Pick an area:", "Jump to Area", return_sorted_areas())]
if(!A)
return
@@ -43,7 +43,7 @@
var/mob/living/carbon/human/M = tgui_input_list(usr, "Select mob.", "Edit Appearance", human_mob_list)
if(!istype(M, /mob/living/carbon/human))
if(!ishuman(M))
to_chat(usr, span_warning("You can only do this to humans!"))
return
if(tgui_alert(usr, "Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.","Danger!",list("Yes","No")) != "Yes")
+3 -3
View File
@@ -100,7 +100,7 @@
if(!ticker)
tgui_alert_async(usr, "Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
if(ishuman(M))
log_admin("[key_name(src)] has robotized [M.key].")
spawn(10)
M:Robotize()
@@ -120,7 +120,7 @@
tgui_alert_async(usr, "That mob doesn't seem to exist, close the panel and try again.")
return
if(istype(M, /mob/new_player))
if(isnewplayer(M))
tgui_alert_async(usr, "The mob must not be a new_player.")
return
@@ -279,7 +279,7 @@
if (!ticker)
tgui_alert_async(usr, "Wait until the game starts")
return
if (istype(M, /mob/living/carbon/human))
if (ishuman(M))
var/mob/living/carbon/human/H = M
if (H.wear_id)
var/obj/item/card/id/id = H.wear_id
+5 -5
View File
@@ -43,7 +43,7 @@
to_chat(usr, span_notice("Ghosts shouldn't be narrated! If you want a ghost, make it a subtype of mob/living!"))
return
//We require a static mob/living type to check for .client and also later on, to use the unique .say mechanics for stuttering and language
if(istype(E, /mob/living))
if(isliving(E))
var/mob/living/L = E
if(L.client)
to_chat(usr, span_notice("[L.name] is a player. All attempts to speak through them \
@@ -170,7 +170,7 @@
to_chat(usr, span_notice("[name] has invalid reference, deleting"))
holder.entity_names -= name
holder.entity_refs -= name
if(istype(selection, /mob/living))
if(isliving(selection))
var/mob/living/our_entity = selection
if(our_entity.client) //Making sure we can't speak for players
log_and_message_admins("used entity-narrate to speak through [our_entity.ckey]'s mob", usr)
@@ -267,7 +267,7 @@
tgui_selected_type = ""
tgui_selected_name = ""
tgui_selected_refs = null
if(istype(tgui_selected_refs, /mob/living))
if(isliving(tgui_selected_refs))
var/mob/living/L = tgui_selected_refs
if(L.client)
tgui_selected_type = "!!!!PLAYER!!!!"
@@ -296,7 +296,7 @@
entity_refs -= entity
tgui_selected_id_multi -= entity
continue
if(istype(ref, /mob/living))
if(isliving(ref))
var/mob/living/L = ref
if(L.client)
log_and_message_admins("used entity-narrate to speak through [L.ckey]'s mob", ui.user)
@@ -316,7 +316,7 @@
tgui_selected_name = ""
tgui_selected_refs = null
return
if(istype(ref, /mob/living))
if(isliving(ref))
var/mob/living/L = ref
if(L.client)
log_and_message_admins("used entity-narrate to speak through [L.ckey]'s mob", ui.user)
@@ -18,7 +18,7 @@
//Initializing our working list
for(var/player in player_list_local)
if(!istype(player, /mob/living)) continue //We only care for living players
if(!isliving(player)) continue //We only care for living players
var/mob/living/L = player
players += 1
if(L.client.inactivity > INACTIVITY_CAP)
+3 -3
View File
@@ -240,8 +240,8 @@
target.radio.keyslot = new /obj/item/encryptionkey/syndicate(target)
target.radio.syndie = 1
target.module.channels += list("[selected_radio_channel]" = 1)
target.radio.channels[selected_radio_channel] += target.module.channels[selected_radio_channel]
target.radio.secure_radio_connections[selected_radio_channel] += radio_controller.add_object(target.radio, radiochannels[selected_radio_channel], RADIO_CHAT)
target.radio.channels[selected_radio_channel] = target.module.channels[selected_radio_channel]
target.radio.secure_radio_connections[selected_radio_channel] = radio_controller.add_object(target.radio, radiochannels[selected_radio_channel], RADIO_CHAT)
available_channels -= selected_radio_channel
to_chat(usr, span_danger("You added \"[selected_radio_channel]\" channel to [target]."))
if(MODIFIY_ROBOT_RADIOC_REMOVE)
@@ -258,7 +258,7 @@
target.radio.syndie = 0
target.radio.channels = list()
for(var/n_chan in target.module.channels)
target.radio.channels[n_chan] -= target.module.channels[n_chan]
target.radio.channels[n_chan] = target.module.channels[n_chan]
radio_controller.remove_object(target.radio, radiochannels[selected_radio_channel])
target.radio.secure_radio_connections -= selected_radio_channel
to_chat(usr, span_danger("You removed \"[selected_radio_channel]\" channel from [target]."))
+4 -4
View File
@@ -24,7 +24,7 @@
return
if (ismob(M))
if(istype(M, /mob/living/silicon/ai))
if(isAI(M))
tgui_alert_async(usr, "The AI can't be sent to prison you jerk!")
return
//strip their stuff before they teleport into a cell :downs:
@@ -34,7 +34,7 @@
M.Paralyse(5)
sleep(5) //so they black out before warping
M.loc = pick(prisonwarp)
if(istype(M, /mob/living/carbon/human))
if(ishuman(M))
var/mob/living/carbon/human/prisoner = M
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
@@ -764,7 +764,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
log_admin("[key_name(usr)] has gibbed [key_name(M)]")
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]", 1)
if(istype(M, /mob/observer/dead))
if(isobserver(M))
gibs(M.loc)
return
@@ -782,7 +782,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!confirm)
return
if(confirm == "Yes")
if (istype(mob, /mob/observer/dead)) // so they don't spam gibs everywhere
if (isobserver(mob)) // so they don't spam gibs everywhere
return
else
mob.gib()
+7 -7
View File
@@ -187,7 +187,7 @@
if(!check_rights(0)) return
var/mob/M = locate(href_list["give_ai"])
if(!istype(M, /mob/living))
if(!isliving(M))
to_chat(usr, span_notice("This can only be used on instances of type /mob/living"))
return
var/mob/living/L = M
@@ -419,17 +419,17 @@
var/list/possibleverbs = list()
possibleverbs += "Cancel" // One for the top...
possibleverbs += typesof(/mob/proc, /mob/verb)
if(istype(H,/mob/observer/dead))
if(isobserver(H))
possibleverbs += typesof(/mob/observer/dead/proc,/mob/observer/dead/verb)
if(istype(H,/mob/living))
if(isliving(H))
possibleverbs += typesof(/mob/living/proc,/mob/living/verb)
if(istype(H,/mob/living/carbon/human))
if(ishuman(H))
possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc)
if(istype(H,/mob/living/silicon/robot))
if(isrobot(H))
possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb)
if(istype(H,/mob/living/silicon/ai))
if(isAI(H))
possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb)
if(istype(H,/mob/living/simple_mob))
if(isanimal(H))
possibleverbs += typesof(/mob/living/simple_mob/proc)
possibleverbs -= H.verbs
possibleverbs += "Cancel" // ...And one for the bottom