mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-14 00:26:02 +01:00
space cleanup (#17300)
* space cleanup * this * this too --------- Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
@@ -39,8 +39,8 @@
|
||||
else
|
||||
violent = ""
|
||||
admin_attack_log(attacker,
|
||||
victim,
|
||||
"used \the [weapon] to [violent]inject - [reagents] - [amount_transferred]u transferred",
|
||||
"was [violent]injected with \the [weapon] - [reagents] - [amount_transferred]u transferred",
|
||||
"used \the [weapon] to [violent]inject [reagents] ([amount_transferred]u transferred) into")
|
||||
victim,
|
||||
"used \the [weapon] to [violent]inject - [reagents] - [amount_transferred]u transferred",
|
||||
"was [violent]injected with \the [weapon] - [reagents] - [amount_transferred]u transferred",
|
||||
"used \the [weapon] to [violent]inject [reagents] ([amount_transferred]u transferred) into")
|
||||
*/
|
||||
|
||||
@@ -335,9 +335,9 @@
|
||||
var/jobs = ""
|
||||
|
||||
/***********************************WARNING!************************************
|
||||
The jobban stuff looks mangled and disgusting
|
||||
But it looks beautiful in-game
|
||||
-Nodrak
|
||||
The jobban stuff looks mangled and disgusting
|
||||
But it looks beautiful in-game
|
||||
-Nodrak
|
||||
************************************WARNING!***********************************/
|
||||
var/counter = 0
|
||||
//Regular jobs
|
||||
|
||||
@@ -125,35 +125,35 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
|
||||
feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
var/list/debug_verbs = list (
|
||||
/client/proc/do_not_use_these
|
||||
,/client/proc/camera_view
|
||||
,/client/proc/sec_camera_report
|
||||
,/client/proc/intercom_view
|
||||
,/client/proc/Cell
|
||||
,/client/proc/atmosscan
|
||||
,/client/proc/powerdebug
|
||||
,/client/proc/count_objects_on_z_level
|
||||
,/client/proc/count_objects_all
|
||||
,/client/proc/cmd_assume_direct_control
|
||||
,/client/proc/jump_to_dead_group
|
||||
,/client/proc/startSinglo
|
||||
,/client/proc/set_server_fps
|
||||
,/client/proc/cmd_admin_grantfullaccess
|
||||
,/client/proc/kaboom
|
||||
,/client/proc/cmd_admin_areatest
|
||||
,/client/proc/cmd_admin_rejuvenate
|
||||
,/datum/admins/proc/show_traitor_panel
|
||||
,/client/proc/print_jobban_old
|
||||
,/client/proc/print_jobban_old_filter
|
||||
,/client/proc/forceEvent
|
||||
,/client/proc/Zone_Info
|
||||
,/client/proc/Test_ZAS_Connection
|
||||
,/client/proc/ZoneTick
|
||||
,/client/proc/rebootAirMaster
|
||||
,/client/proc/hide_debug_verbs
|
||||
,/client/proc/testZAScolors
|
||||
,/client/proc/testZAScolors_remove
|
||||
,/datum/admins/proc/setup_supermatter
|
||||
/client/proc/do_not_use_these
|
||||
,/client/proc/camera_view
|
||||
,/client/proc/sec_camera_report
|
||||
,/client/proc/intercom_view
|
||||
,/client/proc/Cell
|
||||
,/client/proc/atmosscan
|
||||
,/client/proc/powerdebug
|
||||
,/client/proc/count_objects_on_z_level
|
||||
,/client/proc/count_objects_all
|
||||
,/client/proc/cmd_assume_direct_control
|
||||
,/client/proc/jump_to_dead_group
|
||||
,/client/proc/startSinglo
|
||||
,/client/proc/set_server_fps
|
||||
,/client/proc/cmd_admin_grantfullaccess
|
||||
,/client/proc/kaboom
|
||||
,/client/proc/cmd_admin_areatest
|
||||
,/client/proc/cmd_admin_rejuvenate
|
||||
,/datum/admins/proc/show_traitor_panel
|
||||
,/client/proc/print_jobban_old
|
||||
,/client/proc/print_jobban_old_filter
|
||||
,/client/proc/forceEvent
|
||||
,/client/proc/Zone_Info
|
||||
,/client/proc/Test_ZAS_Connection
|
||||
,/client/proc/ZoneTick
|
||||
,/client/proc/rebootAirMaster
|
||||
,/client/proc/hide_debug_verbs
|
||||
,/client/proc/testZAScolors
|
||||
,/client/proc/testZAScolors_remove
|
||||
,/datum/admins/proc/setup_supermatter
|
||||
,/client/proc/atmos_toggle_debug
|
||||
,/client/proc/spawn_tanktransferbomb
|
||||
,/client/proc/take_picture
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
/client/proc/resize(var/mob/living/L in mob_list)
|
||||
set name = "Resize"
|
||||
set desc = "Resizes any living mob without any restrictions on size."
|
||||
set category = "Fun.Event Kit"
|
||||
if(!check_rights(R_ADMIN|R_FUN|R_VAREDIT))
|
||||
return
|
||||
set name = "Resize"
|
||||
set desc = "Resizes any living mob without any restrictions on size."
|
||||
set category = "Fun.Event Kit"
|
||||
if(!check_rights(R_ADMIN|R_FUN|R_VAREDIT))
|
||||
return
|
||||
|
||||
var/size_multiplier = tgui_input_number(usr, "Input size multiplier.", "Resize", 1, round_value=FALSE)
|
||||
if(!size_multiplier)
|
||||
return //cancelled
|
||||
var/size_multiplier = tgui_input_number(usr, "Input size multiplier.", "Resize", 1, round_value=FALSE)
|
||||
if(!size_multiplier)
|
||||
return //cancelled
|
||||
|
||||
size_multiplier = clamp(size_multiplier, -50, 50) //VOREStation Edit - being able to make people upside down is fun. Also 1000 is way, WAY too big. Honestly 50 is too big but at least you can see 50 and it doesn't break the rendering.
|
||||
var/can_be_big = L.has_large_resize_bounds()
|
||||
var/very_big = is_extreme_size(size_multiplier)
|
||||
size_multiplier = clamp(size_multiplier, -50, 50) //VOREStation Edit - being able to make people upside down is fun. Also 1000 is way, WAY too big. Honestly 50 is too big but at least you can see 50 and it doesn't break the rendering.
|
||||
var/can_be_big = L.has_large_resize_bounds()
|
||||
var/very_big = is_extreme_size(size_multiplier)
|
||||
|
||||
if(very_big && can_be_big) // made an extreme size in an area that allows it, don't assume adminbuse
|
||||
to_chat(src,span_warning("[L] will lose this size upon moving into an area where this size is not allowed."))
|
||||
else if(very_big) // made an extreme size in an area that doesn't allow it, assume adminbuse
|
||||
to_chat(src,span_warning("[L] will retain this normally unallowed size outside this area."))
|
||||
if(very_big && can_be_big) // made an extreme size in an area that allows it, don't assume adminbuse
|
||||
to_chat(src,span_warning("[L] will lose this size upon moving into an area where this size is not allowed."))
|
||||
else if(very_big) // made an extreme size in an area that doesn't allow it, assume adminbuse
|
||||
to_chat(src,span_warning("[L] will retain this normally unallowed size outside this area."))
|
||||
|
||||
L.resize(size_multiplier, animate = TRUE, uncapped = TRUE, ignore_prefs = TRUE)
|
||||
L.resize(size_multiplier, animate = TRUE, uncapped = TRUE, ignore_prefs = TRUE)
|
||||
|
||||
log_and_message_admins("has changed [key_name(L)]'s size multiplier to [size_multiplier].")
|
||||
feedback_add_details("admin_verb","RESIZE")
|
||||
log_and_message_admins("has changed [key_name(L)]'s size multiplier to [size_multiplier].")
|
||||
feedback_add_details("admin_verb","RESIZE")
|
||||
|
||||
@@ -38,28 +38,28 @@
|
||||
icon_state = "key"
|
||||
|
||||
/obj/machinery/gateway/centeraway/proc/entrydetect()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/gateway/centeraway/mcguffin/entrydetect()
|
||||
if(key)
|
||||
return
|
||||
if(key)
|
||||
return
|
||||
|
||||
var/list/spawners = list()
|
||||
for(var/obj/effect/landmark/mcguffin_spawner/sp in world)
|
||||
spawners += sp
|
||||
var/list/spawners = list()
|
||||
for(var/obj/effect/landmark/mcguffin_spawner/sp in world)
|
||||
spawners += sp
|
||||
|
||||
var/obj/effect/landmark/mcguffin_spawner/the_cool_one = pick(spawners)
|
||||
var/obj/effect/landmark/mcguffin_spawner/the_cool_one = pick(spawners)
|
||||
|
||||
var/atom/destination = get_turf(the_cool_one)
|
||||
var/obj/structure/closet/CL = locate() in destination
|
||||
if(CL)
|
||||
destination = CL
|
||||
var/atom/destination = get_turf(the_cool_one)
|
||||
var/obj/structure/closet/CL = locate() in destination
|
||||
if(CL)
|
||||
destination = CL
|
||||
|
||||
if(!destination)
|
||||
warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
|
||||
destination = get_turf(src)
|
||||
if(!destination)
|
||||
warning("A gateway is trying to spawn it's mcguffin but there are no mapped in spawner landmarks")
|
||||
destination = get_turf(src)
|
||||
|
||||
key = new mcguffin_type(destination)
|
||||
key = new mcguffin_type(destination)
|
||||
|
||||
/obj/machinery/gateway/centeraway/mcguffin/Bumped(atom/movable/M as mob|obj)
|
||||
if(!ready) return
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
// var/value = null
|
||||
|
||||
if (pos)
|
||||
// No, don't do lowertext here, that breaks paths on linux
|
||||
// No, don't do lowertext here, that breaks paths on linux
|
||||
name = copytext(t, 1, pos)
|
||||
// value = copytext(t, pos + 1)
|
||||
else
|
||||
// No, don't do lowertext here, that breaks paths on linux
|
||||
// No, don't do lowertext here, that breaks paths on linux
|
||||
name = t
|
||||
|
||||
if (!name)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
var/effect_desc = "This does nothing special." // For examine panel.
|
||||
var/ai_desc = "default" // Shown when examining the overmind.
|
||||
var/difficulty = BLOB_DIFFICULTY_EASY // A rough guess on how hard a blob is to kill.
|
||||
// When a harder blob spawns by event, the crew is given more information than usual from the announcement.
|
||||
// When a harder blob spawns by event, the crew is given more information than usual from the announcement.
|
||||
var/color = "#FFFFFF" // The actual blob's color.
|
||||
var/complementary_color = "#000000" //a color that's complementary to the normal blob color. Blob mobs are colored in this.
|
||||
|
||||
|
||||
@@ -68,16 +68,16 @@
|
||||
character_name = list("Xander Bevin")
|
||||
|
||||
/datum/gear/fluff/charlotte_medal
|
||||
path = /obj/item/clothing/accessory/medal/silver/security
|
||||
display_name = "Charlotte's Robust Security Medal"
|
||||
ckeywhitelist = list("alfalah")
|
||||
character_name = list("Charlotte Graves")
|
||||
path = /obj/item/clothing/accessory/medal/silver/security
|
||||
display_name = "Charlotte's Robust Security Medal"
|
||||
ckeywhitelist = list("alfalah")
|
||||
character_name = list("Charlotte Graves")
|
||||
|
||||
/datum/gear/fluff/charlotte_medal_2
|
||||
path = /obj/item/clothing/accessory/medal/conduct
|
||||
display_name = "Charlotte's Medal of Conduct"
|
||||
ckeywhitelist = list("alfalah")
|
||||
character_name = list("Charlotte Graves")
|
||||
path = /obj/item/clothing/accessory/medal/conduct
|
||||
display_name = "Charlotte's Medal of Conduct"
|
||||
ckeywhitelist = list("alfalah")
|
||||
character_name = list("Charlotte Graves")
|
||||
|
||||
/datum/gear/fluff/charlotte_cigarettes
|
||||
path = /obj/item/storage/fancy/fluff/charlotte
|
||||
@@ -912,10 +912,10 @@
|
||||
|
||||
// P CKEYS
|
||||
/datum/gear/fluff/evelyn_medal
|
||||
path = /obj/item/clothing/accessory/medal/conduct
|
||||
display_name = "Evelyn's Medal of Conduct"
|
||||
ckeywhitelist = list("pandora029")
|
||||
character_name = list("Evelyn Tareen")
|
||||
path = /obj/item/clothing/accessory/medal/conduct
|
||||
display_name = "Evelyn's Medal of Conduct"
|
||||
ckeywhitelist = list("pandora029")
|
||||
character_name = list("Evelyn Tareen")
|
||||
|
||||
/datum/gear/fluff/evelyn_coat
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat/security/fluff/evelyn/
|
||||
@@ -1205,10 +1205,10 @@
|
||||
character_name = list("Lilith Vespers")
|
||||
|
||||
/datum/gear/fluff/greek_dress
|
||||
path = /obj/item/clothing/under/fluff/greek_dress
|
||||
display_name = "mytilenean Dress"
|
||||
ckeywhitelist = list("sudate")
|
||||
character_name = list("Shea Corbett")
|
||||
path = /obj/item/clothing/under/fluff/greek_dress
|
||||
display_name = "mytilenean Dress"
|
||||
ckeywhitelist = list("sudate")
|
||||
character_name = list("Shea Corbett")
|
||||
|
||||
/datum/gear/fluff/silent_mimemask
|
||||
path = /obj/item/clothing/mask/gas/sexymime
|
||||
@@ -1225,24 +1225,24 @@
|
||||
character_name = list("Silent Stripes")
|
||||
|
||||
/datum/gear/fluff/parrizjacket
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
|
||||
display_name = "pink crop bomber"
|
||||
slot = slot_wear_suit
|
||||
ckeywhitelist = list("satinisle")
|
||||
character_name = list("Parriz Tavakdavi")
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket
|
||||
display_name = "pink crop bomber"
|
||||
slot = slot_wear_suit
|
||||
ckeywhitelist = list("satinisle")
|
||||
character_name = list("Parriz Tavakdavi")
|
||||
|
||||
/datum/gear/fluff/dark_tarot
|
||||
path = /obj/item/deck/dark_tarot
|
||||
display_name = "dark rose tarot deck"
|
||||
ckeywhitelist = list("satinisle")
|
||||
character_name = list("Millie Orlen")
|
||||
path = /obj/item/deck/dark_tarot
|
||||
display_name = "dark rose tarot deck"
|
||||
ckeywhitelist = list("satinisle")
|
||||
character_name = list("Millie Orlen")
|
||||
|
||||
/datum/gear/fluff/memorycrown
|
||||
path = /obj/item/clothing/head/fluff/memory_crown
|
||||
display_name = "memory crown"
|
||||
slot = slot_head
|
||||
ckeywhitelist = list("sixberry")
|
||||
character_name = list("Thistle")
|
||||
path = /obj/item/clothing/head/fluff/memory_crown
|
||||
display_name = "memory crown"
|
||||
slot = slot_head
|
||||
ckeywhitelist = list("sixberry")
|
||||
character_name = list("Thistle")
|
||||
|
||||
// T CKEYS
|
||||
/datum/gear/fluff/ascian_medal
|
||||
|
||||
@@ -78,12 +78,12 @@
|
||||
path = /obj/item/clothing/shoes/laceup
|
||||
|
||||
/datum/gear/shoes/lacey/New()
|
||||
..()
|
||||
var/list/laces = list()
|
||||
for(var/lace in typesof(/obj/item/clothing/shoes/laceup))
|
||||
var/obj/item/clothing/shoes/laceup/lace_type = lace
|
||||
laces[initial(lace_type.name)] = lace_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(laces))
|
||||
..()
|
||||
var/list/laces = list()
|
||||
for(var/lace in typesof(/obj/item/clothing/shoes/laceup))
|
||||
var/obj/item/clothing/shoes/laceup/lace_type = lace
|
||||
laces[initial(lace_type.name)] = lace_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(laces))
|
||||
|
||||
/datum/gear/shoes/green
|
||||
display_name = "shoes, green"
|
||||
@@ -118,12 +118,12 @@
|
||||
path = /obj/item/clothing/shoes/hitops/
|
||||
|
||||
/datum/gear/shoes/hitops/New()
|
||||
..()
|
||||
var/list/hitops = list()
|
||||
for(var/hitop in typesof(/obj/item/clothing/shoes/hitops))
|
||||
var/obj/item/clothing/shoes/hitops/hitop_type = hitop
|
||||
hitops[initial(hitop_type.name)] = hitop_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hitops))
|
||||
..()
|
||||
var/list/hitops = list()
|
||||
for(var/hitop in typesof(/obj/item/clothing/shoes/hitops))
|
||||
var/obj/item/clothing/shoes/hitops/hitop_type = hitop
|
||||
hitops[initial(hitop_type.name)] = hitop_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hitops))
|
||||
|
||||
/datum/gear/shoes/flipflops
|
||||
display_name = "flip flops"
|
||||
|
||||
@@ -755,20 +755,20 @@
|
||||
gear_tweaks += new/datum/gear_tweak/path(croppedhoodies)
|
||||
|
||||
/datum/gear/suit/drive
|
||||
display_name = "relatable jacket"
|
||||
path = /obj/item/clothing/suit/storage/drive
|
||||
display_name = "relatable jacket"
|
||||
path = /obj/item/clothing/suit/storage/drive
|
||||
|
||||
/datum/gear/suit/motojacket
|
||||
display_name = "motorcycle jacket"
|
||||
path = /obj/item/clothing/suit/storage/toggle/moto_jacket
|
||||
display_name = "motorcycle jacket"
|
||||
path = /obj/item/clothing/suit/storage/toggle/moto_jacket
|
||||
|
||||
/datum/gear/suit/punkvest
|
||||
display_name = "punk vest"
|
||||
path = /obj/item/clothing/suit/storage/punkvest
|
||||
display_name = "punk vest"
|
||||
path = /obj/item/clothing/suit/storage/punkvest
|
||||
|
||||
/datum/gear/suit/raincoat
|
||||
display_name = "raincoat"
|
||||
path = /obj/item/clothing/suit/storage/hooded/raincoat
|
||||
display_name = "raincoat"
|
||||
path = /obj/item/clothing/suit/storage/hooded/raincoat
|
||||
|
||||
//hooded cloaks
|
||||
/datum/gear/suit/roles/hoodedcloaks
|
||||
@@ -787,16 +787,16 @@
|
||||
|
||||
//oversized shirts
|
||||
/datum/gear/suit/nerdshirt
|
||||
display_name = "nerdy shirt"
|
||||
path = /obj/item/clothing/suit/nerdshirt
|
||||
display_name = "nerdy shirt"
|
||||
path = /obj/item/clothing/suit/nerdshirt
|
||||
|
||||
/datum/gear/suit/ianshirt
|
||||
display_name = "worn corgi shirt"
|
||||
path = /obj/item/clothing/suit/ianshirt
|
||||
display_name = "worn corgi shirt"
|
||||
path = /obj/item/clothing/suit/ianshirt
|
||||
|
||||
/datum/gear/suit/wornshirt
|
||||
display_name = "worn shirt"
|
||||
path = /obj/item/clothing/suit/wornshirt
|
||||
display_name = "worn shirt"
|
||||
path = /obj/item/clothing/suit/wornshirt
|
||||
|
||||
/datum/gear/suit/bomber_pilot
|
||||
display_name = "bomber jacket, pilot"
|
||||
|
||||
@@ -543,16 +543,16 @@
|
||||
|
||||
//leotards
|
||||
/datum/gear/uniform/leotard
|
||||
display_name = "leotard, black"
|
||||
path = /obj/item/clothing/under/leotard
|
||||
display_name = "leotard, black"
|
||||
path = /obj/item/clothing/under/leotard
|
||||
|
||||
/datum/gear/uniform/leotardcolor
|
||||
display_name = "leotard, colorable"
|
||||
path = /obj/item/clothing/under/leotardcolor
|
||||
display_name = "leotard, colorable"
|
||||
path = /obj/item/clothing/under/leotardcolor
|
||||
|
||||
/datum/gear/uniform/leotardcolor/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
//skinsuits
|
||||
/datum/gear/uniform/skinsuits
|
||||
@@ -611,17 +611,17 @@
|
||||
|
||||
//half-moon outfit
|
||||
/datum/gear/uniform/halfmoon
|
||||
display_name = "half moon outfit"
|
||||
path = /obj/item/clothing/under/half_moon
|
||||
display_name = "half moon outfit"
|
||||
path = /obj/item/clothing/under/half_moon
|
||||
|
||||
//fiend clothes
|
||||
/datum/gear/uniform/fiendsuit
|
||||
display_name = "fiendish suit"
|
||||
path = /obj/item/clothing/under/fiendsuit
|
||||
display_name = "fiendish suit"
|
||||
path = /obj/item/clothing/under/fiendsuit
|
||||
|
||||
/datum/gear/uniform/fienddress
|
||||
display_name = "fiendish dress"
|
||||
path = /obj/item/clothing/under/fienddress
|
||||
display_name = "fiendish dress"
|
||||
path = /obj/item/clothing/under/fienddress
|
||||
|
||||
//tabard dresses
|
||||
/datum/gear/uniform/tabarddress
|
||||
|
||||
@@ -6,7 +6,7 @@ SEE_MOBS // can see all mobs, no matter what
|
||||
SEE_OBJS // can see all objs, no matter what
|
||||
SEE_TURFS // can see all turfs (and areas), no matter what
|
||||
SEE_PIXELS// if an object is located on an unlit area, but some of its pixels are
|
||||
// in a lit area (via pixel_x,y or smooth movement), can see those pixels
|
||||
// in a lit area (via pixel_x,y or smooth movement), can see those pixels
|
||||
BLIND // can't see anything
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -268,13 +268,13 @@
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/eyepatch
|
||||
name = "Security Hudpatch"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records."
|
||||
icon_state = "eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
|
||||
var/eye = null
|
||||
name = "Security Hudpatch"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records."
|
||||
icon_state = "eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
|
||||
var/eye = null
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/eyepatch/verb/switcheye()
|
||||
set name = "Switch Eyepatch"
|
||||
@@ -291,15 +291,15 @@
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/eyepatch2
|
||||
name = "Security Hudpatch MKII"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records. This updated model offers better ergonomics and updated sensors."
|
||||
icon = 'icons/inventory/eyes/item_vr.dmi'
|
||||
icon_override = 'icons/inventory/eyes/mob_vr.dmi'
|
||||
icon_state = "sec_eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
|
||||
var/eye = null
|
||||
name = "Security Hudpatch MKII"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their ID status and security records. This updated model offers better ergonomics and updated sensors."
|
||||
icon = 'icons/inventory/eyes/item_vr.dmi'
|
||||
icon_override = 'icons/inventory/eyes/mob_vr.dmi'
|
||||
icon_state = "sec_eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_ID,VIS_CH_WANTED,VIS_CH_IMPTRACK,VIS_CH_IMPLOYAL,VIS_CH_IMPCHEM)
|
||||
var/eye = null
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/eyepatch2/verb/switcheye()
|
||||
set name = "Switch Eyepatch"
|
||||
@@ -317,13 +317,13 @@
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/eyepatch
|
||||
name = "Medical Hudpatch"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their health status."
|
||||
icon_state = "eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH)
|
||||
var/eye = null
|
||||
name = "Medical Hudpatch"
|
||||
desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their health status."
|
||||
icon_state = "eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
body_parts_covered = 0
|
||||
enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH)
|
||||
var/eye = null
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/eyepatch/verb/switcheye()
|
||||
set name = "Switch Eyepatch"
|
||||
|
||||
@@ -222,22 +222,22 @@
|
||||
|
||||
//hooded cloak hoods
|
||||
/obj/item/clothing/head/hood/cloak
|
||||
name = "maroon cloak hood"
|
||||
desc = "A hood attached to a maroon cloak."
|
||||
icon_state = "maroon_cloakhood"
|
||||
flags_inv = HIDEEARS|BLOCKHAIR
|
||||
name = "maroon cloak hood"
|
||||
desc = "A hood attached to a maroon cloak."
|
||||
icon_state = "maroon_cloakhood"
|
||||
flags_inv = HIDEEARS|BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/hood/cloak/winter
|
||||
name = "winter cloak hood"
|
||||
desc = "A hood attached to a winter cloak."
|
||||
icon_state = "winter_cloakhood"
|
||||
name = "winter cloak hood"
|
||||
desc = "A hood attached to a winter cloak."
|
||||
icon_state = "winter_cloakhood"
|
||||
|
||||
/obj/item/clothing/head/hood/cloak/asymmetric
|
||||
name = "asymmetric cloak hood"
|
||||
desc = "A hood attached to an asymmetric cloak."
|
||||
icon_state = "asymmetric_cloakhood"
|
||||
name = "asymmetric cloak hood"
|
||||
desc = "A hood attached to an asymmetric cloak."
|
||||
icon_state = "asymmetric_cloakhood"
|
||||
|
||||
/obj/item/clothing/head/hood/cloak/fancy
|
||||
name = "fancy cloak hood"
|
||||
desc = "A hood attached to a fancy cloak."
|
||||
icon_state = "hb_cloakhood"
|
||||
name = "fancy cloak hood"
|
||||
desc = "A hood attached to a fancy cloak."
|
||||
icon_state = "hb_cloakhood"
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
/obj/item/clothing/mask/muzzle/New()
|
||||
..()
|
||||
say_messages = list("Mmfph!", "Mmmf mrrfff!", "Mmmf mnnf!")
|
||||
say_verbs = list("mumbles", "says")
|
||||
..()
|
||||
say_messages = list("Mmfph!", "Mmmf mrrfff!", "Mmmf mnnf!")
|
||||
say_verbs = list("mumbles", "says")
|
||||
|
||||
// Clumsy folks can't take the mask off themselves.
|
||||
/obj/item/clothing/mask/muzzle/attack_hand(mob/living/user as mob)
|
||||
@@ -218,10 +218,10 @@
|
||||
body_parts_covered = HEAD|FACE
|
||||
*/
|
||||
/obj/item/clothing/mask/horsehead/New()
|
||||
..()
|
||||
// The horse mask doesn't cause voice changes by default, the wizard spell changes the flag as necessary
|
||||
say_messages = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
|
||||
say_verbs = list("whinnies", "neighs", "says")
|
||||
..()
|
||||
// The horse mask doesn't cause voice changes by default, the wizard spell changes the flag as necessary
|
||||
say_messages = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
|
||||
say_verbs = list("whinnies", "neighs", "says")
|
||||
|
||||
/obj/item/clothing/mask/ai
|
||||
name = "camera MIU"
|
||||
|
||||
@@ -253,9 +253,9 @@
|
||||
siemens_coefficient = 0.6
|
||||
|
||||
/obj/item/clothing/shoes/boots/singer
|
||||
name = "blue performer's boots"
|
||||
desc = "These boots were made for dancing."
|
||||
icon_state = "bsing"
|
||||
name = "blue performer's boots"
|
||||
desc = "These boots were made for dancing."
|
||||
icon_state = "bsing"
|
||||
|
||||
/obj/item/clothing/shoes/boots/singer/yellow
|
||||
name = "yellow performer's boots"
|
||||
@@ -263,6 +263,6 @@
|
||||
icon_state = "ysing"
|
||||
|
||||
/obj/item/clothing/shoes/boots/half_moon
|
||||
name = "half moon boots"
|
||||
desc = "Flexible and tight, these boots ensure the wearer will be leaving a solid impression without sacrificing mobility."
|
||||
icon_state = "half_moon"
|
||||
name = "half moon boots"
|
||||
desc = "Flexible and tight, these boots ensure the wearer will be leaving a solid impression without sacrificing mobility."
|
||||
icon_state = "half_moon"
|
||||
|
||||
@@ -368,27 +368,26 @@
|
||||
|
||||
//hooded cloaks
|
||||
/obj/item/clothing/suit/storage/hooded/cloak
|
||||
name = "hooded maroon cloak"
|
||||
desc = "A simple maroon colored cloak."
|
||||
icon_state = "maroon_cloak"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak
|
||||
name = "hooded maroon cloak"
|
||||
desc = "A simple maroon colored cloak."
|
||||
icon_state = "maroon_cloak"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/cloak/winter
|
||||
name = "hooded winter cloak"
|
||||
desc = "A simple wool cloak used during winter."
|
||||
icon_state = "winter_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/winter
|
||||
name = "hooded winter cloak"
|
||||
desc = "A simple wool cloak used during winter."
|
||||
icon_state = "winter_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/winter
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/cloak/asymmetric
|
||||
name = "hooded asymmetric cloak"
|
||||
desc = "A blue hooded cloak with an asymmetric design."
|
||||
icon_state = "asymmetric_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/asymmetric
|
||||
|
||||
name = "hooded asymmetric cloak"
|
||||
desc = "A blue hooded cloak with an asymmetric design."
|
||||
icon_state = "asymmetric_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/asymmetric
|
||||
|
||||
/obj/item/clothing/suit/storage/hooded/cloak/fancy
|
||||
name = "hooded fancy cloak"
|
||||
desc = "A fancy black hooded cloak."
|
||||
icon_state = "hb_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/fancy
|
||||
name = "hooded fancy cloak"
|
||||
desc = "A fancy black hooded cloak."
|
||||
icon_state = "hb_cloak"
|
||||
hoodtype = /obj/item/clothing/head/hood/cloak/fancy
|
||||
|
||||
@@ -1129,19 +1129,19 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/croppedhoodie/croppier
|
||||
name = "high cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that wish to display ample amounts of midriff, or never threw out their childhood apparel. The hood is cosmetic, and non-functional."
|
||||
icon_state = "croppierhoodie"
|
||||
name = "high cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that wish to display ample amounts of midriff, or never threw out their childhood apparel. The hood is cosmetic, and non-functional."
|
||||
icon_state = "croppierhoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/croppedhoodie/croppierer
|
||||
name = "very high cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that wish to display ample amounts of underboob, and love the breeze. Comes with a free 'functionally_nude' sticker. The hood is cosmetic, and non-functional."
|
||||
icon_state = "highcrophoodie"
|
||||
name = "very high cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that wish to display ample amounts of underboob, and love the breeze. Comes with a free 'functionally_nude' sticker. The hood is cosmetic, and non-functional."
|
||||
icon_state = "highcrophoodie"
|
||||
|
||||
/obj/item/clothing/suit/storage/croppedhoodie/croppiest
|
||||
name = "super cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that have little respect for the concept of a hoodie. Often seen in nightclubs and your daughter's wardrdobe. The hood is cosmetic, and non-functional."
|
||||
icon_state = "supercroppedhoodie"
|
||||
name = "super cropped hoodie"
|
||||
desc = "This style of hoodie is worn by those that have little respect for the concept of a hoodie. Often seen in nightclubs and your daughter's wardrdobe. The hood is cosmetic, and non-functional."
|
||||
icon_state = "supercroppedhoodie"
|
||||
|
||||
//Drive jacket
|
||||
/obj/item/clothing/suit/storage/drive
|
||||
@@ -1158,7 +1158,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/punkvest
|
||||
name = "punk vest"
|
||||
desc = "For the spiritual rebels that nevertheless wish to conform to standard goth trends. You're totally showing them your anti-authority spunk."
|
||||
icon_state = "punkvest"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
name = "punk vest"
|
||||
desc = "For the spiritual rebels that nevertheless wish to conform to standard goth trends. You're totally showing them your anti-authority spunk."
|
||||
icon_state = "punkvest"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
|
||||
@@ -573,9 +573,9 @@
|
||||
icon_state = "countess"
|
||||
|
||||
/obj/item/clothing/under/dress/verglasdress
|
||||
name = "verglas dress"
|
||||
desc = "The modern twist on a forgotten pattern, the Verglas style utilizes comfortable velvet and silver white satin to create an otherworldly effect evocative of winter, or the void."
|
||||
icon_state = "verglas_dress"
|
||||
name = "verglas dress"
|
||||
desc = "The modern twist on a forgotten pattern, the Verglas style utilizes comfortable velvet and silver white satin to create an otherworldly effect evocative of winter, or the void."
|
||||
icon_state = "verglas_dress"
|
||||
|
||||
/obj/item/clothing/under/dress/alpine
|
||||
name = "alpine dress"
|
||||
@@ -1084,19 +1084,19 @@
|
||||
icon_state = "swim_cow"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/highclass
|
||||
name = "high class swimsuit"
|
||||
desc = "An elegant swimsuit with a white bikini top and black bikini bottom. Thin black silk drapes down the back and goes to the upper thighs, and authentic gold rings hold the top together at the bust and back."
|
||||
icon_state = "swim_highclass"
|
||||
name = "high class swimsuit"
|
||||
desc = "An elegant swimsuit with a white bikini top and black bikini bottom. Thin black silk drapes down the back and goes to the upper thighs, and authentic gold rings hold the top together at the bust and back."
|
||||
icon_state = "swim_highclass"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/risque
|
||||
name = "risque swimsuit"
|
||||
desc = "This fits a bit too snug in all the right places. Comes with a collar, for inscrutable reasons."
|
||||
icon_state = "swim_risque"
|
||||
name = "risque swimsuit"
|
||||
desc = "This fits a bit too snug in all the right places. Comes with a collar, for inscrutable reasons."
|
||||
icon_state = "swim_risque"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/streamlined
|
||||
name = "streamlined swimsuit"
|
||||
desc = "An all white one-piece that maintains modesty without sacrificing class."
|
||||
icon_state = "swim_stream"
|
||||
name = "streamlined swimsuit"
|
||||
desc = "An all white one-piece that maintains modesty without sacrificing class."
|
||||
icon_state = "swim_stream"
|
||||
|
||||
/*
|
||||
* Pyjamas
|
||||
@@ -1534,14 +1534,14 @@
|
||||
|
||||
//leotards
|
||||
/obj/item/clothing/under/leotard
|
||||
name = "black leotard"
|
||||
desc = "A black leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
|
||||
icon_state = "leotard"
|
||||
name = "black leotard"
|
||||
desc = "A black leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
|
||||
icon_state = "leotard"
|
||||
|
||||
/obj/item/clothing/under/leotardcolor
|
||||
name = "colored leotard"
|
||||
desc = "A colorable leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
|
||||
icon_state = "leotard_color"
|
||||
name = "colored leotard"
|
||||
desc = "A colorable leotard with a piece of semi-transparent cloth near the bust. Perfect for showing off cleavage. Bunny ears not included."
|
||||
icon_state = "leotard_color"
|
||||
|
||||
//skinsuits
|
||||
/obj/item/clothing/under/skinsuit
|
||||
@@ -1550,18 +1550,18 @@
|
||||
icon_state = "skinsuit"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/gray
|
||||
name = "gray skinsuit"
|
||||
icon_state = "skinsuit_g"
|
||||
name = "gray skinsuit"
|
||||
icon_state = "skinsuit_g"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/leotard
|
||||
name = "leotard skinsuit"
|
||||
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
|
||||
icon_state = "skinsuitleo"
|
||||
name = "leotard skinsuit"
|
||||
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
|
||||
icon_state = "skinsuitleo"
|
||||
|
||||
|
||||
/obj/item/clothing/under/skinsuit/leotard/gray
|
||||
name = "gray leotard skinsuit"
|
||||
icon_state = "skinsuitleo_g"
|
||||
name = "gray leotard skinsuit"
|
||||
icon_state = "skinsuitleo_g"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/fem
|
||||
name = "feminine skinsuit"
|
||||
@@ -1569,17 +1569,17 @@
|
||||
icon_state = "skinsuitfem"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/fem/gray
|
||||
name = "feminine gray skinsuit"
|
||||
icon_state = "skinsuitfem_g"
|
||||
name = "feminine gray skinsuit"
|
||||
icon_state = "skinsuitfem_g"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/fem/leotard
|
||||
name = "feminine leotard skinsuit"
|
||||
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
|
||||
icon_state = "skinsuitfemleo"
|
||||
name = "feminine leotard skinsuit"
|
||||
desc = "The skinsuit's leotard variant has long since eclipsed its initial function as a breathable undersuit for submersible hardsuits. Although still utilized in this role, it has become rather fashionable to wear outside of deep water operations."
|
||||
icon_state = "skinsuitfemleo"
|
||||
|
||||
/obj/item/clothing/under/skinsuit/fem/leotard/gray
|
||||
name = "feminine gray leotard skinsuit"
|
||||
icon_state = "skinsuitfemleo_g"
|
||||
name = "feminine gray leotard skinsuit"
|
||||
icon_state = "skinsuitfemleo_g"
|
||||
|
||||
//baggy turtlenecks
|
||||
/obj/item/clothing/under/turtlebaggy
|
||||
@@ -1590,58 +1590,58 @@
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/cream_fem
|
||||
name = "feminine cream baggy turtleneck"
|
||||
icon_state = "bb_turtle_fem"
|
||||
name = "feminine cream baggy turtleneck"
|
||||
icon_state = "bb_turtle_fem"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/purple
|
||||
name = "purple baggy turtleneck"
|
||||
icon_state = "bb_turtlepur"
|
||||
name = "purple baggy turtleneck"
|
||||
icon_state = "bb_turtlepur"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/purple_fem
|
||||
name = "feminine purple baggy turtleneck"
|
||||
icon_state = "bb_turtlepur_fem"
|
||||
name = "feminine purple baggy turtleneck"
|
||||
icon_state = "bb_turtlepur_fem"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/red
|
||||
name = "red baggy turtleneck"
|
||||
icon_state = "bb_turtlered"
|
||||
name = "red baggy turtleneck"
|
||||
icon_state = "bb_turtlered"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/red_fem
|
||||
name = "feminine red baggy turtleneck"
|
||||
icon_state = "bb_turtlered_fem"
|
||||
name = "feminine red baggy turtleneck"
|
||||
icon_state = "bb_turtlered_fem"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/blue
|
||||
name = "blue baggy turtleneck"
|
||||
icon_state = "bb_turtleblu"
|
||||
name = "blue baggy turtleneck"
|
||||
icon_state = "bb_turtleblu"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/blue_fem
|
||||
name = "feminine blue baggy turtleneck"
|
||||
icon_state = "bb_turtleblu_fem"
|
||||
name = "feminine blue baggy turtleneck"
|
||||
icon_state = "bb_turtleblu_fem"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/green
|
||||
name = "green baggy turtleneck"
|
||||
icon_state = "bb_turtlegrn"
|
||||
name = "green baggy turtleneck"
|
||||
icon_state = "bb_turtlegrn"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/green_fem
|
||||
name = "feminine green baggy turtleneck"
|
||||
icon_state = "bb_turtlegrn_fem"
|
||||
name = "feminine green baggy turtleneck"
|
||||
icon_state = "bb_turtlegrn_fem"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/black
|
||||
name = "black baggy turtleneck"
|
||||
icon_state = "bb_turtleblk"
|
||||
name = "black baggy turtleneck"
|
||||
icon_state = "bb_turtleblk"
|
||||
|
||||
|
||||
/obj/item/clothing/under/turtlebaggy/black_fem
|
||||
name = "feminine black baggy turtleneck"
|
||||
icon_state = "bb_turtleblk_fem"
|
||||
name = "feminine black baggy turtleneck"
|
||||
icon_state = "bb_turtleblk_fem"
|
||||
|
||||
//more big sweaters
|
||||
|
||||
@@ -1663,21 +1663,21 @@
|
||||
|
||||
//half-moon outfit
|
||||
/obj/item/clothing/under/half_moon
|
||||
name = "half moon outfit"
|
||||
desc = "This eminently fashionable outfit consists of a tailored latex leotard and daringly cut white shorts. Paired with plunging off-color stockings, it's to die for."
|
||||
icon_state = "half_moon"
|
||||
name = "half moon outfit"
|
||||
desc = "This eminently fashionable outfit consists of a tailored latex leotard and daringly cut white shorts. Paired with plunging off-color stockings, it's to die for."
|
||||
icon_state = "half_moon"
|
||||
|
||||
//fiend clothes
|
||||
/obj/item/clothing/under/fiendsuit
|
||||
name = "fiendish suit"
|
||||
desc = "A red and black suit befitting someone from the dark pits themselves… Or someone way too edgy."
|
||||
icon_state = "fiendsuit"
|
||||
name = "fiendish suit"
|
||||
desc = "A red and black suit befitting someone from the dark pits themselves… Or someone way too edgy."
|
||||
icon_state = "fiendsuit"
|
||||
|
||||
|
||||
/obj/item/clothing/under/fienddress
|
||||
name = "fiendish dress"
|
||||
desc = "A red and black dress befitting someone from the dark pits themselves… Or someone way too edgy."
|
||||
icon_state = "fienddress"
|
||||
name = "fiendish dress"
|
||||
desc = "A red and black dress befitting someone from the dark pits themselves… Or someone way too edgy."
|
||||
icon_state = "fienddress"
|
||||
|
||||
//bunny suits
|
||||
|
||||
|
||||
@@ -486,20 +486,20 @@
|
||||
manipulating = 1
|
||||
if(!anchored)
|
||||
user.visible_message("\The [user] begins securing \the [src] to the floor.",
|
||||
"You begin securing \the [src] to the floor.")
|
||||
"You begin securing \the [src] to the floor.")
|
||||
else
|
||||
user.visible_message(span_warning("\The [user] begins unsecuring \the [src] from the floor."),
|
||||
"You begin unsecuring \the [src] from the floor.")
|
||||
"You begin unsecuring \the [src] from the floor.")
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
if(!do_after(user, 20 * W.toolspeed))
|
||||
manipulating = 0
|
||||
return
|
||||
if(!anchored)
|
||||
user.visible_message(span_notice("\The [user] has secured \the [src] to the floor."),
|
||||
span_notice("You have secured \the [src] to the floor."))
|
||||
span_notice("You have secured \the [src] to the floor."))
|
||||
else
|
||||
user.visible_message(span_warning("\The [user] has unsecured \the [src] from the floor."),
|
||||
span_notice("You have unsecured \the [src] from the floor."))
|
||||
span_notice("You have unsecured \the [src] from the floor."))
|
||||
anchored = !anchored
|
||||
manipulating = 0
|
||||
return
|
||||
|
||||
@@ -781,7 +781,7 @@
|
||||
)
|
||||
premium = list(/obj/item/bedsheet/rainbow = 1)
|
||||
contraband = list(/obj/item/clothing/mask/gas/clown_hat = 1,
|
||||
/obj/item/clothing/accessory/collar/collarplanet_earth = 5)
|
||||
/obj/item/clothing/accessory/collar/collarplanet_earth = 5)
|
||||
|
||||
/obj/machinery/vending/loadout/clothing
|
||||
name = "General Jump"
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
// Not specifically /human type because those won't allow FBPs to use them
|
||||
/decl/emote/helper/vwag
|
||||
key = "vwag"
|
||||
emote_message_3p = ""
|
||||
key = "vwag"
|
||||
emote_message_3p = ""
|
||||
|
||||
/decl/emote/helper/vwag/mob_can_use(mob/living/carbon/human/user)
|
||||
if(!istype(user) || (!user.tail_style || !user.tail_style.ani_state))
|
||||
return FALSE
|
||||
return ..()
|
||||
if(!istype(user) || (!user.tail_style || !user.tail_style.ani_state))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/decl/emote/helper/vwag/do_emote(var/mob/living/carbon/human/user, var/extra_params)
|
||||
if(user.toggle_tail(message = 1))
|
||||
return ..()
|
||||
if(user.toggle_tail(message = 1))
|
||||
return ..()
|
||||
|
||||
/decl/emote/helper/vwag/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params)
|
||||
return "[user.wagging ? "starts" : "stops"] wagging USER_THEIR tail."
|
||||
return "[user.wagging ? "starts" : "stops"] wagging USER_THEIR tail."
|
||||
|
||||
|
||||
/decl/emote/helper/vflap
|
||||
key = "vflap"
|
||||
emote_message_3p = ""
|
||||
key = "vflap"
|
||||
emote_message_3p = ""
|
||||
|
||||
/decl/emote/helper/vflap/mob_can_use(mob/living/carbon/human/user)
|
||||
if(!istype(user) || (!user.wing_style || !user.wing_style.ani_state))
|
||||
return FALSE
|
||||
return ..()
|
||||
if(!istype(user) || (!user.wing_style || !user.wing_style.ani_state))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/decl/emote/helper/vflap/do_emote(var/mob/living/carbon/human/user, var/extra_params)
|
||||
if(user.toggle_wing(message = 1))
|
||||
return ..()
|
||||
if(user.toggle_wing(message = 1))
|
||||
return ..()
|
||||
|
||||
/decl/emote/helper/vflap/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params)
|
||||
return "[user.flapping ? "starts" : "stops"] flapping USER_THEIR wings."
|
||||
return "[user.flapping ? "starts" : "stops"] flapping USER_THEIR wings."
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/decl/emote/visible/mlem
|
||||
key = "mlem"
|
||||
emote_message_3p = "mlems USER_THEIR tongue up over USER_THEIR nose. Mlem."
|
||||
key = "mlem"
|
||||
emote_message_3p = "mlems USER_THEIR tongue up over USER_THEIR nose. Mlem."
|
||||
|
||||
/decl/emote/visible/blep
|
||||
key = "blep"
|
||||
emote_message_3p = "bleps USER_THEIR tongue out. Blep."
|
||||
key = "blep"
|
||||
emote_message_3p = "bleps USER_THEIR tongue out. Blep."
|
||||
|
||||
@@ -30,8 +30,8 @@ var/global/list/emotes_by_key
|
||||
var/emote_message_muffled // A message to show if the emote is audible and the user is muzzled.
|
||||
|
||||
var/list/emote_sound // A sound for the emote to play.
|
||||
// Can either be a single sound, a list of sounds to pick from, or an
|
||||
// associative array of gender to single sounds/a list of sounds.
|
||||
// Can either be a single sound, a list of sounds to pick from, or an
|
||||
// associative array of gender to single sounds/a list of sounds.
|
||||
var/list/emote_sound_synthetic // As above, but used when check_synthetic() is true.
|
||||
var/emote_volume = 50 // Volume of sound to play.
|
||||
var/emote_volume_synthetic = 50 // As above, but used when check_synthetic() is true.
|
||||
|
||||
+139
-139
@@ -1,154 +1,154 @@
|
||||
var/list/lunchables_lunches_ = list(/obj/item/reagent_containers/food/snacks/sandwich,
|
||||
/obj/item/reagent_containers/food/snacks/slice/meatbread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/tofubread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/creamcheesebread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/margherita/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/meatpizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/mushroompizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/vegetablepizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/pineappleslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/reagent_containers/food/snacks/bagelplain,
|
||||
/obj/item/reagent_containers/food/snacks/bagelsunflower,
|
||||
/obj/item/reagent_containers/food/snacks/bagelcheese,
|
||||
/obj/item/reagent_containers/food/snacks/bagelraisin,
|
||||
/obj/item/reagent_containers/food/snacks/bagelpoppy,
|
||||
/obj/item/reagent_containers/food/snacks/croissant,
|
||||
/obj/item/reagent_containers/food/snacks/corn_dog,
|
||||
/obj/item/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/reagent_containers/food/snacks/liquidvitamin,
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/cherry,
|
||||
/obj/item/reagent_containers/food/snacks/tossedsalad,
|
||||
/obj/item/reagent_containers/food/snacks/rosesalad,
|
||||
/obj/item/reagent_containers/food/snacks/boiledegg,
|
||||
/obj/item/reagent_containers/food/snacks/locust_cooked,
|
||||
/obj/item/reagent_containers/food/snacks/spicedmeatbun,
|
||||
/obj/item/reagent_containers/food/snacks/quicheslice/filled,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/biginjector/glucose,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/sausageroll,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/pasty,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/scotchegg,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/porkpie)
|
||||
/obj/item/reagent_containers/food/snacks/slice/meatbread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/tofubread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/creamcheesebread/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/margherita/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/meatpizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/mushroompizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/vegetablepizza/filled,
|
||||
/obj/item/reagent_containers/food/snacks/pineappleslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/reagent_containers/food/snacks/bagelplain,
|
||||
/obj/item/reagent_containers/food/snacks/bagelsunflower,
|
||||
/obj/item/reagent_containers/food/snacks/bagelcheese,
|
||||
/obj/item/reagent_containers/food/snacks/bagelraisin,
|
||||
/obj/item/reagent_containers/food/snacks/bagelpoppy,
|
||||
/obj/item/reagent_containers/food/snacks/croissant,
|
||||
/obj/item/reagent_containers/food/snacks/corn_dog,
|
||||
/obj/item/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/reagent_containers/food/snacks/liquidvitamin,
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/cherry,
|
||||
/obj/item/reagent_containers/food/snacks/tossedsalad,
|
||||
/obj/item/reagent_containers/food/snacks/rosesalad,
|
||||
/obj/item/reagent_containers/food/snacks/boiledegg,
|
||||
/obj/item/reagent_containers/food/snacks/locust_cooked,
|
||||
/obj/item/reagent_containers/food/snacks/spicedmeatbun,
|
||||
/obj/item/reagent_containers/food/snacks/quicheslice/filled,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/biginjector/glucose,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/sausageroll,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/pasty,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/scotchegg,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/porkpie)
|
||||
|
||||
var/list/lunchables_snacks_ = list(/obj/item/reagent_containers/food/snacks/donut/plain/jelly,
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly,
|
||||
/obj/item/reagent_containers/food/snacks/muffin,
|
||||
/obj/item/reagent_containers/food/snacks/popcorn,
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky,
|
||||
/obj/item/reagent_containers/food/snacks/unajerky,
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/spacetwinkie,
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
|
||||
/obj/item/reagent_containers/food/snacks/poppypretzel,
|
||||
/obj/item/reagent_containers/food/snacks/carrotfries,
|
||||
/obj/item/reagent_containers/food/snacks/candiedapple,
|
||||
/obj/item/reagent_containers/food/snacks/applepie,
|
||||
/obj/item/reagent_containers/food/snacks/cherrypie,
|
||||
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit,
|
||||
/obj/item/reagent_containers/food/snacks/appletart,
|
||||
/obj/item/reagent_containers/food/snacks/slice/carrotcake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/cheesecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/plaincake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/orangecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/limecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/lemoncake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/chocolatecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/birthdaycake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/watermelonslice,
|
||||
/obj/item/reagent_containers/food/snacks/slice/applecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/pumpkinpie/filled,
|
||||
/obj/item/reagent_containers/food/snacks/keylimepieslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/browniesslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/skrellsnacks,
|
||||
/obj/item/reagent_containers/food/snacks/mint/admints,
|
||||
/obj/item/reagent_containers/food/snacks/roastedpeanuts,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie,
|
||||
/obj/item/reagent_containers/food/snacks/eggroll,
|
||||
/obj/item/reagent_containers/food/snacks/fruitsalad,
|
||||
/obj/item/reagent_containers/food/snacks/honeybun,
|
||||
/obj/item/reagent_containers/food/snacks/custardbun,
|
||||
/obj/item/reagent_containers/food/snacks/honeytoast,
|
||||
/obj/item/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/reagent_containers/food/snacks/fruitbar,
|
||||
/obj/item/reagent_containers/food/snacks/semki,
|
||||
/obj/item/reagent_containers/food/snacks/salo,
|
||||
/obj/item/reagent_containers/food/snacks/weebonuts,
|
||||
/obj/item/reagent_containers/food/snacks/ricecake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/lunacake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/darklunacake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/mochicake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/spacetwinkie,
|
||||
/obj/item/storage/box/jaffacake,
|
||||
/obj/item/storage/box/winegum,
|
||||
/obj/item/storage/box/custardcream,
|
||||
/obj/item/storage/box/bourbon
|
||||
)
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly,
|
||||
/obj/item/reagent_containers/food/snacks/muffin,
|
||||
/obj/item/reagent_containers/food/snacks/popcorn,
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky,
|
||||
/obj/item/reagent_containers/food/snacks/unajerky,
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/spacetwinkie,
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
|
||||
/obj/item/reagent_containers/food/snacks/poppypretzel,
|
||||
/obj/item/reagent_containers/food/snacks/carrotfries,
|
||||
/obj/item/reagent_containers/food/snacks/candiedapple,
|
||||
/obj/item/reagent_containers/food/snacks/applepie,
|
||||
/obj/item/reagent_containers/food/snacks/cherrypie,
|
||||
/obj/item/reagent_containers/food/snacks/plumphelmetbiscuit,
|
||||
/obj/item/reagent_containers/food/snacks/appletart,
|
||||
/obj/item/reagent_containers/food/snacks/slice/carrotcake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/cheesecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/plaincake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/orangecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/limecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/lemoncake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/chocolatecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/birthdaycake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/watermelonslice,
|
||||
/obj/item/reagent_containers/food/snacks/slice/applecake/filled,
|
||||
/obj/item/reagent_containers/food/snacks/slice/pumpkinpie/filled,
|
||||
/obj/item/reagent_containers/food/snacks/keylimepieslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/browniesslice/filled,
|
||||
/obj/item/reagent_containers/food/snacks/skrellsnacks,
|
||||
/obj/item/reagent_containers/food/snacks/mint/admints,
|
||||
/obj/item/reagent_containers/food/snacks/roastedpeanuts,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie,
|
||||
/obj/item/reagent_containers/food/snacks/eggroll,
|
||||
/obj/item/reagent_containers/food/snacks/fruitsalad,
|
||||
/obj/item/reagent_containers/food/snacks/honeybun,
|
||||
/obj/item/reagent_containers/food/snacks/custardbun,
|
||||
/obj/item/reagent_containers/food/snacks/honeytoast,
|
||||
/obj/item/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/reagent_containers/food/snacks/fruitbar,
|
||||
/obj/item/reagent_containers/food/snacks/semki,
|
||||
/obj/item/reagent_containers/food/snacks/salo,
|
||||
/obj/item/reagent_containers/food/snacks/weebonuts,
|
||||
/obj/item/reagent_containers/food/snacks/ricecake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/lunacake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/darklunacake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/mochicake,
|
||||
/obj/item/reagent_containers/food/snacks/packaged/spacetwinkie,
|
||||
/obj/item/storage/box/jaffacake,
|
||||
/obj/item/storage/box/winegum,
|
||||
/obj/item/storage/box/custardcream,
|
||||
/obj/item/storage/box/bourbon
|
||||
)
|
||||
|
||||
var/list/lunchables_drinks_ = list(/obj/item/reagent_containers/food/drinks/cans/cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/waterbottle,
|
||||
/obj/item/reagent_containers/food/drinks/cans/decaf_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind,
|
||||
/obj/item/reagent_containers/food/drinks/cans/dr_gibb,
|
||||
/obj/item/reagent_containers/food/drinks/cans/dr_gibb_diet,
|
||||
/obj/item/reagent_containers/food/drinks/cans/starkist,
|
||||
/obj/item/reagent_containers/food/drinks/cans/starkistdecaf,
|
||||
/obj/item/reagent_containers/food/drinks/cans/space_up,
|
||||
/obj/item/reagent_containers/food/drinks/cans/lemon_lime,
|
||||
/obj/item/reagent_containers/food/drinks/cans/iced_tea,
|
||||
/obj/item/reagent_containers/food/drinks/cans/grape_juice,
|
||||
/obj/item/reagent_containers/food/drinks/cans/tonic,
|
||||
/obj/item/reagent_containers/food/drinks/cans/sodawater,
|
||||
/obj/item/reagent_containers/food/drinks/cans/gingerale,
|
||||
/obj/item/reagent_containers/food/drinks/cans/root_beer,
|
||||
/obj/item/reagent_containers/food/drinks/cans/sarsaparilla,
|
||||
/obj/item/reagent_containers/food/drinks/cans/straw_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/apple_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/lemon_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_peach,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_pear,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_cherry,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_melon,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_banana,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_rose,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_lemon,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_fruit
|
||||
)
|
||||
/obj/item/reagent_containers/food/drinks/cans/waterbottle,
|
||||
/obj/item/reagent_containers/food/drinks/cans/decaf_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind,
|
||||
/obj/item/reagent_containers/food/drinks/cans/dr_gibb,
|
||||
/obj/item/reagent_containers/food/drinks/cans/dr_gibb_diet,
|
||||
/obj/item/reagent_containers/food/drinks/cans/starkist,
|
||||
/obj/item/reagent_containers/food/drinks/cans/starkistdecaf,
|
||||
/obj/item/reagent_containers/food/drinks/cans/space_up,
|
||||
/obj/item/reagent_containers/food/drinks/cans/lemon_lime,
|
||||
/obj/item/reagent_containers/food/drinks/cans/iced_tea,
|
||||
/obj/item/reagent_containers/food/drinks/cans/grape_juice,
|
||||
/obj/item/reagent_containers/food/drinks/cans/tonic,
|
||||
/obj/item/reagent_containers/food/drinks/cans/sodawater,
|
||||
/obj/item/reagent_containers/food/drinks/cans/gingerale,
|
||||
/obj/item/reagent_containers/food/drinks/cans/root_beer,
|
||||
/obj/item/reagent_containers/food/drinks/cans/sarsaparilla,
|
||||
/obj/item/reagent_containers/food/drinks/cans/straw_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/apple_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/lemon_cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_peach,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_pear,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_cherry,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_melon,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_banana,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_rose,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_lemon,
|
||||
/obj/item/reagent_containers/food/drinks/cans/nukie_fruit
|
||||
)
|
||||
|
||||
// This default list is a bit different, it contains items we don't want
|
||||
var/list/lunchables_drink_reagents_ = list(/datum/reagent/drink/nothing,
|
||||
/datum/reagent/drink/doctor_delight,
|
||||
/datum/reagent/drink/dry_ramen,
|
||||
/datum/reagent/drink/hell_ramen,
|
||||
/datum/reagent/drink/hot_ramen,
|
||||
/datum/reagent/drink/soda/nuka_cola,
|
||||
/datum/reagent/drink/coffee/nukie/mega,
|
||||
/datum/reagent/drink/coffee/nukie/mega/sight,
|
||||
/datum/reagent/drink/coffee/nukie/mega/heart,
|
||||
/datum/reagent/drink/coffee/nukie/mega/nega,
|
||||
/datum/reagent/drink/coffee/nukie/mega/shock,
|
||||
/datum/reagent/drink/coffee/nukie/mega/fast,
|
||||
/datum/reagent/drink/coffee/nukie/mega/high,
|
||||
/datum/reagent/drink/coffee/nukie/mega/shrink,
|
||||
/datum/reagent/drink/coffee/nukie/mega/grow)
|
||||
/datum/reagent/drink/doctor_delight,
|
||||
/datum/reagent/drink/dry_ramen,
|
||||
/datum/reagent/drink/hell_ramen,
|
||||
/datum/reagent/drink/hot_ramen,
|
||||
/datum/reagent/drink/soda/nuka_cola,
|
||||
/datum/reagent/drink/coffee/nukie/mega,
|
||||
/datum/reagent/drink/coffee/nukie/mega/sight,
|
||||
/datum/reagent/drink/coffee/nukie/mega/heart,
|
||||
/datum/reagent/drink/coffee/nukie/mega/nega,
|
||||
/datum/reagent/drink/coffee/nukie/mega/shock,
|
||||
/datum/reagent/drink/coffee/nukie/mega/fast,
|
||||
/datum/reagent/drink/coffee/nukie/mega/high,
|
||||
/datum/reagent/drink/coffee/nukie/mega/shrink,
|
||||
/datum/reagent/drink/coffee/nukie/mega/grow)
|
||||
|
||||
|
||||
// This default list is a bit different, it contains items we don't want
|
||||
var/list/lunchables_ethanol_reagents_ = list(/datum/reagent/ethanol/acid_spit,
|
||||
/datum/reagent/ethanol/atomicbomb,
|
||||
/datum/reagent/ethanol/beepsky_smash,
|
||||
/datum/reagent/ethanol/coffee,
|
||||
/datum/reagent/ethanol/hippies_delight,
|
||||
/datum/reagent/ethanol/hooch,
|
||||
/datum/reagent/ethanol/thirteenloko,
|
||||
/datum/reagent/ethanol/manhattan_proj,
|
||||
/datum/reagent/ethanol/neurotoxin,
|
||||
/datum/reagent/ethanol/pwine,
|
||||
/datum/reagent/ethanol/threemileisland,
|
||||
/datum/reagent/ethanol/toxins_special,
|
||||
/datum/reagent/ethanol/voxdelight,
|
||||
/datum/reagent/ethanol/soemmerfire,
|
||||
/datum/reagent/ethanol/slimeshot)
|
||||
/datum/reagent/ethanol/atomicbomb,
|
||||
/datum/reagent/ethanol/beepsky_smash,
|
||||
/datum/reagent/ethanol/coffee,
|
||||
/datum/reagent/ethanol/hippies_delight,
|
||||
/datum/reagent/ethanol/hooch,
|
||||
/datum/reagent/ethanol/thirteenloko,
|
||||
/datum/reagent/ethanol/manhattan_proj,
|
||||
/datum/reagent/ethanol/neurotoxin,
|
||||
/datum/reagent/ethanol/pwine,
|
||||
/datum/reagent/ethanol/threemileisland,
|
||||
/datum/reagent/ethanol/toxins_special,
|
||||
/datum/reagent/ethanol/voxdelight,
|
||||
/datum/reagent/ethanol/soemmerfire,
|
||||
/datum/reagent/ethanol/slimeshot)
|
||||
|
||||
/proc/lunchables_lunches()
|
||||
if(!(lunchables_lunches_[lunchables_lunches_[1]]))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* * items are objects. Fruits, tools, circuit boards.
|
||||
* * result is type to create as new object
|
||||
* * time is optional parameter, you shall use in in your machine,
|
||||
default /datum/recipe/ procs does not rely on this parameter.
|
||||
* default /datum/recipe/ procs does not rely on this parameter.
|
||||
*
|
||||
* Functions you need:
|
||||
* /datum/recipe/proc/make(var/obj/container as obj)
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
var/list/drink_recipes = list()
|
||||
for(var/decl/chemical_reaction/instant/drinks/CR in SSchemistry.chemical_reactions)
|
||||
drink_recipes[CR.type] = list("Result" = CR.name,
|
||||
"ResAmt" = CR.result_amount,
|
||||
"Reagents" = CR.required_reagents,
|
||||
"ResAmt" = CR.result_amount,
|
||||
"Reagents" = CR.required_reagents,
|
||||
"Catalysts" = CR.catalysts)
|
||||
|
||||
//////////////////////// FOOD
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
random_color = FALSE
|
||||
|
||||
/obj/item/tool/wirecutters/clippers/trimmers
|
||||
name = "hedgetrimmers"
|
||||
desc = "An old pair of trimmers with a pretty dull blade. You would probably have a hard time cutting anything but plants with it."
|
||||
icon_state = "hedget"
|
||||
item_state = "hedget"
|
||||
force = 7 //One point extra than standard wire cutters.
|
||||
name = "hedgetrimmers"
|
||||
desc = "An old pair of trimmers with a pretty dull blade. You would probably have a hard time cutting anything but plants with it."
|
||||
icon_state = "hedget"
|
||||
item_state = "hedget"
|
||||
force = 7 //One point extra than standard wire cutters.
|
||||
|
||||
/obj/item/tool/wirecutters/clippers/trimmers/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
@@ -36,14 +36,14 @@
|
||||
var/sw = I.GetPixel(x - 1, y - 1)
|
||||
|
||||
var/sum_adj = ((n == "#00ff00"? 1 : 0) \
|
||||
+ (s == "#00ff00"? 1 : 0) \
|
||||
+ (e == "#00ff00"? 1 : 0) \
|
||||
+ (w == "#00ff00"? 1 : 0))
|
||||
+ (s == "#00ff00"? 1 : 0) \
|
||||
+ (e == "#00ff00"? 1 : 0) \
|
||||
+ (w == "#00ff00"? 1 : 0))
|
||||
|
||||
var/sum_diag = ((ne == "#00ff00"? 1 : 0) \
|
||||
+ (se == "#00ff00"? 1 : 0) \
|
||||
+ (nw == "#00ff00"? 1 : 0) \
|
||||
+ (sw == "#00ff00"? 1 : 0))
|
||||
+ (se == "#00ff00"? 1 : 0) \
|
||||
+ (nw == "#00ff00"? 1 : 0) \
|
||||
+ (sw == "#00ff00"? 1 : 0))
|
||||
|
||||
|
||||
if(sum_adj)
|
||||
@@ -234,35 +234,35 @@ var/list/rune_animation = list(
|
||||
|
||||
var/obj/o = new(t)
|
||||
o.icon = animate_rune_full(I, rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
list(
|
||||
list(0.000, 5),
|
||||
list(0.020, 1),
|
||||
list(0.050, 1),
|
||||
list(0.090, 1),
|
||||
list(0.140, 1),
|
||||
list(0.200, 1),
|
||||
list(0.270, 1),
|
||||
list(0.340, 1),
|
||||
list(0.420, 1),
|
||||
list(0.500, 1),
|
||||
list(0.590, 1),
|
||||
list(0.675, 1),
|
||||
list(0.750, 1),
|
||||
list(0.900, 1),
|
||||
list(1.000, 6),
|
||||
list(0.875, 1),
|
||||
list(0.750, 1),
|
||||
list(0.625, 1),
|
||||
list(0.500, 1),
|
||||
list(0.375, 1),
|
||||
list(0.250, 1),
|
||||
list(0.125, 1),
|
||||
))
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
list(
|
||||
list(0.000, 5),
|
||||
list(0.020, 1),
|
||||
list(0.050, 1),
|
||||
list(0.090, 1),
|
||||
list(0.140, 1),
|
||||
list(0.200, 1),
|
||||
list(0.270, 1),
|
||||
list(0.340, 1),
|
||||
list(0.420, 1),
|
||||
list(0.500, 1),
|
||||
list(0.590, 1),
|
||||
list(0.675, 1),
|
||||
list(0.750, 1),
|
||||
list(0.900, 1),
|
||||
list(1.000, 6),
|
||||
list(0.875, 1),
|
||||
list(0.750, 1),
|
||||
list(0.625, 1),
|
||||
list(0.500, 1),
|
||||
list(0.375, 1),
|
||||
list(0.250, 1),
|
||||
list(0.125, 1),
|
||||
))
|
||||
*/
|
||||
|
||||
@@ -12,8 +12,8 @@ A [2]\ /[8] result
|
||||
B [1]-\|++|/
|
||||
C [4]-/|++|
|
||||
D [1]/ ||
|
||||
||
|
||||
Activator
|
||||
||
|
||||
Activator
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
name = "ref pin"
|
||||
|
||||
/datum/integrated_io/ref/ask_for_pin_data(mob/user, obj/item/I)
|
||||
if(istype(I, /obj/item/multitool))
|
||||
var/obj/item/multitool/tool = I
|
||||
write_data_to_pin(tool.weakref_wiring)
|
||||
else if(istype(I, /obj/item/integrated_electronics/debugger))
|
||||
var/obj/item/integrated_electronics/debugger/tool = I
|
||||
write_data_to_pin(tool.data_to_write)
|
||||
else
|
||||
write_data_to_pin(null)
|
||||
if(istype(I, /obj/item/multitool))
|
||||
var/obj/item/multitool/tool = I
|
||||
write_data_to_pin(tool.weakref_wiring)
|
||||
else if(istype(I, /obj/item/integrated_electronics/debugger))
|
||||
var/obj/item/integrated_electronics/debugger/tool = I
|
||||
write_data_to_pin(tool.data_to_write)
|
||||
else
|
||||
write_data_to_pin(null)
|
||||
|
||||
/datum/integrated_io/ref/write_data_to_pin(var/new_data)
|
||||
if(isnull(new_data) || isweakref(new_data))
|
||||
|
||||
@@ -311,7 +311,7 @@ Category: Reference
|
||||
<li>"} + span_bold("Avoid opening fire locks.") + {"</li>
|
||||
</ul>
|
||||
<p class="indent">In the event of depressurization, the station's fire locks automatically drop in an attempt to contain the breach. However, this can also impede movement. If possible, find an alternate route to your destination or find a safe place to wait until the station's engineering team repairs the station. Do not open a fire lock without an engineer's express permission unless you are in immediate mortal danger. After you have opened a fire lock, make sure to close it immediately so as to prevent the breach from spreading.</p>
|
||||
<ul>
|
||||
<ul>
|
||||
<li>"} + span_bold("Listen to emergency personnel.") + {"</li>
|
||||
</ul>
|
||||
<p class="indent">Follow the instructions of engineering, medical, and security personnel, as well as the orders of the heads of staff. Engineering personnel are trained to fix these situations, and medical personnel will likely be conducting search and rescue operations. Do not impede them and follow their instructions; you are more likely to survive, and less likely to endanger your fellow crew members.</p>
|
||||
|
||||
@@ -4,64 +4,64 @@ BS12 object based lighting system
|
||||
|
||||
/*
|
||||
Changes from tg DAL:
|
||||
- Lighting is done using objects instead of subareas.
|
||||
- Animated transitions. (newer tg DAL has this)
|
||||
- Full colours with mixing.
|
||||
- Support for lights on shuttles.
|
||||
- Lighting is done using objects instead of subareas.
|
||||
- Animated transitions. (newer tg DAL has this)
|
||||
- Full colours with mixing.
|
||||
- Support for lights on shuttles.
|
||||
|
||||
- Code:
|
||||
- Instead of one flat luminosity var, light is represented by 3 atom vars:
|
||||
- light_range; range in tiles of the light, used for calculating falloff,
|
||||
- light_power; multiplier for the brightness of lights,
|
||||
- light_color; hex string representing the RGB colour of the light.
|
||||
- setLuminousity() is now set_light() and takes the three variables above.
|
||||
- Variables can be left as null to not update them.
|
||||
- set_opacity() is now set_opacity().
|
||||
- Areas have luminosity set to 1 permanently, no hard-lighting.
|
||||
- Objects inside other objects can have lights and they properly affect the turf. (flashlights)
|
||||
- area/master and area/list/related have been eviscerated since subareas aren't needed.
|
||||
- Code:
|
||||
- Instead of one flat luminosity var, light is represented by 3 atom vars:
|
||||
- light_range; range in tiles of the light, used for calculating falloff,
|
||||
- light_power; multiplier for the brightness of lights,
|
||||
- light_color; hex string representing the RGB colour of the light.
|
||||
- setLuminousity() is now set_light() and takes the three variables above.
|
||||
- Variables can be left as null to not update them.
|
||||
- set_opacity() is now set_opacity().
|
||||
- Areas have luminosity set to 1 permanently, no hard-lighting.
|
||||
- Objects inside other objects can have lights and they properly affect the turf. (flashlights)
|
||||
- area/master and area/list/related have been eviscerated since subareas aren't needed.
|
||||
*/
|
||||
|
||||
/*
|
||||
Relevant vars/procs:
|
||||
|
||||
atom: (lighting_atom.dm)
|
||||
- var/light_range; range in tiles of the light, used for calculating falloff
|
||||
- var/light_power; multiplier for the brightness of lights
|
||||
- var/light_color; hex string representing the RGB colour of the light
|
||||
- var/light_range; range in tiles of the light, used for calculating falloff
|
||||
- var/light_power; multiplier for the brightness of lights
|
||||
- var/light_color; hex string representing the RGB colour of the light
|
||||
|
||||
- var/datum/light_source/light; light source datum for this atom, only present if light_range && light_power
|
||||
- var/list/light_sources; light sources in contents that are shining through this object, including this object
|
||||
- var/datum/light_source/light; light source datum for this atom, only present if light_range && light_power
|
||||
- var/list/light_sources; light sources in contents that are shining through this object, including this object
|
||||
|
||||
- proc/set_light(l_range, l_power, l_color):
|
||||
- Sets light_range/power/color to non-null args and calls update_light()
|
||||
- proc/set_opacity(new_opacity):
|
||||
- Sets opacity to new_opacity.
|
||||
- If opacity has changed, call turf.reconsider_lights() to fix light occlusion
|
||||
- proc/update_light():
|
||||
- Updates the light var on this atom, deleting or creating as needed and calling .update()
|
||||
- proc/set_light(l_range, l_power, l_color):
|
||||
- Sets light_range/power/color to non-null args and calls update_light()
|
||||
- proc/set_opacity(new_opacity):
|
||||
- Sets opacity to new_opacity.
|
||||
- If opacity has changed, call turf.reconsider_lights() to fix light occlusion
|
||||
- proc/update_light():
|
||||
- Updates the light var on this atom, deleting or creating as needed and calling .update()
|
||||
|
||||
|
||||
turf: (lighting_turf.dm)
|
||||
- var/list/affecting_lights; list of light sources that are shining onto this turf
|
||||
- var/list/affecting_lights; list of light sources that are shining onto this turf
|
||||
|
||||
- proc/reconsider_lights():
|
||||
- Force all light sources shining onto this turf to update
|
||||
- proc/reconsider_lights():
|
||||
- Force all light sources shining onto this turf to update
|
||||
|
||||
- proc/lighting_clear_overlays():
|
||||
- Delete (manual GC) all light overlays on this turf, used when changing turf to space
|
||||
- proc/lighting_build_overlays():
|
||||
- Create lighting overlays for this turf
|
||||
- proc/lighting_clear_overlays():
|
||||
- Delete (manual GC) all light overlays on this turf, used when changing turf to space
|
||||
- proc/lighting_build_overlays():
|
||||
- Create lighting overlays for this turf
|
||||
|
||||
|
||||
/atom/movable/lighting_overlay: (lighting_overlay.dm)
|
||||
- var/lum_r, var/lum_g, var/lum_b; lumcounts of each colour
|
||||
- var/needs_update; set on update_lumcount, checked by lighting process
|
||||
- var/lum_r, var/lum_g, var/lum_b; lumcounts of each colour
|
||||
- var/needs_update; set on update_lumcount, checked by lighting process
|
||||
|
||||
- var/xoffset, var/yoffset; (only present when using sub-tile overlays) fractional offset of this overlay in the tile
|
||||
- var/xoffset, var/yoffset; (only present when using sub-tile overlays) fractional offset of this overlay in the tile
|
||||
|
||||
- proc/update_lumcount(delta_r, delta_g, delta_b):
|
||||
- Change the lumcount vars and queue the overlay for update
|
||||
- proc/update_overlay()
|
||||
- Called by the lighting process to update the color of the overlay
|
||||
- proc/update_lumcount(delta_r, delta_g, delta_b):
|
||||
- Change the lumcount vars and queue the overlay for update
|
||||
- proc/update_overlay()
|
||||
- Called by the lighting process to update the color of the overlay
|
||||
*/
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
// Yes this doesn't align correctly on anything other than 4 width tabs.
|
||||
// If you want it to go switch everybody to elastic tab stops.
|
||||
// Actually that'd be great if you could!
|
||||
#define EFFECT_UPDATE(level) \
|
||||
#define EFFECT_UPDATE(level) \
|
||||
if (needs_update == LIGHTING_NO_UPDATE) \
|
||||
SSlighting.sources_queue += src; \
|
||||
if (needs_update < level) \
|
||||
needs_update = level; \
|
||||
SSlighting.sources_queue += src; \
|
||||
if (needs_update < level) \
|
||||
needs_update = level; \
|
||||
|
||||
|
||||
// This proc will cause the light source to update the top atom, and add itself to the update queue.
|
||||
@@ -133,40 +133,40 @@
|
||||
|
||||
#define LUM_FALLOFF(C) (1 - CLAMP01(sqrt((C.x - _turf_x) ** 2 + (C.y - _turf_y) ** 2 + LIGHTING_HEIGHT) / _range_divisor))
|
||||
|
||||
#define APPLY_CORNER(C) \
|
||||
. = LUM_FALLOFF(C); \
|
||||
. *= _light_power; \
|
||||
var/OLD = effect_str[C]; \
|
||||
\
|
||||
C.update_lumcount \
|
||||
( \
|
||||
(. * _lum_r) - (OLD * _applied_lum_r), \
|
||||
(. * _lum_g) - (OLD * _applied_lum_g), \
|
||||
(. * _lum_b) - (OLD * _applied_lum_b) \
|
||||
); \
|
||||
#define APPLY_CORNER(C) \
|
||||
. = LUM_FALLOFF(C); \
|
||||
. *= _light_power; \
|
||||
var/OLD = effect_str[C]; \
|
||||
\
|
||||
C.update_lumcount \
|
||||
( \
|
||||
(. * _lum_r) - (OLD * _applied_lum_r), \
|
||||
(. * _lum_g) - (OLD * _applied_lum_g), \
|
||||
(. * _lum_b) - (OLD * _applied_lum_b) \
|
||||
); \
|
||||
|
||||
#define APPLY_CORNER_NEW(C) \
|
||||
. = LUM_FALLOFF(C); \
|
||||
. *= _light_power; \
|
||||
var/OLD = effect_str[C]; \
|
||||
if (. != 0){ \
|
||||
LAZYADD(C.affecting, src); \
|
||||
effect_str[C] = .; \
|
||||
} \
|
||||
C.update_lumcount \
|
||||
( \
|
||||
(. * _lum_r) - (OLD * _applied_lum_r), \
|
||||
(. * _lum_g) - (OLD * _applied_lum_g), \
|
||||
(. * _lum_b) - (OLD * _applied_lum_b) \
|
||||
); \
|
||||
#define APPLY_CORNER_NEW(C) \
|
||||
. = LUM_FALLOFF(C); \
|
||||
. *= _light_power; \
|
||||
var/OLD = effect_str[C]; \
|
||||
if (. != 0){ \
|
||||
LAZYADD(C.affecting, src); \
|
||||
effect_str[C] = .; \
|
||||
} \
|
||||
C.update_lumcount \
|
||||
( \
|
||||
(. * _lum_r) - (OLD * _applied_lum_r), \
|
||||
(. * _lum_g) - (OLD * _applied_lum_g), \
|
||||
(. * _lum_b) - (OLD * _applied_lum_b) \
|
||||
); \
|
||||
|
||||
#define REMOVE_CORNER(C) \
|
||||
. = -effect_str[C]; \
|
||||
C.update_lumcount \
|
||||
( \
|
||||
. * _applied_lum_r, \
|
||||
. * _applied_lum_g, \
|
||||
. * _applied_lum_b \
|
||||
#define REMOVE_CORNER(C) \
|
||||
. = -effect_str[C]; \
|
||||
C.update_lumcount \
|
||||
( \
|
||||
. * _applied_lum_r, \
|
||||
. * _applied_lum_g, \
|
||||
. * _applied_lum_b \
|
||||
);
|
||||
|
||||
/datum/light_source/proc/remove_lum()
|
||||
|
||||
@@ -754,12 +754,12 @@
|
||||
name = "07/07/63 - Vir Election Results"
|
||||
data = "The results of the 2563 Vir Gubernatorial Elections are as follows:\
|
||||
<br>\
|
||||
Governor of Vir: Lusia Hainirsdottir (Shadow Coalition)\
|
||||
<br>\
|
||||
Vir Colonial Assembly Representative: Vani Jee (Icarus Front)\
|
||||
<br>\
|
||||
Vir Colonial Assembly Representative: Selma Jorg (Shadow Coalition)\
|
||||
<br>\
|
||||
Governor of Vir: Lusia Hainirsdottir (Shadow Coalition)\
|
||||
<br>\
|
||||
Vir Colonial Assembly Representative: Vani Jee (Icarus Front)\
|
||||
<br>\
|
||||
Vir Colonial Assembly Representative: Selma Jorg (Shadow Coalition)\
|
||||
<br>\
|
||||
Other candidates ranked: Sao (4), Zarshir (5), Keldow (6), Singh (7), Moravec (8), Phaedrus (9), Lye (10), Savik (11), Square (12), Wekstrom (13)\
|
||||
<br><br>\
|
||||
Voter turnout: 30,928,287 (63%)\
|
||||
|
||||
@@ -230,8 +230,8 @@
|
||||
and kit-bashed into a high-tech cleaver on a stick - with a handguard and a goliath hide grip. While it is still of little use to any \
|
||||
but the most skilled and/or suicidal miners against local fauna, it's an elegant weapon for a more civilized hunter."
|
||||
|
||||
look gary there i am
|
||||
- hatterhat
|
||||
look gary there i am
|
||||
- hatterhat
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
/datum/modifier/crusher_mark
|
||||
name = "destabilized"
|
||||
desc = "You've been struck by a destabilizing bolt. By all accounts, this is probably a bad thing."
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
on_created_text = span_warning("You feel physically unstable.")
|
||||
on_expired_text = span_notice("You feel physically stable again.")
|
||||
var/mutable_appearance/marked_underlay
|
||||
var/obj/item/kinetic_crusher/hammer_synced
|
||||
name = "destabilized"
|
||||
desc = "You've been struck by a destabilizing bolt. By all accounts, this is probably a bad thing."
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
on_created_text = span_warning("You feel physically unstable.")
|
||||
on_expired_text = span_notice("You feel physically stable again.")
|
||||
var/mutable_appearance/marked_underlay
|
||||
var/obj/item/kinetic_crusher/hammer_synced
|
||||
|
||||
/datum/modifier/crusher_mark/New(var/new_holder, var/new_origin)
|
||||
. = ..()
|
||||
if(isliving(new_origin))
|
||||
var/mob/living/origin = new_origin
|
||||
var/obj/item/kinetic_crusher/to_sync
|
||||
if(istype(origin.get_active_hand(), /obj/item/kinetic_crusher))
|
||||
to_sync = origin.get_active_hand()
|
||||
else if (istype(origin.get_inactive_hand(), /obj/item/kinetic_crusher))
|
||||
to_sync = origin.get_inactive_hand()
|
||||
if(to_sync) // did we find it?
|
||||
hammer_synced = to_sync // go ahead
|
||||
if(hammer_synced? hammer_synced.can_mark(holder) : TRUE)
|
||||
marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2")
|
||||
marked_underlay.pixel_x = -holder.pixel_x
|
||||
marked_underlay.pixel_y = -holder.pixel_y
|
||||
holder.underlays += marked_underlay
|
||||
else
|
||||
Destroy()
|
||||
. = ..()
|
||||
if(isliving(new_origin))
|
||||
var/mob/living/origin = new_origin
|
||||
var/obj/item/kinetic_crusher/to_sync
|
||||
if(istype(origin.get_active_hand(), /obj/item/kinetic_crusher))
|
||||
to_sync = origin.get_active_hand()
|
||||
else if (istype(origin.get_inactive_hand(), /obj/item/kinetic_crusher))
|
||||
to_sync = origin.get_inactive_hand()
|
||||
if(to_sync) // did we find it?
|
||||
hammer_synced = to_sync // go ahead
|
||||
if(hammer_synced? hammer_synced.can_mark(holder) : TRUE)
|
||||
marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2")
|
||||
marked_underlay.pixel_x = -holder.pixel_x
|
||||
marked_underlay.pixel_y = -holder.pixel_y
|
||||
holder.underlays += marked_underlay
|
||||
else
|
||||
Destroy()
|
||||
|
||||
/datum/modifier/crusher_mark/Destroy()
|
||||
hammer_synced = null
|
||||
|
||||
@@ -87,9 +87,9 @@
|
||||
return eyeobj.EyeMove(n, direct)
|
||||
|
||||
/mob/observer/eye/proc/GetViewerClient()
|
||||
if(owner)
|
||||
return owner.client
|
||||
return null
|
||||
if(owner)
|
||||
return owner.client
|
||||
return null
|
||||
|
||||
/mob/observer/eye/EyeMove(n, direct)
|
||||
var/initial = initial(sprint)
|
||||
|
||||
@@ -184,13 +184,13 @@
|
||||
return list("AI") // AI door!
|
||||
|
||||
/proc/encode_html_emphasis(message)
|
||||
var/tagged_message = message
|
||||
for(var/delimiter in GLOB.speech_toppings)
|
||||
var/regex/R = new("\\[delimiter](.+?)\\[delimiter]","g")
|
||||
var/tag = GLOB.speech_toppings[delimiter]
|
||||
tagged_message = R.Replace(tagged_message,"<[tag]>$1</[tag]>")
|
||||
var/tagged_message = message
|
||||
for(var/delimiter in GLOB.speech_toppings)
|
||||
var/regex/R = new("\\[delimiter](.+?)\\[delimiter]","g")
|
||||
var/tag = GLOB.speech_toppings[delimiter]
|
||||
tagged_message = R.Replace(tagged_message,"<[tag]>$1</[tag]>")
|
||||
|
||||
return tagged_message
|
||||
return tagged_message
|
||||
|
||||
/mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/part_d, var/part_e, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "")
|
||||
if(!client)
|
||||
|
||||
@@ -80,8 +80,8 @@
|
||||
colour = "bug"
|
||||
key = "X"
|
||||
syllables = list("vaur","uyek","uyit","avek","sc'theth","k'ztak","teth","wre'ge","lii","dra'","zo'","ra'","kax'","zz","vh","ik","ak",
|
||||
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
|
||||
"sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk","tzzk","bz","xic'","k'lax'","histh")
|
||||
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
|
||||
"sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk","tzzk","bz","xic'","k'lax'","histh")
|
||||
|
||||
/datum/language/shadekin
|
||||
name = LANGUAGE_SHADEKIN
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
else
|
||||
visible_message(span_infoplain(span_bold("\The [src]") + " starts licking the wounds on [M]'s [affecting.name] clean."), \
|
||||
span_notice("You start licking the wounds on [M]'s [affecting.name] clean.") )
|
||||
span_notice("You start licking the wounds on [M]'s [affecting.name] clean.") )
|
||||
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
|
||||
else
|
||||
visible_message(span_notice("\The [src] [pick("slathers \a [W.desc] on [M]'s [affecting.name] with their spit.",
|
||||
"drags their tongue across \a [W.desc] on [M]'s [affecting.name].",
|
||||
"drips saliva onto \a [W.desc] on [M]'s [affecting.name].",
|
||||
"uses their tongue to disinfect \a [W.desc] on [M]'s [affecting.name].",
|
||||
"licks \a [W.desc] on [M]'s [affecting.name], cleaning it.")]"), \
|
||||
span_notice("You treat \a [W.desc] on [M]'s [affecting.name] with your antiseptic saliva.") )
|
||||
"drags their tongue across \a [W.desc] on [M]'s [affecting.name].",
|
||||
"drips saliva onto \a [W.desc] on [M]'s [affecting.name].",
|
||||
"uses their tongue to disinfect \a [W.desc] on [M]'s [affecting.name].",
|
||||
"licks \a [W.desc] on [M]'s [affecting.name], cleaning it.")]"), \
|
||||
span_notice("You treat \a [W.desc] on [M]'s [affecting.name] with your antiseptic saliva.") )
|
||||
adjust_nutrition(-20)
|
||||
W.salve()
|
||||
W.bandage()
|
||||
|
||||
@@ -428,7 +428,7 @@
|
||||
return
|
||||
|
||||
/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person
|
||||
fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS)
|
||||
fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS)
|
||||
|
||||
/mob/living/proc/handle_fire()
|
||||
if(fire_stacks < 0)
|
||||
|
||||
@@ -165,15 +165,15 @@
|
||||
B.digest_mode = DM_SELECT
|
||||
|
||||
/mob/living/simple_mob/vore/pakkun/attackby(var/obj/item/O, var/mob/user) //if they're newspapered, they'll spit out any junk they've eaten for whatever reason
|
||||
if(istype(O, /obj/item/newspaper) && !ckey && isturf(user.loc))
|
||||
user.visible_message(span_info("[user] swats [src] with [O]!"))
|
||||
release_vore_contents()
|
||||
for(var/mob/living/L in living_mobs(0))
|
||||
if(!(LAZYFIND(prey_excludes, L)))
|
||||
LAZYSET(prey_excludes, L, world.time)
|
||||
addtimer(CALLBACK(src, PROC_REF(removeMobFromPreyExcludes), WEAKREF(L)), 5 MINUTES)
|
||||
else
|
||||
..()
|
||||
if(istype(O, /obj/item/newspaper) && !ckey && isturf(user.loc))
|
||||
user.visible_message(span_info("[user] swats [src] with [O]!"))
|
||||
release_vore_contents()
|
||||
for(var/mob/living/L in living_mobs(0))
|
||||
if(!(LAZYFIND(prey_excludes, L)))
|
||||
LAZYSET(prey_excludes, L, world.time)
|
||||
addtimer(CALLBACK(src, PROC_REF(removeMobFromPreyExcludes), WEAKREF(L)), 5 MINUTES)
|
||||
else
|
||||
..()
|
||||
|
||||
//a palette-swapped version that's a bit bossier, in JRPG tradition
|
||||
|
||||
|
||||
@@ -117,13 +117,13 @@
|
||||
consider_wg()
|
||||
|
||||
/mob/living/simple_mob/vore/raptor/proc/consider_wg()
|
||||
var/past_state = wg_state
|
||||
if(nutrition >= 900)
|
||||
wg_state = 1
|
||||
else
|
||||
wg_state = 0
|
||||
if(past_state != wg_state)
|
||||
update_icon()
|
||||
var/past_state = wg_state
|
||||
if(nutrition >= 900)
|
||||
wg_state = 1
|
||||
else
|
||||
wg_state = 0
|
||||
if(past_state != wg_state)
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/vore/raptor/update_icon()
|
||||
if(wg_state == 1)
|
||||
|
||||
@@ -1228,13 +1228,13 @@
|
||||
ckeys_allowed = list("natje")
|
||||
|
||||
/datum/sprite_accessory/ears/frost
|
||||
name = "Frost antenna"
|
||||
desc = ""
|
||||
icon_state = "frosted_tips"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
name = "Frost antenna"
|
||||
desc = ""
|
||||
icon_state = "frosted_tips"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
|
||||
/datum/sprite_accessory/ears/sylv_pip
|
||||
name = "sylveon ears and ribbons (Pip Shyner)"
|
||||
desc = ""
|
||||
icon_state = "pipears"
|
||||
ckeys_allowed = list("phoaly")
|
||||
name = "sylveon ears and ribbons (Pip Shyner)"
|
||||
desc = ""
|
||||
icon_state = "pipears"
|
||||
ckeys_allowed = list("phoaly")
|
||||
|
||||
@@ -126,22 +126,22 @@
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/rabbit
|
||||
name = "rabbit, colourable (vwag)"
|
||||
desc = ""
|
||||
icon_state = "rabbit"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "rabbit_w"
|
||||
name = "rabbit, colourable (vwag)"
|
||||
desc = ""
|
||||
icon_state = "rabbit"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "rabbit_w"
|
||||
|
||||
/datum/sprite_accessory/tail/rabbitalt
|
||||
name = "rabbit, dual color (vwag)"
|
||||
desc = ""
|
||||
icon_state = "rabbitalt"
|
||||
extra_overlay = "rabbitalt-tips"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "rabbitalt_w"
|
||||
extra_overlay_w = "rabbitalt-tips_w"
|
||||
name = "rabbit, dual color (vwag)"
|
||||
desc = ""
|
||||
icon_state = "rabbitalt"
|
||||
extra_overlay = "rabbitalt-tips"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "rabbitalt_w"
|
||||
extra_overlay_w = "rabbitalt-tips_w"
|
||||
|
||||
/datum/sprite_accessory/tail/bear_brown
|
||||
name = "bear, brown"
|
||||
@@ -1169,14 +1169,14 @@
|
||||
extra_overlay = "ninekitsune-tips"
|
||||
|
||||
/datum/sprite_accessory/tail/hideableninetails
|
||||
name = "Kitsune 9-in-1 tail, colourable (vwag)"
|
||||
desc = ""
|
||||
icon_state = "ninekitsune"
|
||||
extra_overlay = "ninekitsune-tips"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "foxtail_w"
|
||||
extra_overlay_w = "foxtail-tips_w"
|
||||
name = "Kitsune 9-in-1 tail, colourable (vwag)"
|
||||
desc = ""
|
||||
icon_state = "ninekitsune"
|
||||
extra_overlay = "ninekitsune-tips"
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
ani_state = "foxtail_w"
|
||||
extra_overlay_w = "foxtail-tips_w"
|
||||
|
||||
/datum/sprite_accessory/tail/shadekin_short
|
||||
name = "Shadekin Short Tail, colorable"
|
||||
@@ -1702,16 +1702,16 @@
|
||||
ckeys_allowed = list("arokha")
|
||||
|
||||
/datum/sprite_accessory/tail/cabletail
|
||||
name = "cabletail"
|
||||
desc = "cabletail"
|
||||
icon_state = "cabletail"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
name = "cabletail"
|
||||
desc = "cabletail"
|
||||
icon_state = "cabletail"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
|
||||
/datum/sprite_accessory/tail/featherfluff_tail
|
||||
name = "featherfluff_tail"
|
||||
desc = ""
|
||||
icon_state = "featherfluff_tail"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
name = "featherfluff_tail"
|
||||
desc = ""
|
||||
icon_state = "featherfluff_tail"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
|
||||
/datum/sprite_accessory/tail/holly
|
||||
name = "tigress tail (Holly)"
|
||||
|
||||
@@ -569,11 +569,11 @@
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/mothwings_luna_colorable
|
||||
name = "Moth Wings (Luna, Colorable)"
|
||||
desc = ""
|
||||
icon_state = "mothwings_luna_colorable"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
name = "Moth Wings (Luna, Colorable)"
|
||||
desc = ""
|
||||
icon_state = "mothwings_luna_colorable"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/sect_drone_alt
|
||||
name = "Sect drone wings Alt. (To use with bodytype marking)"
|
||||
|
||||
@@ -61,18 +61,18 @@ var/const/cyberbeast_monitor_styles = "blank=cyber_blank;\
|
||||
|
||||
// tucker0666 : Frost
|
||||
/datum/robolimb/zenghu_frost
|
||||
company = "Zeng-Hu (Custom)"
|
||||
desc = "This limb has realistic synthetic flesh covering with 'blue accents'."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/_fluff_vr/Frosty.dmi'
|
||||
blood_color = "#45ccff"
|
||||
lifelike = 1
|
||||
skin_tone = 1
|
||||
unavailable_to_build = 1
|
||||
whitelisted_to = list("tucker0666")
|
||||
company = "Zeng-Hu (Custom)"
|
||||
desc = "This limb has realistic synthetic flesh covering with 'blue accents'."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/_fluff_vr/Frosty.dmi'
|
||||
blood_color = "#45ccff"
|
||||
lifelike = 1
|
||||
skin_tone = 1
|
||||
unavailable_to_build = 1
|
||||
whitelisted_to = list("tucker0666")
|
||||
|
||||
/obj/item/disk/limb/zenghu_frost
|
||||
company = "Zeng-Hu (Modified)"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/zeng_hu)
|
||||
company = "Zeng-Hu (Modified)"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/zeng_hu)
|
||||
|
||||
//Ported from CitRP
|
||||
/datum/robolimb/cyber_beast
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
var/max_entries = 1000 //1000 paintings is a lot, and will take a long time to cycle through.
|
||||
|
||||
/datum/persistent/paintings/SetFilename()
|
||||
filename = "data/persistent/paintings.json"
|
||||
filename = "data/persistent/paintings.json"
|
||||
|
||||
/datum/persistent/paintings/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
LAZYADDASSOC(., "items", storage_list)
|
||||
|
||||
// Usage: returns list with structure:
|
||||
// list(
|
||||
// [type1] = [stored_quantity],
|
||||
// [type2] = [stored_quantity]
|
||||
// )
|
||||
// list(
|
||||
// [type1] = [stored_quantity],
|
||||
// [type2] = [stored_quantity]
|
||||
// )
|
||||
/datum/persistent/storage/proc/get_storage_list(var/atom/entry)
|
||||
return list() // Subtypes define list structure
|
||||
return list() // Subtypes define list structure
|
||||
|
||||
/datum/persistent/storage/proc/find_specific_instance(var/turf/T)
|
||||
return locate(target_type) in T
|
||||
|
||||
@@ -76,24 +76,24 @@
|
||||
sheets_refunded = 2
|
||||
|
||||
/obj/machinery/light_construct/floortube/verb/rotate_clockwise()
|
||||
set name = "Rotate Fixture Clockwise"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
set name = "Rotate Fixture Clockwise"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if (usr.stat || usr.restrained() || anchored)
|
||||
return
|
||||
if (usr.stat || usr.restrained() || anchored)
|
||||
return
|
||||
|
||||
src.set_dir(turn(src.dir, 270))
|
||||
src.set_dir(turn(src.dir, 270))
|
||||
|
||||
/obj/machinery/light_construct/floortube/verb/rotate_counterclockwise()
|
||||
set name = "Rotate Fixture Counter-Clockwise"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
set name = "Rotate Fixture Counter-Clockwise"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if (usr.stat || usr.restrained() || anchored)
|
||||
return
|
||||
if (usr.stat || usr.restrained() || anchored)
|
||||
return
|
||||
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
src.set_dir(turn(src.dir, 90))
|
||||
|
||||
/obj/machinery/light_construct/floortube/update_icon()
|
||||
switch(stage)
|
||||
|
||||
@@ -481,10 +481,10 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity)
|
||||
move_self = 1
|
||||
|
||||
/obj/singularity/singularity_act(S, size)
|
||||
if(current_size <= size)
|
||||
var/gain = (energy/2)
|
||||
var/dist = max((current_size - 2), 1)
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return gain
|
||||
if(current_size <= size)
|
||||
var/gain = (energy/2)
|
||||
var/dist = max((current_size - 2), 1)
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return gain
|
||||
|
||||
@@ -374,7 +374,7 @@
|
||||
//Release reaction gasses
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
removed.adjust_multi(GAS_PHORON, max(device_energy / PHORON_RELEASE_MODIFIER, 0), \
|
||||
GAS_O2, max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0))
|
||||
GAS_O2, max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0))
|
||||
|
||||
var/thermal_power = THERMAL_RELEASE_MODIFIER * device_energy
|
||||
if (debug)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
spinning_up = TRUE
|
||||
update_icon()
|
||||
user.visible_message(span_notice("[user] starts charging the [src]!"), \
|
||||
span_notice("You start charging the [src]!"))
|
||||
span_notice("You start charging the [src]!"))
|
||||
if(do_after(user, 8, src))
|
||||
spinning_up = FALSE
|
||||
..()
|
||||
|
||||
@@ -9,17 +9,17 @@
|
||||
fire_delay = 50
|
||||
fire_sound = 'sound/weapons/grenade_launcher.ogg' // Formerly tablehit1.ogg but I like this better -Ace
|
||||
|
||||
var/fire_pressure // Used in fire checks/pressure checks.
|
||||
var/max_w_class = ITEMSIZE_NORMAL // Hopper intake size.
|
||||
var/max_storage_space = ITEMSIZE_COST_NORMAL * 5 // Total internal storage size.
|
||||
var/obj/item/tank/tank = null // Tank of gas for use in firing the cannon.
|
||||
var/fire_pressure // Used in fire checks/pressure checks.
|
||||
var/max_w_class = ITEMSIZE_NORMAL // Hopper intake size.
|
||||
var/max_storage_space = ITEMSIZE_COST_NORMAL * 5 // Total internal storage size.
|
||||
var/obj/item/tank/tank = null // Tank of gas for use in firing the cannon.
|
||||
|
||||
var/obj/item/storage/item_storage
|
||||
var/pressure_setting = 10 // Percentage of the gas in the tank used to fire the projectile.
|
||||
var/pressure_setting = 10 // Percentage of the gas in the tank used to fire the projectile.
|
||||
var/possible_pressure_amounts = list(5,10,20,25,50) // Possible pressure settings.
|
||||
var/force_divisor = 400 // Force equates to speed. Speed/5 equates to a damage multiplier for whoever you hit.
|
||||
// For reference, a fully pressurized oxy tank at 50% gas release firing a health
|
||||
// analyzer with a force_divisor of 10 hit with a damage multiplier of 3000+.
|
||||
var/force_divisor = 400 // Force equates to speed. Speed/5 equates to a damage multiplier for whoever you hit.
|
||||
// For reference, a fully pressurized oxy tank at 50% gas release firing a health
|
||||
// analyzer with a force_divisor of 10 hit with a damage multiplier of 3000+.
|
||||
/obj/item/gun/launcher/pneumatic/New()
|
||||
..()
|
||||
item_storage = new(src)
|
||||
|
||||
@@ -382,18 +382,18 @@
|
||||
hud_state = "laser_disabler"
|
||||
|
||||
/obj/item/projectile/beam/disable
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
hud_state = "laser_disabler"
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
hud_state = "laser_disabler"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/shock
|
||||
name = "shock beam"
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
// but will have distinct behaviours (mostly relating to the fusion field) that warrants a separate type
|
||||
/*
|
||||
/decl/chemical_reaction/fusion
|
||||
name = "Fusion"*/
|
||||
name = "Fusion"*/
|
||||
|
||||
@@ -1042,12 +1042,12 @@
|
||||
result_amount = 3
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/winebrandy
|
||||
name = "Wine brandy"
|
||||
id = REAGENT_ID_WINEBRANDY
|
||||
result = REAGENT_ID_WINEBRANDY
|
||||
required_reagents = list(REAGENT_ID_REDWINE = 10)
|
||||
catalysts = list(REAGENT_ID_ENZYME = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe
|
||||
result_amount = 5
|
||||
name = "Wine brandy"
|
||||
id = REAGENT_ID_WINEBRANDY
|
||||
result = REAGENT_ID_WINEBRANDY
|
||||
required_reagents = list(REAGENT_ID_REDWINE = 10)
|
||||
catalysts = list(REAGENT_ID_ENZYME = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe
|
||||
result_amount = 5
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/love_potion
|
||||
name = REAGENT_LOVEPOTION
|
||||
|
||||
@@ -106,21 +106,21 @@
|
||||
required_reagents = list(REAGENT_ID_COLA = 1, REAGENT_ID_MINT = 1)
|
||||
|
||||
/decl/chemical_reaction/instant/firefightingfoam //TODO: Make it so we can add this to the foam tanks to refill them
|
||||
name = REAGENT_FIREFOAM
|
||||
id = "firefighting foam"
|
||||
result = REAGENT_ID_FIREFOAM
|
||||
required_reagents = list(REAGENT_ID_WATER = 1)
|
||||
catalysts = list(REAGENT_ID_FLUORINE = 10)
|
||||
result_amount = 1
|
||||
name = REAGENT_FIREFOAM
|
||||
id = "firefighting foam"
|
||||
result = REAGENT_ID_FIREFOAM
|
||||
required_reagents = list(REAGENT_ID_WATER = 1)
|
||||
catalysts = list(REAGENT_ID_FLUORINE = 10)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/firefightingfoamqol //Please don't abuse this and make us remove it. Seriously.
|
||||
name = "Firefighting Foam EZ"
|
||||
id = "firefighting foam ez"
|
||||
result = REAGENT_ID_FIREFOAM
|
||||
required_reagents = list(REAGENT_ID_WATER = 1)
|
||||
catalysts = list(REAGENT_ID_FIREFOAM = 5)
|
||||
inhibitors = list(REAGENT_ID_FLUORINE = 0.01)
|
||||
result_amount = 1
|
||||
name = "Firefighting Foam EZ"
|
||||
id = "firefighting foam ez"
|
||||
result = REAGENT_ID_FIREFOAM
|
||||
required_reagents = list(REAGENT_ID_WATER = 1)
|
||||
catalysts = list(REAGENT_ID_FIREFOAM = 5)
|
||||
inhibitors = list(REAGENT_ID_FLUORINE = 0.01)
|
||||
result_amount = 1
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
/// Vore Drugs
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
var/flags = SHUTTLE_FLAGS_NONE
|
||||
var/process_state = IDLE_STATE // Used with SHUTTLE_FLAGS_PROCESS, as well as to store current state.
|
||||
var/category = /datum/shuttle
|
||||
var/multiz = 0 //how many multiz levels, starts at 0 TODO Leshana - Are we porting this?
|
||||
var/multiz = 0 //how many multiz levels, starts at 0 TODO Leshana - Are we porting this?
|
||||
|
||||
var/ceiling_type // Type path of turf to roof over the shuttle when at multi-z landmarks. Ignored if null.
|
||||
var/ceiling_type // Type path of turf to roof over the shuttle when at multi-z landmarks. Ignored if null.
|
||||
|
||||
var/sound_takeoff = 'sound/effects/shuttles/shuttle_takeoff.ogg'
|
||||
var/sound_landing = 'sound/effects/shuttles/shuttle_landing.ogg'
|
||||
@@ -22,11 +22,11 @@
|
||||
var/knockdown = 1 //whether shuttle downs non-buckled people when it moves
|
||||
|
||||
var/defer_initialisation = FALSE //If this this shuttle should be initialised automatically.
|
||||
//If set to true, you are responsible for initialzing the shuttle manually.
|
||||
//Useful for shuttles that are initialized by map_template loading, or shuttles that are created in-game or not used.
|
||||
//If set to true, you are responsible for initialzing the shuttle manually.
|
||||
//Useful for shuttles that are initialized by map_template loading, or shuttles that are created in-game or not used.
|
||||
|
||||
var/mothershuttle //tag of mothershuttle
|
||||
var/motherdock //tag of mothershuttle landmark, defaults to starting location
|
||||
var/mothershuttle //tag of mothershuttle
|
||||
var/motherdock //tag of mothershuttle landmark, defaults to starting location
|
||||
|
||||
var/tmp/depart_time = 0 //Similar to above, set when the shuttle leaves when long jumping. Used for progress bars.
|
||||
|
||||
@@ -104,8 +104,8 @@
|
||||
/datum/shuttle/proc/on_shuttle_departure(var/obj/effect/shuttle_landmark/origin, var/obj/effect/shuttle_landmark/destination)
|
||||
return
|
||||
|
||||
// Similar to above, but when it finishes moving to the target. Short jump generally makes this occur immediately after the above proc.
|
||||
// Keep in mind we might not actually have gotten to destination. Check current_location to be sure where we ended up.
|
||||
// Similar to above, but when it finishes moving to the target. Short jump generally makes this occur immediately after the above proc.
|
||||
// Keep in mind we might not actually have gotten to destination. Check current_location to be sure where we ended up.
|
||||
/datum/shuttle/proc/on_shuttle_arrival(var/obj/effect/shuttle_landmark/origin, var/obj/effect/shuttle_landmark/destination)
|
||||
return
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
return
|
||||
|
||||
var/obj/effect/shuttle_landmark/start_location = current_location
|
||||
// TODO - Figure out exactly when to play sounds. Before warmup_time delay? Should there be a sleep for waiting for sounds? or no?
|
||||
// TODO - Figure out exactly when to play sounds. Before warmup_time delay? Should there be a sleep for waiting for sounds? or no?
|
||||
moving_status = SHUTTLE_WARMUP
|
||||
spawn(warmup_time*10)
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
return
|
||||
|
||||
var/obj/effect/shuttle_landmark/start_location = current_location
|
||||
// TODO - Figure out exactly when to play sounds. Before warmup_time delay? Should there be a sleep for waiting for sounds? or no?
|
||||
// TODO - Figure out exactly when to play sounds. Before warmup_time delay? Should there be a sleep for waiting for sounds? or no?
|
||||
moving_status = SHUTTLE_WARMUP
|
||||
spawn(warmup_time*10)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Forward declarations of public procs. They do nothing because this is not auto-dock.
|
||||
// Forward declarations of public procs. They do nothing because this is not auto-dock.
|
||||
|
||||
/datum/shuttle/proc/fuel_check()
|
||||
return 1 //fuel check should always pass in non-overmap shuttles (they have magic engines)
|
||||
@@ -300,7 +300,7 @@
|
||||
if(our_area.get_gravity() != new_grav)
|
||||
our_area.gravitychange(new_grav)
|
||||
|
||||
// TODO - Old code used to throw stuff out of the way instead of squashing. Should we?
|
||||
// TODO - Old code used to throw stuff out of the way instead of squashing. Should we?
|
||||
|
||||
// Move, gib, or delete everything in our way!
|
||||
for(var/turf/src_turf in turf_translation)
|
||||
@@ -345,7 +345,7 @@
|
||||
if(move_direction)
|
||||
throw_a_mob(M,move_direction)
|
||||
//VOREStation Add End
|
||||
// We only need to rebuild powernets for our cables. No need to check machines because they are on top of cables.
|
||||
// We only need to rebuild powernets for our cables. No need to check machines because they are on top of cables.
|
||||
for(var/obj/structure/cable/C in A)
|
||||
powernets |= C.powernet
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
req_open = 1
|
||||
|
||||
/datum/surgery_step/repairflesh/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/* VOREStation Removal for Mlem Reasons(TM)
|
||||
if (target.stat == DEAD) // Sorry defibs, your subjects need to have pumping fluids for these to work.
|
||||
return 0
|
||||
/* VOREStation Removal for Mlem Reasons(TM)
|
||||
if (target.stat == DEAD) // Sorry defibs, your subjects need to have pumping fluids for these to work.
|
||||
return 0
|
||||
*/
|
||||
if (isslime(target))
|
||||
return 0
|
||||
|
||||
@@ -536,7 +536,7 @@
|
||||
holder = new /obj/item/organ/internal/mmi_holder/robot(target, 1, M)
|
||||
else
|
||||
holder = new /obj/item/organ/internal/mmi_holder(target, 1, M) // Fallback to old behavior if organic MMI or if no subtype exists.
|
||||
//VOREstation edit end
|
||||
//VOREstation edit end
|
||||
target.internal_organs_by_name["brain"] = holder
|
||||
|
||||
if(M.brainmob && M.brainmob.mind)
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
for(var/obj/item/material/shard/S in L)
|
||||
if(prob(50))
|
||||
M.visible_message(span_danger("\The [S] slices [M]'s face messily!"),
|
||||
span_danger("\The [S] slices your face messily!"))
|
||||
span_danger("\The [S] slices your face messily!"))
|
||||
M.apply_damage(10, def_zone = BP_HEAD)
|
||||
if(prob(2))
|
||||
M.embed(S, def_zone = BP_HEAD)
|
||||
|
||||
@@ -109,7 +109,7 @@ var/list/table_icon_cache = list()
|
||||
|
||||
if(carpeted && W.has_tool_quality(TOOL_CROWBAR))
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " removes the carpet from \the [src]."),
|
||||
span_notice("You remove the carpet from \the [src]."))
|
||||
span_notice("You remove the carpet from \the [src]."))
|
||||
new carpeted_type(loc)
|
||||
carpeted = 0
|
||||
update_icon()
|
||||
@@ -119,7 +119,7 @@ var/list/table_icon_cache = list()
|
||||
var/obj/item/stack/tile/carpet/C = W
|
||||
if(C.use(1))
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " adds \the [C] to \the [src]."),
|
||||
span_notice("You add \the [C] to \the [src]."))
|
||||
span_notice("You add \the [C] to \the [src]."))
|
||||
carpeted = 1
|
||||
carpeted_type = W.type
|
||||
update_icon()
|
||||
@@ -150,7 +150,7 @@ var/list/table_icon_cache = list()
|
||||
if(!do_after(user, 20 * F.toolspeed) || !F.remove_fuel(1, user))
|
||||
return
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " repairs some damage to \the [src]."),
|
||||
span_notice("You repair some damage to \the [src]."))
|
||||
span_notice("You repair some damage to \the [src]."))
|
||||
health = max(health+(maxhealth/5), maxhealth) // 20% repair per application
|
||||
return 1
|
||||
|
||||
@@ -259,14 +259,14 @@ var/list/table_icon_cache = list()
|
||||
if(manipulating) return M
|
||||
manipulating = 1
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " begins removing the [type_holding] holding \the [src]'s [M.display_name] [what] in place."),
|
||||
span_notice("You begin removing the [type_holding] holding \the [src]'s [M.display_name] [what] in place."))
|
||||
span_notice("You begin removing the [type_holding] holding \the [src]'s [M.display_name] [what] in place."))
|
||||
if(sound)
|
||||
playsound(src, sound, 50, 1)
|
||||
if(!do_after(user, delay))
|
||||
manipulating = 0
|
||||
return M
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " removes the [M.display_name] [what] from \the [src]."),
|
||||
span_notice("You remove the [M.display_name] [what] from \the [src]."))
|
||||
span_notice("You remove the [M.display_name] [what] from \the [src]."))
|
||||
new M.stack_type(src.loc)
|
||||
manipulating = 0
|
||||
return null
|
||||
@@ -281,13 +281,13 @@ var/list/table_icon_cache = list()
|
||||
if(manipulating) return
|
||||
manipulating = 1
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " begins dismantling \the [src]."),
|
||||
span_notice("You begin dismantling \the [src]."))
|
||||
span_notice("You begin dismantling \the [src]."))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
if(!do_after(user, 20 * W.toolspeed))
|
||||
manipulating = 0
|
||||
return
|
||||
user.visible_message(span_infoplain(span_bold("\The [user]") + " dismantles \the [src]."),
|
||||
span_notice("You dismantle \the [src]."))
|
||||
span_notice("You dismantle \the [src]."))
|
||||
new /obj/item/stack/material/steel(src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -296,8 +296,8 @@ var/list/table_icon_cache = list()
|
||||
// Used for !fun! things such as embedding shards in the faces of tableslammed people.
|
||||
|
||||
// The repeated
|
||||
// S = [x].place_shard(loc)
|
||||
// if(S) shards += S
|
||||
// S = [x].place_shard(loc)
|
||||
// if(S) shards += S
|
||||
// is to avoid filling the list with nulls, as place_shard won't place shards of certain materials (holo-wood, holo-steel)
|
||||
|
||||
/obj/structure/table/proc/break_to_parts(full_return = 0)
|
||||
@@ -445,10 +445,10 @@ var/list/table_icon_cache = list()
|
||||
#define CORNER_CLOCKWISE 4
|
||||
|
||||
/*
|
||||
turn() is weird:
|
||||
turn(icon, angle) turns icon by angle degrees clockwise
|
||||
turn(matrix, angle) turns matrix by angle degrees clockwise
|
||||
turn(dir, angle) turns dir by angle degrees counter-clockwise
|
||||
turn() is weird:
|
||||
turn(icon, angle) turns icon by angle degrees clockwise
|
||||
turn(matrix, angle) turns matrix by angle degrees clockwise
|
||||
turn(dir, angle) turns dir by angle degrees counter-clockwise
|
||||
*/
|
||||
|
||||
/proc/dirs_to_corner_states(list/dirs)
|
||||
|
||||
@@ -45,4 +45,4 @@ Frontend path: tgui\packages\tgui\interfaces\TraitTutorial.tsx
|
||||
. = TRUE
|
||||
|
||||
/datum/tgui_module/trait_tutorial_tgui/tgui_state(mob/user)
|
||||
return GLOB.tgui_always_state
|
||||
return GLOB.tgui_always_state
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Vore specific code for /obj/machinery/door/airlock/lift
|
||||
|
||||
/obj/machinery/door/airlock/lift/emag_act(var/uses_left, var/mob/user)
|
||||
to_chat(user, span_danger("This door is internally controlled."))
|
||||
return 0 // Prevents the cryptographic sequencer from using a charge fruitlessly
|
||||
to_chat(user, span_danger("This door is internally controlled."))
|
||||
return 0 // Prevents the cryptographic sequencer from using a charge fruitlessly
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
/obj/turbolift_map_holder
|
||||
name = "turbolift map placeholder"
|
||||
icon = 'icons/obj/turbolift_preview_3x3.dmi'
|
||||
dir = SOUTH // Direction of the holder determines the placement of the lift control panel and doors.
|
||||
var/depth = 1 // Number of floors to generate, including the initial floor.
|
||||
dir = SOUTH // Direction of the holder determines the placement of the lift control panel and doors.
|
||||
var/depth = 1 // Number of floors to generate, including the initial floor.
|
||||
var/lift_size_x = 2 // Number of turfs on each axis to generate in addition to the first
|
||||
var/lift_size_y = 2 // ie. a 3x3 lift would have a value of 2 in each of these variables.
|
||||
|
||||
// Various turf and door types used when generating the turbolift floors.
|
||||
var/wall_type = /turf/simulated/wall/elevator
|
||||
var/wall_type = /turf/simulated/wall/elevator
|
||||
var/floor_type = /turf/simulated/floor/tiled/dark
|
||||
var/door_type = /obj/machinery/door/airlock/lift
|
||||
var/door_type = /obj/machinery/door/airlock/lift
|
||||
|
||||
var/list/areas_to_use = list()
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
panel_ext.set_dir(udir)
|
||||
cfloor.ext_panel = panel_ext
|
||||
|
||||
// Place lights
|
||||
// Place lights
|
||||
var/turf/placing1 = locate(light_x1, light_y1, cz)
|
||||
var/turf/placing2 = locate(light_x2, light_y2, cz)
|
||||
var/obj/machinery/light/light1 = new(placing1, light)
|
||||
|
||||
@@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(digest_modes, list())
|
||||
return null
|
||||
|
||||
/datum/digest_mode/proc/handle_atoms(obj/belly/B, list/touchable_atoms)
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/datum/digest_mode/digest
|
||||
id = DM_DIGEST
|
||||
|
||||
@@ -787,45 +787,45 @@
|
||||
|
||||
// This is about 0.896m^3 of atmosphere
|
||||
/datum/gas_mixture/belly_air
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
|
||||
/datum/gas_mixture/belly_air/New()
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_O2 = 21,
|
||||
GAS_N2 = 79)
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_O2 = 21,
|
||||
GAS_N2 = 79)
|
||||
|
||||
/datum/gas_mixture/belly_air/vox
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
|
||||
/datum/gas_mixture/belly_air/vox/New()
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_PHORON = 100)
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_PHORON = 100)
|
||||
|
||||
/datum/gas_mixture/belly_air/zaddat
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 300
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 300
|
||||
|
||||
/datum/gas_mixture/belly_air/zaddat/New()
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_O2 = 100)
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_O2 = 100)
|
||||
|
||||
/datum/gas_mixture/belly_air/nitrogen_breather
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
volume = 2500
|
||||
temperature = 293.150
|
||||
total_moles = 104
|
||||
|
||||
/datum/gas_mixture/belly_air/nitrogen_breather/New()
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_N2 = 100)
|
||||
. = ..()
|
||||
gas = list(
|
||||
GAS_N2 = 100)
|
||||
|
||||
|
||||
/mob/living/proc/feed_grabbed_to_self_falling_nom(var/mob/living/user, var/mob/living/prey)
|
||||
|
||||
@@ -135,7 +135,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
|
||||
|
||||
//
|
||||
// Belly searching for simplifying other procs
|
||||
// Mostly redundant now with belly-objects and isbelly(loc)
|
||||
// Mostly redundant now with belly-objects and isbelly(loc)
|
||||
//
|
||||
/proc/check_belly(atom/movable/A)
|
||||
return isbelly(A.loc)
|
||||
|
||||
@@ -2709,10 +2709,10 @@ Departamental Swimsuits, for general use
|
||||
//sixberry: Thistle
|
||||
|
||||
/obj/item/clothing/head/fluff/memory_crown
|
||||
name = "Memory Crown"
|
||||
desc = "A thorned crown sporting numerous amethyst inserts, all of which seem to glow faintly in the dark. Just holding it makes you feel as though you've forgotten something unpleasant."
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "memorycrown"
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
item_state = "memorycrown_onmob"
|
||||
slot_flags = SLOT_HEAD
|
||||
name = "Memory Crown"
|
||||
desc = "A thorned crown sporting numerous amethyst inserts, all of which seem to glow faintly in the dark. Just holding it makes you feel as though you've forgotten something unpleasant."
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "memorycrown"
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
item_state = "memorycrown_onmob"
|
||||
slot_flags = SLOT_HEAD
|
||||
|
||||
@@ -1164,22 +1164,21 @@
|
||||
|
||||
//RadiantAurora: Tiemli Kroto
|
||||
/obj/item/clothing/glasses/welding/tiemgogs
|
||||
name = "custom-fitted welding goggles"
|
||||
desc = "A pair of thick, custom-fitted goggles with LEDs above the lenses. Ruggedly engraved below the lenses is the name 'Tiemli Kroto'."
|
||||
name = "custom-fitted welding goggles"
|
||||
desc = "A pair of thick, custom-fitted goggles with LEDs above the lenses. Ruggedly engraved below the lenses is the name 'Tiemli Kroto'."
|
||||
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "tiemgogs"
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "tiemgogs"
|
||||
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "tiemgogs"
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "tiemgogs"
|
||||
|
||||
/obj/item/clothing/glasses/welding/tiemgogs/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
if(..())
|
||||
if(H.ckey != "radiantaurora")
|
||||
to_chat(H, span_warning("These don't look like they were made to fit you..."))
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
if(..())
|
||||
if(H.ckey != "radiantaurora")
|
||||
to_chat(H, span_warning("These don't look like they were made to fit you..."))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
//Ryumi - Nikki Yumeno
|
||||
/obj/item/rig/nikki
|
||||
@@ -1224,11 +1223,11 @@
|
||||
|
||||
//Nickcrazy - Damon Bones Xrim
|
||||
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
|
||||
name = "Security Bomber Jacket"
|
||||
desc = "A black bomber jacket with the security emblem sewn onto it."
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_override = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "bombersec"
|
||||
name = "Security Bomber Jacket"
|
||||
desc = "A black bomber jacket with the security emblem sewn onto it."
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_override = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "bombersec"
|
||||
|
||||
|
||||
//pimientopyro - Scylla Casmus
|
||||
@@ -1479,21 +1478,21 @@
|
||||
|
||||
//Bricker98:Nettie Stough
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/nettie
|
||||
name = "Remodeled Tablet"
|
||||
desc = "A tablet computer, looks quite high-tech and has some emblems on the back."
|
||||
icon = 'icons/obj/modular_tablet.dmi'
|
||||
icon_state = "elite"
|
||||
icon_state_unpowered = "elite"
|
||||
name = "Remodeled Tablet"
|
||||
desc = "A tablet computer, looks quite high-tech and has some emblems on the back."
|
||||
icon = 'icons/obj/modular_tablet.dmi'
|
||||
icon_state = "elite"
|
||||
icon_state_unpowered = "elite"
|
||||
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/nettie/install_default_hardware()
|
||||
..()
|
||||
processor_unit = new/obj/item/computer_hardware/processor_unit/small(src)
|
||||
tesla_link = new/obj/item/computer_hardware/tesla_link(src)
|
||||
hard_drive = new/obj/item/computer_hardware/hard_drive/(src)
|
||||
network_card = new/obj/item/computer_hardware/network_card/advanced(src)
|
||||
nano_printer = new/obj/item/computer_hardware/nano_printer(src)
|
||||
battery_module = new/obj/item/computer_hardware/battery_module(src)
|
||||
battery_module.charge_to_full()
|
||||
..()
|
||||
processor_unit = new/obj/item/computer_hardware/processor_unit/small(src)
|
||||
tesla_link = new/obj/item/computer_hardware/tesla_link(src)
|
||||
hard_drive = new/obj/item/computer_hardware/hard_drive/(src)
|
||||
network_card = new/obj/item/computer_hardware/network_card/advanced(src)
|
||||
nano_printer = new/obj/item/computer_hardware/nano_printer(src)
|
||||
battery_module = new/obj/item/computer_hardware/battery_module(src)
|
||||
battery_module.charge_to_full()
|
||||
|
||||
|
||||
//Stobarico - Kyu Comet
|
||||
|
||||
@@ -56,78 +56,78 @@
|
||||
return max(((started_time + vote_time - world.time)/10), 0)
|
||||
|
||||
/datum/vote/proc/calculate_result()
|
||||
if(!length(voted))
|
||||
to_chat(world, span_interface("No votes were cast. Do you all hate democracy?!"))
|
||||
return null
|
||||
if(!length(voted))
|
||||
to_chat(world, span_interface("No votes were cast. Do you all hate democracy?!"))
|
||||
return null
|
||||
|
||||
return calculate_vote_result(voted, choices, vote_result_type)
|
||||
return calculate_vote_result(voted, choices, vote_result_type)
|
||||
|
||||
|
||||
/datum/vote/proc/calculate_vote_result(var/list/voted, var/list/choices, var/vote_result_type)
|
||||
var/list/results = list()
|
||||
var/list/results = list()
|
||||
|
||||
for(var/ck in voted)
|
||||
if(voted[ck] in results)
|
||||
results[voted[ck]]++
|
||||
else
|
||||
results[voted[ck]] = 1
|
||||
for(var/ck in voted)
|
||||
if(voted[ck] in results)
|
||||
results[voted[ck]]++
|
||||
else
|
||||
results[voted[ck]] = 1
|
||||
|
||||
var/maxvotes = 0
|
||||
for(var/res in results)
|
||||
maxvotes = max(results[res], maxvotes)
|
||||
var/maxvotes = 0
|
||||
for(var/res in results)
|
||||
maxvotes = max(results[res], maxvotes)
|
||||
|
||||
var/list/winning_options = list()
|
||||
var/list/winning_options = list()
|
||||
|
||||
for(var/res in results)
|
||||
if(results[res] == maxvotes)
|
||||
winning_options |= res
|
||||
for(var/res in results)
|
||||
if(results[res] == maxvotes)
|
||||
winning_options |= res
|
||||
|
||||
for(var/res in results)
|
||||
to_chat(world, span_interface("<code>[res]</code> - [results[res]] vote\s"))
|
||||
for(var/res in results)
|
||||
to_chat(world, span_interface("<code>[res]</code> - [results[res]] vote\s"))
|
||||
|
||||
switch(vote_result_type)
|
||||
if(VOTE_RESULT_TYPE_MAJORITY)
|
||||
if(length(winning_options) == 1)
|
||||
var/res = winning_options[1]
|
||||
if(res in choices)
|
||||
to_chat(world, span_interface(span_bold("<code>[res]</code> won the vote!")))
|
||||
return res
|
||||
else
|
||||
to_chat(world, span_interface("The winner of the vote ([sanitize(res)]) isn't a valid choice? What the heck?"))
|
||||
stack_trace("Vote concluded with an invalid answer. Answer was [sanitize(res)], choices were [json_encode(choices)]")
|
||||
return null
|
||||
switch(vote_result_type)
|
||||
if(VOTE_RESULT_TYPE_MAJORITY)
|
||||
if(length(winning_options) == 1)
|
||||
var/res = winning_options[1]
|
||||
if(res in choices)
|
||||
to_chat(world, span_interface(span_bold("<code>[res]</code> won the vote!")))
|
||||
return res
|
||||
else
|
||||
to_chat(world, span_interface("The winner of the vote ([sanitize(res)]) isn't a valid choice? What the heck?"))
|
||||
stack_trace("Vote concluded with an invalid answer. Answer was [sanitize(res)], choices were [json_encode(choices)]")
|
||||
return null
|
||||
|
||||
to_chat(world, span_interface(span_bold("No clear winner. The vote did not pass.")))
|
||||
return null
|
||||
to_chat(world, span_interface(span_bold("No clear winner. The vote did not pass.")))
|
||||
return null
|
||||
|
||||
if(VOTE_RESULT_TYPE_SKEWED)
|
||||
var/required_votes = ceil(length(voted) * 0.7) // 70% of total votes
|
||||
if(maxvotes >= required_votes && length(winning_options) == 1)
|
||||
var/res = winning_options[1]
|
||||
if(res in choices)
|
||||
to_chat(world, span_interface(span_bold("<code>[res]</code> won the vote with a 70% majority!")))
|
||||
return res
|
||||
else
|
||||
to_chat(world, span_interface("The winner of the vote ([sanitize(res)]) isn't a valid choice? What the heck?"))
|
||||
stack_trace("Vote concluded with an invalid answer. Answer was [sanitize(res)], choices were [json_encode(choices)]")
|
||||
return null
|
||||
if(VOTE_RESULT_TYPE_SKEWED)
|
||||
var/required_votes = ceil(length(voted) * 0.7) // 70% of total votes
|
||||
if(maxvotes >= required_votes && length(winning_options) == 1)
|
||||
var/res = winning_options[1]
|
||||
if(res in choices)
|
||||
to_chat(world, span_interface(span_bold("<code>[res]</code> won the vote with a 70% majority!")))
|
||||
return res
|
||||
else
|
||||
to_chat(world, span_interface("The winner of the vote ([sanitize(res)]) isn't a valid choice? What the heck?"))
|
||||
stack_trace("Vote concluded with an invalid answer. Answer was [sanitize(res)], choices were [json_encode(choices)]")
|
||||
return null
|
||||
|
||||
to_chat(world, span_interface(span_bold("No option received 70% of the votes. The vote did not pass.")))
|
||||
return null
|
||||
to_chat(world, span_interface(span_bold("No option received 70% of the votes. The vote did not pass.")))
|
||||
return null
|
||||
|
||||
return null
|
||||
return null
|
||||
|
||||
/datum/vote/proc/announce(start_text, var/time = vote_time)
|
||||
to_chat(world, span_lightpurple("Type <b>vote</b> or click <a href='byond://?src=\ref[src];[HrefToken()];vote=open'>here</a> to place your vote. \
|
||||
You have [time/10] seconds to vote."))
|
||||
world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3)
|
||||
to_chat(world, span_lightpurple("Type <b>vote</b> or click <a href='byond://?src=\ref[src];[HrefToken()];vote=open'>here</a> to place your vote. \
|
||||
You have [time/10] seconds to vote."))
|
||||
world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3)
|
||||
|
||||
/datum/vote/Topic(href, list/href_list)
|
||||
if(href_list["vote"] == "open")
|
||||
if(src)
|
||||
tgui_interact(usr)
|
||||
else
|
||||
to_chat(usr, "There is no active vote to participate in.")
|
||||
if(href_list["vote"] == "open")
|
||||
if(src)
|
||||
tgui_interact(usr)
|
||||
else
|
||||
to_chat(usr, "There is no active vote to participate in.")
|
||||
|
||||
/datum/vote/proc/tick()
|
||||
if(remaining() == 0)
|
||||
|
||||
Reference in New Issue
Block a user