mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-23 21:17:20 +01:00
Midweek bugfix release (#16867)
* fix adminjump to area (#16853) * fix a runtime in the keyloop (#16852) * fix a runtime in the keyloop * also fix that * gloves runtime * do it proper * fix stun effect act (#16850) * fix a runtime and some usr to user (#16849) * fix a runtimg and some usr to user * . * . * more usr * fix some bad replaces (#16856) * fix a lot of map issues (#16857) * fix a lot of map issues * fix SM template... * fix change turf (#16860) * Fluff item for Beeholddrbeesphb/Evelynn (#16859) * Fix synth_color not working (#16866) * Fix synth_color not working * Fix spawnpoint pref * living * oups --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com>
This commit is contained in:
co-authored by
Kashargul
ShadowLarkens
parent
b586f26e1c
commit
35172fd5eb
@@ -20,7 +20,7 @@
|
||||
if(areaname)
|
||||
A = return_sorted_areas()[areaname]
|
||||
else
|
||||
A = tgui_input_list(usr, "Pick an area:", "Jump to Area", return_sorted_areas())
|
||||
A = return_sorted_areas()[tgui_input_list(usr, "Pick an area:", "Jump to Area", return_sorted_areas())]
|
||||
|
||||
if(!A)
|
||||
return
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
. += span_bold("Biological Sex:") + " <a href='byond://?src=\ref[src];bio_gender=1'><b>[gender2text(pref.biological_gender)]</b></a><br>"
|
||||
. += span_bold("Pronouns:") + " <a href='byond://?src=\ref[src];id_gender=1'><b>[gender2text(pref.identifying_gender)]</b></a><br>"
|
||||
. += span_bold("Age:") + " <a href='byond://?src=\ref[src];age=1'>[pref.read_preference(/datum/preference/numeric/human/age)]</a> <b>Birthday:</b> <a href='byond://?src=\ref[src];bday_month=1'>[pref.read_preference(/datum/preference/numeric/human/bday_month)]</a><b>/</b><a href='byond://?src=\ref[src];bday_day=1'>[pref.read_preference(/datum/preference/numeric/human/bday_day)]</a> - <b>Announce?:</b> <a href='byond://?src=\ref[src];bday_announce=1'>[pref.read_preference(/datum/preference/toggle/human/bday_announce) ? "Yes" : "No"]</a><br>"
|
||||
. += span_bold("Spawn Point:") + " <a href='byond://?src=\ref[src];spawnpoint=1'>[pref.read_preference(/datum/preference/choiced/human/spawnpoint)]</a><br>"
|
||||
. += span_bold("Spawn Point:") + " <a href='byond://?src=\ref[src];spawnpoint=1'>[pref.read_preference(/datum/preference/choiced/living/spawnpoint)]</a><br>"
|
||||
if(CONFIG_GET(flag/allow_metadata))
|
||||
. += span_bold("OOC Notes: <a href='byond://?src=\ref[src];edit_ooc_notes=1'>Edit</a><a href='byond://?src=\ref[src];edit_ooc_note_likes=1'>Likes</a><a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1'>Dislikes</a>") + "<br>"
|
||||
. = jointext(.,null)
|
||||
@@ -183,7 +183,7 @@
|
||||
spawnkeys += spawntype
|
||||
var/choice = tgui_input_list(user, "Where would you like to spawn when late-joining?", "Late-Join Choice", spawnkeys)
|
||||
if(!choice || !spawntypes[choice] || !CanUseTopic(user)) return TOPIC_NOACTION
|
||||
pref.update_preference_by_type(/datum/preference/choiced/human/spawnpoint, choice)
|
||||
pref.update_preference_by_type(/datum/preference/choiced/living/spawnpoint, choice)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["edit_ooc_notes"])
|
||||
|
||||
@@ -159,17 +159,17 @@
|
||||
/datum/preference/toggle/human/name_is_always_random/apply_to_human(mob/living/carbon/human/target, value)
|
||||
return // handled in copy_to
|
||||
|
||||
/datum/preference/choiced/human/spawnpoint
|
||||
/datum/preference/choiced/living/spawnpoint
|
||||
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
|
||||
savefile_key = "spawnpoint"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/choiced/human/spawnpoint/init_possible_values()
|
||||
/datum/preference/choiced/living/spawnpoint/init_possible_values()
|
||||
var/list/spawnkeys = list()
|
||||
for(var/spawntype in spawntypes)
|
||||
for(var/spawntype in get_spawn_points())
|
||||
spawnkeys += spawntype
|
||||
return spawnkeys
|
||||
|
||||
/datum/preference/choiced/human/spawnpoint/apply_to_human(mob/living/carbon/human/target, value)
|
||||
/datum/preference/choiced/living/spawnpoint/apply_to_living(mob/living/target, value)
|
||||
return // handled in job_controller
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/datum/preference/color/human/synth_color
|
||||
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
savefile_key = "synth_color"
|
||||
savefile_key = "synth_color_rgb"
|
||||
can_randomize = FALSE
|
||||
|
||||
/datum/preference/color/human/synth_color/apply_to_human(mob/living/carbon/human/target, value)
|
||||
|
||||
@@ -6,6 +6,11 @@ var/list/spawntypes = list()
|
||||
var/datum/spawnpoint/S = new type()
|
||||
spawntypes[S.display_name] = S
|
||||
|
||||
/proc/get_spawn_points()
|
||||
if(!LAZYLEN(spawntypes))
|
||||
populate_spawn_points()
|
||||
return spawntypes
|
||||
|
||||
/datum/spawnpoint
|
||||
var/msg //Message to display on the arrivals computer.
|
||||
var/list/turfs //List of turfs to spawn on.
|
||||
@@ -103,4 +108,4 @@ var/global/list/latejoin_tram = list()
|
||||
|
||||
/datum/spawnpoint/tram/New()
|
||||
..()
|
||||
turfs = latejoin_tram
|
||||
turfs = latejoin_tram
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
for(var/mob/viewer in m_viewers)
|
||||
if(viewer.client && viewer.client.prefs?.read_preference(/datum/preference/toggle/show_looc))
|
||||
receivers |= viewer.client
|
||||
else if(isobserver(viewer)) // For AI eyes and the like
|
||||
else if(isEye(viewer)) // For AI eyes and the like
|
||||
var/mob/observer/eye/E = viewer
|
||||
if(E.owner && E.owner.client)
|
||||
receivers |= E.owner.client
|
||||
|
||||
@@ -131,6 +131,9 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
/obj/item/rig_module/protean/armor/process()
|
||||
if(active)
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(!H)
|
||||
deactivate(1)
|
||||
return
|
||||
if(istype(H.species, /datum/species/protean))
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
deactivate(1)
|
||||
@@ -185,7 +188,10 @@ These should come standard with the Protean rigsuit, unless you want them to wor
|
||||
if(active)
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
var/mob/living/P = holder?:myprotean
|
||||
if((istype(H.species, /datum/species/protean)) || !H || !P)
|
||||
if(!H || !P)
|
||||
deactivate()
|
||||
return
|
||||
if(istype(H.species, /datum/species/protean))
|
||||
to_chat(H, span_warning("Your Protean modules do not function on yourself."))
|
||||
deactivate()
|
||||
return
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
icon = DRINK_ICON_FILE
|
||||
var/base_icon = "square" // Base icon name
|
||||
volume = 30
|
||||
icon_state = "square"
|
||||
|
||||
var/list/filling_states // List of percentages full that have icons
|
||||
|
||||
|
||||
@@ -571,10 +571,11 @@ emp_act
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
|
||||
if (gloves)
|
||||
gloves.add_blood(source)
|
||||
gloves:transfer_blood = amount
|
||||
gloves:bloody_hands_mob = source
|
||||
if (istype(gloves, /obj/item/clothing/gloves))
|
||||
var/obj/item/clothing/gloves/gl = gloves
|
||||
gl.add_blood(source)
|
||||
gl.transfer_blood = amount
|
||||
gl.bloody_hands_mob = source
|
||||
else
|
||||
add_blood(source)
|
||||
bloody_hands = amount
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
apply_effect(EYE_BLUR, stun_amount)
|
||||
|
||||
if (agony_amount)
|
||||
apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon)
|
||||
apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon=used_weapon)
|
||||
apply_effect(STUTTER, agony_amount/10)
|
||||
apply_effect(EYE_BLUR, agony_amount/10)
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
return
|
||||
|
||||
// Don't let AI eyes yeet themselves off the map
|
||||
if(isobserver(A))
|
||||
if(isEye(A))
|
||||
return
|
||||
|
||||
if(A.lost_in_space())
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
if(!camera)
|
||||
return
|
||||
var/obj/item/photo/selection = camera.selectpicture()
|
||||
var/obj/item/photo/selection = camera.selectpicture(ui.user)
|
||||
if (!selection)
|
||||
return
|
||||
|
||||
|
||||
@@ -21,29 +21,29 @@
|
||||
p.name = "Image [photos_taken][sufix]"
|
||||
aipictures += p
|
||||
|
||||
/obj/item/camera/siliconcam/proc/injectmasteralbum(obj/item/photo/p) //stores image information to a list similar to that of the datacore
|
||||
var/mob/living/silicon/robot/C = usr
|
||||
/obj/item/camera/siliconcam/proc/injectmasteralbum(mob/user, obj/item/photo/p) //stores image information to a list similar to that of the datacore
|
||||
var/mob/living/silicon/robot/C = user
|
||||
if(C.connected_ai)
|
||||
C.connected_ai.aiCamera.injectaialbum(p.copy(1), " (synced from [C.name])")
|
||||
to_chat(C.connected_ai, span_unconscious("Image uploaded by [C.name]"))
|
||||
to_chat(usr, span_unconscious("Image synced to remote database")) //feedback to the Cyborg player that the picture was taken
|
||||
to_chat(user, span_unconscious("Image synced to remote database")) //feedback to the Cyborg player that the picture was taken
|
||||
else
|
||||
to_chat(usr, span_unconscious("Image recorded"))
|
||||
to_chat(user, span_unconscious("Image recorded"))
|
||||
// Always save locally
|
||||
injectaialbum(p)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/selectpicture(obj/item/camera/siliconcam/cam)
|
||||
/obj/item/camera/siliconcam/proc/selectpicture(mob/user, obj/item/camera/siliconcam/cam)
|
||||
if(!cam)
|
||||
cam = getsource()
|
||||
cam = getsource(user)
|
||||
|
||||
var/list/nametemp = list()
|
||||
var/find
|
||||
if(cam.aipictures.len == 0)
|
||||
to_chat(usr, span_userdanger("No images saved"))
|
||||
to_chat(user, span_userdanger("No images saved"))
|
||||
return
|
||||
for(var/obj/item/photo/t in cam.aipictures)
|
||||
nametemp += t.name
|
||||
find = tgui_input_list(usr, "Select image (numbered in order taken)", "Picture Choice", nametemp)
|
||||
find = tgui_input_list(user, "Select image (numbered in order taken)", "Picture Choice", nametemp)
|
||||
if(!find)
|
||||
return
|
||||
|
||||
@@ -51,48 +51,50 @@
|
||||
if(q.name == find)
|
||||
return q
|
||||
|
||||
/obj/item/camera/siliconcam/proc/viewpictures()
|
||||
var/obj/item/photo/selection = selectpicture()
|
||||
/obj/item/camera/siliconcam/proc/viewpictures(mob/user)
|
||||
var/obj/item/photo/selection = selectpicture(user)
|
||||
|
||||
if(!selection)
|
||||
return
|
||||
|
||||
selection.show(usr)
|
||||
to_chat(usr,selection.desc)
|
||||
selection.show(user)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/deletepicture(obj/item/camera/siliconcam/cam)
|
||||
var/selection = selectpicture(cam)
|
||||
if(selection.desc)
|
||||
to_chat(user,selection.desc)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/deletepicture(mob/user, obj/item/camera/siliconcam/cam)
|
||||
var/selection = selectpicture(user, cam)
|
||||
|
||||
if(!selection)
|
||||
return
|
||||
|
||||
aipictures -= selection
|
||||
to_chat(usr, span_unconscious("Local image deleted"))
|
||||
to_chat(user, span_unconscious("Local image deleted"))
|
||||
|
||||
/obj/item/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user)
|
||||
var/mob/living/silicon/ai = user
|
||||
return ai.TurfAdjacent(T)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/toggle_camera_mode()
|
||||
/obj/item/camera/siliconcam/proc/toggle_camera_mode(mob/user)
|
||||
if(in_camera_mode)
|
||||
camera_mode_off()
|
||||
camera_mode_off(user)
|
||||
else
|
||||
camera_mode_on()
|
||||
camera_mode_on(user)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/camera_mode_off()
|
||||
/obj/item/camera/siliconcam/proc/camera_mode_off(mob/user)
|
||||
src.in_camera_mode = 0
|
||||
to_chat(usr, span_infoplain(span_bold("Camera Mode deactivated")))
|
||||
to_chat(user, span_infoplain(span_bold("Camera Mode deactivated")))
|
||||
|
||||
/obj/item/camera/siliconcam/proc/camera_mode_on()
|
||||
/obj/item/camera/siliconcam/proc/camera_mode_on(mob/user)
|
||||
src.in_camera_mode = 1
|
||||
to_chat(usr, span_infoplain(span_bold("Camera Mode activated")))
|
||||
to_chat(user, span_infoplain(span_bold("Camera Mode activated")))
|
||||
|
||||
/obj/item/camera/siliconcam/ai_camera/printpicture(mob/user, obj/item/photo/p)
|
||||
injectaialbum(p)
|
||||
to_chat(usr, span_unconscious("Image recorded"))
|
||||
to_chat(user, span_unconscious("Image recorded"))
|
||||
|
||||
/obj/item/camera/siliconcam/robot_camera/printpicture(mob/user, obj/item/photo/p)
|
||||
injectmasteralbum(p)
|
||||
injectmasteralbum(user, p)
|
||||
|
||||
/mob/living/silicon/ai/proc/take_image()
|
||||
set category = "AI.Commands"
|
||||
@@ -100,7 +102,7 @@
|
||||
set desc = "Takes an image"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.toggle_camera_mode()
|
||||
aiCamera.toggle_camera_mode(src)
|
||||
|
||||
/mob/living/silicon/ai/proc/view_images()
|
||||
set category = "AI.Commands"
|
||||
@@ -108,7 +110,7 @@
|
||||
set desc = "View images"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.viewpictures()
|
||||
aiCamera.viewpictures(src)
|
||||
|
||||
/mob/living/silicon/ai/proc/delete_images()
|
||||
set category = "AI.Commands"
|
||||
@@ -116,7 +118,7 @@
|
||||
set desc = "Delete image"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.deletepicture()
|
||||
aiCamera.deletepicture(src)
|
||||
|
||||
/mob/living/silicon/robot/proc/take_image()
|
||||
set category ="Abilities.Silicon"
|
||||
@@ -124,7 +126,7 @@
|
||||
set desc = "Takes an image"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.toggle_camera_mode()
|
||||
aiCamera.toggle_camera_mode(src)
|
||||
|
||||
/mob/living/silicon/robot/proc/view_images()
|
||||
set category ="Abilities.Silicon"
|
||||
@@ -132,7 +134,7 @@
|
||||
set desc = "View images"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.viewpictures()
|
||||
aiCamera.viewpictures(src)
|
||||
|
||||
/mob/living/silicon/robot/proc/delete_images()
|
||||
set category = "Abilities.Silicon"
|
||||
@@ -140,13 +142,13 @@
|
||||
set desc = "Delete a local image"
|
||||
|
||||
if(aiCamera)
|
||||
aiCamera.deletepicture()
|
||||
aiCamera.deletepicture(src)
|
||||
|
||||
/obj/item/camera/siliconcam/proc/getsource()
|
||||
/obj/item/camera/siliconcam/proc/getsource(mob/user)
|
||||
if(isAI(src.loc))
|
||||
return src
|
||||
|
||||
var/mob/living/silicon/robot/C = usr
|
||||
var/mob/living/silicon/robot/C = user
|
||||
var/obj/item/camera/siliconcam/Cinfo
|
||||
if(C.connected_ai)
|
||||
Cinfo = C.connected_ai.aiCamera
|
||||
@@ -157,4 +159,4 @@
|
||||
/mob/living/silicon/proc/GetPicture()
|
||||
if(!aiCamera)
|
||||
return
|
||||
return aiCamera.selectpicture()
|
||||
return aiCamera.selectpicture(src)
|
||||
|
||||
@@ -208,7 +208,7 @@ var/list/possible_cable_coil_colours = list(
|
||||
if(c.d1 == UP || c.d2 == UP)
|
||||
qdel(c)
|
||||
|
||||
investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires")
|
||||
investigate_log("was cut by [key_name(user, user.client)] in [user.loc.loc]","wires")
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
@@ -245,7 +245,7 @@ var/list/possible_cable_coil_colours = list(
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
if(usr.stunned)
|
||||
if(user.stunned)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -601,8 +601,8 @@ var/list/possible_cable_coil_colours = list(
|
||||
|
||||
/obj/item/stack/cable_coil/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/multitool))
|
||||
var/selected_type = tgui_input_list(usr, "Pick new colour.", "Cable Colour", possible_cable_coil_colours)
|
||||
set_cable_color(selected_type, usr)
|
||||
var/selected_type = tgui_input_list(user, "Pick new colour.", "Cable Colour", possible_cable_coil_colours)
|
||||
set_cable_color(selected_type, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -981,7 +981,7 @@ var/list/possible_cable_coil_colours = list(
|
||||
|
||||
/obj/item/stack/cable_coil/alien/attack_hand(mob/user as mob)
|
||||
if (user.get_inactive_hand() == src)
|
||||
var/N = tgui_input_number(usr, "How many units of wire do you want to take from [src]? You can only take up to [amount] at a time.", "Split stacks", 1, amount)
|
||||
var/N = tgui_input_number(user, "How many units of wire do you want to take from [src]? You can only take up to [amount] at a time.", "Split stacks", 1, amount)
|
||||
if(N && N <= amount)
|
||||
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
|
||||
CC.amount = N
|
||||
@@ -992,8 +992,8 @@ var/list/possible_cable_coil_colours = list(
|
||||
src.add_fingerprint(user)
|
||||
CC.add_fingerprint(user)
|
||||
spawn(0)
|
||||
if (src && usr.machine==src)
|
||||
src.interact(usr)
|
||||
if (src && user.machine==src)
|
||||
src.interact(user)
|
||||
else
|
||||
return
|
||||
else
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
return
|
||||
|
||||
if(W.has_tool_quality(TOOL_WIRECUTTER))
|
||||
to_chat(usr, span_blue("These cables are too tough to be cut with those [W.name]."))
|
||||
to_chat(user, span_blue("These cables are too tough to be cut with those [W.name]."))
|
||||
return
|
||||
else if(istype(W, /obj/item/stack/cable_coil))
|
||||
to_chat(usr, span_blue("You will need heavier cables to connect to these."))
|
||||
to_chat(user, span_blue("You will need heavier cables to connect to these."))
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -134,4 +134,4 @@
|
||||
tgui_alert_async(new_user,"Your current species, [new_user.client.prefs.species], is not available for play on the station.")
|
||||
return 0
|
||||
|
||||
new_user.AttemptLateSpawn(job, new_user.read_preference(/datum/preference/choiced/human/spawnpoint))
|
||||
new_user.AttemptLateSpawn(job, new_user.read_preference(/datum/preference/choiced/living/spawnpoint))
|
||||
|
||||
@@ -1579,3 +1579,11 @@
|
||||
|
||||
icon = 'icons/inventory/accessory/item.dmi'
|
||||
icon_state = "silver"
|
||||
|
||||
//beeholddrbeesphb: Evelynn
|
||||
/obj/item/laser_pointer/evelynn_fluff
|
||||
name = "Evelynn's Laser Pointer"
|
||||
desc = "A small, furry, and fluffy toy that looks like a bee. It has laser eyes. Upon firing, the lasers make a buzzing noise."
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "evelynn"
|
||||
pointer_icon_state = "purple_laser"
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
// Okay we can start saving the data
|
||||
if(new_spawn_point_type && prefs.persistence_settings & PERSIST_SPAWN)
|
||||
prefs.update_preference_by_type(/datum/preference/choiced/human/spawnpoint, initial(new_spawn_point_type.display_name))
|
||||
prefs.update_preference_by_type(/datum/preference/choiced/living/spawnpoint, initial(new_spawn_point_type.display_name))
|
||||
if(ishuman(occupant) && occupant.stat != DEAD)
|
||||
var/mob/living/carbon/human/H = occupant
|
||||
testing("Persist (PID): Saving stuff from [H] to [prefs] (\ref[prefs]).")
|
||||
|
||||
Reference in New Issue
Block a user