mirror of
https://github.com/KabKebab/GS13.git
synced 2026-02-09 23:27:37 +00:00
Merge branch 'master' into various-fixes
This commit is contained in:
@@ -1247,6 +1247,11 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
var/obj/item/reagent_containers/food/snacks/store/bread/plain/funnyBread = new(get_turf(target))
|
||||
target.forceMove(funnyBread)
|
||||
|
||||
/client/proc/bookify(atom/movable/target)
|
||||
var/obj/item/reagent_containers/food/snacks/store/book/funnyBook = new(get_turf(target))
|
||||
target.forceMove(funnyBook)
|
||||
funnyBook.name = "Book of " + target.name
|
||||
|
||||
/client/proc/smite(mob/living/carbon/human/target as mob)
|
||||
set name = "Smite"
|
||||
set category = "Fun"
|
||||
@@ -1268,7 +1273,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
ADMIN_PUNISHMENT_TABLETIDESTATIONWIDE,
|
||||
ADMIN_PUNISHMENT_FAKEBWOINK,
|
||||
ADMIN_PUNISHMENT_NUGGET,
|
||||
ADMIN_PUNISHMENT_BREADIFY)
|
||||
ADMIN_PUNISHMENT_BREADIFY,
|
||||
ADMIN_PUNISHMENT_BOOKIFY)
|
||||
|
||||
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
|
||||
|
||||
@@ -1379,6 +1385,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/breadify, target), BREADIFY_TIME)
|
||||
#undef BREADIFY_TIME
|
||||
if(ADMIN_PUNISHMENT_BOOKIFY)
|
||||
#define BOOKIFY_TIME (2 SECONDS)
|
||||
var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book")
|
||||
var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect")
|
||||
target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/bookify, target), BOOKIFY_TIME)
|
||||
playsound(target, 'hyperstation/sound/misc/bookify.ogg', 60, 1)
|
||||
#undef BOOKIFY_TIME
|
||||
|
||||
punish_log(target, punishment)
|
||||
|
||||
|
||||
@@ -609,6 +609,8 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
|
||||
icon_state = "datadisk0"
|
||||
drop_sound = 'sound/items/handling/disk_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/disk_pickup.ogg'
|
||||
|
||||
/obj/item/disk/nuclear
|
||||
name = "nuclear authentication disk"
|
||||
|
||||
@@ -203,6 +203,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
|
||||
anchored = TRUE // should only appear in vis_contents, but to be safe
|
||||
layer = FLY_LAYER
|
||||
appearance_flags = TILE_BOUND
|
||||
vis_flags = NONE
|
||||
|
||||
/obj/effect/overlay/gas/New(state, alph)
|
||||
. = ..()
|
||||
|
||||
@@ -240,7 +240,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
|
||||
|
||||
prefs.last_ip = address //these are gonna be used for banning
|
||||
prefs.last_id = computer_id //these are gonna be used for banning
|
||||
fps = 40
|
||||
fps = prefs.clientfps
|
||||
|
||||
if(fexists(roundend_report_file()))
|
||||
add_verb(src, /client/proc/show_previous_roundend_report)
|
||||
|
||||
@@ -180,7 +180,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"womb_fluid" = /datum/reagent/consumable/femcum,
|
||||
"ipc_screen" = "Sunburst",
|
||||
"ipc_antenna" = "None",
|
||||
"flavor_text" = ""
|
||||
"flavor_text" = "",
|
||||
"ooc_text" = ""
|
||||
)
|
||||
|
||||
/// Security record note section
|
||||
@@ -383,7 +384,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(2)
|
||||
update_preview_icon()
|
||||
dat += "<table><tr><td width='340px' height='300px' valign='top'>"
|
||||
dat += "<h2>Flavor Text</h2>"
|
||||
dat += "<h2>General Examine Text</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=flavor_text;task=input'><b>Set Examine Text</b></a><br>"
|
||||
if(length(features["flavor_text"]) <= 40)
|
||||
if(!length(features["flavor_text"]))
|
||||
@@ -392,6 +393,16 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "[features["flavor_text"]]"
|
||||
else
|
||||
dat += "[TextPreview(features["flavor_text"])]...<BR>"
|
||||
dat += "<h2>OOC Text</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=ooc_text;task=input'><b>Set OOC Text</b></a><br>"
|
||||
if(length(features["ooc_text"]) <= 40)
|
||||
if(!length(features["ooc_text"]))
|
||||
dat += "\[...\]"
|
||||
else
|
||||
dat += "[features["ooc_text"]]"
|
||||
else
|
||||
dat += "[TextPreview(features["ooc_text"])]...<BR>"
|
||||
|
||||
dat += "<h2>Body</h2>"
|
||||
dat += "<b>Gender:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]</a><BR>"
|
||||
dat += "<b>Species:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=species;task=input'>[pref_species.id]</a><BR>"
|
||||
@@ -1695,11 +1706,18 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
medical_records = rec
|
||||
|
||||
if("flavor_text")
|
||||
var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", html_decode(features["flavor_text"]), MAX_MESSAGE_LEN, TRUE)
|
||||
var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This should be IC, and description people can deduce at a quick glance.", "Flavor Text", html_decode(features["flavor_text"]), MAX_MESSAGE_LEN, TRUE)
|
||||
if(msg)
|
||||
msg = msg
|
||||
features["flavor_text"] = msg
|
||||
|
||||
if("ooc_text")
|
||||
var/msg = stripped_multiline_input(usr, "Set the OOC text in your 'examine' verb. This should be OOC only!", "OOC Text", html_decode(features["ooc_text"]), MAX_MESSAGE_LEN, TRUE)
|
||||
if(msg)
|
||||
msg = msg
|
||||
features["ooc_text"] = msg
|
||||
|
||||
|
||||
if("hide_ckey")
|
||||
hide_ckey = !hide_ckey
|
||||
if(user)
|
||||
@@ -2532,14 +2550,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
if("allow_midround_antag")
|
||||
toggles ^= MIDROUND_ANTAG
|
||||
|
||||
|
||||
if("sync_antag_with_chars")
|
||||
toggles ^= ANTAG_SYNC_WITH_CHARS
|
||||
if(!(toggles & ANTAG_SYNC_WITH_CHARS) && path)
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
if(S)
|
||||
S["special_roles"] >> be_special
|
||||
|
||||
|
||||
if("copy_antag_to_chars")
|
||||
if(path)
|
||||
var/savefile/S = new /savefile(path)
|
||||
@@ -2553,7 +2571,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
to_chat(parent, "<span class='notice'>Successfully copied antagonist preferences to all characters.</span>")
|
||||
else
|
||||
to_chat(parent, "<span class='notice'>Could not write to file.</span>")
|
||||
|
||||
|
||||
if("reset_antag")
|
||||
be_special = list()
|
||||
|
||||
|
||||
@@ -428,7 +428,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//flavor text
|
||||
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
|
||||
if((S["flavor_text"] != "") && (S["flavor_text"] != null) && S["flavor_text"]) //If old text isn't null and isn't "" but still exists.
|
||||
S["flavor_text"] >> features["flavor_text"] //Load old flavortext as current dna-based flavortext
|
||||
S["flavor_text"] >> features["flavor_text"] //Load old flavortext as current dna-based flavortext
|
||||
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"]) //Save it in our new type of flavor-text
|
||||
WRITE_FILE(S["flavor_text"] , "") //Remove old flavortext, completing the cut-and-paste into the new format.
|
||||
@@ -436,6 +436,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
else //We have no old flavortext, default to new
|
||||
S["feature_flavor_text"] >> features["flavor_text"]
|
||||
|
||||
if((S["ooc_text"] != "") && (S["ooc_text"] != null) && S["ooc_text"])
|
||||
S["ooc_text"] >> features["ooc_text"]
|
||||
|
||||
WRITE_FILE(S["feature_ooc_text"], features["ooc_text"]) //Save it in our new type of flavor-text
|
||||
WRITE_FILE(S["ooc_text"], "") //Remove old flavortext, completing the cut-and-paste into the new format.
|
||||
|
||||
else
|
||||
S["feature_ooc_text"] >> features["ooc_text"]
|
||||
|
||||
//try to fix any outdated data if necessary
|
||||
if(needs_update >= 0)
|
||||
|
||||
@@ -94,32 +94,6 @@
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/head/stalhelm
|
||||
name = "Stalhelm"
|
||||
desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern."
|
||||
icon_state = "stalhelm"
|
||||
item_state = "stalhelm"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
|
||||
|
||||
/obj/item/clothing/head/panzer
|
||||
name = "Panzer Cap"
|
||||
desc = "Command any mech in style."
|
||||
icon_state = "panzercap"
|
||||
item_state = "panzercap"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
|
||||
|
||||
/obj/item/clothing/head/naziofficer
|
||||
name = "Officer Cap"
|
||||
desc = "Style is all that matters."
|
||||
icon_state = "officercap"
|
||||
item_state = "officercap"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
|
||||
|
||||
|
||||
/obj/item/clothing/head/russobluecamohat
|
||||
name = "russian blue camo beret"
|
||||
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
|
||||
|
||||
@@ -1,25 +1,5 @@
|
||||
|
||||
//VG Ports
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
name = "nazi hardhelmet"
|
||||
desc = "This is the face of das vaterland's top elite. Gas or energy are your only escapes."
|
||||
item_state = "hardsuit0-nazi"
|
||||
icon_state = "hardsuit0-nazi"
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
item_color = "nazi"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/nazi
|
||||
name = "nazi hardsuit"
|
||||
desc = "The attire of a true krieger. All shall fall, and only das vaterland will remain."
|
||||
item_state = "hardsuit-nazi"
|
||||
icon_state = "hardsuit-nazi"
|
||||
slowdown = 1
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
|
||||
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/soviet
|
||||
name = "soviet hardhelmet"
|
||||
desc = "Crafted with the pride of the proletariat. The vengeful gaze of the visor roots out all fascists and capitalists."
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
var/togglename = null
|
||||
var/suittoggled = FALSE
|
||||
|
||||
drop_sound = 'sound/items/handling/cloth_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
|
||||
var/adjusted = NORMAL_STYLE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
var/tauric = FALSE //Citadel Add for tauric hardsuits
|
||||
|
||||
@@ -963,4 +963,12 @@
|
||||
icon_state = "enzojacket"
|
||||
item_state = "enzojacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
//End
|
||||
//End
|
||||
|
||||
//Might get moved later since I have no clue where to put this stuff for now - Luke_vale
|
||||
/obj/item/clothing/suit/toggle/labcoat/formallab
|
||||
name = "winter labcoat"
|
||||
desc = "A stark white labcoat, thicker and kitted out with extra fluff to keep you warm even on the coldest of mad sceinctist nights."
|
||||
icon_state = "labcoat_formal"
|
||||
item_state = "labcoat_formal"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
var/obj/item/clothing/accessory/attached_accessory
|
||||
var/mutable_appearance/accessory_overlay
|
||||
mutantrace_variation = MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to.
|
||||
equip_sound = 'sound/items/equip/jumpsuit_equip.ogg'
|
||||
|
||||
drop_sound = 'sound/items/handling/cloth_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
|
||||
|
||||
/obj/item/clothing/under/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
@@ -156,4 +160,4 @@
|
||||
if(SENSOR_COORDS)
|
||||
. += "Its vital tracker and tracking beacon appear to be enabled."
|
||||
if(attached_accessory)
|
||||
. += "\A [attached_accessory] is attached to it."
|
||||
. += "\A [attached_accessory] is attached to it."
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
for(var/V in GLOB.player_list)
|
||||
var/mob/M = V
|
||||
if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z))
|
||||
M.playsound_local(M, 'sound/ambience/aurora_caelus_new.ogg', 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it.
|
||||
M.playsound_local(M, pick('sound/ambience/aurora_caelus_new.ogg','sound/ambience/aurora_caelus.ogg'), 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it.
|
||||
start_checking()
|
||||
|
||||
/datum/round_event/aurora_caelus/proc/start_checking()
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
resistance_flags = ACID_PROOF
|
||||
obj_flags = UNIQUE_RENAME
|
||||
|
||||
drop_sound = 'sound/items/handling/drinkglass_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/drinkglass_pickup.ogg'
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype)
|
||||
cut_overlays()
|
||||
if(reagents.reagent_list.len)
|
||||
|
||||
@@ -378,3 +378,16 @@ All foods are distributed among various categories. Use common sense.
|
||||
TB.MouseDrop(over)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/book
|
||||
name = "book"
|
||||
desc = "Could it be? A LoR reference? And is it... Edible?"
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "book"
|
||||
tastes = list("broken dreams and promises" = 10)
|
||||
foodtype = GROSS
|
||||
dunkable = TRUE
|
||||
volume = 80
|
||||
bitesize = 4
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1)
|
||||
list_reagents = list(/datum/reagent/consumable/sodiumchloride = 1)
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
|
||||
// Laughing Peas
|
||||
/obj/item/seeds/peas/laugh
|
||||
name = "pack of laughing peas"
|
||||
desc = "These seeds give off a very soft purple glow.. they should grow into Laughing Peas."
|
||||
name = "pack of laughin' peas"
|
||||
desc = "These seeds give off a very soft purple glow.. they should grow into Laughin' Peas."
|
||||
icon_state = "seed-laughpeas"
|
||||
species = "laughpeas"
|
||||
plantname = "Laughing Peas"
|
||||
plantname = "Laughin' Peas"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/laugh
|
||||
maturation = 7
|
||||
potency = 10
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/laugh
|
||||
seed = /obj/item/seeds/peas/laugh
|
||||
name = "pod of laughing peas"
|
||||
name = "pod of laughin' peas"
|
||||
desc = "Ridens Cicer, guaranteed to improve your mood dramatically upon consumption!"
|
||||
icon_state = "laughpeas"
|
||||
filling_color = "#ee7bee"
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
|
||||
ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
|
||||
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING)
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING, ACCESS_PSYCH)
|
||||
|
||||
/proc/get_all_centcom_access()
|
||||
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN)
|
||||
@@ -165,7 +165,7 @@
|
||||
if(2) //security
|
||||
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP)
|
||||
if(3) //medbay
|
||||
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO)
|
||||
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PSYCH)
|
||||
if(4) //research
|
||||
return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK)
|
||||
if(5) //engineering and maintenance
|
||||
@@ -332,6 +332,8 @@
|
||||
return "Network Access"
|
||||
if(ACCESS_CLONING)
|
||||
return "Cloning Room"
|
||||
if(ACCESS_PSYCH)
|
||||
return "Psychology Office"
|
||||
|
||||
/proc/get_centcom_access_desc(A)
|
||||
switch(A)
|
||||
@@ -357,7 +359,7 @@
|
||||
/proc/get_all_jobs()
|
||||
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
|
||||
"Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Engineering Intern",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Medical Resident",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Psychologist", "Medical Resident",
|
||||
"Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Rookie")
|
||||
|
||||
/proc/get_all_job_icons() //For all existing HUD icons
|
||||
|
||||
@@ -59,7 +59,7 @@ Captain
|
||||
suit = /obj/item/clothing/suit/armor/vest/capcarapace
|
||||
shoes = /obj/item/clothing/shoes/sneakers/brown
|
||||
head = /obj/item/clothing/head/caphat
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1)
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/captain
|
||||
satchel = /obj/item/storage/backpack/satchel/cap
|
||||
@@ -104,13 +104,13 @@ Head of Personnel
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH)
|
||||
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity)
|
||||
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager")
|
||||
|
||||
/datum/job/engineer
|
||||
alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician", "Structural Engineer", "Station Architect")
|
||||
alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician", "Structural Engineer", "Mechanic", "Station Architect")
|
||||
|
||||
/datum/job/atmos
|
||||
alt_titles = list("Firefighter", "Life Support Specialist")
|
||||
alt_titles = list("Firefighter", "Life Support Specialist", "Disposals Technician")
|
||||
|
||||
/datum/job/junior_engineer
|
||||
|
||||
//Service
|
||||
/datum/job/assistant
|
||||
alt_titles = list("Civilian", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist")
|
||||
alt_titles = list("Civilian", "Morale Officer", "Stripper", "Off-Duty", "Escort", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist")
|
||||
|
||||
/datum/job/cook
|
||||
alt_titles = list("Cook", "Culinary Artist", "Butcher", "Chef de partie")
|
||||
@@ -23,7 +23,7 @@
|
||||
alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Farmer", "Beekeeper")
|
||||
|
||||
/datum/job/curator
|
||||
alt_titles = list("Journalist", "Librarian")
|
||||
alt_titles = list("Journalist", "Librarian", "Keeper")
|
||||
|
||||
/datum/job/chaplain
|
||||
alt_titles = list("Priest", "Priestess", "Bishop", "Prior", "Monk", "Nun", "Counselor")
|
||||
@@ -38,10 +38,10 @@
|
||||
alt_titles = list("Jester", "Comedian")
|
||||
|
||||
/datum/job/mime
|
||||
alt_titles = list("Performer")
|
||||
alt_titles = list("Performer", "Pantomime", "Mimic")
|
||||
|
||||
/datum/job/bartender
|
||||
alt_titles = list("Mixologist", "Bar Owner")
|
||||
alt_titles = list("Mixologist", "Bar Owner", "Barmaid")
|
||||
|
||||
//Science
|
||||
/datum/job/rd
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
//Medical
|
||||
/datum/job/cmo
|
||||
alt_titles = list("Medical Director")
|
||||
alt_titles = list("Medical Director", "Medical Administrator")
|
||||
|
||||
/datum/job/doctor
|
||||
alt_titles = list("Nurse", "Surgeon", "Physician", "Paramedic")
|
||||
@@ -69,19 +69,22 @@
|
||||
alt_titles = list("Microbiologist", "Biochemist", "Pathologist")
|
||||
|
||||
/datum/job/geneticist
|
||||
alt_titles = list("Gene Therapist")
|
||||
alt_titles = list("Gene Therapist", "Genetics Researcher")
|
||||
|
||||
/datum/job/psychologist
|
||||
alt_titles = list("Therapist", "Psychiatrist")
|
||||
|
||||
/datum/job/junior_doctor
|
||||
|
||||
//Security
|
||||
/datum/job/hos
|
||||
alt_titles = list("Chief of Security", "Security Commander")
|
||||
alt_titles = list("Chief of Security", "Security Commander", "Sheriff")
|
||||
|
||||
/datum/job/warden
|
||||
alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator")
|
||||
alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent")
|
||||
|
||||
/datum/job/officer
|
||||
alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Cadet")
|
||||
alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Guardsman", "Security Cadet")
|
||||
|
||||
/datum/job/detective
|
||||
alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe")
|
||||
@@ -100,7 +103,7 @@
|
||||
|
||||
//Command
|
||||
/datum/job/captain
|
||||
alt_titles = list("Station Director", "Station Commander", "Station Overseer")
|
||||
alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar")
|
||||
|
||||
/datum/job/hop
|
||||
alt_titles = list("Personnel Manager", "Staff Administrator")
|
||||
alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator")
|
||||
|
||||
@@ -22,10 +22,10 @@ Chief Medical Officer
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH)
|
||||
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
|
||||
@@ -42,7 +42,7 @@ Chief Medical Officer
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat/cmo
|
||||
l_hand = /obj/item/storage/firstaid/regular
|
||||
suit_store = /obj/item/flashlight/pen
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1)
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/medic
|
||||
satchel = /obj/item/storage/backpack/satchel/med
|
||||
@@ -221,7 +221,6 @@ Virologist
|
||||
satchel = /obj/item/storage/backpack/satchel/vir
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
|
||||
/*
|
||||
Junior Doctor
|
||||
*/
|
||||
@@ -262,3 +261,41 @@ Junior Doctor
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
chameleon_extras = /obj/item/gun/syringe
|
||||
|
||||
/*
|
||||
Psychologist
|
||||
*/
|
||||
/datum/job/psychologist
|
||||
title = "Psychologist"
|
||||
flag = MED_PSYCH
|
||||
department_head = list("Chief Medical Officer", "Head of Personnel")
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
minimal_player_age = 1
|
||||
supervisors = "the chief medical officer, and head of personnel"
|
||||
selection_color = "#ffeef0"
|
||||
exp_requirements = 240
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
outfit = /datum/outfit/job/doctor/psychologist
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH)
|
||||
|
||||
/datum/outfit/job/doctor/psychologist
|
||||
name = "Psychologist"
|
||||
jobtype = /datum/job/psychologist
|
||||
|
||||
belt = /obj/item/pda/medical
|
||||
ears = /obj/item/radio/headset/headset_med
|
||||
uniform = /obj/item/clothing/under/lawyer/blacksuit
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
l_hand = /obj/item/clipboard
|
||||
|
||||
backpack_contents = list(/obj/item/storage/pill_bottle/mannitol, /obj/item/storage/pill_bottle/psicodine, /obj/item/storage/pill_bottle/paxpsych, /obj/item/storage/pill_bottle/happinesspsych, /obj/item/storage/pill_bottle/lsdpsych)
|
||||
|
||||
backpack = /obj/item/storage/backpack/medic
|
||||
satchel = /obj/item/storage/backpack/satchel/med
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
@@ -55,7 +55,7 @@ Head of Security
|
||||
suit_store = /obj/item/gun/energy/e_gun
|
||||
r_pocket = /obj/item/assembly/flash/handheld
|
||||
l_pocket = /obj/item/restraints/handcuffs
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1)
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/security
|
||||
satchel = /obj/item/storage/backpack/satchel/sec
|
||||
|
||||
@@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(medical_positions, list(
|
||||
"Geneticist",
|
||||
"Virologist",
|
||||
"Chemist",
|
||||
"Psychologist",
|
||||
"Medical Resident"))
|
||||
|
||||
|
||||
|
||||
@@ -56,25 +56,7 @@
|
||||
return
|
||||
stored.attack_hand(src) // take out thing from backpack
|
||||
return
|
||||
switch(_key)
|
||||
if("Shift")
|
||||
if(!user.prefs.sprint_spacebar)
|
||||
user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE) //Yes, this looks hacky. Yes, this works.
|
||||
return
|
||||
if("Space")
|
||||
if(user.prefs.sprint_spacebar)
|
||||
user.prefs.sprint_toggle ? togglesprint() : sprint_hotkey(TRUE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/key_up(_key, client/user)
|
||||
switch(_key)
|
||||
if("Shift")
|
||||
if(!user.prefs.sprint_spacebar && !user.prefs.sprint_toggle)
|
||||
sprint_hotkey(FALSE)
|
||||
return
|
||||
if("Space")
|
||||
if(user.prefs.sprint_spacebar && !user.prefs.sprint_toggle)
|
||||
sprint_hotkey(FALSE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -9,14 +9,7 @@
|
||||
if("Q")
|
||||
uneq_active()
|
||||
return
|
||||
if("Shift")
|
||||
sprint_hotkey(TRUE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/living/silicon/robot/key_up(_key, client/user)
|
||||
switch(_key)
|
||||
if("Shift")
|
||||
sprint_hotkey(FALSE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -193,6 +193,8 @@
|
||||
var/unique = 0 //0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
|
||||
var/title //The real name of the book.
|
||||
var/window_size = null // Specific window size for the book, i.e: "1920x1080", Size x Width
|
||||
drop_sound = 'sound/items/handling/book_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/book_pickup.ogg'
|
||||
|
||||
/obj/item/book/attack_self(mob/user)
|
||||
if(is_blind(user))
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
var/t_is = p_are()
|
||||
var/obscure_name
|
||||
var/dispSize = round(12*size_multiplier) // gets the character's sprite size percent and converts it to the nearest half foot
|
||||
var/output = ""
|
||||
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
@@ -23,11 +24,16 @@
|
||||
if (vassDesc != "")
|
||||
. += vassDesc
|
||||
|
||||
output = "<center>"
|
||||
var/list/obscured = check_obscured_slots()
|
||||
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
|
||||
|
||||
if(ishuman(src)) //user just returned, y'know, the user's own species. dumb.
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(gender)
|
||||
output += "[icon2html('hyperstation/icons/chat/gender.dmi', world, gender)]"
|
||||
|
||||
output += "<b>[src.name]</b>"
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
if(get_visible_name() == "Unknown") // same as flavor text, but hey it works.
|
||||
. += "You can't make out what species they are."
|
||||
@@ -35,6 +41,8 @@
|
||||
. += "You can't make out what species they are."
|
||||
else
|
||||
. += "[t_He] [t_is] a [H.dna.custom_species ? H.dna.custom_species : pref_species.name]!"
|
||||
output += "([H.dna.custom_species ? H.dna.custom_species : pref_species.name])"
|
||||
output += "</center>"
|
||||
|
||||
//uniform
|
||||
if(w_uniform && !(SLOT_W_UNIFORM in obscured))
|
||||
@@ -408,16 +416,30 @@
|
||||
else if(isobserver(user) && traitstring)
|
||||
. += "<span class='info'><b>Traits:</b> [traitstring]</span>"
|
||||
|
||||
|
||||
if(print_flavor_text())
|
||||
output += "<br><b>General</b>"
|
||||
if(get_visible_name() == "Unknown") //Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation.
|
||||
. += "...?"
|
||||
output += "<br>...?"
|
||||
else if(skipface) //Sometimes we're not unknown, but impersonating someone in a hardsuit, let's not reveal our flavor text then either.
|
||||
. += "...?"
|
||||
output += "<br>...?"
|
||||
else
|
||||
. += "[print_flavor_text()]"
|
||||
output += "<br>[url_encode(flavor_text)]"
|
||||
if(ooc_text)
|
||||
output += "<br><br><i><b>OOC</b>"
|
||||
output += "<br>[url_encode(ooc_text)]"
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, msg)
|
||||
. += "*---------*</span>"
|
||||
|
||||
//stat panel
|
||||
if(ishuman(src))
|
||||
user.client << output(output, "statbrowser:update_examine") //open the examine window
|
||||
user.client << output(null, "statbrowser:create_mobexamine") //open the examine window
|
||||
|
||||
/mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects!
|
||||
var/list/dat = list()
|
||||
if(!pronoun_replacement)
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
|
||||
. = ..()
|
||||
|
||||
if(CONFIG_GET(flag/disable_stambuffer))
|
||||
togglesprint()
|
||||
|
||||
AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, /mob/living/carbon/human/clean_blood)))
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
|
||||
var/lip_color = "white"
|
||||
|
||||
var/nail_style = null
|
||||
var/nail_color = "white"
|
||||
|
||||
var/age = 30 //Player's age
|
||||
|
||||
var/underwear = "Nude" //Which underwear the player wants
|
||||
@@ -70,3 +73,4 @@
|
||||
var/last_fire_update
|
||||
var/account_id
|
||||
can_be_held = "micro"
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
@@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/fixed_mut_color2 = ""
|
||||
var/fixed_mut_color3 = ""
|
||||
var/whitelisted = 0 //Is this species restricted to certain players?
|
||||
var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666", "SeeALiggerPullTheTrigger") Spaces & capitalization can be included or ignored entirely for each key as it checks for both.
|
||||
var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666") Spaces & capitalization can be included or ignored entirely for each key as it checks for both.
|
||||
|
||||
var/icon_limbs //Overrides the icon used for the limbs of this species. Mainly for downstream, and also because hardcoded icons disgust me. Implemented and maintained as a favor in return for a downstream's implementation of synths.
|
||||
|
||||
@@ -550,6 +550,12 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
MA.color = "#[H.socks_color]"
|
||||
standing += MA
|
||||
|
||||
// nail paint (hyper)
|
||||
if(H.nail_style)
|
||||
var/mutable_appearance/nail_overlay = mutable_appearance('hyperstation/icons/mobs/nails.dmi', "nails", -HANDS_PART_LAYER)
|
||||
nail_overlay.color = H.nail_color
|
||||
standing += nail_overlay
|
||||
|
||||
if(standing.len)
|
||||
H.overlays_standing[BODY_LAYER] = standing
|
||||
|
||||
|
||||
@@ -541,7 +541,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
/mob/living/carbon/handle_status_effects()
|
||||
..()
|
||||
if(getStaminaLoss() && !combatmode)//CIT CHANGE - prevents stamina regen while combat mode is active
|
||||
adjustStaminaLoss(resting ? (recoveringstam ? -7.5 : -3) : -1.5)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke
|
||||
adjustStaminaLoss(resting ? (recoveringstam ? -7.5 : -3) : -1.5)
|
||||
|
||||
if(!recoveringstam && incomingstammult != 1)
|
||||
incomingstammult = max(0.01, incomingstammult)
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
return
|
||||
|
||||
/mob/living/proc/can_embed(obj/item/I)
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/mob/living/hitby(atom/movable/AM, skipcatch, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)
|
||||
var/obj/item/I
|
||||
@@ -126,22 +126,10 @@
|
||||
return TRUE
|
||||
var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest
|
||||
var/dtype = BRUTE
|
||||
var/volume = I.get_volume_by_throwforce_and_or_w_class()
|
||||
|
||||
SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone)
|
||||
dtype = I.damtype
|
||||
|
||||
if (I.throwforce > 0) //If the weapon's throwforce is greater than zero...
|
||||
if (I.throwhitsound) //...and throwhitsound is defined...
|
||||
playsound(loc, I.throwhitsound, volume, 1, -1) //...play the weapon's throwhitsound.
|
||||
else if(I.hitsound) //Otherwise, if the weapon's hitsound is defined...
|
||||
playsound(loc, I.hitsound, volume, 1, -1) //...play the weapon's hitsound.
|
||||
else if(!I.throwhitsound) //Otherwise, if throwhitsound isn't defined...
|
||||
playsound(loc, 'sound/weapons/genhit.ogg',volume, 1, -1) //...play genhit.ogg.
|
||||
|
||||
else if(!I.throwhitsound && I.throwforce > 0) //Otherwise, if the item doesn't have a throwhitsound and has a throwforce greater than zero...
|
||||
playsound(loc, 'sound/weapons/genhit.ogg', volume, 1, -1)//...play genhit.ogg
|
||||
if(!I.throwforce)// Otherwise, if the item's throwforce is 0...
|
||||
playsound(loc, 'sound/weapons/throwtap.ogg', 1, volume, -1)//...play throwtap.ogg.
|
||||
if(!blocked)
|
||||
visible_message("<span class='danger'>[src] has been hit by [I].</span>", \
|
||||
"<span class='userdanger'>[src] has been hit by [I].</span>")
|
||||
@@ -397,7 +385,7 @@
|
||||
if (INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
return FALSE
|
||||
if(INTENT_HARM)
|
||||
if(INTENT_HARM)
|
||||
if(HAS_TRAIT(M, TRAIT_PACIFISM))
|
||||
to_chat(M, "<span class='notice'>You don't want to hurt anyone!</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -252,7 +252,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
if (client?.prefs.chat_on_map && stat != UNCONSCIOUS && (client.prefs.see_chat_non_mob || ismob(speaker)) && can_hear())
|
||||
create_chat_message(speaker, message_language, raw_message, spans, message_mode)
|
||||
if (client?.prefs.radiosounds && stat != UNCONSCIOUS && can_hear() && radio_freq)
|
||||
playsound_local(src,'sound/voice/radio.ogg', 30, 1)
|
||||
playsound_local(src,'sound/voice/radio.ogg', 30, 0)
|
||||
|
||||
// Recompose message for AI hrefs, language incomprehension.
|
||||
message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode, FALSE, source)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
ranged = 1
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
move_to_delay = 4
|
||||
move_to_delay = 7
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 4,
|
||||
/obj/item/stack/sheet/animalhide/xeno = 1)
|
||||
projectiletype = /obj/item/projectile/neurotox
|
||||
@@ -133,7 +133,7 @@
|
||||
icon_living = "alienq"
|
||||
icon_dead = "alienq_dead"
|
||||
bubble_icon = "alienroyal"
|
||||
move_to_delay = 4
|
||||
move_to_delay = 7
|
||||
maxHealth = 400
|
||||
health = 400
|
||||
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 10,
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
health = 10
|
||||
spacewalk = TRUE
|
||||
faction = list("hostile")
|
||||
move_to_delay = 0
|
||||
move_to_delay = 1
|
||||
obj_damage = 0
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
melee_damage_lower += rand(4, 10)
|
||||
melee_damage_upper += rand(10,20)
|
||||
maxHealth += rand(40,60)
|
||||
move_to_delay = rand(3,7)
|
||||
move_to_delay = rand(5,8)
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/cayenne
|
||||
name = "Cayenne"
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
faction = list("spiders")
|
||||
var/busy = SPIDER_IDLE
|
||||
pass_flags = PASSTABLE
|
||||
move_to_delay = 6
|
||||
move_to_delay = 7
|
||||
ventcrawler = VENTCRAWLER_ALWAYS
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
@@ -140,7 +140,7 @@
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
poison_per_bite = 5
|
||||
move_to_delay = 5
|
||||
move_to_delay = 7
|
||||
|
||||
//vipers are the rare variant of the hunter, no IMMEDIATE damage but so much poison medical care will be needed fast.
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper
|
||||
@@ -154,7 +154,7 @@
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 1
|
||||
poison_per_bite = 12
|
||||
move_to_delay = 4
|
||||
move_to_delay = 5
|
||||
poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe?
|
||||
speed = 1
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
@@ -171,7 +171,7 @@
|
||||
melee_damage_lower = 35
|
||||
melee_damage_upper = 40
|
||||
poison_per_bite = 0
|
||||
move_to_delay = 8
|
||||
move_to_delay = 10
|
||||
speed = 7
|
||||
status_flags = NONE
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/projectiletype //set ONLY it and NULLIFY casingtype var, if we have ONLY projectile
|
||||
var/projectilesound
|
||||
var/casingtype //set ONLY it and NULLIFY projectiletype, if we have projectile IN CASING
|
||||
var/move_to_delay = 3 //delay for the automated movement.
|
||||
var/move_to_delay = 5 //delay for the automated movement.
|
||||
var/list/friends = list()
|
||||
var/list/emote_taunt = list()
|
||||
var/taunt_chance = 0
|
||||
|
||||
@@ -33,7 +33,7 @@ Difficulty: Medium
|
||||
movement_type = GROUND
|
||||
speak_emote = list("roars")
|
||||
speed = 1
|
||||
move_to_delay = 2
|
||||
move_to_delay = 4
|
||||
projectiletype = /obj/item/projectile/kinetic/miner
|
||||
projectilesound = 'sound/weapons/kenetic_accel.ogg'
|
||||
ranged = 1
|
||||
|
||||
@@ -40,7 +40,7 @@ Difficulty: Hard
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 1
|
||||
move_to_delay = 10
|
||||
move_to_delay = 15
|
||||
ranged_cooldown_time = 10
|
||||
ranged = 1
|
||||
pixel_x = -32
|
||||
|
||||
@@ -38,7 +38,7 @@ Difficulty: Very Hard
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 1
|
||||
move_to_delay = 10
|
||||
move_to_delay = 14
|
||||
ranged = 1
|
||||
pixel_x = -32
|
||||
del_on_death = 1
|
||||
@@ -64,7 +64,7 @@ Difficulty: Very Hard
|
||||
ranged_cooldown = world.time + 30
|
||||
telegraph()
|
||||
dir_shots(GLOB.alldirs)
|
||||
move_to_delay = 3
|
||||
move_to_delay = 5
|
||||
return
|
||||
else
|
||||
move_to_delay = initial(move_to_delay)
|
||||
|
||||
@@ -48,7 +48,7 @@ Difficulty: Medium
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
speed = 1
|
||||
move_to_delay = 5
|
||||
move_to_delay = 8
|
||||
ranged = 1
|
||||
pixel_x = -16
|
||||
crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher)
|
||||
@@ -138,7 +138,7 @@ Difficulty: Medium
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_wall(dir)
|
||||
var/list/hit_things = list(src)
|
||||
var/turf/E = get_edge_target_turf(src, dir)
|
||||
var/range = 10
|
||||
var/range = 8
|
||||
var/turf/previousturf = get_turf(src)
|
||||
for(var/turf/J in getline(src,E))
|
||||
if(!range || (J != previousturf && (!previousturf.atmos_adjacent_turfs || !previousturf.atmos_adjacent_turfs[J])))
|
||||
|
||||
@@ -52,7 +52,7 @@ Difficulty: Normal
|
||||
melee_damage_upper = 20
|
||||
blood_volume = 0
|
||||
speed = 1
|
||||
move_to_delay = 11
|
||||
move_to_delay = 15
|
||||
ranged = 1
|
||||
ranged_cooldown_time = 40
|
||||
aggro_vision_range = 21 //so it can see to one side of the arena to the other
|
||||
@@ -66,9 +66,9 @@ Difficulty: Normal
|
||||
|
||||
var/burst_range = 3 //range on burst aoe
|
||||
var/beam_range = 5 //range on cross blast beams
|
||||
var/chaser_speed = 2 //how fast chasers are currently
|
||||
var/chaser_speed = 1 //how fast chasers are currently
|
||||
var/chaser_cooldown = 50 //base cooldown/cooldown var between spawning chasers
|
||||
var/major_attack_cooldown = 40 //base cooldown for major attacks
|
||||
var/major_attack_cooldown = 60 //base cooldown for major attacks
|
||||
var/arena_cooldown = 200 //base cooldown/cooldown var for creating an arena
|
||||
var/blinking = FALSE //if we're doing something that requires us to stand still and not attack
|
||||
var/obj/effect/hierophant/spawned_beacon //the beacon we teleport back to
|
||||
|
||||
@@ -32,7 +32,7 @@ Difficulty: Medium
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
speed = 1
|
||||
move_to_delay = 2
|
||||
move_to_delay = 4
|
||||
ranged = 1
|
||||
del_on_death = 1
|
||||
retreat_distance = 5
|
||||
@@ -88,7 +88,7 @@ Difficulty: Medium
|
||||
retreat_distance = 0
|
||||
minimum_distance = 0
|
||||
speed = 0
|
||||
move_to_delay = 1
|
||||
move_to_delay = 2
|
||||
charging = 1
|
||||
addtimer(CALLBACK(src, .proc/reset_charge), 50)
|
||||
|
||||
@@ -97,7 +97,7 @@ Difficulty: Medium
|
||||
retreat_distance = 5
|
||||
minimum_distance = 5
|
||||
speed = 1
|
||||
move_to_delay = 2
|
||||
move_to_delay = 4
|
||||
charging = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/legion/death()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_aggro = "curseblob"
|
||||
mob_biotypes = MOB_SPIRIT
|
||||
movement_type = FLYING
|
||||
move_to_delay = 5
|
||||
move_to_delay = 7
|
||||
vision_range = 20
|
||||
aggro_vision_range = 20
|
||||
maxHealth = 40 //easy to kill, but oh, will you be seeing a lot of them.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
vision_range = 2
|
||||
aggro_vision_range = 9
|
||||
move_to_delay = 5
|
||||
move_to_delay = 7
|
||||
friendly = "harmlessly rolls into"
|
||||
maxHealth = 45
|
||||
health = 45
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
icon_dead = "Hivelordbrood"
|
||||
icon_gib = "syndicate_gib"
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
move_to_delay = 1
|
||||
move_to_delay = 3
|
||||
friendly = "buzzes near"
|
||||
vision_range = 10
|
||||
speed = 3
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_gib = "syndicate_gib"
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
move_to_delay = 5
|
||||
move_to_delay = 8
|
||||
friendly = "floats near"
|
||||
speak_emote = list("puffs")
|
||||
vision_range = 5
|
||||
@@ -88,7 +88,7 @@
|
||||
F.throw_message = "is absorbed by the girth of the"
|
||||
F.retreat_distance = null
|
||||
F.minimum_distance = 1
|
||||
F.move_to_delay = 6
|
||||
F.move_to_delay = 8
|
||||
F.environment_smash = ENVIRONMENT_SMASH_WALLS
|
||||
F.mob_size = MOB_SIZE_LARGE
|
||||
F.speed = 1
|
||||
@@ -106,7 +106,7 @@
|
||||
throw_message = "is avoided by the"
|
||||
retreat_distance = 9
|
||||
minimum_distance = 9
|
||||
move_to_delay = 2
|
||||
move_to_delay = 3
|
||||
inflate_cooldown = 4
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
var/updating_glide_size = TRUE
|
||||
|
||||
var/flavor_text = ""
|
||||
var/ooc_text = ""
|
||||
var/flavor_text_2 = "" //version of the above that only lasts for the current round.
|
||||
|
||||
///////TYPING INDICATORS///////
|
||||
@@ -141,3 +142,5 @@
|
||||
var/typing_indicator_timerid
|
||||
/// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
|
||||
var/mutable_appearance/typing_indicator_current
|
||||
|
||||
vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace.
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
. = ..()
|
||||
|
||||
if((direct & (direct - 1)) && mob.loc == n) //moved diagonally successfully
|
||||
add_delay *= 2
|
||||
add_delay *= 1.66
|
||||
move_delay += add_delay
|
||||
mob.set_glide_size(DELAY_TO_GLIDE_SIZE(add_delay))
|
||||
if(.) // If mob is null here, we deserve the runtime
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
set src in usr
|
||||
if(usr != src)
|
||||
to_chat(usr, "No.")
|
||||
var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!", "Flavor Text", html_decode(flavor_text), MAX_MESSAGE_LEN, TRUE)
|
||||
var/msg = stripped_multiline_input(usr, "Set the flavor text in your 'examine' verb. IC only!", "Flavor Text", html_decode(flavor_text), MAX_MESSAGE_LEN, TRUE)
|
||||
|
||||
if(msg)
|
||||
flavor_text = html_encode(msg)
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
grind_results = list(/datum/reagent/cellulose = 2)
|
||||
|
||||
drop_sound = 'sound/items/handling/paper_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/paper_pickup.ogg'
|
||||
|
||||
var/info //What's actually written on the paper.
|
||||
var/info_links //A different version of the paper which includes html links at fields and EOF
|
||||
var/stamps //The (text for the) stamps on the paper.
|
||||
@@ -143,6 +146,7 @@
|
||||
var/locid = 0
|
||||
var/laststart = 1
|
||||
var/textindex = 1
|
||||
playsound(src, 'sound/items/handling/writing.ogg', 50, 1, -1)
|
||||
while(locid < 15) //hey whoever decided a while(1) was a good idea here, i hate you
|
||||
var/istart = 0
|
||||
if(links)
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
has_panel_overlay = FALSE
|
||||
amount = 10
|
||||
pixel_y = 6
|
||||
layer = WALL_OBJ_LAYER
|
||||
layer = 4
|
||||
circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks
|
||||
working_state = null
|
||||
nopower_state = null
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
taste_description = "alcohol"
|
||||
var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning
|
||||
pH = 7.33
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 1
|
||||
|
||||
/*
|
||||
Boozepwr Chart
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
glass_icon_state = "glass_orange"
|
||||
glass_name = "glass of orange juice"
|
||||
glass_desc = "Vitamins! Yay!"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
pH = 3.3
|
||||
|
||||
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M)
|
||||
@@ -28,7 +28,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of tomato juice"
|
||||
glass_desc = "Are you sure this is tomato juice?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getFireLoss() && prob(20))
|
||||
@@ -45,7 +45,7 @@
|
||||
glass_name = "glass of lime juice"
|
||||
glass_desc = "A glass of sweet-sour lime juice."
|
||||
pH = 2.2
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
@@ -61,7 +61,7 @@
|
||||
glass_icon_state = "carrotjuice"
|
||||
glass_name = "glass of carrot juice"
|
||||
glass_desc = "It's just like a carrot but without crunching."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_blurriness(-1)
|
||||
@@ -83,7 +83,7 @@
|
||||
glass_icon_state = "berryjuice"
|
||||
glass_name = "glass of berry juice"
|
||||
glass_desc = "Berry juice. Or maybe it's jam. Who cares?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/applejuice
|
||||
name = "Apple Juice"
|
||||
@@ -91,7 +91,7 @@
|
||||
color = "#ECFF56" // rgb: 236, 255, 86
|
||||
taste_description = "apples"
|
||||
pH = 3.2 // ~ 2.7 -> 3.7
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/poisonberryjuice
|
||||
name = "Poison Berry Juice"
|
||||
@@ -101,7 +101,7 @@
|
||||
glass_icon_state = "poisonberryjuice"
|
||||
glass_name = "glass of berry juice"
|
||||
glass_desc = "Berry juice. Or maybe it's poison. Who cares?"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustToxLoss(1, 0)
|
||||
@@ -116,7 +116,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of watermelon juice"
|
||||
glass_desc = "A glass of watermelon juice."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/lemonjuice
|
||||
name = "Lemon Juice"
|
||||
@@ -127,7 +127,7 @@
|
||||
glass_name = "glass of lemon juice"
|
||||
glass_desc = "Sour..."
|
||||
pH = 2
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/strawberryjuice
|
||||
name = "Strawberry Juice"
|
||||
@@ -136,7 +136,7 @@
|
||||
taste_description = "strawberry"
|
||||
glass_name = "glass of strawberry juice"
|
||||
glass_desc = "Refreshing seasonal summer drink."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/banana
|
||||
name = "Banana Juice"
|
||||
@@ -146,7 +146,7 @@
|
||||
glass_icon_state = "banana"
|
||||
glass_name = "glass of banana juice"
|
||||
glass_desc = "The raw essence of a banana. HONK."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M)
|
||||
if((ishuman(M) && M.job == "Clown") || ismonkey(M))
|
||||
@@ -210,7 +210,7 @@
|
||||
description = "The juice of a bunch of grapes. Guaranteed non-alcoholic."
|
||||
color = "#290029" // dark purple
|
||||
taste_description = "grape soda"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/milk
|
||||
name = "Milk"
|
||||
@@ -221,7 +221,7 @@
|
||||
glass_name = "milk drum"
|
||||
glass_desc = "White and nutritious goodness!"
|
||||
pH = 6.5
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER))
|
||||
@@ -243,7 +243,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of soy milk"
|
||||
glass_desc = "White and nutritious soy goodness!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -260,7 +260,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of coconut milk"
|
||||
glass_desc = "White and nutritious goodness!"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -276,7 +276,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of cream"
|
||||
glass_desc = "Ewwww..."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -294,7 +294,7 @@
|
||||
glass_icon_state = "glass_brown"
|
||||
glass_name = "glass of coffee"
|
||||
glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/coffee/overdose_process(mob/living/M)
|
||||
M.Jitter(5)
|
||||
@@ -320,7 +320,7 @@
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of tea"
|
||||
glass_desc = "Drinking it from here would not seem right."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
@@ -341,7 +341,7 @@
|
||||
glass_icon_state = "lemonpitcher"
|
||||
glass_name = "pitcher of lemonade"
|
||||
glass_desc = "This drink leaves you feeling nostalgic for some reason."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer
|
||||
name = "Arnold Palmer"
|
||||
@@ -353,7 +353,7 @@
|
||||
glass_icon_state = "arnold_palmer"
|
||||
glass_name = "Arnold Palmer"
|
||||
glass_desc = "You feel like taking a few golf swings after a few swigs of this."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(5))
|
||||
@@ -370,7 +370,7 @@
|
||||
glass_icon_state = "icedcoffeeglass"
|
||||
glass_name = "iced coffee"
|
||||
glass_desc = "A drink to perk you up and refresh you!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -390,7 +390,7 @@
|
||||
glass_icon_state = "icedteaglass"
|
||||
glass_name = "iced tea"
|
||||
glass_desc = "All natural, antioxidant-rich flavour sensation."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
@@ -410,7 +410,7 @@
|
||||
glass_icon_state = "glass_brown"
|
||||
glass_name = "glass of Space Cola"
|
||||
glass_desc = "A glass of refreshing Space Cola."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M)
|
||||
M.drowsyness = max(0,M.drowsyness-5)
|
||||
@@ -426,7 +426,7 @@
|
||||
glass_icon_state = "nuka_colaglass"
|
||||
glass_name = "glass of Nuka Cola"
|
||||
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
@@ -471,7 +471,7 @@
|
||||
glass_icon_state = "dr_gibb_glass"
|
||||
glass_name = "glass of Dr. Gibb"
|
||||
glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M)
|
||||
M.drowsyness = max(0,M.drowsyness-6)
|
||||
@@ -486,7 +486,7 @@
|
||||
glass_icon_state = "space-up_glass"
|
||||
glass_name = "glass of Space-Up"
|
||||
glass_desc = "Space-up. It helps you keep your cool."
|
||||
hydration = 5 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -500,7 +500,7 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of lemon-lime"
|
||||
glass_desc = "You're pretty certain a real fruit has never actually touched this."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -514,7 +514,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of Pwr Game"
|
||||
glass_desc = "Goes well with a Vlad's salad."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -528,7 +528,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of Shambler's juice"
|
||||
glass_desc = "Mmm mm, shambly."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -543,7 +543,7 @@
|
||||
glass_icon_state = "grey_bull_glass"
|
||||
glass_name = "glass of Grey Bull"
|
||||
glass_desc = "Surprisingly it isnt grey."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
@@ -569,7 +569,7 @@
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of soda water"
|
||||
glass_desc = "Soda water. Why not make a scotch and soda?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -585,7 +585,7 @@
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of tonic water"
|
||||
glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -604,7 +604,7 @@
|
||||
glass_icon_state = "iceglass"
|
||||
glass_name = "glass of ice"
|
||||
glass_desc = "Generally, you're supposed to put something else in there too..."
|
||||
hydration = 5 * REAGENTS_METABOLISM //ice is water dummy, just as good.
|
||||
hydration = 5
|
||||
|
||||
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -619,7 +619,7 @@
|
||||
glass_icon_state = "soy_latte"
|
||||
glass_name = "soy latte"
|
||||
glass_desc = "A nice and refreshing beverage while you're reading."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -641,7 +641,7 @@
|
||||
glass_icon_state = "cafe_latte"
|
||||
glass_name = "cafe latte"
|
||||
glass_desc = "A nice, strong and refreshing beverage while you're reading."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -663,7 +663,7 @@
|
||||
glass_icon_state = "doctorsdelightglass"
|
||||
glass_name = "Doctor's Delight"
|
||||
glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustBruteLoss(-0.5, 0)
|
||||
@@ -730,7 +730,7 @@
|
||||
glass_icon_state = "pumpkin_latte"
|
||||
glass_name = "pumpkin latte"
|
||||
glass_desc = "A mix of coffee and pumpkin juice."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/gibbfloats
|
||||
name = "Gibb Floats"
|
||||
@@ -742,14 +742,14 @@
|
||||
glass_icon_state = "gibbfloats"
|
||||
glass_name = "Gibbfloat"
|
||||
glass_desc = "Dr. Gibb with ice cream on top."
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/pumpkinjuice
|
||||
name = "Pumpkin Juice"
|
||||
description = "Juiced from real pumpkin."
|
||||
color = "#FFA500"
|
||||
taste_description = "pumpkin"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/blumpkinjuice
|
||||
name = "Blumpkin Juice"
|
||||
@@ -766,7 +766,7 @@
|
||||
glass_icon_state = "triplecitrus" //needs own sprite mine are trash
|
||||
glass_name = "glass of triple citrus"
|
||||
glass_desc = "A mixture of citrus juices. Tangy, yet smooth."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/grape_soda
|
||||
name = "Grape soda"
|
||||
@@ -775,7 +775,7 @@
|
||||
taste_description = "grape soda"
|
||||
glass_name = "glass of grape juice"
|
||||
glass_desc = "It's grape (soda)!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -788,7 +788,7 @@
|
||||
color = "#7D4E29"
|
||||
quality = DRINK_NICE
|
||||
taste_description = "chocolate milk"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/menthol
|
||||
name = "Menthol"
|
||||
@@ -810,7 +810,7 @@
|
||||
taste_description = "sweet pomegranates"
|
||||
glass_name = "glass of grenadine"
|
||||
glass_desc = "Delicious flavored syrup."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/parsnipjuice
|
||||
name = "Parsnip Juice"
|
||||
@@ -818,7 +818,7 @@
|
||||
color = "#FFA500"
|
||||
taste_description = "parsnip"
|
||||
glass_name = "glass of parsnip juice"
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/pineapplejuice
|
||||
name = "Pineapple Juice"
|
||||
@@ -827,7 +827,7 @@
|
||||
taste_description = "pineapple"
|
||||
glass_name = "glass of pineapple juice"
|
||||
glass_desc = "Tart, tropical, and hotly debated."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink
|
||||
name = "Peach Juice"
|
||||
@@ -835,7 +835,7 @@
|
||||
color = "#E78108"
|
||||
taste_description = "peaches"
|
||||
glass_name = "glass of peach juice"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/cream_soda
|
||||
name = "Cream Soda"
|
||||
@@ -846,7 +846,7 @@
|
||||
glass_icon_state = "cream_soda"
|
||||
glass_name = "Cream Soda"
|
||||
glass_desc = "A classic space-American vanilla flavored soft drink."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -888,7 +888,7 @@
|
||||
taste_description = "sweet strawberry and milk cream"
|
||||
glass_name = "tall glass of strawberry milk"
|
||||
glass_desc = "Delicious flavored strawberry syrup mixed with milk."
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/pinkmilk/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(15))
|
||||
@@ -905,7 +905,7 @@
|
||||
taste_description = "sweet tea with a hint of strawberry"
|
||||
glass_name = "mug of strawberry tea"
|
||||
glass_desc = "Delicious traditional tea flavored with strawberries."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/tea/pinktea/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(10))
|
||||
@@ -921,7 +921,7 @@
|
||||
glass_icon_state = "monkey_energy_glass"
|
||||
glass_name = "glass of Monkey Energy"
|
||||
glass_desc = "You can unleash the ape, but without the pop of the can?"
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 4
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M)
|
||||
M.Jitter(20)
|
||||
@@ -939,7 +939,7 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of bungo juice"
|
||||
glass_desc = "Exotic! You feel like you are on vacation already."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
hydration = 5
|
||||
|
||||
/datum/reagent/consumable/aloejuice
|
||||
name = "Aloe Juice"
|
||||
@@ -949,7 +949,7 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of aloe juice"
|
||||
glass_desc = "A healthy and refreshing juice."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
hydration = 5
|
||||
|
||||
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M)
|
||||
if(prob(30))
|
||||
@@ -984,7 +984,7 @@
|
||||
glass_icon_state = "wockyslush"
|
||||
glass_name = "Wocky Slush"
|
||||
glass_desc = "That thang bleedin' to the-... ya know I mean?"
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
hydration = 3
|
||||
|
||||
/datum/reagent/consumable/wockyslush/on_mob_life(mob/living/carbon/M)
|
||||
M.emote(pick("twitch","giggle","stare"))
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
|
||||
current_cycle++
|
||||
M.nutrition += nutriment_factor
|
||||
M.thirst += hydration
|
||||
holder.remove_reagent(type, metabolization_rate)
|
||||
|
||||
/datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
|
||||
@@ -221,7 +221,8 @@
|
||||
. = ..()
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/patient = M
|
||||
if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone.
|
||||
var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/rezadone)
|
||||
if(vol >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone.
|
||||
patient.cure_husk("burn")
|
||||
patient.visible_message("<span class='nicegreen'>[patient]'s body rapidly absorbs moisture from the enviroment, taking on a more healthy appearance.")
|
||||
|
||||
@@ -428,7 +429,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
overdose_threshold = 40
|
||||
value = 6
|
||||
|
||||
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
|
||||
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
if (M.stat == DEAD)
|
||||
show_message = 0
|
||||
@@ -445,8 +446,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='danger'>You feel your burns and bruises healing! It stings like hell!</span>")
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
|
||||
var/vol = reac_volume + M.reagents.get_reagent_amount(/datum/reagent/medicine/synthflesh)
|
||||
//Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize.
|
||||
if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && M.reagents.has_reagent(/datum/reagent/medicine/synthflesh, 100))
|
||||
if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && (vol >= 100))
|
||||
M.cure_husk("burn")
|
||||
M.visible_message("<span class='nicegreen'>Most of [M]'s burnt off or charred flesh has been restored.")
|
||||
..()
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
glass_name = "glass of water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
shot_glass_icon_state = "shotglassclear"
|
||||
hydration = 10 * REAGENTS_METABOLISM
|
||||
hydration = 5
|
||||
|
||||
/*
|
||||
* Water reaction to turf
|
||||
@@ -1242,6 +1242,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.lip_style)
|
||||
H.lip_style = null
|
||||
H.nail_style = null
|
||||
H.update_body()
|
||||
for(var/obj/item/I in C.held_items)
|
||||
SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
|
||||
@@ -2065,7 +2066,7 @@
|
||||
color = "#AAAAAA55"
|
||||
taste_description = "water"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
pH = 15
|
||||
pH = 9.75
|
||||
|
||||
/datum/reagent/pax/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
|
||||
@@ -327,11 +327,11 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle
|
||||
name = "bottle of water"
|
||||
desc = "A bottle of water filled at an old Earth bottling facility."
|
||||
desc = "A bottle of water filled at some factory in space."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "smallbottle"
|
||||
item_state = "bottle"
|
||||
list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
|
||||
list_reagents = list(/datum/reagent/water = 50)//see desc, don't think about it too hard
|
||||
materials = list(MAT_GLASS=0)
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
|
||||
@@ -204,7 +204,25 @@
|
||||
icon_state = "pill9"
|
||||
color = "#454545"
|
||||
list_reagents = list(/datum/reagent/mutationtoxin/shadow = 1)
|
||||
//////////////////////////////////////// drugs
|
||||
//////////////////////////////////////// drugs#
|
||||
/obj/item/reagent_containers/pill/lsdpsych
|
||||
name = "antipsychotic pill"
|
||||
desc = "Talk to your healthcare provider immediately if hallucinations worsen or new hallucinations emerge."
|
||||
icon_state = "pill14"
|
||||
list_reagents = list(/datum/reagent/toxin/mindbreaker = 5)
|
||||
|
||||
/obj/item/reagent_containers/pill/happinesspsych
|
||||
name = "mood stabilizer pill"
|
||||
desc = "Used to temporarily alleviate anxiety and depression, take only as prescribed."
|
||||
icon_state = "pill_happy"
|
||||
list_reagents = list(/datum/reagent/drug/happiness = 5)
|
||||
|
||||
/obj/item/reagent_containers/pill/paxpsych
|
||||
name = "pacification pill"
|
||||
desc = "Used to temporarily suppress violent, homicidal, or suicidal behavior in patients."
|
||||
list_reagents = list(/datum/reagent/pax = 5)
|
||||
icon_state = "pill12"
|
||||
|
||||
/obj/item/reagent_containers/pill/zoom
|
||||
name = "zoom pill"
|
||||
list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1)
|
||||
@@ -257,3 +275,4 @@
|
||||
name = "breast enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10)
|
||||
price = 4
|
||||
|
||||
|
||||
@@ -854,10 +854,10 @@
|
||||
var/obj/vehicle/V = C
|
||||
var/datum/component/riding/R = V.GetComponent(/datum/component/riding)
|
||||
if(R)
|
||||
if(R.vehicle_move_delay <= 1 )
|
||||
if(R.vehicle_move_delay <= 2 )
|
||||
to_chat(user, "<span class='warning'>The [C] can't be made any faster!</span>")
|
||||
return ..()
|
||||
R.vehicle_move_delay = 1
|
||||
R.vehicle_move_delay = 2
|
||||
|
||||
to_chat(user, "<span class='notice'>You slather the red gunk over the [C], making it faster.</span>")
|
||||
C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
|
||||
|
||||
@@ -238,7 +238,6 @@
|
||||
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
hitsound = 'sound/weapons/circsawhit.ogg'
|
||||
throwhitsound = 'sound/weapons/pierce.ogg'
|
||||
item_flags = SURGICAL_TOOL
|
||||
flags_1 = CONDUCT_1
|
||||
force = 15
|
||||
@@ -251,6 +250,7 @@
|
||||
sharpness = IS_SHARP
|
||||
tool_behaviour = TOOL_SAW
|
||||
toolspeed = 1
|
||||
mob_throw_hit_sound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
/obj/item/circular_saw/Initialize()
|
||||
. = ..()
|
||||
@@ -263,7 +263,6 @@
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "saw"
|
||||
hitsound = 'sound/weapons/circsawhit.ogg'
|
||||
throwhitsound = 'sound/weapons/pierce.ogg'
|
||||
flags_1 = CONDUCT_1
|
||||
force = 10
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
@@ -1773,7 +1773,7 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
cost = 2
|
||||
restricted_roles = list("Curator")
|
||||
limited_stock = 1 //please don't spam deadchat
|
||||
|
||||
/* Disabled because this is waaaay too chaotic for hyper
|
||||
/datum/uplink_item/role_restricted/his_grace
|
||||
name = "His Grace"
|
||||
desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, He will thirst for blood and must be used to kill to sate that thirst. \
|
||||
@@ -1784,24 +1784,24 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
cost = 20
|
||||
restricted_roles = list("Chaplain")
|
||||
surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain
|
||||
|
||||
///datum/uplink_item/role_restricted/clockwork_slab
|
||||
/datum/uplink_item/dangerous/clockwork_slab
|
||||
*/
|
||||
/datum/uplink_item/role_restricted/clockwork_slab
|
||||
name = "Clockwork Slab"
|
||||
desc = "A reverse engineered clockwork slab. Is this really a good idea?"
|
||||
item = /obj/item/clockwork/slab/traitor
|
||||
cost = 20
|
||||
refundable = TRUE
|
||||
//restricted_roles = list("Chaplain","Curator")
|
||||
restricted_roles = list("Chaplain","Curator")
|
||||
cant_discount = TRUE
|
||||
|
||||
///datum/uplink_item/role_restricted/arcane_tome
|
||||
/datum/uplink_item/dangerous/arcane_tome
|
||||
/datum/uplink_item/role_restricted/arcane_tome
|
||||
name = "Arcane Tome"
|
||||
desc = "A 'replica' of a Nar'sian tome. This is probably a bad idea..."
|
||||
item = /obj/item/tome/traitor
|
||||
cost = 20
|
||||
refundable = TRUE
|
||||
//restricted_roles = list("Chaplain","Curator")
|
||||
restricted_roles = list("Chaplain","Curator")
|
||||
cant_discount = TRUE
|
||||
|
||||
/datum/uplink_item/role_restricted/explosive_hot_potato
|
||||
name = "Exploding Hot Potato"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/obj/vehicle/ridden/atv/Initialize()
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 1
|
||||
D.vehicle_move_delay = 1.5
|
||||
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4)))
|
||||
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
|
||||
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4)))
|
||||
D.vehicle_move_delay = 0
|
||||
D.vehicle_move_delay = 1.5
|
||||
|
||||
/obj/vehicle/ridden/bicycle/buckle_mob(mob/living/M, force = 0, check_loc = 1)
|
||||
if(prob(easter_egg_chance) || (SSevents.holidays && SSevents.holidays[APRIL_FOOLS]))
|
||||
|
||||
@@ -64,6 +64,6 @@
|
||||
/obj/vehicle/ridden/lavaboat/dragon/Initialize()
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 1
|
||||
D.vehicle_move_delay = 1.5
|
||||
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(1, 2), TEXT_SOUTH = list(1, 2), TEXT_EAST = list(1, 2), TEXT_WEST = list( 1, 2)))
|
||||
D.keytype = null
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
/obj/vehicle/ridden/scooter/skateboard/Initialize()
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 1
|
||||
D.vehicle_move_delay = 2
|
||||
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
|
||||
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
|
||||
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
|
||||
@@ -97,11 +97,11 @@
|
||||
. = ..()
|
||||
var/datum/component/riding/R = src.GetComponent(/datum/component/riding)
|
||||
if (!adjusted_speed)
|
||||
R.vehicle_move_delay = 0
|
||||
R.vehicle_move_delay = 1.5
|
||||
to_chat(user, "<span class='notice'>You adjust the wheels on [src] to make it go faster.</span>")
|
||||
adjusted_speed = TRUE
|
||||
else
|
||||
R.vehicle_move_delay = 1
|
||||
R.vehicle_move_delay = 2
|
||||
to_chat(user, "<span class='notice'>You adjust the wheels on [src] to make it go slower.</span>")
|
||||
adjusted_speed = FALSE
|
||||
return TRUE
|
||||
@@ -176,7 +176,7 @@
|
||||
/obj/vehicle/ridden/scooter/wheelys/Initialize()
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 0
|
||||
D.vehicle_move_delay = 2
|
||||
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
|
||||
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
|
||||
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
add_overlay(overlay)
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, -8), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(-10, 5), TEXT_WEST = list( 10, 5)))
|
||||
D.vehicle_move_delay = 0
|
||||
D.vehicle_move_delay = 1
|
||||
D.set_vehicle_dir_offsets(NORTH, -16, -16)
|
||||
D.set_vehicle_dir_offsets(SOUTH, -16, -16)
|
||||
D.set_vehicle_dir_offsets(EAST, -18, 0)
|
||||
@@ -54,7 +54,7 @@
|
||||
. = ..()
|
||||
add_overlay(overlay)
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 0
|
||||
D.vehicle_move_delay = 1
|
||||
D.set_riding_offsets(1, list(TEXT_NORTH = list(-10, -4), TEXT_SOUTH = list(16, 3), TEXT_EAST = list(-4, 30), TEXT_WEST = list(4, -3)))
|
||||
D.set_riding_offsets(2, list(TEXT_NORTH = list(19, -5, 4), TEXT_SOUTH = list(-13, 3, 4), TEXT_EAST = list(-4, -3, 4.1), TEXT_WEST = list(4, 28, 3.9)))
|
||||
D.set_riding_offsets(3, list(TEXT_NORTH = list(-10, -18, 4.2), TEXT_SOUTH = list(16, 25, 3.9), TEXT_EAST = list(-22, 30), TEXT_WEST = list(22, -3, 4.1)))
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/vehicle/ridden/wheelchair/Initialize()
|
||||
. = ..()
|
||||
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = 0
|
||||
D.vehicle_move_delay = 1
|
||||
D.set_vehicle_dir_layer(SOUTH, OBJ_LAYER)
|
||||
D.set_vehicle_dir_layer(NORTH, ABOVE_MOB_LAYER)
|
||||
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
/obj/item/clothing/suit/toggle/jacket_purple = 3,
|
||||
/obj/item/clothing/suit/toggle/jacket_white = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_red = 3,
|
||||
/obj/item/clothing/suit/fluffyhalfcrop = 3,
|
||||
/obj/item/clothing/ears/headphones = 10,
|
||||
/obj/item/clothing/suit/apron/purple_bartender = 4,
|
||||
/obj/item/clothing/under/rank/bartender/purple = 4,
|
||||
@@ -123,11 +124,15 @@
|
||||
/obj/item/clothing/head/cowboyhat/white = 3,
|
||||
/obj/item/clothing/head/cowboyhat/pink = 3,
|
||||
/obj/item/clothing/shoes/cowboyboots = 3,
|
||||
/obj/item/clothing/shoes/cowboyboots/black = 3)
|
||||
/obj/item/clothing/shoes/cowboyboots/black = 3,
|
||||
/obj/item/clothing/under/polychromic/vsweater = 3)
|
||||
contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3,
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt = 3,
|
||||
/obj/item/clothing/mask/balaclava = 3,
|
||||
/obj/item/clothing/head/ushanka = 3,
|
||||
/obj/item/clothing/suit/gcvest = 2,
|
||||
/obj/item/clothing/suit/gcvest/alt = 2,
|
||||
/obj/item/clothing/gloves/guncaster = 4,
|
||||
/obj/item/clothing/under/soviet = 3,
|
||||
/obj/item/storage/belt/fannypack/black = 3,
|
||||
/obj/item/clothing/suit/jacket/letterman_syndie = 5,
|
||||
|
||||
@@ -16,3 +16,22 @@
|
||||
contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/machinery/vending/magivend_novirus
|
||||
name = "\improper MagiVend"
|
||||
desc = "A magic vending machine."
|
||||
icon_state = "MagiVend"
|
||||
product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!"
|
||||
vend_reply = "Have an enchanted evening!"
|
||||
product_ads = "EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!;Now-magic proofing venders!"
|
||||
products = list(/obj/item/clothing/head/wizard = 1,
|
||||
/obj/item/clothing/suit/wizrobe = 1,
|
||||
/obj/item/clothing/head/wizard/red = 1,
|
||||
/obj/item/clothing/suit/wizrobe/red = 1,
|
||||
/obj/item/clothing/head/wizard/yellow = 1,
|
||||
/obj/item/clothing/suit/wizrobe/yellow = 1,
|
||||
/obj/item/clothing/shoes/sandal/magic = 1,
|
||||
/obj/item/staff = 2)
|
||||
contraband = list(/obj/item/coin/antagtoken = 1)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100)
|
||||
resistance_flags = FIRE_PROOF
|
||||
Reference in New Issue
Block a user