mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-16 09:34:52 +01:00
Merge branch 'master' into Arokha/matdefs
This commit is contained in:
@@ -688,7 +688,7 @@ var/global/floorIsLava = 0
|
||||
set desc="Announce your desires to the world"
|
||||
if(!check_rights(0)) return
|
||||
|
||||
var/message = input(usr, "Global message to send:", "Admin Announce", null, null) as message//todo: sanitize for all?
|
||||
var/message = tgui_input_message(usr, "Global message to send:", "Admin Announce")
|
||||
if(message)
|
||||
if(!check_rights(R_SERVER,0))
|
||||
message = sanitize(message, 500, extra = 0)
|
||||
|
||||
@@ -13,24 +13,25 @@
|
||||
if (!shuttle_tag) return
|
||||
|
||||
var/datum/shuttle/S = SSshuttles.shuttles[shuttle_tag]
|
||||
|
||||
var/origin_area = tgui_input_list(user, "Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", return_areas())
|
||||
|
||||
var/list/area_choices = return_areas()
|
||||
var/origin_area = tgui_input_list(user, "Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", area_choices)
|
||||
if (!origin_area) return
|
||||
|
||||
var/destination_area = tgui_input_list(user, "Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", return_areas())
|
||||
var/destination_area = tgui_input_list(user, "Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", area_choices)
|
||||
if (!destination_area) return
|
||||
|
||||
var/long_jump = tgui_alert(user, "Is there a transition area for this jump?","Transition?", list("Yes","No"))
|
||||
if (long_jump == "Yes")
|
||||
var/transition_area = tgui_input_list(user, "Which area is the transition area? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", return_areas())
|
||||
var/transition_area = tgui_input_list(user, "Which area is the transition area? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)", "Area Choice", area_choices)
|
||||
if (!transition_area) return
|
||||
|
||||
var/move_duration = input(user, "How many seconds will this jump take?") as num
|
||||
|
||||
S.long_jump(origin_area, destination_area, transition_area, move_duration)
|
||||
S.long_jump(area_choices[origin_area], area_choices[destination_area], area_choices[transition_area], move_duration)
|
||||
message_admins("<span class='notice'>[key_name_admin(user)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle</span>", 1)
|
||||
log_admin("[key_name_admin(user)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle")
|
||||
else
|
||||
S.short_jump(origin_area, destination_area)
|
||||
S.short_jump(area_choices[origin_area], area_choices[destination_area])
|
||||
message_admins("<span class='notice'>[key_name_admin(user)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle</span>", 1)
|
||||
log_admin("[key_name_admin(user)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle")
|
||||
|
||||
@@ -1278,7 +1278,7 @@
|
||||
var/client/C = usr.client
|
||||
if(!isobserver(usr)) C.admin_ghost()
|
||||
sleep(2)
|
||||
C.jumptomob(M)
|
||||
C.do_jumptomob(M)
|
||||
|
||||
else if(href_list["adminplayerobservefollow"])
|
||||
if(!check_rights(R_MOD|R_ADMIN|R_SERVER)) //VOREStation Edit
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
return
|
||||
|
||||
/// Verb wrapper around do_jumptomob()
|
||||
/client/proc/jumptomob()
|
||||
set category = "Admin"
|
||||
set name = "Jump to Mob"
|
||||
@@ -47,24 +48,30 @@
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_DEBUG|R_EVENT))
|
||||
return
|
||||
|
||||
if(config.allow_admin_jump)
|
||||
var/mob/M = tgui_input_list(usr, "Pick a mob:", "Jump to Mob", mob_list)
|
||||
if(!M)
|
||||
return
|
||||
var/mob/M = tgui_input_list(usr, "Pick a mob:", "Jump to Mob", mob_list)
|
||||
if(!M) // Cancelled
|
||||
return
|
||||
do_jumptomob(M)
|
||||
|
||||
/// Performs the jumps
|
||||
/client/proc/do_jumptomob(var/mob/M)
|
||||
if(!config.allow_admin_jump)
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
return
|
||||
if(!M)
|
||||
return
|
||||
|
||||
var/mob/A = src.mob // Impossible to be unset, enforced by byond
|
||||
var/turf/T = get_turf(M)
|
||||
if(isturf(T))
|
||||
A.on_mob_jump()
|
||||
A.forceMove(T)
|
||||
log_admin("[key_name(usr)] jumped to [key_name(M)]")
|
||||
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
|
||||
if(src.mob)
|
||||
var/mob/A = src.mob
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && isturf(T))
|
||||
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
A.on_mob_jump()
|
||||
A.forceMove(T)
|
||||
else
|
||||
to_chat(A, "<span class='filter_adminlog'>This mob is not located in the game world.</span>")
|
||||
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
|
||||
to_chat(A, "<span class='filter_adminlog'>This mob is not located in the game world.</span>")
|
||||
|
||||
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
|
||||
set category = "Admin"
|
||||
set name = "Jump to Coordinate"
|
||||
|
||||
@@ -273,12 +273,12 @@ Ccomp's first proc.
|
||||
var/target = tgui_input_list(usr, "Select a ckey to allow to rejoin", "Allow Respawn Selector", GLOB.respawn_timers)
|
||||
if(!target)
|
||||
return
|
||||
|
||||
|
||||
if(GLOB.respawn_timers[target] == -1) // Their respawn timer is set to -1, which is 'not allowed to respawn'
|
||||
var/response = tgui_alert(src, "Are you sure you wish to allow this individual to respawn? They would normally not be able to.","Allow impossible respawn?",list("No","Yes"))
|
||||
if(response == "No")
|
||||
return
|
||||
|
||||
|
||||
GLOB.respawn_timers -= target
|
||||
|
||||
var/found_client = FALSE
|
||||
@@ -295,7 +295,7 @@ Ccomp's first proc.
|
||||
|
||||
if(!found_client)
|
||||
to_chat(src, "<span class='notice'>The associated client didn't appear to be connected, so they couldn't be notified, but they can now respawn if they reconnect.</span>")
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] allowed [found_client ? key_name(found_client) : target] to bypass the respawn time limit")
|
||||
message_admins("Admin [key_name_admin(usr)] allowed [found_client ? key_name_admin(found_client) : target] to bypass the respawn time limit", 1)
|
||||
|
||||
@@ -483,7 +483,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
|
||||
new_character = new(spawnloc)
|
||||
|
||||
|
||||
if(sparks)
|
||||
anim(spawnloc,new_character,'icons/mob/mob.dmi',,"phasein",,new_character.dir)
|
||||
playsound(spawnloc, "sparks", 50, 1)
|
||||
@@ -538,6 +538,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
//A redraw for good measure
|
||||
new_character.regenerate_icons()
|
||||
|
||||
new_character.update_transform() //VOREStation Edit
|
||||
|
||||
//If we're announcing their arrival
|
||||
if(announce)
|
||||
AnnounceArrival(new_character, new_character.mind.assigned_role, "Common", new_character.z)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["nickname"])
|
||||
var/raw_nickname = input(user, "Choose your character's nickname:", "Character Nickname") as text|null
|
||||
var/raw_nickname = tgui_input_text(user, "Choose your character's nickname:", "Character Nickname", pref.nickname)
|
||||
if (!isnull(raw_nickname) && CanUseTopic(user))
|
||||
var/new_nickname = sanitize_name(raw_nickname, pref.species, is_FBP())
|
||||
if(new_nickname)
|
||||
@@ -140,7 +140,7 @@
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["metadata"])
|
||||
var/new_metadata = sanitize(input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , html_decode(pref.metadata)) as message|null, extra = 0) //VOREStation Edit
|
||||
var/new_metadata = sanitize(tgui_input_message(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , html_decode(pref.metadata)), extra = 0) //VOREStation Edit
|
||||
if(new_metadata && CanUseTopic(user))
|
||||
pref.metadata = new_metadata
|
||||
return TOPIC_REFRESH
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
pref.all_underwear -= underwear_category_name
|
||||
|
||||
// TODO - Looks like this is duplicating the work of sanitize_character() if so, remove
|
||||
if(pref.backbag > 5 || pref.backbag < 1)
|
||||
pref.backbag = 1 //Same as above
|
||||
if(pref.backbag > backbaglist.len || pref.backbag < 1)
|
||||
pref.backbag = 2 //Same as above
|
||||
character.backbag = pref.backbag
|
||||
|
||||
if(pref.pdachoice > 6 || pref.pdachoice < 1)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/datum/gear/cosmetic/nailpolish
|
||||
display_name = "nail polish (colorable)"
|
||||
description = "Nail polish, available in every color of the rainbow! Doesn't come with nail polish remover."
|
||||
path = /obj/item/weapon/nailpolish
|
||||
|
||||
/datum/gear/cosmetic/nailpolish/New()
|
||||
..()
|
||||
// can't set description, it'll look funny
|
||||
gear_tweaks = list(gear_tweak_free_color_choice, gear_tweak_free_name)
|
||||
|
||||
/datum/gear/cosmetic/nailpolish/spawn_item(var/location, var/metadata)
|
||||
var/obj/item/weapon/nailpolish/polish = ..()
|
||||
polish.set_colour(polish.color)
|
||||
polish.color = null
|
||||
return polish
|
||||
|
||||
/datum/gear/cosmetic/nailpolish_remover
|
||||
display_name = "nail polish remover"
|
||||
description = "Nail polish remover, for when the fun's over. Doesn't come with nail polish."
|
||||
path = /obj/item/weapon/nailpolish_remover
|
||||
@@ -87,19 +87,19 @@
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["weight_gain"])
|
||||
var/weight_gain_rate = input(user, "Choose your character's rate of weight gain between 100% \
|
||||
var/weight_gain_rate = tgui_input_num(user, "Choose your character's rate of weight gain between 100% \
|
||||
(full realism body fat gain) and 0% (no body fat gain).\n\
|
||||
(If you want to disable weight gain, set this to 0.01 to round it to 0%.)\
|
||||
([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference") as num|null
|
||||
([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference", pref.weight_gain)
|
||||
if(weight_gain_rate)
|
||||
pref.weight_gain = round(text2num(weight_gain_rate),1)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["weight_loss"])
|
||||
var/weight_loss_rate = input(user, "Choose your character's rate of weight loss between 100% \
|
||||
var/weight_loss_rate = tgui_input_num(user, "Choose your character's rate of weight loss between 100% \
|
||||
(full realism body fat loss) and 0% (no body fat loss).\n\
|
||||
(If you want to disable weight loss, set this to 0.01 round it to 0%.)\
|
||||
([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference") as num|null
|
||||
([WEIGHT_CHANGE_MIN]-[WEIGHT_CHANGE_MAX])", "Character Preference", pref.weight_loss)
|
||||
if(weight_loss_rate)
|
||||
pref.weight_loss = round(text2num(weight_loss_rate),1)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
@@ -677,7 +677,7 @@
|
||||
user.unEquip(I)
|
||||
I.forceMove(src)
|
||||
holding = I
|
||||
user.visible_message("<span class='notice'>\The [user] shoves \the [I] into \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> shoves \the [I] into \the [src].")
|
||||
verbs |= /obj/item/clothing/shoes/proc/draw_knife
|
||||
update_icon()
|
||||
else
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
//TODO: Make inflating gloves a thing
|
||||
/*/obj/item/clothing/gloves/sterile/proc/Inflate(/mob/living/carbon/human/user)
|
||||
user.visible_message("<span class='notice'>\The [src] expands!</span>")
|
||||
user.visible_message("<b>\The [src]</b> expands!")
|
||||
qdel(src)*/
|
||||
|
||||
/obj/item/clothing/gloves/sterile/latex
|
||||
|
||||
@@ -141,13 +141,14 @@
|
||||
/obj/item/clothing/suit/space/void/autolok
|
||||
name = "AutoLok pressure suit"
|
||||
desc = "A high-tech snug-fitting pressure suit. Fits any species. It offers very little physical protection, but is equipped with sensors that will automatically deploy the integral helmet to protect the wearer."
|
||||
icon = 'icons/obj/clothing/suits_vr.dmi'
|
||||
icon_state = "autoloksuit"
|
||||
item_state = "autoloksuit"
|
||||
item_state_slots = list(slot_r_hand_str = "space_suit_syndicate", slot_l_hand_str = "space_suit_syndicate")
|
||||
armor = list(melee = 15, bullet = 5, laser = 5,energy = 5, bomb = 5, bio = 100, rad = 80)
|
||||
slowdown = 0.5
|
||||
siemens_coefficient = 1
|
||||
species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt
|
||||
icon = 'icons/obj/clothing/suits_vr.dmi'
|
||||
breach_threshold = 6 //this thing is basically tissue paper
|
||||
w_class = ITEMSIZE_NORMAL //if it's snug, high-tech, and made of relatively soft materials, it should be much easier to store!
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
return
|
||||
|
||||
if(A.reagents && A.reagents.trans_to_obj(src, reagents.maximum_volume))
|
||||
user.visible_message("<span class='notice'>\The [user] soaks [src] using [A].</span>", "<span class='notice'>You soak [src] using [A].</span>")
|
||||
user.visible_message("<b>\The [user]</b> soaks [src] using [A].", "<span class='notice'>You soak [src] using [A].</span>")
|
||||
update_name()
|
||||
return
|
||||
|
||||
|
||||
@@ -580,7 +580,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
if(prob(1))
|
||||
sleep(3)
|
||||
if(R.get_product(get_turf(src)))
|
||||
visible_message("<span class='notice'>\The [src] clunks as it vends an additional item.</span>")
|
||||
visible_message("<b>\The [src]</b> clunks as it vends an additional item.")
|
||||
playsound(src, "sound/[vending_sound]", 100, 1, 1)
|
||||
|
||||
GLOB.items_sold_shift_roundstat++
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
user.visible_message("<span class='notice'>\The [user] crudely slices \the [src] with [W]!</span>", "<span class='notice'>You crudely slice \the [src] with your [W]!</span>")
|
||||
slices_lost = rand(1,min(1,round(slices_num/2)))
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] slices \the [src]!</span>", "<span class='notice'>You slice \the [src]!</span>")
|
||||
user.visible_message("<b>\The [user]</b> slices \the [src]!", "<span class='notice'>You slice \the [src]!</span>")
|
||||
|
||||
var/reagents_per_slice = reagents.total_volume/slices_num
|
||||
for(var/i=1 to (slices_num-slices_lost))
|
||||
@@ -1833,7 +1833,7 @@
|
||||
Unwrap(user)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand()
|
||||
src.visible_message("<span class='notice'>\The [src] expands!</span>")
|
||||
src.visible_message("<b>\The [src]</b> expands!")
|
||||
var/mob/living/carbon/human/H = new(get_turf(src))
|
||||
H.set_species(monkey_type)
|
||||
H.real_name = H.species.get_random_name()
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cube/proc/Expand()
|
||||
src.visible_message("<span class='notice'>\The [src] expands!</span>")
|
||||
src.visible_message("<b>\The [src]</b> expands!")
|
||||
new food_type(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
CI = new /datum/cooking_item/(CC)
|
||||
I.forceMove(src)
|
||||
cooking_objs.Add(CI)
|
||||
user.visible_message("<span class='notice'>\The [user] puts \the [I] into \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> puts \the [I] into \the [src].")
|
||||
if (CC.check_contents() == 0)//If we're just putting an empty container in, then dont start any processing.
|
||||
return TRUE
|
||||
else
|
||||
@@ -333,7 +333,7 @@
|
||||
CI.combine_target = selected_option
|
||||
|
||||
// We can actually start cooking now.
|
||||
user.visible_message("<span class='notice'>\The [user] puts \the [I] into \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> puts \the [I] into \the [src].")
|
||||
|
||||
get_cooking_work(CI)
|
||||
cooking = TRUE
|
||||
@@ -433,7 +433,7 @@
|
||||
|
||||
/obj/machinery/appliance/proc/finish_cooking(var/datum/cooking_item/CI)
|
||||
|
||||
src.visible_message("<span class='notice'>\The [src] pings!</span>")
|
||||
src.visible_message("<b>\The [src]</b> pings!")
|
||||
if(cooked_sound)
|
||||
playsound(get_turf(src), cooked_sound, 50, 1)
|
||||
//Check recipes first, a valid recipe overrides other options
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
/obj/machinery/appliance/cooker/oven/finish_cooking(var/datum/cooking_item/CI)
|
||||
if(CI.combine_target)
|
||||
CI.result_type = 3//Combination type. We're making something out of our ingredients
|
||||
visible_message("<span class='notice'>\The [src] pings!</span>")
|
||||
visible_message("<b>\The [src]</b> pings!")
|
||||
combination_cook(CI)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -77,24 +77,24 @@
|
||||
if(src.broken > 0)
|
||||
if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] starts to fix part of the microwave.</span>", \
|
||||
"<b>\The [user]</b> starts to fix part of the microwave.", \
|
||||
"<span class='notice'>You start to fix part of the microwave.</span>" \
|
||||
)
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] fixes part of the microwave.</span>", \
|
||||
"<b>\The [user]</b> fixes part of the microwave.", \
|
||||
"<span class='notice'>You have fixed part of the microwave.</span>" \
|
||||
)
|
||||
src.broken = 1 // Fix it a bit
|
||||
else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] starts to fix part of the microwave.</span>", \
|
||||
"<b>\The [user]</b> starts to fix part of the microwave.", \
|
||||
"<span class='notice'>You start to fix part of the microwave.</span>" \
|
||||
)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] fixes the microwave.</span>", \
|
||||
"<b>\The [user]</b> fixes the microwave.", \
|
||||
"<span class='notice'>You have fixed the microwave.</span>" \
|
||||
)
|
||||
src.icon_state = "mw"
|
||||
@@ -108,7 +108,7 @@
|
||||
else if(src.dirty==100) // The microwave is all dirty so can't be used!
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] starts to clean the microwave.</span>", \
|
||||
"<b>\The [user]</b> starts to clean the microwave.", \
|
||||
"<span class='notice'>You start to clean the microwave.</span>" \
|
||||
)
|
||||
if (do_after(user,20))
|
||||
|
||||
@@ -24,19 +24,6 @@
|
||||
icon_state = "showcase"
|
||||
icon_base = "showcase"
|
||||
|
||||
/obj/machinery/smartfridge/drinks/update_icon()
|
||||
cut_overlays()
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "[icon_base]-off"
|
||||
else
|
||||
icon_state = icon_base
|
||||
|
||||
if(panel_open)
|
||||
add_overlay("[icon_base]-panel")
|
||||
|
||||
if(!stat && contents.len)
|
||||
add_overlay("[icon_base]-fill")
|
||||
|
||||
/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
|
||||
return TRUE
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
cards -= P
|
||||
H.parentdeck = src
|
||||
H.update_icon()
|
||||
user.visible_message("<span class='notice'>\The [user] draws a card.</span>")
|
||||
user.visible_message("<b>\The [user]</b> draws a card.")
|
||||
to_chat(user,"<span class='notice'>It's the [P].</span>")
|
||||
|
||||
/obj/item/weapon/deck/verb/deal_card()
|
||||
|
||||
@@ -83,7 +83,7 @@ var/list/ghost_traps
|
||||
to_chat(target, "<b>Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm.</b>")
|
||||
to_chat(target, "<b>Use say #b to speak to other artificial intelligences.</b>")
|
||||
var/turf/T = get_turf(target)
|
||||
T.visible_message("<span class='notice'>\The [src] chimes quietly.</span>")
|
||||
T.visible_message("<b>\The [src]</b> chimes quietly.")
|
||||
var/obj/item/device/mmi/digital/posibrain/P = target.loc
|
||||
if(!istype(P)) //wat
|
||||
return
|
||||
|
||||
@@ -513,5 +513,5 @@
|
||||
derez()
|
||||
|
||||
/mob/living/simple_mob/animal/space/carp/holodeck/proc/derez()
|
||||
visible_message("<span class='notice'>\The [src] fades away!</span>")
|
||||
visible_message("<b>\The [src]</b> fades away!")
|
||||
qdel(src)
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
hud_item.off(FALSE)
|
||||
|
||||
/obj/item/device/mapping_unit/proc/hide_device()
|
||||
hud_datum.unapply_to_hud()
|
||||
hud_datum?.unapply_to_hud()
|
||||
|
||||
/obj/item/device/mapping_unit/proc/last_run()
|
||||
stop_updates()
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
|
||||
if(!degree || get_trait(TRAIT_IMMUTABLE) > 0) return
|
||||
|
||||
source_turf.visible_message("<span class='notice'>\The [display_name] quivers!</span>")
|
||||
source_turf.visible_message("<b>\The [display_name]</b> quivers!")
|
||||
|
||||
//This looks like shit, but it's a lot easier to read/change this way.
|
||||
var/total_mutations = rand(1,1+degree)
|
||||
@@ -608,7 +608,7 @@
|
||||
if(prob(degree*5))
|
||||
set_trait(TRAIT_CARNIVOROUS, get_trait(TRAIT_CARNIVOROUS)+rand(-degree,degree),2, 0)
|
||||
if(get_trait(TRAIT_CARNIVOROUS))
|
||||
source_turf.visible_message("<span class='notice'>\The [display_name] shudders hungrily.</span>")
|
||||
source_turf.visible_message("<b>\The [display_name]</b> shudders hungrily.")
|
||||
if(6)
|
||||
set_trait(TRAIT_WEED_TOLERANCE, get_trait(TRAIT_WEED_TOLERANCE)+(rand(-2,2)*degree),10, 0)
|
||||
if(prob(degree*5))
|
||||
@@ -629,7 +629,7 @@
|
||||
set_trait(TRAIT_POTENCY, get_trait(TRAIT_POTENCY)+(rand(-20,20)*degree),200, 0)
|
||||
if(prob(degree*5))
|
||||
set_trait(TRAIT_SPREAD, get_trait(TRAIT_SPREAD)+rand(-1,1),2, 0)
|
||||
source_turf.visible_message("<span class='notice'>\The [display_name] spasms visibly, shifting in the tray.</span>")
|
||||
source_turf.visible_message("<b>\The [display_name]</b> spasms visibly, shifting in the tray.")
|
||||
if(prob(degree*3))
|
||||
set_trait(TRAIT_SPORING, !get_trait(TRAIT_SPORING))
|
||||
if(9)
|
||||
@@ -647,7 +647,7 @@
|
||||
if(prob(degree*2))
|
||||
set_trait(TRAIT_BIOLUM, !get_trait(TRAIT_BIOLUM))
|
||||
if(get_trait(TRAIT_BIOLUM))
|
||||
source_turf.visible_message("<span class='notice'>\The [display_name] begins to glow!</span>")
|
||||
source_turf.visible_message("<b>\The [display_name]</b> begins to glow!")
|
||||
if(prob(degree*2))
|
||||
set_trait(TRAIT_BIOLUM_COLOUR,"#[get_random_colour(0,75,190)]")
|
||||
source_turf.visible_message("<span class='notice'>\The [display_name]'s glow </span><font color='[get_trait(TRAIT_BIOLUM_COLOUR)]'>changes colour</font>!")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
return src
|
||||
|
||||
var/datum/seed/S = diverge() //Let's not modify all of the seeds.
|
||||
T.visible_message("<span class='notice'>\The [S.display_name] quivers!</span>") //Mimicks the normal mutation.
|
||||
T.visible_message("<b>\The [S.display_name]</b> quivers!") //Mimicks the normal mutation.
|
||||
G.mutate(S, T)
|
||||
|
||||
return S
|
||||
@@ -94,7 +94,7 @@
|
||||
if(prob(50))
|
||||
S.set_trait(TRAIT_BIOLUM, !S.get_trait(TRAIT_BIOLUM))
|
||||
if(S.get_trait(TRAIT_BIOLUM))
|
||||
T.visible_message("<span class='notice'>\The [S.display_name] begins to glow!</span>")
|
||||
T.visible_message("<b>\The [S.display_name]</b> begins to glow!")
|
||||
if(prob(50))
|
||||
S.set_trait(TRAIT_BIOLUM_COLOUR,get_random_colour(0,75,190))
|
||||
T.visible_message("<span class='notice'>\The [S.display_name]'s glow </span><font color='[S.get_trait(TRAIT_BIOLUM_COLOUR)]'>changes colour</font>!")
|
||||
@@ -118,7 +118,7 @@
|
||||
S.set_trait(TRAIT_MATURATION, S.get_trait(TRAIT_MATURATION)+rand(-1,1),30,0)
|
||||
if(prob(55))
|
||||
S.set_trait(TRAIT_SPREAD, S.get_trait(TRAIT_SPREAD)+rand(-1,1),2,0)
|
||||
T.visible_message("<span class='notice'>\The [S.display_name] spasms visibly, shifting in the tray.</span>")
|
||||
T.visible_message("<b>\The [S.display_name]</b> spasms visibly, shifting in the tray.")
|
||||
|
||||
/decl/plantgene/fruit/mutate(var/datum/seed/S)
|
||||
if(prob(65))
|
||||
|
||||
@@ -68,12 +68,12 @@
|
||||
var/mob/living/L = A
|
||||
if(!(user in buckled_mobs))
|
||||
L.visible_message(\
|
||||
"<span class='notice'>\The [user] frees \the [L] from \the [src].</span>",\
|
||||
"<span class='notice'>\The [user] frees you from \the [src].</span>",\
|
||||
"<b>\The [user]</b> frees \the [L] from \the [src].",\
|
||||
"<b>\The [user]</b> frees you from \the [src].",\
|
||||
"<span class='warning'>You hear shredding and ripping.</span>")
|
||||
else
|
||||
L.visible_message(\
|
||||
"<span class='notice'>\The [L] struggles free of \the [src].</span>",\
|
||||
"<b>\The [L]</b> struggles free of \the [src].",\
|
||||
"<span class='notice'>You untangle \the [src] from around yourself.</span>",\
|
||||
"<span class='warning'>You hear shredding and ripping.</span>")
|
||||
unbuckle()
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
if(S.scan(target))
|
||||
scanned = TRUE
|
||||
if(scanned)
|
||||
visible_message("<span class='notice'>\The [user] waves \the [src] around [target].</span>")
|
||||
visible_message("<b>\The [user]</b> waves \the [src] around [target].")
|
||||
|
||||
/obj/item/device/electronic_assembly/attackby(var/obj/item/I, var/mob/user)
|
||||
if(can_anchor && I.is_wrench())
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
new /obj/item/weapon/book/tome(src.loc)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
to_chat(user, "<span class='warning'>Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a dusty old tome sitting on the desk. You don't really remember printing it.</span>")
|
||||
user.visible_message("<span class='notice'>\The [user] stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older.</span>", 2)
|
||||
user.visible_message("<b>\The [user]</b> stares at the blank screen for a few moments, [T.his] expression frozen in fear. When [T.he] finally awakens from it, [T.he] looks a lot older.", 2)
|
||||
src.arcanecheckout = 0
|
||||
if(1)
|
||||
// Inventory
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
/obj/item/organ/external/var/datum/nail_polish/nail_polish
|
||||
|
||||
/obj/item/weapon/nailpolish
|
||||
name = "nail polish"
|
||||
desc = "to paint your nails with. Or someone else's!"
|
||||
icon = 'icons/obj/nailpolish_vr.dmi'
|
||||
icon_state = "nailpolish"
|
||||
var/colour = "#FFFFFF"
|
||||
var/image/top_underlay
|
||||
var/image/color_underlay
|
||||
var/open = FALSE
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
pickup_sound = 'sound/items/pickup/glass.ogg'
|
||||
|
||||
/obj/item/weapon/nailpolish/Initialize()
|
||||
. = ..()
|
||||
desc = "<font color='[colour]'>Nail polish,</font> " + initial(desc)
|
||||
top_underlay = image(icon, "top")
|
||||
color_underlay = image(icon, "color")
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/nailpolish/proc/set_colour(var/_colour)
|
||||
colour = _colour
|
||||
desc = "<font color='[colour]'>Nail polish,</font> " + initial(desc)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/nailpolish/attack_self(var/mob/user)
|
||||
open = !open
|
||||
to_chat(user, SPAN_NOTICE("You [open ? "open" : "close"] \the [src]."))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/nailpolish/update_icon()
|
||||
. = ..()
|
||||
icon_state = "[initial(icon_state)][open ? "-open" : ""]"
|
||||
top_underlay.icon_state = "top[open ? "-open" : ""]"
|
||||
color_underlay.icon_state = "color[open ? "-open" : ""]"
|
||||
color_underlay.color = colour
|
||||
underlays = list(color_underlay, top_underlay)
|
||||
|
||||
/obj/item/organ/external/proc/get_polish(var/colour)
|
||||
var/static/forbidden_parts = BP_ALL - list(BP_L_HAND, BP_R_HAND, BP_L_FOOT, BP_R_FOOT)
|
||||
if(organ_tag in forbidden_parts)
|
||||
return FALSE
|
||||
var/ico
|
||||
var/icostate
|
||||
if(length(markings))
|
||||
for(var/mark_name in markings)
|
||||
var/mark_data = markings[mark_name]
|
||||
var/datum/sprite_accessory/marking/mark = mark_data["datum"]
|
||||
if(length(mark.body_parts & forbidden_parts))
|
||||
continue
|
||||
ico = mark.icon
|
||||
icostate = "[mark.icon_state]-[organ_tag]"
|
||||
break
|
||||
else
|
||||
ico = 'icons/obj/nailpolish_vr.dmi'
|
||||
icostate = organ_tag
|
||||
return new /datum/nail_polish(ico, icostate, colour)
|
||||
|
||||
/obj/item/weapon/nailpolish/attack(var/mob/user, var/mob/living/carbon/human/target)
|
||||
if(!open)
|
||||
return
|
||||
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
var/bp = user.zone_sel.selecting
|
||||
var/obj/item/organ/external/body_part = target.get_organ(bp)
|
||||
if(!body_part)
|
||||
to_chat(user, SPAN_WARNING("[target] is missing that limb!"))
|
||||
return
|
||||
if(body_part.nail_polish)
|
||||
to_chat(user, SPAN_NOTICE("[target]'s [body_part.name] already has nail polish on!"))
|
||||
return
|
||||
var/datum/nail_polish/polish = body_part.get_polish(colour)
|
||||
if(!polish)
|
||||
to_chat(user, SPAN_NOTICE("You can't find any nails on [body_part] to paint."))
|
||||
return
|
||||
if(user == target)
|
||||
user.visible_message("<b>\The [user]</b> paints their nails with \the [src].", "You paint your nails with \the [src].")
|
||||
else
|
||||
if(do_after(user, 2 SECONDS, target))
|
||||
user.visible_message("<b>\The [user]</b> paints \the [target]'s nails with \the [src].", "You paint \the [target]'s nails with \the [src].")
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("Both you and [target] must stay still!"))
|
||||
return
|
||||
body_part.set_polish(polish)
|
||||
|
||||
/obj/item/organ/external/proc/set_polish(var/datum/nail_polish/polish)
|
||||
nail_polish = polish
|
||||
owner?.update_icons_body()
|
||||
|
||||
/obj/item/weapon/nailpolish_remover
|
||||
name = "nail polish remover"
|
||||
desc = "Paint thinner, acetone, nail polish remover; whatever you call it, it gets the job done."
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
pickup_sound = 'sound/items/pickup/helm.ogg'
|
||||
icon = 'icons/obj/nailpolish_vr.dmi'
|
||||
icon_state = "nailpolishremover"
|
||||
var/open = FALSE
|
||||
|
||||
/obj/item/weapon/nailpolish_remover/attack_self(var/mob/user)
|
||||
open = !open
|
||||
to_chat(user, SPAN_NOTICE("You [open ? "open" : "close"] \the [src]."))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/nailpolish_remover/update_icon()
|
||||
. = ..()
|
||||
icon_state = "[initial(icon_state)][open ? "-open" : ""]"
|
||||
|
||||
/obj/item/weapon/nailpolish_remover/attack(var/mob/user, var/mob/living/carbon/human/target)
|
||||
if(!open)
|
||||
return
|
||||
|
||||
if(!istype(target))
|
||||
return
|
||||
|
||||
var/bp = user.zone_sel.selecting
|
||||
var/obj/item/organ/external/body_part = target.get_organ(bp)
|
||||
if(!body_part)
|
||||
to_chat(user, SPAN_WARNING("[target] is missing that limb!"))
|
||||
return
|
||||
if(!body_part.nail_polish)
|
||||
to_chat(user, SPAN_NOTICE("[target]'s [body_part.name] has no nail polish to remove!"))
|
||||
return
|
||||
if(user == target)
|
||||
user.visible_message("<b>\The [user]</b> removes their nail polish with \the [src].", "You remove your nail polish with \the [src].")
|
||||
else
|
||||
if(do_after(user, 2 SECONDS, target))
|
||||
user.visible_message("<b>\The [user]</b> removes \the [target]'s nail polish with \the [src].", "You remove \the [target]'s nail polish with \the [src].")
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("Both you and [target] must stay still!"))
|
||||
return
|
||||
body_part.set_polish(null)
|
||||
|
||||
/datum/nail_polish
|
||||
var/icon = 'icons/obj/nailpolish_vr.dmi'
|
||||
var/icon_state
|
||||
var/color
|
||||
|
||||
/datum/nail_polish/New(var/_icon, var/_icon_state, var/_color)
|
||||
icon = _icon
|
||||
icon_state = _icon_state
|
||||
color = _color
|
||||
|
||||
@@ -152,7 +152,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new)
|
||||
if(xcrd > world.maxx)
|
||||
if(cropMap)
|
||||
break
|
||||
else
|
||||
else if(!measureOnly)
|
||||
world.maxx = xcrd
|
||||
|
||||
if(xcrd >= 1)
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
to_chat(user, "<span class='warning'>You must be standing on open flooring to build a window.</span>")
|
||||
return 1
|
||||
|
||||
var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)"
|
||||
var/choice = tgui_input_list(title, "What would you like to construct?", "Window Selection", window_options)
|
||||
var/message = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)"
|
||||
var/choice = tgui_input_list(user, message, "Window Construction", window_options)
|
||||
|
||||
if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T)
|
||||
return 1
|
||||
|
||||
@@ -28,7 +28,12 @@
|
||||
new /datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("crude bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]")
|
||||
new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting canvas (11x11)", /obj/item/canvas, 2, time = 2 SECONDS, pass_stack_color = FALSE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting canvas (19x19)", /obj/item/canvas/nineteen_nineteen, 3, time = 2 SECONDS, pass_stack_color = FALSE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting canvas (23x19)", /obj/item/canvas/twentythree_nineteen, 4, time = 3 SECONDS, pass_stack_color = FALSE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting canvas (23x23), AI", /obj/item/canvas/twentythree_twentythree, 5, time = 3 SECONDS, pass_stack_color = FALSE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting canvas (24x24)", /obj/item/canvas/twentyfour_twentyfour, 6, time = 3 SECONDS, pass_stack_color = FALSE, supplied_material = "[name]")
|
||||
)
|
||||
|
||||
/datum/material/cloth/syncloth
|
||||
|
||||
@@ -43,7 +43,9 @@
|
||||
new /datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), //VOREStation Add
|
||||
new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]")
|
||||
new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting easel", /obj/structure/easel, 5, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("painting frame", /obj/item/frame/painting, 5, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]")
|
||||
)
|
||||
|
||||
/datum/material/wood/sif
|
||||
|
||||
@@ -67,7 +67,7 @@ var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
var/obj/item/stack/medical/splint/ghetto/new_splint = new(get_turf(user))
|
||||
new_splint.add_fingerprint(user)
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] constructs \a [new_splint] out of a [singular_name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> constructs \a [new_splint] out of a [singular_name].", \
|
||||
"<span class='notice'>You use make \a [new_splint] out of a [singular_name].</span>")
|
||||
src.use(1)
|
||||
return
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(has_edge(W) || is_sharp(W))
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
user.visible_message("<span class='notice'>\The [user] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
|
||||
user.visible_message("<b>\The [user]</b> starts cutting hair off \the [src]", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
|
||||
var/scraped = 0
|
||||
while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
|
||||
@@ -209,10 +209,10 @@
|
||||
if(use_cell_power())
|
||||
active = !active
|
||||
if(active)
|
||||
visible_message("<span class='notice'>\The [src] lurches downwards, grinding noisily.</span>")
|
||||
visible_message("<b>\The [src]</b> lurches downwards, grinding noisily.")
|
||||
need_update_field = 1
|
||||
else
|
||||
visible_message("<span class='notice'>\The [src] shudders to a grinding halt.</span>")
|
||||
visible_message("<b>\The [src]</b> shudders to a grinding halt.")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The drill is unpowered.</span>")
|
||||
else
|
||||
@@ -273,7 +273,7 @@
|
||||
/obj/machinery/mining/drill/proc/system_error(var/error)
|
||||
|
||||
if(error)
|
||||
src.visible_message("<span class='notice'>\The [src] flashes a '[error]' warning.</span>")
|
||||
src.visible_message("<b>\The [src]</b> flashes a '[error]' warning.")
|
||||
faultreporter.autosay(error, src.name, "Supply")
|
||||
need_player_check = 1
|
||||
active = 0
|
||||
|
||||
@@ -398,7 +398,7 @@ var/list/mining_overlay_cache = list()
|
||||
|
||||
if (istype(W, /obj/item/device/measuring_tape))
|
||||
var/obj/item/device/measuring_tape/P = W
|
||||
user.visible_message("<span class='notice'>\The [user] extends \a [P] towards \the [src].</span>","<span class='notice'>You extend \the [P] towards \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> extends \a [P] towards \the [src].","<span class='notice'>You extend \the [P] towards \the [src].</span>")
|
||||
if(do_after(user, 15))
|
||||
to_chat(user, "<span class='notice'>\The [src] has been excavated to a depth of [excavation_level]cm.</span>")
|
||||
return
|
||||
@@ -408,7 +408,7 @@ var/list/mining_overlay_cache = list()
|
||||
if(C.mode) //Mode means scanning
|
||||
C.depth_scanner.scan_atom(user, src)
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] extends \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!</span>", "<span class='notice'>You extend \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!</span>")
|
||||
user.visible_message("<b>\The [user]</b> extends \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!", "<span class='notice'>You extend \the [C] over \the [src], a flurry of red beams scanning \the [src]'s surface!</span>")
|
||||
if(do_after(user, 15))
|
||||
to_chat(user, "<span class='notice'>\The [src] has been excavated to a depth of [excavation_level]cm.</span>")
|
||||
return
|
||||
|
||||
@@ -334,14 +334,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
to_chat(src, "<font color='blue'><B>AntagHUD [antagHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
|
||||
/mob/observer/dead/proc/jumpable_areas()
|
||||
var/list/areas = return_areas()
|
||||
var/list/areas = return_sorted_areas()
|
||||
if(client?.holder)
|
||||
return areas
|
||||
|
||||
for(var/area/A as anything in areas)
|
||||
for(var/key in areas)
|
||||
var/area/A = areas[key]
|
||||
if(A.z in using_map?.secret_levels)
|
||||
areas -= A
|
||||
return areas
|
||||
areas -= key
|
||||
return areas
|
||||
|
||||
/mob/observer/dead/proc/jumpable_mobs()
|
||||
var/list/mobs = getmobs()
|
||||
@@ -363,11 +364,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
to_chat(usr, "Not when you're not dead!")
|
||||
return
|
||||
|
||||
|
||||
var/area/A = tgui_input_list(usr, "Select an area:", "Ghost Teleport", jumpable_areas())
|
||||
if(!A)
|
||||
var/list/areas = jumpable_areas()
|
||||
var/input = tgui_input_list(usr, "Select an area:", "Ghost Teleport", areas)
|
||||
if(!input)
|
||||
return
|
||||
|
||||
var/area/A = areas[input]
|
||||
if(!A) return
|
||||
usr.forceMove(pick(get_area_turfs(A)))
|
||||
usr.on_mob_jump()
|
||||
|
||||
|
||||
@@ -147,12 +147,9 @@ var/list/slot_equipment_priority = list( \
|
||||
// If canremove or other conditions need to be checked then use unEquip instead.
|
||||
|
||||
/mob/proc/drop_from_inventory(var/obj/item/W, var/atom/target)
|
||||
if(W)
|
||||
remove_from_mob(W, target)
|
||||
if(!(W && W.loc))
|
||||
return 1 // self destroying objects (tk, grabs)
|
||||
return 1
|
||||
return 0
|
||||
if(!W)
|
||||
return 0
|
||||
return remove_from_mob(W, target)
|
||||
|
||||
//Drops the item in our left hand
|
||||
/mob/proc/drop_l_hand(var/atom/Target)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(!red_switch && blue_switch && !green_switch && prob(50) || src.emagged)
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/T = loc
|
||||
visible_message("<span class='notice'>\The [src] squirts a puddle of water on the floor!</span>")
|
||||
visible_message("<b>\The [src]</b> squirts a puddle of water on the floor!")
|
||||
T.wet_floor()
|
||||
|
||||
if(!red_switch && !blue_switch && green_switch && prob(10) || src.emagged)
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
return
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message("<span class='notice'>\The [src] begins to repair the hole.</span>")
|
||||
visible_message("<b>\The [src]</b> begins to repair the hole.")
|
||||
if(do_after(src, 50))
|
||||
if(A && (locate(/obj/structure/lattice, A) && building == 1 || !locate(/obj/structure/lattice, A) && building == 2)) // Make sure that it still needs repairs
|
||||
var/obj/item/I
|
||||
@@ -245,7 +245,7 @@
|
||||
if(F.broken || F.burnt)
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message("<span class='notice'>\The [src] begins to remove the broken floor.</span>")
|
||||
visible_message("<b>\The [src]</b> begins to remove the broken floor.")
|
||||
if(do_after(src, 50, F))
|
||||
if(F.broken || F.burnt)
|
||||
F.make_plating()
|
||||
@@ -255,7 +255,7 @@
|
||||
else if(!F.flooring && amount)
|
||||
busy = 1
|
||||
update_icons()
|
||||
visible_message("<span class='notice'>\The [src] begins to improve the floor.</span>")
|
||||
visible_message("<b>\The [src]</b> begins to improve the floor.")
|
||||
if(do_after(src, 50))
|
||||
if(!F.flooring)
|
||||
F.set_flooring(get_flooring_data(floor_build_type))
|
||||
@@ -265,7 +265,7 @@
|
||||
update_icons()
|
||||
else if(istype(A, /obj/item/stack/tile/floor) && amount < maxAmount)
|
||||
var/obj/item/stack/tile/floor/T = A
|
||||
visible_message("<span class='notice'>\The [src] begins to collect tiles.</span>")
|
||||
visible_message("<b>\The [src]</b> begins to collect tiles.")
|
||||
busy = 1
|
||||
update_icons()
|
||||
if(do_after(src, 20))
|
||||
@@ -279,7 +279,7 @@
|
||||
else if(istype(A, /obj/item/stack/material) && amount + 4 <= maxAmount)
|
||||
var/obj/item/stack/material/M = A
|
||||
if(M.get_material_name() == MAT_STEEL)
|
||||
visible_message("<span class='notice'>\The [src] begins to make tiles.</span>")
|
||||
visible_message("<b>\The [src]</b> begins to make tiles.")
|
||||
busy = 1
|
||||
update_icons()
|
||||
if(do_after(50))
|
||||
|
||||
@@ -18,6 +18,6 @@
|
||||
return
|
||||
user.unEquip(W)
|
||||
wear_hat(W)
|
||||
user.visible_message("<span class='notice'>\The [user] puts \the [W] on \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> puts \the [W] on \the [src].")
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
to_chat(user, "<span class='warning'>\The [src] appears to reject this brain. It is incompatable.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] sticks \a [O] into \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> sticks \a [O] into \the [src].")
|
||||
B.preserved = TRUE
|
||||
|
||||
brainmob = B.brainmob
|
||||
|
||||
@@ -133,6 +133,18 @@
|
||||
if(accessories_visible.len)
|
||||
tie_msg += " Attached to it is [english_list(accessories_visible)]."
|
||||
|
||||
var/list/pocket_msg
|
||||
if(l_store)
|
||||
var/l_store_message = l_store.pocket_description(src, user)
|
||||
if(l_store_message)
|
||||
LAZYADD(pocket_msg, l_store_message)
|
||||
if(r_store)
|
||||
var/r_store_message = r_store.pocket_description(src, user)
|
||||
if(r_store_message)
|
||||
LAZYADD(pocket_msg, r_store_message)
|
||||
if(LAZYLEN(pocket_msg))
|
||||
tie_msg += " Near the waist it has [english_list(pocket_msg)]."
|
||||
|
||||
if(w_uniform.blood_DNA)
|
||||
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]</span>"
|
||||
else
|
||||
|
||||
@@ -1395,8 +1395,8 @@
|
||||
|
||||
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
|
||||
if(W in organs)
|
||||
return
|
||||
..()
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/reset_view(atom/A, update_hud = 1)
|
||||
..()
|
||||
|
||||
@@ -421,7 +421,7 @@ emp_act
|
||||
return
|
||||
|
||||
if(!zone)
|
||||
visible_message("<span class='notice'>\The [O] misses [src] narrowly!</span>")
|
||||
visible_message("<b>\The [O]</b> misses [src] narrowly!")
|
||||
return
|
||||
|
||||
O.throwing = 0 //it hit, so stop moving
|
||||
|
||||
@@ -164,7 +164,7 @@ var/list/wrapped_species_by_ref = list()
|
||||
return
|
||||
|
||||
wrapped_species_by_ref["\ref[src]"] = new_species
|
||||
visible_message("<span class='notice'>\The [src] shifts and contorts, taking the form of \a [new_species]!</span>")
|
||||
visible_message("<b>\The [src]</b> shifts and contorts, taking the form of \a [new_species]!")
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_colour()
|
||||
|
||||
@@ -167,7 +167,7 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
if(FEMALE)
|
||||
t_him = "her"
|
||||
|
||||
H.visible_message("<span class='notice'>\The [H] glomps [target] to make [t_him] feel better!</span>", \
|
||||
H.visible_message("<b>\The [H]</b> glomps [target] to make [t_him] feel better!", \
|
||||
"<span class='notice'>You glomp [target] to make [t_him] feel better!</span>")
|
||||
H.apply_stored_shock_to(target)
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
// Handled!
|
||||
if(!silent)
|
||||
to_chat(H, SPAN_NOTICE("You catch the air in your wings and greatly slow your fall."))
|
||||
landing.visible_message(SPAN_NOTICE("\The [H] glides down from above, landing safely."))
|
||||
landing.visible_message("<b>\The [H]</b> glides down from above, landing safely.")
|
||||
H.Stun(1)
|
||||
playsound(H, "rustle", 25, 1)
|
||||
return TRUE
|
||||
|
||||
@@ -271,6 +271,11 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
for(var/M in part.markings)
|
||||
icon_key += "[M][part.markings[M]["color"]]"
|
||||
|
||||
// VOREStation Edit Start
|
||||
if(part.nail_polish)
|
||||
icon_key += "_[part.nail_polish.icon]_[part.nail_polish.icon_state]_[part.nail_polish.color]"
|
||||
// VOREStation Edit End
|
||||
|
||||
if(part.robotic >= ORGAN_ROBOT)
|
||||
icon_key += "2[part.model ? "-[part.model]": ""]"
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
return
|
||||
|
||||
else
|
||||
visible_message("<span class='notice'>\The [src] starts licking the wounds on [M]'s [affecting.name] clean.</span>", \
|
||||
visible_message("<b>\The [src]</b> starts licking the wounds on [M]'s [affecting.name] clean.", \
|
||||
"<span class='notice'>You start licking the wounds on [M]'s [affecting.name] clean.</span>" )
|
||||
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
|
||||
@@ -719,8 +719,8 @@
|
||||
|
||||
/mob/living/carbon/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
|
||||
if(W in internal_organs)
|
||||
return
|
||||
..()
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/mob/living/touch_map_edge()
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ Whatever you did that made the last camera window disappear-- don't do that agai
|
||||
. = ..()
|
||||
|
||||
/area/ai_multicam_room
|
||||
name = "ai_multicam_room"
|
||||
name = "AI Multicam Room"
|
||||
icon_state = "ai_camera_room"
|
||||
dynamic_lighting = FALSE
|
||||
ambience = list()
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
playsound(src, 'sound/weapons/Egloves.ogg', 50, 1, -1)
|
||||
R.cell.charge -= 666
|
||||
else
|
||||
user.visible_message("<span class='notice'>\the [user] affectionately licks all over \the [target]'s face!</span>", "<span class='notice'>You affectionately lick all over \the [target]'s face!</span>")
|
||||
user.visible_message("<span class='notice'>\The [user] affectionately licks all over \the [target]'s face!</span>", "<span class='notice'>You affectionately lick all over \the [target]'s face!</span>")
|
||||
playsound(src, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
water.use_charge(5)
|
||||
var/mob/living/carbon/human/H = target
|
||||
|
||||
@@ -173,7 +173,7 @@ var/list/mob_hat_cache = list()
|
||||
return
|
||||
user.unEquip(W)
|
||||
wear_hat(W)
|
||||
user.visible_message("<span class='notice'>\The [user] puts \the [W] on \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> puts \the [W] on \the [src].")
|
||||
return
|
||||
else if(istype(W, /obj/item/borg/upgrade/))
|
||||
to_chat(user, "<span class='danger'>\The [src] is not compatible with \the [W].</span>")
|
||||
|
||||
@@ -165,4 +165,4 @@
|
||||
|
||||
if(!recharge_complete && recharging_atom.percent() >= 100)
|
||||
recharge_complete = TRUE
|
||||
visible_message(SPAN_NOTICE("\The [src] beeps and flashes a green light above \his recharging port."))
|
||||
visible_message("<b>\The [src]</b> beeps and flashes a green light above \his recharging port.")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
if(istype(recharging_atom) && !QDELETED(recharging_atom) && recharging_atom.loc == src)
|
||||
recharging_atom.dropInto(loc)
|
||||
user.put_in_hands(recharging_atom)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] pops \the [recharging_atom] out of \the [src]'s recharging port."))
|
||||
user.visible_message("<b>\The [user]</b> pops \the [recharging_atom] out of \the [src]'s recharging port.")
|
||||
recharging = null
|
||||
return TRUE
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
W.forceMove(src)
|
||||
recharging = weakref(W)
|
||||
recharge_complete = FALSE
|
||||
user.visible_message(SPAN_NOTICE("\The [user] slots \the [W] into \the [src]'s recharging port."))
|
||||
user.visible_message("<b>\The [user]</b> slots \the [W] into \the [src]'s recharging port.")
|
||||
return TRUE
|
||||
|
||||
if(istype(W, /obj/item/device/floor_painter))
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
if(istype(ejecting) && !QDELETED(ejecting) && ejecting.loc == src)
|
||||
ejecting.dropInto(loc)
|
||||
if(user == src)
|
||||
visible_message(SPAN_NOTICE("\The [src] ejects \the [ejecting] from its cargo compartment."))
|
||||
visible_message("<b>\The [src]</b> ejects \the [ejecting] from its cargo compartment.")
|
||||
else
|
||||
user.visible_message(SPAN_NOTICE("\The [user] pulls \the [ejecting] from \the [src]'s cargo compartment."))
|
||||
user.visible_message("<b>\The [user]</b> pulls \the [ejecting] from \the [src]'s cargo compartment.")
|
||||
|
||||
/mob/living/silicon/robot/platform/attack_ai(mob/user)
|
||||
if(isrobot(user) && user.Adjacent(src))
|
||||
@@ -99,7 +99,7 @@
|
||||
if(!istype(removing) || QDELETED(removing) || removing.loc != src)
|
||||
LAZYREMOVE(stored_atoms, remove_ref)
|
||||
else
|
||||
user.visible_message(SPAN_NOTICE("\The [user] begins unloading \the [removing] from \the [src]'s cargo compartment."))
|
||||
user.visible_message("<b>\The [user]</b> begins unloading \the [removing] from \the [src]'s cargo compartment.")
|
||||
if(do_after(user, 3 SECONDS, src) && !QDELETED(removing) && removing.loc == src)
|
||||
drop_stored_atom(removing, user)
|
||||
return TRUE
|
||||
@@ -124,9 +124,9 @@
|
||||
if(!can_mouse_drop(dropping, user) || !can_store_atom(dropping, user))
|
||||
return FALSE
|
||||
if(user == src)
|
||||
visible_message(SPAN_NOTICE("\The [src] begins loading \the [dropping] into its cargo compartment."))
|
||||
visible_message("<b>\The [src]</b> begins loading \the [dropping] into its cargo compartment.")
|
||||
else
|
||||
user.visible_message(SPAN_NOTICE("\The [user] begins loading \the [dropping] into \the [src]'s cargo compartment."))
|
||||
user.visible_message("<b>\The [user]</b> begins loading \the [dropping] into \the [src]'s cargo compartment.")
|
||||
if(do_after(user, 3 SECONDS, src) && can_mouse_drop(dropping, user) && can_store_atom(dropping, user))
|
||||
store_atom(dropping, user)
|
||||
return FALSE
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
MED.amount -= 1
|
||||
if(MED.amount <= 0)
|
||||
qdel(MED)
|
||||
visible_message("<span class='notice'>\The [user] applies the [MED] on [src].</span>")
|
||||
visible_message("<b>\The [user]</b> applies the [MED] on [src].")
|
||||
else
|
||||
var/datum/gender/T = gender_datums[src.get_visible_gender()]
|
||||
to_chat(user, "<span class='notice'>\The [src] is dead, medical items won't bring [T.him] back to life.</span>") // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code
|
||||
|
||||
@@ -161,9 +161,9 @@
|
||||
vore_pounce_cooldown = world.time + 20 SECONDS // don't attempt another pounce for a while
|
||||
if(prob(successrate)) // pounce success!
|
||||
M.Weaken(5)
|
||||
M.visible_message("<span class='danger'>\the [src] pounces on \the [M]!</span>!")
|
||||
M.visible_message("<span class='danger'>\The [src] pounces on \the [M]!</span>!")
|
||||
else // pounce misses!
|
||||
M.visible_message("<span class='danger'>\the [src] attempts to pounce \the [M] but misses!</span>!")
|
||||
M.visible_message("<span class='danger'>\The [src] attempts to pounce \the [M] but misses!</span>!")
|
||||
playsound(src, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
|
||||
if(will_eat(M) && (!M.canmove || vore_standing_too)) //if they're edible then eat them too
|
||||
@@ -263,7 +263,7 @@
|
||||
if(istype(tmob) && will_eat(tmob) && !istype(tmob, type) && prob(vore_bump_chance) && !ckey) //check if they decide to eat. Includes sanity check to prevent cannibalism.
|
||||
if(tmob.canmove && prob(vore_pounce_chance)) //if they'd pounce for other noms, pounce for these too, otherwise still try and eat them if they hold still
|
||||
tmob.Weaken(5)
|
||||
tmob.visible_message("<span class='danger'>\the [src] [vore_bump_emote] \the [tmob]!</span>!")
|
||||
tmob.visible_message("<span class='danger'>\The [src] [vore_bump_emote] \the [tmob]!</span>!")
|
||||
set_AI_busy(TRUE)
|
||||
spawn()
|
||||
animal_nom(tmob)
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
var/obj/item/weapon/storage/S = O
|
||||
var/obj/item/weapon/holder/H = new holder_type(get_turf(src),src) //this works weird, but it creates an empty holder, to see if that holder can fit
|
||||
if(S.can_be_inserted(H) && (src.size_multiplier <= 0.75))
|
||||
visible_message("<span class='notice'>\the [src] squeezes into \the [S].</span>")
|
||||
visible_message("<b>\The [src]</b> squeezes into \the [S].")
|
||||
H.forceMove(S)
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -185,7 +185,7 @@ var/list/_cat_default_emotes = list(
|
||||
/mob/living/simple_mob/animal/passive/cat/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
if(named)
|
||||
to_chat(user, "<span class='notice'>\the [name] already has a name!</span>")
|
||||
to_chat(user, "<span class='notice'>\The [name] already has a name!</span>")
|
||||
else
|
||||
var/tmp_name = sanitizeSafe(input(user, "Give \the [name] a name", "Name"), MAX_NAME_LEN)
|
||||
if(length(tmp_name) > 50)
|
||||
|
||||
@@ -116,5 +116,5 @@
|
||||
if(prob(10))
|
||||
for(var/mob/living/L in hearers(holder))
|
||||
if(!istype(L, holder)) // Don't follow other hooligan crabs.
|
||||
holder.visible_message("<span class='notice'>\The [holder] starts to follow \the [L].</span>")
|
||||
holder.visible_message("<b>\The [holder]</b> starts to follow \the [L].")
|
||||
set_follow(L, rand(20 SECONDS, 40 SECONDS))
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
if(holder.get_active_hand() && istype(holder.get_active_hand(), /obj/item/clothing/head) && !S.hat)
|
||||
var/obj/item/I = holder.get_active_hand()
|
||||
S.take_hat(S)
|
||||
holder.visible_message("<span class='notice'>\The [holder] wears \the [I]</span>")
|
||||
holder.visible_message("<b>\The [holder]</b> wears \the [I]")
|
||||
|
||||
/mob/living/simple_mob/animal/sif/sakimm/intelligent
|
||||
desc = "What appears to be an oversized rodent with hands. This one has a curious look in its eyes."
|
||||
@@ -327,7 +327,7 @@
|
||||
if(istype(holder) && istype(holder.get_active_hand(), /obj/item/clothing/head) && !S.hat)
|
||||
var/obj/item/I = holder.get_active_hand()
|
||||
S.take_hat(S)
|
||||
holder.visible_message("<span class='notice'>\The [holder] wears \the [I]</span>")
|
||||
holder.visible_message("<b>\The [holder]</b> wears \the [I]")
|
||||
carrying_item = TRUE
|
||||
|
||||
if(istype(holder) && S.hat) // Do we have a hat? Hats are loot.
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
var/mob/living/L = A
|
||||
if(prob(scare_chance))
|
||||
L.Stun(1)
|
||||
L.visible_message("<span class='danger'>\the [src] scares \the [L]!</span>")
|
||||
L.visible_message("<span class='danger'>\The [src] scares \the [L]!</span>")
|
||||
|
||||
// Spookiest of bats
|
||||
/mob/living/simple_mob/animal/space/bats/cult
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
my_storage.rangedload(T, src)
|
||||
|
||||
if(my_storage.contents.len >= my_storage.max_storage_space)
|
||||
visible_message("<span class='notice'>\The [src] emits a shrill beep, indicating its storage is full.</span>")
|
||||
visible_message("<b>\The [src]</b> emits a shrill beep, indicating its storage is full.")
|
||||
|
||||
var/obj/structure/ore_box/OB = locate() in view(2, src)
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
var/repair_upper_bound = A.melee_damage_upper * -1
|
||||
adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound))
|
||||
adjustFireLoss(rand(repair_lower_bound, repair_upper_bound))
|
||||
user.visible_message("<span class='notice'>\The [user] mends some of \the [src]'s wounds.</span>")
|
||||
user.visible_message("<b>\The [user]</b> mends some of \the [src]'s wounds.")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] is undamaged.</span>")
|
||||
return
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
var/mob/living/L = A
|
||||
if(prob(12))
|
||||
L.Weaken(3)
|
||||
L.visible_message("<span class='danger'>\the [src] knocks down \the [L]!</span>")
|
||||
L.visible_message("<span class='danger'>\The [src] knocks down \the [L]!</span>")
|
||||
|
||||
// Strong Variant
|
||||
/mob/living/simple_mob/faithless/strong
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
hunger += 5
|
||||
else
|
||||
food.Weaken(5)
|
||||
food.visible_message("<span class='danger'>\the [src] pounces on \the [food]!</span>!")
|
||||
food.visible_message("<span class='danger'>\The [src] pounces on \the [food]!</span>!")
|
||||
target_mob = food
|
||||
EatTarget()
|
||||
hunger = 0
|
||||
|
||||
@@ -69,7 +69,7 @@ List of things solar grubs should be able to do:
|
||||
if(attached)
|
||||
set_AI_busy(TRUE)
|
||||
if(prob(2))
|
||||
src.visible_message("<span class='notice'>\The [src] begins to sink power from the net.</span>")
|
||||
src.visible_message("<b>\The [src]</b> begins to sink power from the net.")
|
||||
if(prob(5))
|
||||
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
|
||||
sparks.set_up(5, 0, get_turf(src))
|
||||
|
||||
@@ -132,9 +132,7 @@
|
||||
new_player_panel_proc()
|
||||
|
||||
if(href_list["observe"])
|
||||
var/alert_time = ticker?.current_state <= GAME_STATE_SETTING_UP ? 1 : round(config.respawn_time/10/60)
|
||||
|
||||
if(tgui_alert(src,"Are you sure you wish to observe? You will have to wait up to [alert_time] minute\s before being able to spawn into the game!","Player Setup",list("Yes","No")) == "Yes")
|
||||
if(tgui_alert(src,"Are you sure you wish to observe? If you do, make sure to not use any knowledge gained from observing if you decide to join later.","Player Setup",list("Yes","No")) == "Yes")
|
||||
if(!client) return 1
|
||||
|
||||
//Make a new mannequin quickly, and allow the observer to take the appearance
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
all_underwear[WRC.name] = WRI.name
|
||||
|
||||
|
||||
backbag = rand(1,5)
|
||||
backbag = rand(1,6)
|
||||
pdachoice = rand(1,5)
|
||||
age = rand(current_species.min_age, current_species.max_age)
|
||||
b_type = RANDOM_BLOOD_TYPE
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
var/icon_state // the icon_state of the accessory
|
||||
var/preview_state // a custom preview state for whatever reason
|
||||
|
||||
var/name // the preview name of the accessory
|
||||
var/name = "ERROR - FIXME" // the preview name of the accessory
|
||||
|
||||
// Determines if the accessory will be skipped or included in random hair generations
|
||||
var/gender = NEUTER
|
||||
@@ -1819,6 +1819,7 @@ shaved
|
||||
//Teshari things
|
||||
/datum/sprite_accessory/hair/teshari
|
||||
name = "Teshari Default"
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
icon_state = "teshari_default"
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
@@ -1855,8 +1856,8 @@ shaved
|
||||
icon_state = "teshari_mohawk"
|
||||
|
||||
/datum/sprite_accessory/hair/teshari/pointy
|
||||
name = "Teshari Pointy"
|
||||
icon_state = "teshari_pointy"
|
||||
name = "Teshari Pointy"
|
||||
icon_state = "teshari_pointy"
|
||||
|
||||
/datum/sprite_accessory/hair/teshari/upright
|
||||
name = "Teshari Upright"
|
||||
@@ -1875,7 +1876,6 @@ shaved
|
||||
icon_state = "teshari_mushroom"
|
||||
|
||||
//Tesh things ported from Ark Station
|
||||
|
||||
/datum/sprite_accessory/hair/teshari/twies
|
||||
name = "Teshari Twies"
|
||||
icon_state = "teshari_twies"
|
||||
|
||||
@@ -5,732 +5,849 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
|
||||
|
||||
/datum/sprite_accessory/marking/vr
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_belly
|
||||
/datum/sprite_accessory/marking/vr_vulp_belly
|
||||
name = "belly fur (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_belly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_fullbelly
|
||||
/datum/sprite_accessory/marking/vr_vulp_fullbelly
|
||||
name = "full belly fur (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_fullbelly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_crest
|
||||
/datum/sprite_accessory/marking/vr_vulp_crest
|
||||
name = "belly crest (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_crest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_nose
|
||||
/datum/sprite_accessory/marking/vr_vulp_nose
|
||||
name = "nose (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_short_nose
|
||||
/datum/sprite_accessory/marking/vr_vulp_short_nose
|
||||
name = "nose, short (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_short_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/snoutstripe
|
||||
/datum/sprite_accessory/marking/vr_snoutstripe
|
||||
name = "snout stripe (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "snoutstripe"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_face
|
||||
/datum/sprite_accessory/marking/vr_vulp_face
|
||||
name = "face (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_face"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_facealt
|
||||
/datum/sprite_accessory/marking/vr_vulp_facealt
|
||||
name = "face, alt. (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_facealt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_earsface
|
||||
/datum/sprite_accessory/marking/vr_vulp_earsface
|
||||
name = "ears and face (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_earsface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_all
|
||||
/datum/sprite_accessory/marking/vr_vulp_all
|
||||
name = "all head highlights (Vulp)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vulp_all"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergal_full
|
||||
/datum/sprite_accessory/marking/vr_sergal_full
|
||||
name = "Sergal Markings"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "sergal_full"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
species_allowed = list("Sergal")
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergal_full_female
|
||||
/datum/sprite_accessory/marking/vr_sergal_full_female
|
||||
name = "Sergal Markings (Female)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "sergal_full_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
species_allowed = list("Sergal")
|
||||
|
||||
/datum/sprite_accessory/marking/vr/monoeye
|
||||
/datum/sprite_accessory/marking/vr_monoeye
|
||||
name = "Monoeye"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "monoeye"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spidereyes
|
||||
/datum/sprite_accessory/marking/vr_spidereyes
|
||||
name = "Spider Eyes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "spidereyes"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergaleyes
|
||||
/datum/sprite_accessory/marking/vr_sergaleyes
|
||||
name = "Sergal Eyes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "eyes_sergal"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/closedeyes
|
||||
/datum/sprite_accessory/marking/vr_closedeyes
|
||||
name = "Closed Eyes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "eyes_closed"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/brows
|
||||
/datum/sprite_accessory/marking/vr_brows
|
||||
name = "Eyebrows"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "brows"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/nevrean_female
|
||||
/datum/sprite_accessory/marking/vr_nevrean_female
|
||||
name = "Female Nevrean beak"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "nevrean_f"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/nevrean_male
|
||||
/datum/sprite_accessory/marking/vr_nevrean_male
|
||||
name = "Male Nevrean beak"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "nevrean_m"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spots
|
||||
/datum/sprite_accessory/marking/vr_spots
|
||||
name = "Spots"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "spots"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/shaggy_mane
|
||||
/datum/sprite_accessory/marking/vr_shaggy_mane
|
||||
name = "Shaggy mane/feathers"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "shaggy"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/jagged_teeth
|
||||
/datum/sprite_accessory/marking/vr_jagged_teeth
|
||||
name = "Jagged teeth"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "jagged"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/blank_face
|
||||
/datum/sprite_accessory/marking/vr_blank_face
|
||||
name = "Blank round face (use with monster mouth)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "blankface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/monster_mouth
|
||||
/datum/sprite_accessory/marking/vr_monster_mouth
|
||||
name = "Monster mouth"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "monster"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/saber_teeth
|
||||
/datum/sprite_accessory/marking/vr_saber_teeth
|
||||
name = "Saber teeth"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "saber"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/fangs
|
||||
/datum/sprite_accessory/marking/vr_fangs
|
||||
name = "Fangs"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "fangs"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tusks
|
||||
/datum/sprite_accessory/marking/vr_tusks
|
||||
name = "Tusks"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tusks"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_face
|
||||
/datum/sprite_accessory/marking/vr_otie_face
|
||||
name = "Otie face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otieface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_nose
|
||||
/datum/sprite_accessory/marking/vr_otie_nose
|
||||
name = "Otie nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otie_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otienose_lite
|
||||
/datum/sprite_accessory/marking/vr_otienose_lite
|
||||
name = "Short otie nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otienose_lite"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/backstripes
|
||||
/datum/sprite_accessory/marking/vr_backstripes
|
||||
name = "Back stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otiestripes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/belly_butt
|
||||
/datum/sprite_accessory/marking/vr_belly_butt
|
||||
name = "Belly and butt"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "bellyandbutt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/fingers_toes
|
||||
/datum/sprite_accessory/marking/vr_fingers_toes
|
||||
name = "Fingers and toes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "fingerstoes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_socks
|
||||
/datum/sprite_accessory/marking/vr_otie_socks
|
||||
name = "Fingerless socks"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otiesocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/corvid_beak
|
||||
/datum/sprite_accessory/marking/vr_corvid_beak
|
||||
name = "Corvid beak"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "corvidbeak"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/corvid_belly
|
||||
/datum/sprite_accessory/marking/vr_corvid_belly
|
||||
name = "Corvid belly"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "corvidbelly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/cow_body
|
||||
/datum/sprite_accessory/marking/vr_cow_body
|
||||
name = "Cow markings"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "cowbody"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/cow_nose
|
||||
/datum/sprite_accessory/marking/vr_cow_nose
|
||||
name = "Cow nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "cownose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zmask
|
||||
/datum/sprite_accessory/marking/vr_zmask
|
||||
name = "Eye mask"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zmask"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zbody
|
||||
/datum/sprite_accessory/marking/vr_zbody
|
||||
name = "Thick jagged stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zbody"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/znose
|
||||
/datum/sprite_accessory/marking/vr_znose
|
||||
name = "Jagged snout"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "znose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otter_nose
|
||||
/datum/sprite_accessory/marking/vr_otter_nose
|
||||
name = "Otter nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otternose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otter_face
|
||||
/datum/sprite_accessory/marking/vr_otter_face
|
||||
name = "Otter face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "otterface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/deer_face
|
||||
/datum/sprite_accessory/marking/vr_deer_face
|
||||
name = "Deer face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "deerface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sharkface
|
||||
/datum/sprite_accessory/marking/vr_sharkface
|
||||
name = "Akula snout"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "sharkface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sheppy_face
|
||||
/datum/sprite_accessory/marking/vr_sheppy_face
|
||||
name = "Shepherd snout"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "shepface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sheppy_back
|
||||
/datum/sprite_accessory/marking/vr_sheppy_back
|
||||
name = "Shepherd back"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "shepback"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_belly_male
|
||||
/datum/sprite_accessory/marking/vr_zorren_belly_male
|
||||
name = "Zorren Male Torso"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_belly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_belly_female
|
||||
/datum/sprite_accessory/marking/vr_zorren_belly_female
|
||||
name = "Zorren Female Torso"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_belly_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_back_patch
|
||||
/datum/sprite_accessory/marking/vr_zorren_back_patch
|
||||
name = "Zorren Back Patch"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_backpatch"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_face_male
|
||||
/datum/sprite_accessory/marking/vr_zorren_face_male
|
||||
name = "Zorren Male Face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_face"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_face_female
|
||||
/datum/sprite_accessory/marking/vr_zorren_face_female
|
||||
name = "Zorren Female Face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_face_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_muzzle_male
|
||||
/datum/sprite_accessory/marking/vr_zorren_muzzle_male
|
||||
name = "Zorren Male Muzzle"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_muzzle"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_muzzle_female
|
||||
/datum/sprite_accessory/marking/vr_zorren_muzzle_female
|
||||
name = "Zorren Female Muzzle"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_muzzle_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_socks
|
||||
/datum/sprite_accessory/marking/vr_zorren_socks
|
||||
name = "Zorren Socks"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_socks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_longsocks
|
||||
/datum/sprite_accessory/marking/vr_zorren_longsocks
|
||||
name = "Zorren Longsocks"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "zorren_longsocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tesh_feathers
|
||||
/datum/sprite_accessory/marking/vr_tesh_feathers
|
||||
name = "Teshari Feathers"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tesh-feathers"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/harpy_feathers
|
||||
/datum/sprite_accessory/marking/vr_harpy_feathers
|
||||
name = "Rapala leg Feather"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "harpy-feathers"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/harpy_legs
|
||||
/datum/sprite_accessory/marking/vr_harpy_legs
|
||||
name = "Rapala leg coloring"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "harpy-leg"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/chooves
|
||||
/datum/sprite_accessory/marking/vr_chooves
|
||||
name = "Cloven hooves"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "chooves"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/body_tone
|
||||
/datum/sprite_accessory/marking/vr_body_tone
|
||||
name = "Body toning (for emergency contrast loss)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "btone"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/gloss
|
||||
/datum/sprite_accessory/marking/vr_gloss
|
||||
name = "Full body gloss"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "gloss"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/eboop_panels
|
||||
/datum/sprite_accessory/marking/vr_eboop_panels
|
||||
name = "Eggnerd FBP panels"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "eboop"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_rarm
|
||||
/datum/sprite_accessory/marking/vr_osocks_rarm
|
||||
name = "Modular Longsock (right arm)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_larm
|
||||
/datum/sprite_accessory/marking/vr_osocks_larm
|
||||
name = "Modular Longsock (left arm)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_rleg
|
||||
/datum/sprite_accessory/marking/vr_osocks_rleg
|
||||
name = "Modular Longsock (right leg)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_FOOT,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_lleg
|
||||
/datum/sprite_accessory/marking/vr_osocks_lleg
|
||||
name = "Modular Longsock (left leg)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/animeeyesinner
|
||||
/datum/sprite_accessory/marking/vr_animeeyesinner
|
||||
name = "Anime Eyes Inner"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "animeeyesinner"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/animeeyesouter
|
||||
/datum/sprite_accessory/marking/vr_animeeyesouter
|
||||
name = "Anime Eyes Outer"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "animeeyesouter"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/panda_eye_marks
|
||||
/datum/sprite_accessory/marking/vr_panda_eye_marks
|
||||
name = "Panda Eye Markings"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "eyes_panda"
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwomantorso
|
||||
/datum/sprite_accessory/marking/vr_catwomantorso
|
||||
name = "Catwoman chest stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "catwomanchest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwomangroin
|
||||
/datum/sprite_accessory/marking/vr_catwomangroin
|
||||
name = "Catwoman groin stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "catwomangroin"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwoman_rleg
|
||||
/datum/sprite_accessory/marking/vr_catwoman_rleg
|
||||
name = "Catwoman right leg stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "catwomanright"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwoman_lleg
|
||||
/datum/sprite_accessory/marking/vr_catwoman_lleg
|
||||
name = "Catwoman left leg stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "catwomanleft"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshi_small_feathers
|
||||
/datum/sprite_accessory/marking/vr_teshi_small_feathers
|
||||
name = "Teshari small wingfeathers"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "teshi_sf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights
|
||||
/datum/sprite_accessory/marking/vr_spirit_lights
|
||||
name = "Ward - Spirit FBP Lights"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights_body
|
||||
/datum/sprite_accessory/marking/vr_spirit_lights_body
|
||||
name = "Ward - Spirit FBP Lights (body)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights_head
|
||||
/datum/sprite_accessory/marking/vr_spirit_lights_head
|
||||
name = "Ward - Spirit FBP Lights (head)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels
|
||||
/datum/sprite_accessory/marking/vr_spirit_panels
|
||||
name = "Ward - Spirit FBP Panels"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels_body
|
||||
/datum/sprite_accessory/marking/vr_spirit_panels_body
|
||||
name = "Ward - Spirit FBP Panels (body)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels_head
|
||||
/datum/sprite_accessory/marking/vr_spirit_panels_head
|
||||
name = "Ward - Spirit FBP Panels (head)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tentacle_head
|
||||
/datum/sprite_accessory/marking/vr_tentacle_head
|
||||
name = "Squid Head"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tentaclehead"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tentacle_mouth
|
||||
/datum/sprite_accessory/marking/vr_tentacle_mouth
|
||||
name = "Tentacle Mouth"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tentaclemouth"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/rosette
|
||||
/datum/sprite_accessory/marking/vr_rosette
|
||||
name = "Rosettes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "rosette"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/werewolf_nose
|
||||
/datum/sprite_accessory/marking/vr_werewolf_nose
|
||||
name = "Werewolf nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/werewolf_face
|
||||
/datum/sprite_accessory/marking/vr_werewolf_face
|
||||
name = "Werewolf face"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/werewolf_belly
|
||||
/datum/sprite_accessory/marking/vr_werewolf_belly
|
||||
name = "Werewolf belly"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/werewolf_socks
|
||||
/datum/sprite_accessory/marking/vr_werewolf_socks
|
||||
name = "Werewolf socks"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/shadekin_snoot
|
||||
/datum/sprite_accessory/marking/vr_shadekin_snoot
|
||||
name = "Shadekin Snoot"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "shadekin-snoot"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/taj_nose_alt
|
||||
/datum/sprite_accessory/marking/vr_taj_nose_alt
|
||||
name = "Nose Color, alt. (Taj)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "taj_nosealt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/talons
|
||||
/datum/sprite_accessory/marking/vr_talons
|
||||
name = "Talons"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "talons"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/claws
|
||||
/datum/sprite_accessory/marking/vr_claws
|
||||
name = "Claws"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "claws"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/equine_snout //Why the long face? Works best with sergal bodytype.
|
||||
/datum/sprite_accessory/marking/vr_equine_snout //Why the long face? Works best with sergal bodytype.
|
||||
name = "Equine Snout"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "donkey"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/equine_nose
|
||||
/datum/sprite_accessory/marking/vr_equine_nose
|
||||
name = "Equine Nose"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "dnose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/bee_stripes
|
||||
/datum/sprite_accessory/marking/vr_bee_stripes
|
||||
name = "bee stripes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "beestripes"
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vas_toes
|
||||
/datum/sprite_accessory/marking/vr_vas_toes
|
||||
name = "Bug Paws (Vasilissan)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "vas_toes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT)
|
||||
|
||||
//CitRP stuff
|
||||
/datum/sprite_accessory/marking/vr/vox_alt
|
||||
/datum/sprite_accessory/marking/vr_vox_alt
|
||||
name = "Vox Alternate"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "bay_vox"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vox_alt_eyes
|
||||
/datum/sprite_accessory/marking/vr_vox_alt_eyes
|
||||
name = "Alternate Vox Eyes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "bay_vox_eyes"
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_body
|
||||
/datum/sprite_accessory/marking/vr_c_beast_body
|
||||
name = "Cyber Body"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_body"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_plating
|
||||
/datum/sprite_accessory/marking/vr_c_beast_plating
|
||||
name = "Cyber Plating (Use w/ Cyber Body)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_plating"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_band
|
||||
/datum/sprite_accessory/marking/vr_c_beast_band
|
||||
name = "Cyber Band (Use w/ Cybertech head)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_band"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_cheek_a
|
||||
/datum/sprite_accessory/marking/vr_c_beast_cheek_a
|
||||
name = "Cyber Beast Cheeks A (Use A, B and C)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_a"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_cheek_b
|
||||
/datum/sprite_accessory/marking/vr_c_beast_cheek_b
|
||||
name = "Cyber Beast Cheeks B (Use A, B and C)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_b"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/c_beast_cheek_c
|
||||
/datum/sprite_accessory/marking/vr_c_beast_cheek_c
|
||||
name = "Cyber Beast Cheeks C (Use A, B and C)"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "c_beast_c"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshari_large_eyes
|
||||
/datum/sprite_accessory/marking/vr_teshari_large_eyes
|
||||
name = "Teshari large eyes"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "teshlarge_eyes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshari_coat
|
||||
/datum/sprite_accessory/marking/vr_teshari_coat
|
||||
name = "Teshari coat"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tesh_coat"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_HEAD)
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshari_pattern_male
|
||||
/datum/sprite_accessory/marking/vr_teshari_pattern_male
|
||||
name = "Teshari male pattern"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tesh-pattern-male"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshari_pattern_female
|
||||
/datum/sprite_accessory/marking/vr_teshari_pattern_female
|
||||
name = "Teshari female pattern"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "tesh-pattern-fem"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD)
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/voxscales
|
||||
/datum/sprite_accessory/marking/vr_voxscales
|
||||
name = "Vox Scales"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "Voxscales"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/voxclaws
|
||||
/datum/sprite_accessory/marking/vr_voxclaws
|
||||
name = "Vox Claws"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "Voxclaws"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/voxbeak
|
||||
/datum/sprite_accessory/marking/vr_voxbeak
|
||||
name = "Vox Beak"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "Voxscales"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathihood
|
||||
/datum/sprite_accessory/marking/vr_unathihood
|
||||
name = "Cobra Hood"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathihood"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathidoublehorns
|
||||
/datum/sprite_accessory/marking/vr_unathidoublehorns
|
||||
name = "Double Unathi Horns"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathidoublehorns"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathihorns
|
||||
/datum/sprite_accessory/marking/vr_unathihorns
|
||||
name = "Unathi Horns"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathihorns"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathiramhorns
|
||||
/datum/sprite_accessory/marking/vr_unathiramhorns
|
||||
name = "Unathi Ram Horns"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathiramhorns"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathishortspines
|
||||
/datum/sprite_accessory/marking/vr_unathishortspines
|
||||
name = "Unathi Short Spines"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathishortspines"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathilongspines
|
||||
/datum/sprite_accessory/marking/vr_unathilongspines
|
||||
name = "Unathi Long Spines"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathilongspines"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathishortfrills
|
||||
/datum/sprite_accessory/marking/vr_unathishortfrills
|
||||
name = "Unathi Short Frills"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathishortfrills"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/unathilongfrills
|
||||
/datum/sprite_accessory/marking/vr_unathilongfrills
|
||||
name = "Unathi Long Frills"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "unathilongfrills"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/thunderthighs
|
||||
/datum/sprite_accessory/marking/vr_thunderthighs
|
||||
name = "Boosted Thighs"
|
||||
icon = 'icons/mob/human_races/markings_vr.dmi'
|
||||
icon_state = "thunderthighs"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG)
|
||||
@@ -57,7 +57,7 @@
|
||||
suit_sprites = 'icons/mob/taursuits_wolf_vr.dmi'
|
||||
icon_sprite_tag = "wolf"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/fatwolf
|
||||
/datum/sprite_accessory/tail/taur/wolf/fatwolf
|
||||
name = "Fat Wolf (Taur)"
|
||||
icon_state = "fatwolf_s"
|
||||
icon_sprite_tag = "wolf" //This could be modified later.
|
||||
@@ -83,7 +83,7 @@
|
||||
extra_overlay2 = "synthwolf_glow"
|
||||
//icon_sprite_tag = "synthwolf"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/wolf/fatsynthwolf
|
||||
/datum/sprite_accessory/tail/taur/wolf/fatsynthwolf
|
||||
name = "Fat SynthWolf dual-color (Taur)"
|
||||
icon_state = "fatsynthwolf_s"
|
||||
extra_overlay = "fatsynthwolf_markings"
|
||||
@@ -219,11 +219,11 @@
|
||||
extra_overlay = "lizard_markings"
|
||||
//icon_sprite_tag = "lizard2c"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/lizard/fat
|
||||
/datum/sprite_accessory/tail/taur/lizard/fatlizard
|
||||
name = "Fat Lizard (Taur)"
|
||||
icon_state = "fatlizard_s"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/lizard/fat_2c
|
||||
/datum/sprite_accessory/tail/taur/lizard/fatlizard_2c
|
||||
name = "Fat Lizard (Taur, dual-color)"
|
||||
icon_state = "fatlizard_s"
|
||||
extra_overlay= "fatlizard_markings"
|
||||
@@ -235,7 +235,7 @@
|
||||
extra_overlay2 = "synthlizard_glow"
|
||||
//icon_sprite_tag = "synthlizard"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/lizard/fatsynthlizard
|
||||
/datum/sprite_accessory/tail/taur/lizard/fatsynthlizard
|
||||
name = "Fat SynthLizard dual-color (Taur)"
|
||||
icon_state = "fatsynthlizard_s"
|
||||
extra_overlay = "fatsynthlizard_markings"
|
||||
@@ -326,7 +326,7 @@
|
||||
extra_overlay2 = "synthfeline_glow"
|
||||
//icon_sprite_tag = "synthfeline"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/feline/fatsynthfeline
|
||||
/datum/sprite_accessory/tail/taur/feline/fatsynthfeline
|
||||
name = "Fat SynthFeline dual-color (Taur)"
|
||||
icon_state = "fatsynthfeline_s"
|
||||
extra_overlay = "fatsynthfeline_markings"
|
||||
|
||||
@@ -243,64 +243,6 @@
|
||||
icon_state = "hair_fingerwave"
|
||||
species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
|
||||
|
||||
//Teshari things
|
||||
/datum/sprite_accessory/hair/teshari
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_altdefault
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_tight
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_excited
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_spike
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_long
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_burst
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_shortburst
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_mohawk
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_pointy
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_upright
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_mane
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_droopy
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_mushroom
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_twies
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_backstrafe
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_longway
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_tree
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair/teshari_fluffymohawk
|
||||
icon = 'icons/mob/human_face_vr.dmi'
|
||||
icon_add = 'icons/mob/human_face_vr_add.dmi'
|
||||
|
||||
//Skrell 'hairstyles' - these were requested for a chimera and screw it, if one wants to eat seafood, go nuts
|
||||
/datum/sprite_accessory/hair/skr_tentacle_veryshort
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
set hidden = 1
|
||||
|
||||
set_typing_indicator(TRUE)
|
||||
var/message = input(usr, "","say (text)") as text
|
||||
var/message = tgui_input_text(usr, "Type your message:", "Say")
|
||||
set_typing_indicator(FALSE)
|
||||
|
||||
if(message)
|
||||
@@ -51,8 +51,25 @@
|
||||
set hidden = 1
|
||||
|
||||
set_typing_indicator(TRUE)
|
||||
var/message = input(usr, "","me (text)") as message //VOREStation Edit
|
||||
var/message = tgui_input_message(usr, "Type your message:", "Emote")
|
||||
set_typing_indicator(FALSE)
|
||||
|
||||
if(message)
|
||||
me_verb(message)
|
||||
|
||||
// No typing indicators here, but this is the file where the wrappers are, so...
|
||||
/mob/verb/whisper_wrapper()
|
||||
set name = ".Whisper"
|
||||
set hidden = 1
|
||||
|
||||
var/message = tgui_input_text(usr, "Type your message:", "Whisper")
|
||||
if(message)
|
||||
whisper(message)
|
||||
|
||||
/mob/verb/subtle_wrapper()
|
||||
set name = ".Subtle"
|
||||
set hidden = 1
|
||||
|
||||
var/message = tgui_input_message(usr, "Type your message:", "Subtle")
|
||||
if(message)
|
||||
me_verb_subtle(message)
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
to_chat(usr, "<span class='notice'>Hardware error: Printer is out of paper.</span>")
|
||||
return
|
||||
else
|
||||
computer.visible_message("<span class='notice'>\The [computer] prints out paper.</span>")
|
||||
computer.visible_message("<b>\The [computer]</b> prints out paper.")
|
||||
if(ticket_count >= 1)
|
||||
new /obj/item/stack/arcadeticket((get_turf(computer)), 1)
|
||||
to_chat(usr, "<span class='notice'>[src] dispenses a ticket!</span>")
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
/obj/structure/ladder/proc/climbLadder(var/mob/M, var/obj/target_ladder)
|
||||
var/direction = (target_ladder == target_up ? "up" : "down")
|
||||
M.visible_message("<span class='notice'>\The [M] begins climbing [direction] \the [src]!</span>",
|
||||
M.visible_message("<b>\The [M]</b> begins climbing [direction] \the [src]!",
|
||||
"You begin climbing [direction] \the [src]!",
|
||||
"You hear the grunting and clanging of a metal ladder being used.")
|
||||
|
||||
|
||||
@@ -461,9 +461,9 @@
|
||||
if(damage_desc)
|
||||
if(user == src.owner)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<span class='notice'>\The [user] patches [damage_desc] on [T.his] [src.name] with [tool].</span>")
|
||||
user.visible_message("<b>\The [user]</b> patches [damage_desc] on [T.his] [src.name] with [tool].")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] patches [damage_desc] on [owner]'s [src.name] with [tool].</span>")
|
||||
user.visible_message("<b>\The [user]</b> patches [damage_desc] on [owner]'s [src.name] with [tool].")
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -131,6 +131,15 @@ var/global/list/limb_icon_cache = list()
|
||||
I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit
|
||||
limb_icon_cache[cache_key] = I
|
||||
mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY)
|
||||
|
||||
// VOREStation edit start
|
||||
if(nail_polish)
|
||||
var/icon/I = new(nail_polish.icon, nail_polish.icon_state)
|
||||
I.Blend(nail_polish.color, ICON_MULTIPLY)
|
||||
add_overlay(I)
|
||||
mob_icon.Blend(I, ICON_OVERLAY)
|
||||
icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]"
|
||||
// VOREStation edit end
|
||||
|
||||
if(model)
|
||||
icon_cache_key += "_model_[model]"
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
/obj/item/organ/internal/heart/grey/colormatch/slime/process()
|
||||
..()
|
||||
if(!(QDELETED(src)) && src.loc != owner)
|
||||
visible_message("<span class='notice'>\The [src] splatters!</span>")
|
||||
visible_message("<b>\The [src]</b> splatters!")
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/effect/decal/cleanable/blood/B = new (T)
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
..()
|
||||
|
||||
if(!(QDELETED(src)) && src.loc != owner)
|
||||
visible_message("<span class='notice'>\The [src] splatters!</span>")
|
||||
visible_message("<b>\The [src]</b> splatters!")
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/effect/decal/cleanable/blood/B = new (T)
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/obj/machinery/disperser/attackby(obj/item/I, mob/user)
|
||||
if(I && I.is_wrench())
|
||||
if(panel_open)
|
||||
user.visible_message("<span class='notice'>\The [user] rotates \the [src] with \the [I].</span>",
|
||||
user.visible_message("<b>\The [user]</b> rotates \the [src] with \the [I].",
|
||||
"<span class='notice'>You rotate \the [src] with \the [I].</span>")
|
||||
set_dir(turn(dir, 90))
|
||||
playsound(src, 'sound/items/jaws_pry.ogg', 50, 1)
|
||||
|
||||
@@ -87,8 +87,10 @@
|
||||
to_chat(usr, "<span class='info'>There isn't enough space left on \the [src] to write anything.</span>")
|
||||
return
|
||||
|
||||
var/t = sanitize(input(usr, "Enter what you want to write:", "Write", null, null) as message, free_space, extra = 0)
|
||||
|
||||
var/raw_t = tgui_input_message(usr, "Enter what you want to write:", "Write")
|
||||
if(!raw_t)
|
||||
return
|
||||
var/t = sanitize(raw_t, free_space, extra = 0)
|
||||
if(!t)
|
||||
return
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
var/text = sanitizeSafe(input(usr, "What would you like to write?") as text, writing_space)
|
||||
if(!text || thing.loc != user || (!Adjacent(user) && loc != user) || user.incapacitated())
|
||||
return
|
||||
user.visible_message(SPAN_NOTICE("\The [user] jots a note down on \the [src]."))
|
||||
user.visible_message("<b>\The [user]</b> jots a note down on \the [src].")
|
||||
written_by = user.ckey
|
||||
if(written_text)
|
||||
written_text = "[written_text] [text]"
|
||||
|
||||
@@ -20,6 +20,14 @@
|
||||
if(!isnull(entries_decay_at) && !isnull(entries_expire_at))
|
||||
entries_decay_at = round(entries_expire_at * entries_decay_at)
|
||||
|
||||
/datum/persistent/proc/Initialize()
|
||||
if(fexists(filename))
|
||||
var/list/tokens = json_decode(file2text(filename))
|
||||
for(var/list/token in tokens)
|
||||
if(!CheckTokenSanity(token))
|
||||
tokens -= token
|
||||
ProcessAndApplyTokens(tokens)
|
||||
|
||||
/datum/persistent/proc/GetValidTurf(var/turf/T, var/list/token)
|
||||
if(T && CheckTurfContents(T, token))
|
||||
return T
|
||||
@@ -93,14 +101,6 @@
|
||||
"age" = GetEntryAge(entry)
|
||||
)
|
||||
|
||||
/datum/persistent/proc/Initialize()
|
||||
if(fexists(filename))
|
||||
var/list/tokens = json_decode(file2text(filename))
|
||||
for(var/list/token in tokens)
|
||||
if(!CheckTokenSanity(token))
|
||||
tokens -= token
|
||||
ProcessAndApplyTokens(tokens)
|
||||
|
||||
/datum/persistent/proc/Shutdown()
|
||||
if(fexists(filename))
|
||||
fdel(filename)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
var/obj/item/weapon/weldingtool/welder = thing
|
||||
if(welder.isOn() && welder.remove_fuel(0,user) && do_after(user, 5, src) && !QDELETED(src))
|
||||
playsound(src.loc, welder.usesound, 50, 1)
|
||||
user.visible_message("<span class='notice'>\The [user] clears away some graffiti.</span>")
|
||||
user.visible_message("<b>\The [user]</b> clears away some graffiti.")
|
||||
qdel(src)
|
||||
else if(thing.sharp)
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/datum/persistent/paintings
|
||||
name = "paintings"
|
||||
entries_expire_at = 1000 // Basically forever
|
||||
|
||||
/datum/persistent/paintings/SetFilename()
|
||||
filename = "data/persistent/paintings.json"
|
||||
|
||||
/datum/persistent/paintings/Initialize()
|
||||
. = ..()
|
||||
if(fexists(filename))
|
||||
SSpersistence.paintings = json_decode(file2text(filename))
|
||||
var/list/tokens = SSpersistence.paintings
|
||||
for(var/list/token in tokens)
|
||||
token["age"]++ // Increment age!
|
||||
if(!CheckTokenSanity(token))
|
||||
tokens -= token
|
||||
|
||||
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
||||
P.load_persistent()
|
||||
return
|
||||
|
||||
/datum/persistent/paintings/CheckTokenSanity(var/list/token)
|
||||
var/png_filename = "data/paintings/[token["persistence_id"]]/[token["md5"]].png"
|
||||
if(!fexists(png_filename))
|
||||
return FALSE
|
||||
if(token["age"] > entries_expire_at)
|
||||
fdel(png_filename)
|
||||
return FALSE
|
||||
|
||||
/datum/persistent/paintings/Shutdown()
|
||||
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
||||
P.save_persistent()
|
||||
|
||||
if(fexists(filename))
|
||||
fdel(filename)
|
||||
to_file(file(filename), json_encode(SSpersistence.paintings))
|
||||
+11
-27
@@ -5,8 +5,8 @@
|
||||
/obj/item/weapon/cell
|
||||
name = "power cell"
|
||||
desc = "A rechargable electrochemical power cell."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
icon = 'icons/obj/power_cells.dmi'
|
||||
icon_state = "b_st"
|
||||
item_state = "cell"
|
||||
origin_tech = list(TECH_POWER = 1)
|
||||
force = 5.0
|
||||
@@ -29,8 +29,7 @@
|
||||
pickup_sound = 'sound/items/pickup/component.ogg'
|
||||
|
||||
// Overlay stuff.
|
||||
var/overlay_half_state = "cell-o1" // Overlay used when not fully charged but not empty.
|
||||
var/overlay_full_state = "cell-o2" // Overlay used when fully charged.
|
||||
var/standard_overlays = TRUE
|
||||
var/last_overlay_state = null // Used to optimize update_icon() calls.
|
||||
|
||||
/obj/item/weapon/cell/New()
|
||||
@@ -73,29 +72,14 @@
|
||||
#define OVERLAY_EMPTY 0
|
||||
|
||||
/obj/item/weapon/cell/update_icon()
|
||||
var/new_overlay = null // The overlay that is needed.
|
||||
// If it's different than the current overlay, then it'll get changed.
|
||||
// Otherwise nothing happens, to save on CPU.
|
||||
|
||||
if(charge < 0.01) // Empty.
|
||||
new_overlay = OVERLAY_EMPTY
|
||||
if(last_overlay_state != new_overlay)
|
||||
cut_overlays()
|
||||
|
||||
else if(charge/maxcharge >= 0.995) // Full
|
||||
new_overlay = OVERLAY_FULL
|
||||
if(last_overlay_state != new_overlay)
|
||||
cut_overlay(overlay_half_state)
|
||||
add_overlay(overlay_full_state)
|
||||
|
||||
|
||||
else // Inbetween.
|
||||
new_overlay = OVERLAY_PARTIAL
|
||||
if(last_overlay_state != new_overlay)
|
||||
cut_overlay(overlay_full_state)
|
||||
add_overlay(overlay_half_state)
|
||||
|
||||
last_overlay_state = new_overlay
|
||||
if(!standard_overlays)
|
||||
return
|
||||
var/ratio = clamp(round(charge / maxcharge, 0.25) * 100, 0, 100)
|
||||
var/new_state = "[icon_state]_[ratio]"
|
||||
if(new_state != last_overlay_state)
|
||||
cut_overlay(last_overlay_state)
|
||||
add_overlay(new_state)
|
||||
last_overlay_state = new_state
|
||||
|
||||
#undef OVERLAY_FULL
|
||||
#undef OVERLAY_PARTIAL
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/obj/item/weapon/cell/device
|
||||
name = "device power cell"
|
||||
desc = "A small power cell designed to power handheld devices."
|
||||
icon_state = "dcell"
|
||||
icon_state = "m_st"
|
||||
item_state = "egg6"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
force = 0
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/item/weapon/cell/device/weapon
|
||||
name = "weapon power cell"
|
||||
desc = "A small power cell designed to power handheld weaponry."
|
||||
icon_state = "wcell"
|
||||
icon_state = "m_sup"
|
||||
maxcharge = 2400
|
||||
charge_amount = 20
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/weapon/cell/device/weapon/recharge
|
||||
name = "self-charging weapon power cell"
|
||||
desc = "A small power cell designed to power handheld weaponry. This one recharges itself."
|
||||
// icon_state = "wcell" //TODO: Different sprite
|
||||
icon_state = "meb_m_nu"
|
||||
self_recharge = TRUE
|
||||
charge_amount = 120
|
||||
charge_delay = 75
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien
|
||||
name = "void cell (device)"
|
||||
var/swaps_to = /obj/item/weapon/cell/void
|
||||
standard_overlays = FALSE
|
||||
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien/attack_self(var/mob/user)
|
||||
user.remove_from_mob(src)
|
||||
@@ -13,10 +14,6 @@
|
||||
newcell.charge = newcell.maxcharge * percentage
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien/update_icon()
|
||||
return
|
||||
|
||||
|
||||
//The machine cell
|
||||
/obj/item/weapon/cell/void
|
||||
name = "void cell (machinery)"
|
||||
@@ -29,6 +26,7 @@
|
||||
self_recharge = TRUE
|
||||
charge_delay = 50
|
||||
matter = null
|
||||
standard_overlays = FALSE
|
||||
var/swaps_to = /obj/item/weapon/cell/device/weapon/recharge/alien
|
||||
|
||||
/obj/item/weapon/cell/void/attack_self(var/mob/user)
|
||||
@@ -40,9 +38,6 @@
|
||||
newcell.charge = newcell.maxcharge * percentage
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/cell/void/update_icon()
|
||||
return
|
||||
|
||||
// Bloo friendlier hybrid tech
|
||||
/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid
|
||||
icon = 'icons/obj/power_vr.dmi'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "modified power cell"
|
||||
desc = "A modified power cell sitting in a highly conductive chassis."
|
||||
origin_tech = list(TECH_POWER = 2)
|
||||
icon_state = "spikecell"
|
||||
icon_state = "exs_m"
|
||||
maxcharge = 10000
|
||||
matter = list(MAT_STEEL = 1000, MAT_GLASS = 80, MAT_SILVER = 100)
|
||||
self_recharge = TRUE
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "\improper rechargable AA battery"
|
||||
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
|
||||
origin_tech = list(TECH_POWER = 0)
|
||||
icon_state = "s_st"
|
||||
maxcharge = 500
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 40)
|
||||
|
||||
@@ -12,6 +13,7 @@
|
||||
/obj/item/weapon/cell/secborg
|
||||
name = "security borg rechargable D battery"
|
||||
origin_tech = list(TECH_POWER = 0)
|
||||
icon_state = "meb_s_st"
|
||||
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 40)
|
||||
|
||||
@@ -23,13 +25,14 @@
|
||||
/obj/item/weapon/cell/apc
|
||||
name = "heavy-duty power cell"
|
||||
origin_tech = list(TECH_POWER = 1)
|
||||
icon_state = "meb_b_st"
|
||||
maxcharge = 5000
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 50)
|
||||
|
||||
/obj/item/weapon/cell/high
|
||||
name = "high-capacity power cell"
|
||||
origin_tech = list(TECH_POWER = 2)
|
||||
icon_state = "hcell"
|
||||
icon_state = "b_hi"
|
||||
maxcharge = 10000
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 60)
|
||||
|
||||
@@ -41,7 +44,7 @@
|
||||
/obj/item/weapon/cell/super
|
||||
name = "super-capacity power cell"
|
||||
origin_tech = list(TECH_POWER = 5)
|
||||
icon_state = "scell"
|
||||
icon_state = "b_sup"
|
||||
maxcharge = 20000
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 70)
|
||||
|
||||
@@ -53,7 +56,7 @@
|
||||
/obj/item/weapon/cell/hyper
|
||||
name = "hyper-capacity power cell"
|
||||
origin_tech = list(TECH_POWER = 6)
|
||||
icon_state = "hpcell"
|
||||
icon_state = "b_hy"
|
||||
maxcharge = 30000
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 80)
|
||||
|
||||
@@ -64,12 +67,13 @@
|
||||
|
||||
/obj/item/weapon/cell/mech
|
||||
name = "mecha power cell"
|
||||
icon_state = "exs_l"
|
||||
charge = 15000
|
||||
maxcharge = 15000
|
||||
|
||||
/obj/item/weapon/cell/infinite
|
||||
name = "infinite-capacity power cell!"
|
||||
icon_state = "icell"
|
||||
icon_state = "infinite_b"
|
||||
origin_tech = null
|
||||
maxcharge = 30000 //determines how badly mobs get shocked
|
||||
matter = list(MAT_STEEL = 700, MAT_GLASS = 80)
|
||||
@@ -89,6 +93,7 @@
|
||||
charge = 100
|
||||
maxcharge = 300
|
||||
minor_fault = 1
|
||||
standard_overlays = FALSE
|
||||
|
||||
/obj/item/weapon/cell/slime
|
||||
name = "charged slime core"
|
||||
@@ -100,13 +105,14 @@
|
||||
maxcharge = 10000
|
||||
matter = null
|
||||
self_recharge = TRUE
|
||||
standard_overlays = FALSE
|
||||
|
||||
//Not actually a cell, but if people look for it, they'll probably look near other cells
|
||||
/obj/item/device/fbp_backup_cell
|
||||
name = "backup battery"
|
||||
desc = "A small one-time-use chemical battery for synthetic crew when they are low on power in emergency situations."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "fbp_cell"
|
||||
icon = 'icons/obj/power_cells.dmi'
|
||||
icon_state = "exs_s"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/amount = 100
|
||||
var/used = FALSE
|
||||
@@ -144,6 +150,7 @@
|
||||
desc = "A tiny power cell with a very low power capacity. Used in light fixtures to power them in the event of an outage."
|
||||
maxcharge = 120 //Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell
|
||||
matter = list(MAT_GLASS = 20)
|
||||
icon_state = "meb_s_sup"
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
/obj/item/weapon/cell/emergency_light/Initialize()
|
||||
|
||||
@@ -67,7 +67,7 @@ GLOBAL_LIST_EMPTY(fusion_cores)
|
||||
if(Output.get_pairing())
|
||||
reagents.trans_to_holder(Output.reagents, Output.reagents.maximum_volume)
|
||||
if(prob(5))
|
||||
visible_message("<span class='notice'>\The [src] gurgles as it exports fluid.</span>")
|
||||
visible_message("<b>\The [src]</b> gurgles as it exports fluid.")
|
||||
|
||||
if(owned_field)
|
||||
|
||||
@@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(fusion_cores)
|
||||
/obj/machinery/power/fusion_core/attack_hand(var/mob/user)
|
||||
if(!Adjacent(user)) // As funny as it was for the AI to hug-kill the tokamak field from a distance...
|
||||
return
|
||||
visible_message("<span class='notice'>\The [user] hugs \the [src] to make it feel better!</span>")
|
||||
visible_message("<b>\The [user]</b> hugs \the [src] to make it feel better!")
|
||||
if(owned_field)
|
||||
Shutdown()
|
||||
|
||||
|
||||
@@ -26,14 +26,14 @@
|
||||
to_chat(user, "<span class='warning'>You need at least three hundred units of material to form a fuel rod.</span>")
|
||||
return 1
|
||||
var/datum/reagent/R = thing.reagents.reagent_list[1]
|
||||
visible_message("<span class='notice'>\The [src] compresses the contents of \the [thing] into a new fuel assembly.</span>")
|
||||
visible_message("<b>\The [src]</b> compresses the contents of \the [thing] into a new fuel assembly.")
|
||||
var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), R.id, R.color)
|
||||
thing.reagents.remove_reagent(R.id, R.volume)
|
||||
user.put_in_hands(F)
|
||||
|
||||
else if(istype(thing, /obj/machinery/power/supermatter))
|
||||
var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), "supermatter")
|
||||
visible_message("<span class='notice'>\The [src] compresses \the [thing] into a new fuel assembly.</span>")
|
||||
visible_message("<b>\The [src]</b> compresses \the [thing] into a new fuel assembly.")
|
||||
qdel(thing)
|
||||
user.put_in_hands(F)
|
||||
return 1
|
||||
@@ -58,7 +58,7 @@
|
||||
to_chat(user, "<span class='warning'>You need at least 25 [mat.sheet_plural_name] to make a fuel rod.</span>")
|
||||
return
|
||||
var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), mat.name)
|
||||
visible_message("<span class='notice'>\The [src] compresses the [mat.use_name] into a new fuel assembly.</span>")
|
||||
visible_message("<b>\The [src]</b> compresses the [mat.use_name] into a new fuel assembly.")
|
||||
M.use(FUSION_ROD_SHEET_AMT)
|
||||
user.put_in_hands(F)
|
||||
|
||||
|
||||
@@ -56,9 +56,9 @@ GLOBAL_LIST_EMPTY(fuel_injectors)
|
||||
|
||||
if(cur_assembly)
|
||||
cur_assembly.forceMove(get_turf(src))
|
||||
visible_message("<span class='notice'>\The [user] swaps \the [src]'s [cur_assembly] for \a [W].</span>")
|
||||
visible_message("<b>\The [user]</b> swaps \the [src]'s [cur_assembly] for \a [W].")
|
||||
else
|
||||
visible_message("<span class='notice'>\The [user] inserts \a [W] into \the [src].</span>")
|
||||
visible_message("<b>\The [user]</b> inserts \a [W] into \the [src].")
|
||||
|
||||
user.drop_from_inventory(W)
|
||||
W.forceMove(src)
|
||||
@@ -92,7 +92,7 @@ GLOBAL_LIST_EMPTY(fuel_injectors)
|
||||
if(cur_assembly)
|
||||
cur_assembly.forceMove(get_turf(src))
|
||||
user.put_in_hands(cur_assembly)
|
||||
visible_message("<span class='notice'>\The [user] removes \the [cur_assembly] from \the [src].</span>")
|
||||
visible_message("<b>\The [user]</b> removes \the [cur_assembly] from \the [src].")
|
||||
cur_assembly = null
|
||||
return
|
||||
else
|
||||
|
||||
@@ -240,3 +240,44 @@
|
||||
. = ..()
|
||||
cell = new /obj/item/weapon/cell/void/hybrid(src)
|
||||
RefreshParts()
|
||||
|
||||
|
||||
// Kugelblitz generator, confined black hole like a singulo but smoller and higher tech
|
||||
// Presumably whoever made these has better tech than most
|
||||
/obj/machinery/power/rtg/kugelblitz
|
||||
name = "kugelblitz generator"
|
||||
desc = "A power source harnessing a small black hole."
|
||||
icon = 'icons/obj/structures/decor64x64.dmi'
|
||||
icon_state = "bigdice"
|
||||
bound_width = 64
|
||||
bound_height = 64
|
||||
power_gen = 30000
|
||||
irradiate = FALSE // Green energy!
|
||||
can_buckle = FALSE
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/proc/asplod()
|
||||
visible_message("<span class='danger'>\The [src] lets out an shower of sparks as it starts to lose stability!</span>",\
|
||||
"<span class='italics'>You hear a loud electrical crack!</span>")
|
||||
playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
|
||||
var/turf/T = get_turf(src)
|
||||
qdel(src)
|
||||
new /obj/singularity(T)
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/blob_act(obj/structure/blob/B)
|
||||
asplod()
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/ex_act()
|
||||
asplod()
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/fire_act(exposed_temperature, exposed_volume)
|
||||
asplod()
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/tesla_act()
|
||||
..() //extend the zap
|
||||
asplod()
|
||||
|
||||
/obj/machinery/power/rtg/kugelblitz/bullet_act(obj/item/projectile/Proj)
|
||||
. = ..()
|
||||
if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) && Proj.damage >= 20)
|
||||
log_and_message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered a kugelblitz core explosion at [x],[y],[z] via projectile.")
|
||||
asplod()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(W.is_screwdriver())
|
||||
panel_open = !panel_open
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
visible_message("<span class='notice'>\The [user] adjusts \the [src]'s mechanisms.</span>")
|
||||
visible_message("<b>\The [user]</b> adjusts \the [src]'s mechanisms.")
|
||||
if(panel_open && do_after(user, 30))
|
||||
to_chat(user, "<span class='notice'>\The [src] looks like it could be modified.</span>")
|
||||
if(panel_open && do_after(user, 80 * W.toolspeed)) // We don't have skills, so a delayed hint for engineers will have to do for now. (Panel open check for sanity)
|
||||
@@ -41,10 +41,10 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src]'s mechanisms look secure.</span>")
|
||||
if(istype(W, /obj/item/weapon/smes_coil/super_io) && panel_open)
|
||||
visible_message("<span class='notice'>\The [user] begins to modify \the [src] with \the [W].</span>")
|
||||
visible_message("<b>\The [user]</b> begins to modify \the [src] with \the [W].")
|
||||
if(do_after(user, 300))
|
||||
user.drop_from_inventory(W)
|
||||
visible_message("<span class='notice'>\The [user] installs \the [W] onto \the [src].</span>")
|
||||
visible_message("<b>\The [user]</b> installs \the [W] onto \the [src].")
|
||||
qdel(W)
|
||||
var/turf/T = get_turf(src)
|
||||
var/new_machine = /obj/machinery/particle_smasher
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
recipes = typesof(/datum/particle_smasher_recipe)
|
||||
|
||||
if(!target) // You are just blasting an empty machine.
|
||||
visible_message("<span class='notice'>\The [src] shudders.</span>")
|
||||
visible_message("<b>\The [src]</b> shudders.")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user