mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
Merge branch 'master' into plant-adding
This commit is contained in:
+17
-7
@@ -43,13 +43,13 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define GLOVES_LAYER 18
|
||||
#define EARS_LAYER 17
|
||||
#define BODY_TAUR_LAYER 16
|
||||
#define GENITALS_FRONT_LAYER 15
|
||||
#define SUIT_LAYER 14
|
||||
#define GLASSES_LAYER 13
|
||||
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 11
|
||||
#define NECK_LAYER 10
|
||||
#define BACK_LAYER 9
|
||||
#define SUIT_LAYER 15
|
||||
#define GLASSES_LAYER 14
|
||||
#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 12
|
||||
#define NECK_LAYER 11
|
||||
#define BACK_LAYER 10
|
||||
#define GENITALS_FRONT_LAYER 9
|
||||
#define HAIR_LAYER 8 //TODO: make part of head layer?
|
||||
#define FACEMASK_LAYER 7
|
||||
#define HEAD_LAYER 6
|
||||
@@ -260,6 +260,16 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE))
|
||||
GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_SKIN_ALT = 'icons/obj/pda_alt.dmi',
|
||||
PDA_SKIN_RUGGED = 'icons/obj/pda_rugged.dmi', PDA_SKIN_MODERN = 'icons/obj/pda_modern.dmi'))
|
||||
|
||||
//zippo icon reskins
|
||||
#define ZIPPO_SKIN_PLAIN "Plain"
|
||||
#define ZIPPO_SKIN_DAME "Dame"
|
||||
#define ZIPPO_SKIN_THIRTEEN "Thirteen"
|
||||
#define ZIPPO_SKIN_SNAKE "Snake"
|
||||
|
||||
GLOBAL_LIST_INIT(lighter_reskins, list(ZIPPO_SKIN_PLAIN = "plain", ZIPPO_SKIN_DAME = "dame",
|
||||
ZIPPO_SKIN_THIRTEEN = "thirteen", ZIPPO_SKIN_SNAKE = "snake"))
|
||||
|
||||
|
||||
/////////////////////////////////////
|
||||
// atom.appearence_flags shortcuts //
|
||||
/////////////////////////////////////
|
||||
|
||||
@@ -250,7 +250,8 @@
|
||||
#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets
|
||||
#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you
|
||||
|
||||
#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases
|
||||
#define HUNGER_FACTOR 0.08 //factor at which mob nutrition decreases
|
||||
#define THIRST_FACTOR 0.08 //factor at which mob thirst decreases
|
||||
#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default.
|
||||
#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
//Research point amounts
|
||||
#define NOBLIUM_RESEARCH_AMOUNT 100
|
||||
#define BZ_RESEARCH_AMOUNT 15
|
||||
#define MIASMA_RESEARCH_AMOUNT 6 //lolno, fart gas 2 ez
|
||||
#define MIASMA_RESEARCH_AMOUNT 6
|
||||
#define PHEROMONE_RESEARCH_AMOUNT 6
|
||||
#define STIMULUM_RESEARCH_AMOUNT 50
|
||||
//Plasma fusion properties
|
||||
#define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
#define INIT_ORDER_TICKER 9
|
||||
#define INIT_ORDER_MAPPING 8
|
||||
#define INIT_ORDER_NETWORKS 7
|
||||
#define INIT_ORDER_ECONOMY 21
|
||||
#define INIT_ORDER_ATOMS 6
|
||||
#define INIT_ORDER_LANGUAGE 5
|
||||
#define INIT_ORDER_MACHINES 4
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
#define TRAIT_NOFIRE "nonflammable"
|
||||
#define TRAIT_NOGUNS "no_guns"
|
||||
#define TRAIT_NOHUNGER "no_hunger"
|
||||
#define TRAIT_NOTHIRST "no_thirst"
|
||||
#define TRAIT_EASYDISMEMBER "easy_dismember"
|
||||
#define TRAIT_LIMBATTACHMENT "limb_attach"
|
||||
#define TRAIT_NOLIMBDISABLE "no_limb_disable"
|
||||
@@ -169,6 +170,7 @@
|
||||
#define TRAIT_MUSICIAN "musician"
|
||||
#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
|
||||
#define TRAIT_NYMPHO "nymphomania"
|
||||
#define TRAIT_DISTANT "headpat_hater"
|
||||
//#define TRAIT_FLUID_LEAK "leaky_fluids" removed because milk snail trails are not okay
|
||||
#define TRAIT_MASO "masochism"
|
||||
#define TRAIT_CHOKE_SLUT "choke_slut"
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
"has_sheath" = FALSE,
|
||||
"sheath_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"has_belly" = FALSE,
|
||||
"hide_belly" = FALSE,
|
||||
"belly_color" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"),
|
||||
"has_balls" = FALSE,
|
||||
"balls_internal" = FALSE,
|
||||
|
||||
@@ -189,6 +189,12 @@
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
// Stop eorg mech prepping.
|
||||
for(var/obj/mecha/combat/Obj in world)
|
||||
qdel(Obj)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Set news report and mode result
|
||||
mode.set_round_result()
|
||||
|
||||
|
||||
@@ -779,6 +779,48 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
|
||||
shuffle_inplace(rearranged)
|
||||
return "[prefix][jointext(rearranged, " ")]"
|
||||
|
||||
/proc/autocorrect(var/input as text) // syntax is "stringtoreplace"="stringtoreplacewith"
|
||||
return input = replace_characters(input, list(
|
||||
" i "=" I ",
|
||||
"i'm"="I'm",
|
||||
"s's"="s'",
|
||||
"isnt"="isn't",
|
||||
"dont"="don't",
|
||||
"shouldnt"="shouldn't",
|
||||
" ive "=" I've ",
|
||||
"whos"="who's",
|
||||
"whove"="who've",
|
||||
"whod"="who’d",
|
||||
"whats"="what’s",
|
||||
"whatd"="what’d",
|
||||
"thats"="that’s",
|
||||
"thatll"="that’ll",
|
||||
"thatd"="that’d",
|
||||
" nows "=" now’s ",
|
||||
"isnt"="isn’t",
|
||||
"arent"="aren’t",
|
||||
"wasnt"="wasn’t",
|
||||
"werent"="weren’t",
|
||||
"havent"="haven’t",
|
||||
"hasnt"="hasn’t",
|
||||
"hadnt"="hadn’t",
|
||||
"doesnt"="doesn’t",
|
||||
"didnt"="didn’t",
|
||||
"couldnt"="couldn’t",
|
||||
"wouldnt"="wouldn’t",
|
||||
"mustnt"="mustn’t",
|
||||
" alot "=" a lot ",
|
||||
" allthough"=" although",
|
||||
"shouldnt"="shouldn’t"
|
||||
))
|
||||
|
||||
/*
|
||||
* Text modification
|
||||
*/
|
||||
/proc/replace_characters(var/t,var/list/repl_chars)
|
||||
for(var/char in repl_chars)
|
||||
t = replacetext(t, char, repl_chars[char])
|
||||
return t
|
||||
|
||||
#define is_alpha(X) ((text2ascii(X) <= 122) && (text2ascii(X) >= 97))
|
||||
#define is_digit(X) ((length(X) == 1) && (length(text2num(X)) == 1))
|
||||
|
||||
@@ -1505,6 +1505,10 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
var/list/blocked = list(/obj/item/reagent_containers/food/drinks/soda_cans,
|
||||
/obj/item/reagent_containers/food/drinks/bottle
|
||||
)
|
||||
blocked |= typesof(/obj/item/reagent_containers/food/drinks/prospacillin,
|
||||
/obj/item/reagent_containers/food/drinks/diminicillin
|
||||
)
|
||||
|
||||
return pick(subtypesof(/obj/item/reagent_containers/food/drinks) - blocked)
|
||||
|
||||
//For these two procs refs MUST be ref = TRUE format like typecaches!
|
||||
|
||||
@@ -118,7 +118,8 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/autosurgeon/vagina = 1,
|
||||
/obj/item/autosurgeon/breasts = 1,
|
||||
/obj/item/autosurgeon/womb = 1,
|
||||
/obj/item/toy/plush/random = 1
|
||||
/obj/item/toy/plush/random = 1,
|
||||
/obj/item/grenade/spawnergrenade/clustaur = 1
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(ratking_trash, list(//Garbage: used by the regal rat mob when spawning garbage.
|
||||
|
||||
@@ -162,11 +162,21 @@
|
||||
desc = "Some food would be good right about now."
|
||||
icon_state = "hungry"
|
||||
|
||||
/obj/screen/alert/thirsty
|
||||
name = "Thirsty"
|
||||
desc = "Some water would be good right about now."
|
||||
icon_state = "thirsty"
|
||||
|
||||
/obj/screen/alert/starving
|
||||
name = "Starving"
|
||||
desc = "You're severely malnourished. The hunger pains make moving around a chore."
|
||||
icon_state = "starving"
|
||||
|
||||
/obj/screen/alert/dehydrated
|
||||
name = "Dehydrated"
|
||||
desc = "You're severely dehydrated."
|
||||
icon_state = "dehydrated"
|
||||
|
||||
/obj/screen/alert/gross
|
||||
name = "Grossed out."
|
||||
desc = "That was kind of gross..."
|
||||
|
||||
@@ -442,6 +442,12 @@ SUBSYSTEM_DEF(job)
|
||||
if(CONFIG_GET(number/minimal_access_threshold))
|
||||
to_chat(M, "<span class='notice'><B>As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.</B></span>")
|
||||
|
||||
if(ishuman(H))
|
||||
var/mob/living/carbon/human/wageslave = H
|
||||
to_chat(M, "<b><span class = 'big'>Your account ID is [wageslave.account_id]</span></b>")
|
||||
to_chat(M, "<b><span class = 'notice'>You do not have a pin, can set your pin at a ATM.</b>")
|
||||
H.add_memory("Your account ID is [wageslave.account_id].")
|
||||
|
||||
if(job && H)
|
||||
if(job.dresscodecompliant)// CIT CHANGE - dress code compliance
|
||||
equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
holdmyinsanityeffect = insanity_effect
|
||||
|
||||
HandleNutrition(owner)
|
||||
HandleThirst(owner)
|
||||
|
||||
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions.
|
||||
var/mob/living/master = parent
|
||||
@@ -289,7 +290,6 @@
|
||||
/datum/component/mood/proc/hud_click(datum/source, location, control, params, mob/user)
|
||||
print_mood(user)
|
||||
|
||||
|
||||
/datum/component/mood/proc/HandleNutrition(mob/living/L)
|
||||
switch(L.nutrition)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
@@ -305,5 +305,14 @@
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
add_event(null, "nutrition", /datum/mood_event/starving)
|
||||
|
||||
/datum/component/mood/proc/HandleThirst(mob/living/L)
|
||||
switch(L.thirst)
|
||||
if(NUTRITION_LEVEL_HUNGRY to INFINITY)
|
||||
clear_event(null, "thirst")
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
add_event(null, "thirst", /datum/mood_event/thirsty)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
add_event(null, "thirst", /datum/mood_event/dehydrated)
|
||||
|
||||
#undef MINOR_INSANITY_PEN
|
||||
#undef MAJOR_INSANITY_PEN
|
||||
|
||||
@@ -19,6 +19,14 @@
|
||||
description = "<span class='boldwarning'>I'm starving!</span>\n"
|
||||
mood_change = -15
|
||||
|
||||
/datum/mood_event/thirsty
|
||||
description = "<span class='warning'>I'm getting a bit thirsty.</span>\n"
|
||||
mood_change = -8
|
||||
|
||||
/datum/mood_event/dehydrated
|
||||
description = "<span class='boldwarning'>I'm dehydrated!</span>\n"
|
||||
mood_change = -15
|
||||
|
||||
//Disgust
|
||||
/datum/mood_event/gross
|
||||
description = "<span class='warning'>I saw something gross.</span>\n"
|
||||
|
||||
@@ -295,3 +295,33 @@
|
||||
/datum/quirk/slimespeaker/remove()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.remove_language(/datum/language/slime)
|
||||
|
||||
/datum/quirk/tajaspeaker
|
||||
name = "Siik-Tajr speaker"
|
||||
desc = "Due to your time spent around Tajaran, you can speak their native tongue!"
|
||||
value = 1
|
||||
gain_text = "<span class='notice'>You feel sensitive to mrowls and your tongue curls comfortably.</span>"
|
||||
lose_text = "<span class='notice'>You forget how to speak Siik'Tajr!</span>"
|
||||
|
||||
/datum/quirk/tajaspeaker/add()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.grant_language(/datum/language/tajara)
|
||||
|
||||
/datum/quirk/tajaspeaker/remove()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.remove_language(/datum/language/tajara)
|
||||
|
||||
/datum/quirk/russianspeaker
|
||||
name = "Neo-Russkiya speaker"
|
||||
desc = "Due to your time spent around space russians, you can speak Neo-Russkiya!"
|
||||
value = 1
|
||||
gain_text = "<span class='notice'>You feel sensitive to the motherland, blyat!</span>"
|
||||
lose_text = "<span class='notice'>You forget how to speak Neo-Russkiya!</span>"
|
||||
|
||||
/datum/quirk/russianspeaker/add()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.grant_language(/datum/language/spacerussian)
|
||||
|
||||
/datum/quirk/russianspeaker/remove()
|
||||
var/mob/living/M = quirk_holder
|
||||
M.remove_language(/datum/language/spacerussian)
|
||||
|
||||
@@ -134,4 +134,11 @@
|
||||
desc = "You like headpats, alot, maybe even a little bit too much. Headpats give you a bigger mood boost and cause arousal"
|
||||
mob_trait = TRAIT_HEADPAT_SLUT
|
||||
value = 0
|
||||
medical_record_text = "Patient seems overly affectionate"
|
||||
medical_record_text = "Patient seems overly affectionate."
|
||||
|
||||
/datum/quirk/headpat_hater
|
||||
name = "Distant"
|
||||
desc = "You don't seem to show much care for being touched. Whether it's because you're reserved or due to self control, you won't wag your tail outside of your own control should you possess one."
|
||||
mob_trait = TRAIT_DISTANT
|
||||
value = 0
|
||||
medical_record_text = "Patient cares little with or dislikes being touched."
|
||||
|
||||
@@ -19,6 +19,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
var/mode = 0
|
||||
var/printing = null
|
||||
var/target_dept = 0 //Which department this computer has access to. 0=all departments
|
||||
var/datum/bank_account/account/selectedbank
|
||||
|
||||
//Cooldown for closing positions in seconds
|
||||
//if set to -1: No cooldown... probably a bad idea
|
||||
@@ -250,6 +251,16 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
|
||||
dat += "</td></tr>"
|
||||
dat += "</table>"
|
||||
// Bank management
|
||||
else if(mode == 4)
|
||||
dat += {"<a href='?src=[REF(src)];choice=return'>Return</a>
|
||||
<table><tr><td style='width:25%'><b>Bank Accounts</b></td><td style='width:25%'></td></tr>"}
|
||||
for(var/datum/bank_account/account in SSeconomy.bank_accounts)
|
||||
dat += {"<td>[account.account_holder] - [account.account_id]"}
|
||||
dat += "<a href='?src=[REF(src)];choice=bankassign;assign_bank=[REF(account)]'>Assign to ID</a></td>"
|
||||
dat += "</td><tr>"
|
||||
|
||||
dat += "</table>"
|
||||
else
|
||||
var/list/header = list()
|
||||
var/scan_name = inserted_scan_id ? html_encode(inserted_scan_id.name) : "--------"
|
||||
@@ -266,6 +277,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
Target: <a href='?src=[REF(src)];choice=inserted_modify_id'>Remove [target_name]</a> ||
|
||||
Confirm Identity: <a href='?src=[REF(src)];choice=inserted_scan_id'>Remove [scan_name]</a><br>
|
||||
<a href='?src=[REF(src)];choice=mode;mode_target=1'>Access Crew Manifest</a><br>
|
||||
<a href='?src=[REF(src)];choice=mode;mode_target=4'>Access Bank Accounts</a><br>
|
||||
[!target_dept ? "<a href='?src=[REF(src)];choice=mode;mode_target=2'>Job Management</a><br>" : ""]
|
||||
<a href='?src=[REF(src)];choice=logout'>Log Out</a></div>"}
|
||||
|
||||
@@ -443,6 +455,17 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
if(access_allowed == 1)
|
||||
inserted_modify_id.access += access_type
|
||||
playsound(src, "terminal_type", 50, FALSE)
|
||||
if ("bankassign")
|
||||
if (authenticated == 2)
|
||||
var/datum/bank_account/account = locate(href_list["assign_bank"])
|
||||
if (inserted_modify_id && account)
|
||||
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
|
||||
to_chat(usr, "<span class='alert'>Bank account: [account.account_id], has been assigned to the ID.</span>")
|
||||
inserted_modify_id.registered_account = account
|
||||
else
|
||||
to_chat(usr, "<span class='alert'>There is no id inserted to modify.</span>")
|
||||
|
||||
|
||||
if ("assign")
|
||||
if (authenticated == 2)
|
||||
var/t1 = href_list["assign_target"]
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
/obj/machinery/suit_storage_unit/atmos
|
||||
suit_type = /obj/item/clothing/suit/space/hardsuit/engine/atmos
|
||||
mask_type = /obj/item/clothing/mask/gas
|
||||
storage_type = /obj/item/watertank/atmos
|
||||
storage_type = /obj/item/clothing/shoes/magboots/atmos
|
||||
|
||||
/obj/machinery/suit_storage_unit/mining
|
||||
suit_type = /obj/item/clothing/suit/hooded/explorer/standard
|
||||
|
||||
@@ -110,6 +110,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
|
||||
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
|
||||
|
||||
//Hyper economy
|
||||
var/price = 0
|
||||
|
||||
|
||||
/obj/item/Initialize()
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
var/registered_name = null // The name registered_name on the card
|
||||
var/assignment = null
|
||||
var/access_txt // mapping aid
|
||||
|
||||
var/datum/bank_account/registered_account
|
||||
|
||||
|
||||
/obj/item/card/id/Initialize(mapload)
|
||||
|
||||
@@ -501,6 +501,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
price = 1
|
||||
var/lit = 0
|
||||
var/fancy = TRUE
|
||||
var/overlay_state
|
||||
@@ -521,6 +522,25 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
overlay_state = pick(overlay_list)
|
||||
update_icon()
|
||||
|
||||
/obj/item/lighter/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(GLOB.lighter_reskins && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
|
||||
reskin_obj(user)
|
||||
|
||||
/obj/item/lighter/reskin_obj(mob/M)
|
||||
if(lit)
|
||||
return to_chat(M, "You need to close the lighter before changing the engraving!")
|
||||
if(!LAZYLEN(GLOB.lighter_reskins))
|
||||
return
|
||||
|
||||
var/choice = input(M, "Choose the a reskin for [src]","Reskin Object") as null|anything in GLOB.lighter_reskins
|
||||
var/new_icon = GLOB.lighter_reskins[choice]
|
||||
if(QDELETED(src) || isnull(new_icon) || new_icon == icon || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
overlay_state = new_icon
|
||||
update_icon()
|
||||
to_chat(M, "[src] is now skinned as '[choice]'.")
|
||||
|
||||
/obj/item/lighter/suicide_act(mob/living/carbon/user)
|
||||
if (lit)
|
||||
user.visible_message("<span class='suicide'>[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
|
||||
@@ -55,13 +55,9 @@
|
||||
|
||||
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
||||
/obj/item/taperecorder/attack_hand(mob/user)
|
||||
if(loc == user)
|
||||
if(mytape)
|
||||
if(!user.is_holding(src))
|
||||
return ..()
|
||||
eject(user)
|
||||
else
|
||||
if(loc != user || !mytape || !user.is_holding(src))
|
||||
return ..()
|
||||
eject(user)
|
||||
|
||||
/obj/item/taperecorder/proc/can_use(mob/user)
|
||||
if(user && ismob(user))
|
||||
|
||||
@@ -41,3 +41,11 @@
|
||||
icon_state = "holy_grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/poison/bees/toxin
|
||||
deliveryamt = 10
|
||||
|
||||
/obj/item/grenade/spawnergrenade/clustaur
|
||||
desc = "A very strange grenade often found in maintanance. Use of this may constitute a war crime in your area, consult your local captain."
|
||||
name = "clustaur grenade"
|
||||
icon_state = "clustaur"
|
||||
item_state = "clustaur"
|
||||
deliveryamt = 10
|
||||
spawner_type = /obj/item/reagent_containers/glass/beaker/waterbottle/wataur
|
||||
@@ -9,7 +9,7 @@
|
||||
throw_speed = 3
|
||||
var/mob/living/carbon/subject = null
|
||||
var/closed = FALSE
|
||||
|
||||
price = 10
|
||||
|
||||
|
||||
//Hypnotize someone
|
||||
@@ -36,7 +36,7 @@
|
||||
H.drowsyness = max(H.drowsyness, 40)
|
||||
subject = H
|
||||
return
|
||||
|
||||
|
||||
//No
|
||||
H.visible_message("<span class='warning'>[H]'s attention breaks, despite your attempts to hypnotize them! They clearly don't want this</span>", "<span class ='warning'>Your concentration breaks as you realise you have no interest in following [user]'s words!</span>")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
if(get_dist(user, subject) > 1)
|
||||
to_chat(user, "You must stand in whisper range of [subject].")
|
||||
return
|
||||
|
||||
|
||||
text = input("What would you like to suggest?", "Hypnotic suggestion", null, null)
|
||||
text = sanitize(text)
|
||||
if(!text)
|
||||
@@ -88,4 +88,4 @@
|
||||
item_state = "pocketwatch"
|
||||
desc = "An elaborate pocketwatch, with a captivating gold etching and an enchanting face..."
|
||||
closed = FALSE
|
||||
|
||||
|
||||
|
||||
@@ -84,3 +84,25 @@
|
||||
var/atom/A = V
|
||||
hos_gun_list[initial(A.name)] = A
|
||||
return hos_gun_list
|
||||
|
||||
// Bouquets
|
||||
/obj/item/bouquet
|
||||
name = "mixed bouquet"
|
||||
desc = "A bouquet of sunflowers, lilies, and geraniums. How delightful."
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "mixedbouquet"
|
||||
|
||||
/obj/item/bouquet/sunflower
|
||||
name = "sunflower bouquet"
|
||||
desc = "A bright bouquet of sunflowers."
|
||||
icon_state = "sunbouquet"
|
||||
|
||||
/obj/item/bouquet/poppy
|
||||
name = "poppy bouquet"
|
||||
desc = "A bouquet of poppies. You feel loved just looking at it."
|
||||
icon_state = "poppybouquet"
|
||||
|
||||
/obj/item/bouquet/rose
|
||||
name = "rose bouquet"
|
||||
desc = "A bouquet of roses. A bundle of love."
|
||||
icon_state = "rosebouquet"
|
||||
|
||||
@@ -760,6 +760,7 @@
|
||||
/obj/item/toy/plush/bird/kenk
|
||||
name = "kenku plushie"
|
||||
desc = "An adorable stuffed plushie that resembles a kenku, perfect to sit on."
|
||||
young = TRUE
|
||||
icon_state = "kenk"
|
||||
item_state = "kenk"
|
||||
squeak_override = list('modular_citadel/sound/voice/merp.ogg' = 1)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/item/stack/spacecash/proc/update_desc()
|
||||
var/total_worth = amount*value
|
||||
desc = "It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
|
||||
desc = "A outdated form of currency, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
|
||||
|
||||
|
||||
/obj/item/stack/spacecash/merge(obj/item/stack/S)
|
||||
|
||||
@@ -26,6 +26,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
grind_results = list(/datum/reagent/silicon = 20)
|
||||
point_value = 1
|
||||
tableVariant = /obj/structure/table/glass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -93,6 +94,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasmaglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
|
||||
tableVariant = /obj/structure/table/plasmaglass
|
||||
shard_type = /obj/item/shard/plasma
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/fifty
|
||||
amount = 50
|
||||
@@ -120,7 +122,9 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 1.2
|
||||
S.efficiency *= 1.2
|
||||
|
||||
/*
|
||||
* Reinforced glass sheets
|
||||
@@ -145,11 +149,15 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/rglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
|
||||
point_value = 4
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/rglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg
|
||||
materials = list()
|
||||
var/datum/robot_energy_storage/glasource
|
||||
@@ -188,6 +196,11 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
|
||||
point_value = 23
|
||||
shard_type = /obj/item/shard/plasma
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2.2
|
||||
S.efficiency *= 1.2
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.prglass_recipes
|
||||
@@ -207,6 +220,11 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/titaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2.5
|
||||
S.efficiency *= 1.5
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.titaniumglass_recipes
|
||||
@@ -226,11 +244,16 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plastitaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
|
||||
/obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = GLOB.plastitaniumglass_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
|
||||
S.obj_integrity *= 2
|
||||
S.efficiency *= 2
|
||||
|
||||
/obj/item/shard
|
||||
name = "shard"
|
||||
desc = "A nasty looking shard of glass."
|
||||
|
||||
@@ -50,9 +50,6 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
//END OF CIT CHANGES
|
||||
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
//add this when I can find a way to make them easily constructible > new/datum/stack_recipe("sink", /obj/structure/sink, 2, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new/datum/stack_recipe("shower", /obj/machinery/shower/crafted, 2, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("rack parts", /obj/item/rack_parts), \
|
||||
new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
@@ -340,6 +337,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \
|
||||
null, \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 2), \
|
||||
new/datum/stack_recipe("eyepatch", /obj/item/clothing/glasses/eyepatch, 2), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/cloth
|
||||
@@ -783,7 +781,13 @@ GLOBAL_LIST_INIT(shadoww_recipes, list ( \
|
||||
new/datum/stack_recipe("Shadow wood floor tile", /obj/item/stack/tile/shadoww, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Shadow wood table frame", /obj/structure/table_frame/shadoww, 2, time = 10), \
|
||||
null, \
|
||||
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/shadoww, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Shadow wood chair", /obj/structure/chair/shadoww, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Shadow wood barricade", /obj/structure/barricade/shadoww, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Dog bed", /obj/structure/bed/shadowwdogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Dresser", /obj/structure/shadowwdresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("shadow wood crate", /obj/structure/closet/crate/shadoww, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
|
||||
null, \
|
||||
))
|
||||
|
||||
@@ -815,7 +819,13 @@ GLOBAL_LIST_INIT(gmushroom_recipes, list ( \
|
||||
new/datum/stack_recipe("Mushroom floor tile", /obj/item/stack/tile/gmushroom, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Mushroom table frame", /obj/structure/table_frame/gmushroom, 2, time = 10), \
|
||||
null, \
|
||||
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/gmushroom, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Mushroom chair", /obj/structure/chair/gmushroom, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Mushroom barricade", /obj/structure/barricade/gmushroom, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Dog bed", /obj/structure/bed/gmushroomdogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Dresser", /obj/structure/gmushroomdresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Mushroom crate", /obj/structure/closet/crate/gmushroom, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
|
||||
null, \
|
||||
))
|
||||
|
||||
@@ -847,7 +857,13 @@ GLOBAL_LIST_INIT(plaswood_recipes, list ( \
|
||||
new/datum/stack_recipe("Plaswood floor tile", /obj/item/stack/tile/plaswood, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Plaswood table frame", /obj/structure/table_frame/plaswood, 2, time = 10), \
|
||||
null, \
|
||||
new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/plaswood, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Plaswood chair", /obj/structure/chair/plaswood, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Plaswood barricade", /obj/structure/barricade/plaswood, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Dog bed", /obj/structure/bed/plaswooddogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Dresser", /obj/structure/plaswooddresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("Plaswood crate", /obj/structure/closet/crate/plaswood, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\
|
||||
null, \
|
||||
))
|
||||
|
||||
|
||||
@@ -15,4 +15,15 @@
|
||||
var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity
|
||||
var/is_fabric = FALSE //is this a valid material for the loom?
|
||||
var/loom_result //result from pulling on the loom
|
||||
var/pull_effort = 0 //amount of delay when pulling on the loom
|
||||
var/pull_effort = 0 //amount of delay when pulling on the loom
|
||||
var/shard_type // the shard debris typepath left over by solar panels and windows etc.
|
||||
|
||||
/**
|
||||
* Called on the glass sheet upon solar construction (duh):
|
||||
* Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency
|
||||
* and possibly extra effects if you wish to code them.
|
||||
* Keep in mind the solars' max_integrity is set equal to the obj_integrity later,
|
||||
* so you won't have to do so here.
|
||||
*/
|
||||
/obj/item/stack/sheet/proc/on_solar_construction(/obj/machinery/power/solar/S)
|
||||
return
|
||||
|
||||
@@ -237,6 +237,7 @@
|
||||
desc = "Holds a variety of gear for \"alternative\" peacekeeping."
|
||||
icon_state = "slutbelt"
|
||||
item_state = "slut"
|
||||
price = 5
|
||||
|
||||
obj/item/storage/belt/slut/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -370,6 +371,12 @@ obj/item/storage/belt/slut/ComponentInitialize()
|
||||
/obj/item/clothing/mask/luchador
|
||||
)
|
||||
|
||||
/obj/item/storage/belt/cummerbund
|
||||
name = "cummerbund" //I swear to god if you people aren't mature enough to handle this I'm just gonna call it a sash.
|
||||
desc = "A pleated sash that pairs well with a suit jacket."
|
||||
icon_state = "cummerbund"
|
||||
item_state = "cummerbund"
|
||||
|
||||
/obj/item/storage/belt/military
|
||||
name = "chest rig"
|
||||
desc = "A set of tactical webbing worn by Syndicate boarding parties."
|
||||
|
||||
@@ -415,6 +415,7 @@
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
icon_state = "donkpocketbox"
|
||||
illustration=null
|
||||
price = 10
|
||||
|
||||
/obj/item/storage/box/donkpockets/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -687,6 +688,7 @@
|
||||
item_state = "zippo"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
price = 2
|
||||
|
||||
/obj/item/storage/box/matches/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
icon_type = "cigarette"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
|
||||
price = 5
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -230,6 +231,7 @@
|
||||
desc = "Smoked by the truly robust."
|
||||
icon_state = "robustg"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/robustgold
|
||||
price = 6
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_carp
|
||||
name = "\improper Carp Classic packet"
|
||||
@@ -281,6 +283,7 @@
|
||||
icon_state = "cig_paper_pack"
|
||||
icon_type = "rolling paper"
|
||||
spawn_type = /obj/item/rollingpaper
|
||||
price = 2
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -305,6 +308,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
icon_type = "premium cigar"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/cigar
|
||||
price = 8
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -324,7 +324,7 @@
|
||||
|
||||
/obj/item/storage/pill_bottle/mutarad
|
||||
name = "radiation treatment deluxe pill bottle"
|
||||
desc = "The label says 'Med-Co branded pills' and below that 'Contains Mutadone in each pill!`."
|
||||
desc = "The label says 'Med-Co branded pills' and below that 'Contains Mutadone in each pill!'."
|
||||
|
||||
/obj/item/storage/pill_bottle/mutarad/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
@@ -340,7 +340,7 @@
|
||||
|
||||
/obj/item/storage/pill_bottle/breast_enlargement
|
||||
name = "breast enlargement pills"
|
||||
desc = "Made by Fermichem - They have a woman with breasts larger than she is on them. The warming states not to take more than 10u at a time."
|
||||
desc = "Made by Fermichem - They have a woman with breasts larger than she is on them. The warning states not to take more than 10u at a time."
|
||||
|
||||
/obj/item/storage/pill_bottle/breast_enlargement/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/valentine,
|
||||
/obj/item/stamp,
|
||||
/obj/item/condom))
|
||||
/obj/item/condom,
|
||||
/obj/item/stack/credits))
|
||||
|
||||
/obj/item/storage/wallet/Exited(atom/movable/AM)
|
||||
. = ..()
|
||||
|
||||
@@ -341,6 +341,7 @@
|
||||
item_state = "upindwelder"
|
||||
max_fuel = 80
|
||||
materials = list(MAT_METAL=70, MAT_GLASS=120)
|
||||
price = 10
|
||||
|
||||
/obj/item/weldingtool/experimental
|
||||
name = "experimental welding tool"
|
||||
|
||||
@@ -210,3 +210,30 @@
|
||||
name = "resting contraption"
|
||||
desc = "This looks similar to contraptions from Earth. Could aliens be stealing our technology?"
|
||||
icon_state = "abed"
|
||||
|
||||
/obj/structure/bed/shadowwdogbed
|
||||
name = "dog bed"
|
||||
icon_state = "shadowwdogbed"
|
||||
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
|
||||
anchored = FALSE
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/shadoww
|
||||
buildstackamount = 10
|
||||
var/mob/living/owner = null
|
||||
|
||||
/obj/structure/bed/plaswooddogbed
|
||||
name = "dog bed"
|
||||
icon_state = "plaswooddogbed"
|
||||
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
|
||||
anchored = FALSE
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/plaswood
|
||||
buildstackamount = 10
|
||||
var/mob/living/owner = null
|
||||
|
||||
/obj/structure/bed/gmushroomdogbed
|
||||
name = "dog bed"
|
||||
icon_state = "gmushroomdogbed"
|
||||
desc = "A comfy-looking dog bed. You can even strap your pet in, in case the gravity turns off."
|
||||
anchored = FALSE
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/gmushroom
|
||||
buildstackamount = 10
|
||||
var/mob/living/owner = null
|
||||
@@ -171,6 +171,36 @@
|
||||
icon_state = "wooden_chair_wings"
|
||||
item_chair = /obj/item/chair/wood/wings
|
||||
|
||||
/obj/structure/chair/shadoww
|
||||
icon_state = "shadoww_chair"
|
||||
name = "shadow wood chair"
|
||||
desc = "Fashionable dark."
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/shadoww
|
||||
buildstackamount = 3
|
||||
item_chair = /obj/item/chair/shadoww
|
||||
|
||||
/obj/structure/chair/plaswood
|
||||
icon_state = "plaswood_chair"
|
||||
name = "plaswood chair"
|
||||
desc = "Hard but confortable to sit."
|
||||
resistance_flags = FLAMMABLE | ACID_PROOF
|
||||
max_integrity = 90
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/plaswood
|
||||
buildstackamount = 3
|
||||
item_chair = /obj/item/chair/plaswood
|
||||
|
||||
/obj/structure/chair/gmushroom
|
||||
icon_state = "gmushroom_chair"
|
||||
name = "mushroom chair"
|
||||
desc = "You don't need to worry about losing your seat in case of fire!"
|
||||
resistance_flags = FIRE_PROOF
|
||||
max_integrity = 70
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/gmushroom
|
||||
buildstackamount = 3
|
||||
item_chair = /obj/item/chair/gmushroom
|
||||
|
||||
/obj/structure/chair/comfy
|
||||
name = "comfy chair"
|
||||
desc = "It looks comfy."
|
||||
@@ -517,6 +547,39 @@
|
||||
icon_state = "wooden_chair_wings_toppled"
|
||||
origin_type = /obj/structure/chair/wood/wings
|
||||
|
||||
/obj/item/chair/shadoww
|
||||
name = "shadow wood chair"
|
||||
icon_state = "shadoww_chair_toppled"
|
||||
item_state = "shadowwchair"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
hitsound = 'sound/weapons/genhit1.ogg'
|
||||
origin_type = /obj/structure/chair/shadoww
|
||||
materials = null
|
||||
break_chance = 50
|
||||
|
||||
/obj/item/chair/plaswood
|
||||
name = "plaswood chair"
|
||||
icon_state = "plaswood_chair_toppled"
|
||||
item_state = "plaswoodchair"
|
||||
resistance_flags = FLAMMABLE | ACID_PROOF
|
||||
max_integrity = 90
|
||||
hitsound = 'sound/weapons/genhit1.ogg'
|
||||
origin_type = /obj/structure/chair/plaswood
|
||||
materials = null
|
||||
break_chance = 70
|
||||
|
||||
/obj/item/chair/gmushroom
|
||||
name = "mushroom chair"
|
||||
icon_state = "gmushroom_chair_toppled"
|
||||
item_state = "gmushroomchair"
|
||||
resistance_flags = FIRE_PROOF
|
||||
max_integrity = 70
|
||||
hitsound = 'sound/weapons/genhit1.ogg'
|
||||
origin_type = /obj/structure/chair/gmushroom
|
||||
materials = null
|
||||
break_chance = 50
|
||||
|
||||
/obj/structure/chair/old
|
||||
name = "strange chair"
|
||||
desc = "You sit in this. Either by will or force. Looks REALLY uncomfortable."
|
||||
|
||||
@@ -15,4 +15,25 @@
|
||||
new /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter(src)
|
||||
new /obj/item/pneumatic_cannon/pie(src)
|
||||
new /obj/item/reagent_containers/food/snacks/pie/cream(src)
|
||||
new /obj/item/storage/crayons(src)
|
||||
new /obj/item/storage/crayons(src)
|
||||
|
||||
/obj/structure/closet/crate/shadoww
|
||||
name = "shadown wood crate"
|
||||
desc = "Works just as well as a metal one."
|
||||
material_drop = /obj/item/stack/sheet/mineral/shadoww
|
||||
material_drop_amount = 6
|
||||
icon_state = "shadoww"
|
||||
|
||||
/obj/structure/closet/crate/plaswood
|
||||
name = "plaswood crate"
|
||||
desc = "Works just as well as a metal one."
|
||||
material_drop = /obj/item/stack/sheet/mineral/plaswood
|
||||
material_drop_amount = 6
|
||||
icon_state = "plaswood"
|
||||
|
||||
/obj/structure/closet/crate/gmushroom
|
||||
name = "mushroom crate"
|
||||
desc = "Works just as well as a metal one."
|
||||
material_drop = /obj/item/stack/sheet/mineral/gmushroom
|
||||
material_drop_amount = 6
|
||||
icon_state = "gmushroom"
|
||||
@@ -80,3 +80,252 @@
|
||||
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return default_color
|
||||
return sanitize_hexcolor(n_color)
|
||||
|
||||
/obj/structure/gmushroomdresser
|
||||
name = "dresser"
|
||||
desc = "A nicely-crafted mushroom dresser. It's filled with lots of undies."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "gmushroomdresser"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/gmushroomdresser/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wrench))
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
if(I.use_tool(src, user, 20, volume=50))
|
||||
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
setAnchored(!anchored)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/gmushroomdresser/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/gmushroom(drop_location(), 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/gmushroomdresser/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
|
||||
return
|
||||
|
||||
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
|
||||
if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear]))
|
||||
undergarment_choices -= "Underwear Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt]))
|
||||
undergarment_choices -= "Undershirt Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks]))
|
||||
undergarment_choices -= "Socks Color"
|
||||
|
||||
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
|
||||
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/dye_undie = FALSE
|
||||
var/dye_shirt = FALSE
|
||||
var/dye_socks = FALSE
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
|
||||
if(H.underwear)
|
||||
H.underwear = new_undies
|
||||
H.saved_underwear = new_undies
|
||||
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
|
||||
dye_undie = B?.has_color
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
H.saved_undershirt = new_undershirt
|
||||
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
|
||||
dye_shirt = T?.has_color
|
||||
if("Socks")
|
||||
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
|
||||
if(new_socks)
|
||||
H.socks = new_socks
|
||||
H.saved_socks = new_socks
|
||||
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
|
||||
dye_socks = S?.has_color
|
||||
if(dye_undie || choice == "Underwear Color")
|
||||
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
|
||||
if(dye_shirt || choice == "Undershirt Color")
|
||||
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
|
||||
if(dye_socks || choice == "Socks Color")
|
||||
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
|
||||
/obj/structure/gmushroomdresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
|
||||
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
|
||||
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return default_color
|
||||
return sanitize_hexcolor(n_color)
|
||||
|
||||
/obj/structure/plaswooddresser
|
||||
name = "dresser"
|
||||
desc = "A nicely-crafted plaswood dresser. It's filled with lots of undies."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "plaswooddresser"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/plaswooddresser/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wrench))
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
if(I.use_tool(src, user, 20, volume=50))
|
||||
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
setAnchored(!anchored)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/plaswooddresser/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/plaswood(drop_location(), 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/plaswooddresser/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
|
||||
return
|
||||
|
||||
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
|
||||
if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear]))
|
||||
undergarment_choices -= "Underwear Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt]))
|
||||
undergarment_choices -= "Undershirt Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks]))
|
||||
undergarment_choices -= "Socks Color"
|
||||
|
||||
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
|
||||
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/dye_undie = FALSE
|
||||
var/dye_shirt = FALSE
|
||||
var/dye_socks = FALSE
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
|
||||
if(H.underwear)
|
||||
H.underwear = new_undies
|
||||
H.saved_underwear = new_undies
|
||||
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
|
||||
dye_undie = B?.has_color
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
H.saved_undershirt = new_undershirt
|
||||
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
|
||||
dye_shirt = T?.has_color
|
||||
if("Socks")
|
||||
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
|
||||
if(new_socks)
|
||||
H.socks = new_socks
|
||||
H.saved_socks = new_socks
|
||||
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
|
||||
dye_socks = S?.has_color
|
||||
if(dye_undie || choice == "Underwear Color")
|
||||
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
|
||||
if(dye_shirt || choice == "Undershirt Color")
|
||||
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
|
||||
if(dye_socks || choice == "Socks Color")
|
||||
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
|
||||
/obj/structure/plaswooddresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
|
||||
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
|
||||
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return default_color
|
||||
return sanitize_hexcolor(n_color)
|
||||
|
||||
/obj/structure/shadowwdresser
|
||||
name = "dresser"
|
||||
desc = "A nicely-crafted shadow wood dresser. It's filled with lots of undies."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "shadowwdresser"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/shadowwdresser/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/wrench))
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
if(I.use_tool(src, user, 20, volume=50))
|
||||
to_chat(user, "<span class='notice'>You successfully [anchored ? "unwrench" : "wrench"] [src].</span>")
|
||||
setAnchored(!anchored)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/shadowwdresser/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/mineral/shadoww(drop_location(), 10)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/shadowwdresser/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
|
||||
return
|
||||
|
||||
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
|
||||
if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear]))
|
||||
undergarment_choices -= "Underwear Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt]))
|
||||
undergarment_choices -= "Undershirt Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks]))
|
||||
undergarment_choices -= "Socks Color"
|
||||
|
||||
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
|
||||
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/dye_undie = FALSE
|
||||
var/dye_shirt = FALSE
|
||||
var/dye_socks = FALSE
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
|
||||
if(H.underwear)
|
||||
H.underwear = new_undies
|
||||
H.saved_underwear = new_undies
|
||||
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
|
||||
dye_undie = B?.has_color
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
H.saved_undershirt = new_undershirt
|
||||
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
|
||||
dye_shirt = T?.has_color
|
||||
if("Socks")
|
||||
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
|
||||
if(new_socks)
|
||||
H.socks = new_socks
|
||||
H.saved_socks = new_socks
|
||||
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
|
||||
dye_socks = S?.has_color
|
||||
if(dye_undie || choice == "Underwear Color")
|
||||
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
|
||||
if(dye_shirt || choice == "Undershirt Color")
|
||||
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
|
||||
if(dye_socks || choice == "Socks Color")
|
||||
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
|
||||
/obj/structure/shadowwdresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
|
||||
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
|
||||
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return default_color
|
||||
return sanitize_hexcolor(n_color)
|
||||
@@ -219,8 +219,8 @@
|
||||
var/watertemp = "normal" //freezing, normal, or boiling
|
||||
var/datum/looping_sound/showering/soundloop
|
||||
|
||||
/obj/machinery/shower/crafted //When created from sheets of metal
|
||||
anchored = FALSE
|
||||
/*/obj/machinery/shower/crafted //When created from sheets of metal
|
||||
anchored = FALSE */ //Stop exploiting this ree
|
||||
|
||||
/obj/machinery/shower/Initialize()
|
||||
. = ..()
|
||||
@@ -292,43 +292,19 @@
|
||||
if (user.a_intent != INTENT_HELP)
|
||||
return ..()
|
||||
|
||||
switch (I.tool_behaviour)
|
||||
if (TOOL_WRENCH)
|
||||
if (!anchored)
|
||||
user.visible_message("<span class='notice'>[user] starts to take apart [src]...</span>", "<span class='notice'>You start dismantling [src]...</span>")
|
||||
I.play_tool_sound(src)
|
||||
if(I.use_tool(src, user, 20))
|
||||
deconstruct(TRUE)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You begin to adjust the temperature valve with \the [I]...</span>")
|
||||
if(I.use_tool(src, user, 50))
|
||||
switch(watertemp)
|
||||
if("normal")
|
||||
watertemp = "freezing"
|
||||
if("freezing")
|
||||
watertemp = "boiling"
|
||||
if("boiling")
|
||||
watertemp = "normal"
|
||||
user.visible_message("<span class='notice'>[user] adjusts the shower with \the [I].</span>", "<span class='notice'>You adjust the shower with \the [I] to [watertemp] temperature.</span>")
|
||||
log_game("[key_name(user)] has wrenched a shower to [watertemp] at ([x],[y],[z])")
|
||||
add_hiddenprint(user)
|
||||
|
||||
if (TOOL_SCREWDRIVER)
|
||||
if (!anchored)
|
||||
to_chat(user, "<span class='notice'>You begin screwing in [src] to the floor...</span>")
|
||||
I.play_tool_sound(src)
|
||||
if(I.use_tool(src, user, 30))
|
||||
user.visible_message("<span class='notice'>[user] connects [src] to the floor.</span>", "<span class='notice'>You connect [src] to the floor.</span>")
|
||||
anchored = TRUE
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You start to take out [src]'s screws...</span>")
|
||||
on = FALSE
|
||||
soundloop.stop()
|
||||
update_icon()
|
||||
I.play_tool_sound(src)
|
||||
if(I.use_tool(src, user, 20))
|
||||
user.visible_message("<span class='notice'>[user] disconnects [src] from the floor.</span>", "<span class='notice'>You disconnect [src] from the floor.</span>")
|
||||
anchored = FALSE
|
||||
if (I.tool_behaviour == TOOL_WRENCH)
|
||||
to_chat(user, "<span class='notice'>You begin to adjust the temperature valve with \the [I]...</span>")
|
||||
if(I.use_tool(src, user, 50))
|
||||
switch(watertemp)
|
||||
if("normal")
|
||||
watertemp = "freezing"
|
||||
if("freezing")
|
||||
watertemp = "boiling"
|
||||
if("boiling")
|
||||
watertemp = "normal"
|
||||
user.visible_message("<span class='notice'>[user] adjusts the shower with \the [I].</span>", "<span class='notice'>You adjust the shower with \the [I] to [watertemp] temperature.</span>")
|
||||
log_game("[key_name(user)] has wrenched a shower to [watertemp] at ([x],[y],[z])")
|
||||
add_hiddenprint(user)
|
||||
|
||||
/obj/machinery/shower/examine()
|
||||
. += ..()
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
var/decon_speed = 30
|
||||
var/wtype = "glass"
|
||||
var/fulltile = FALSE
|
||||
var/glass_type = /obj/item/stack/sheet/glass
|
||||
var/obj/item/stack/sheet/glass_type = /obj/item/stack/sheet/glass
|
||||
var/cleanable_type = /obj/effect/decal/cleanable/glass
|
||||
var/glass_amount = 1
|
||||
var/mutable_appearance/crack_overlay
|
||||
can_be_unanchored = TRUE
|
||||
@@ -279,12 +280,15 @@
|
||||
|
||||
/obj/structure/window/proc/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard(location)
|
||||
. += new /obj/effect/decal/cleanable/glass(location)
|
||||
var/shard = initial(glass_type.shard_type)
|
||||
if(shard)
|
||||
. += new shard(location)
|
||||
if (fulltile)
|
||||
. += new shard(location)
|
||||
if(cleanable_type)
|
||||
. += new cleanable_type(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard(location)
|
||||
|
||||
/obj/structure/window/proc/can_be_rotated(mob/user,rotation_type)
|
||||
if(anchored)
|
||||
@@ -411,17 +415,9 @@
|
||||
max_integrity = 150
|
||||
explosion_block = 1
|
||||
glass_type = /obj/item/stack/sheet/plasmaglass
|
||||
cleanable_type = /obj/effect/decal/cleanable/glass/plasma
|
||||
rad_insulation = RAD_NO_INSULATION
|
||||
|
||||
/obj/structure/window/plasma/spawnDebris(location)
|
||||
. = list()
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
. += new /obj/effect/decal/cleanable/glass/plasma(location)
|
||||
if (reinf)
|
||||
. += new /obj/item/stack/rods(location, (fulltile ? 2 : 1))
|
||||
if (fulltile)
|
||||
. += new /obj/item/shard/plasma(location)
|
||||
|
||||
/obj/structure/window/plasma/spawner/east
|
||||
dir = EAST
|
||||
|
||||
@@ -884,11 +880,6 @@
|
||||
level = 3
|
||||
glass_amount = 2
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/spawnDebris(location)
|
||||
. = list()
|
||||
for(var/i in 1 to 4)
|
||||
. += new /obj/item/clockwork/alloy_shards/medium/gear_bit(location)
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/Initialize(mapload, direct)
|
||||
made_glow = TRUE
|
||||
new /obj/effect/temp_visual/ratvar/window(get_turf(src))
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
msg = keywords_lookup(msg)
|
||||
msg = "<span class='adminsay'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> [ADMIN_FLW(mob)]: <span class='message linkify'>[msg]</span></span>"
|
||||
to_chat(GLOB.admins, msg)
|
||||
|
||||
SEND_SOUND(GLOB.admins, sound('sound/effects/asay.ogg'))
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/get_admin_say()
|
||||
|
||||
@@ -184,7 +184,18 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
|
||||
name = "Miasma"
|
||||
gas_overlay = "miasma"
|
||||
moles_visible = MOLES_GAS_VISIBLE * 60
|
||||
rarity = 250
|
||||
rarity = 150
|
||||
|
||||
|
||||
/datum/gas/pheromone
|
||||
id = "pheromone"
|
||||
specific_heat = 0.00001
|
||||
fusion_power = 30
|
||||
name = "Pheromones"
|
||||
gas_overlay = "pheromone"
|
||||
moles_visible = MOLES_GAS_VISIBLE * 10
|
||||
rarity = 30
|
||||
|
||||
|
||||
/obj/effect/overlay/gas
|
||||
icon = 'icons/effects/atmospherics.dmi'
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
/datum/gas/nitrogen = new/datum/tlv(-1, -1, 1000, 1000),
|
||||
/datum/gas/carbon_dioxide = new/datum/tlv(-1, -1, 5, 10),
|
||||
/datum/gas/miasma = new/datum/tlv/(-1, -1, 2, 5),
|
||||
/datum/gas/pheromone = new/datum/tlv/(-1, -1, 2, 5),
|
||||
/datum/gas/plasma = new/datum/tlv/dangerous,
|
||||
/datum/gas/nitrous_oxide = new/datum/tlv/dangerous,
|
||||
/datum/gas/bz = new/datum/tlv/dangerous,
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
|
||||
/obj/item/paper/fluff/awaymissions/snowdin/secnotice
|
||||
name = "Security Notice"
|
||||
info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked
|
||||
info = {"You have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked
|
||||
staff for this post have been pre-screened with no prior incidients on record, but incase of an issue you have been given a single holding cell and instructions to contact Central to terminate the
|
||||
offending crewmember."}
|
||||
|
||||
|
||||
@@ -215,3 +215,24 @@
|
||||
description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails."
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/melee/chainofcommand/tailwhip)
|
||||
|
||||
/datum/bounty/item/assistant/shadow_wood_chair
|
||||
name = "Shadow Wood Chairs"
|
||||
description = "Commander Mat is unhappy with his chair. He claims it hurts his back. Ship some shadow wood chairs to humor him."
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/shadoww)
|
||||
|
||||
/datum/bounty/item/assistant/mushroom_chair
|
||||
name = "Mushroom Chairs"
|
||||
description = "Commander Rat is unhappy with his chair. He claims it hurts his back. Ship some mushroom chairs to humor him."
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/gmushroom)
|
||||
|
||||
/datum/bounty/item/assistant/plaswood_chair
|
||||
name = "Plaswood Chairs"
|
||||
description = "Commander Cat is unhappy with his chair. He claims it hurts his back. Ship some plaswood chairs to humor him."
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/plaswood)
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
crate_name = "swat crate"
|
||||
|
||||
/datum/supply_pack/security/armory/swattasers //Lesser AEG tbh
|
||||
name = "SWAT tatical tasers Crate"
|
||||
name = "SWAT tactical tasers Crate"
|
||||
desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open."
|
||||
cost = 7000
|
||||
contains = list(/obj/item/gun/energy/e_gun/stun,
|
||||
|
||||
@@ -289,6 +289,30 @@
|
||||
crate_name = "wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/magicka
|
||||
name = "Proper Wizard Costume Crate"
|
||||
desc = "Up to four crewmates take on a grand adventure to save their world from certain doom using the robes in this crate!"
|
||||
cost = 7000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/suit/notwizrobe,
|
||||
/obj/item/clothing/head/notwizard,
|
||||
/obj/item/clothing/suit/notwizrobe/red,
|
||||
/obj/item/clothing/head/notwizard/red,
|
||||
/obj/item/clothing/suit/notwizrobe/yellow,
|
||||
/obj/item/clothing/head/notwizard/yellow,
|
||||
/obj/item/clothing/suit/notwizrobe/black,
|
||||
/obj/item/clothing/head/notwizard/black)
|
||||
crate_name = "proper wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
|
||||
@@ -350,6 +350,19 @@
|
||||
/obj/item/toner)
|
||||
crate_name = "toner crate"
|
||||
|
||||
/datum/supply_pack/misc/wedding
|
||||
name = "Wedding Crate"
|
||||
desc = "Almost everything you need to host a wedding! Don't forget a ring!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/clothing/under/wedding_dress,
|
||||
/obj/item/clothing/under/tuxedo,
|
||||
/obj/item/storage/belt/cummerbund,
|
||||
/obj/item/bouquet,
|
||||
/obj/item/bouquet/sunflower,
|
||||
/obj/item/bouquet/poppy,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/champagne)
|
||||
crate_name = "wedding crate"
|
||||
|
||||
/datum/supply_pack/misc/diamondring
|
||||
name = "Diamond Ring"
|
||||
desc = "Show them your love is like a diamond: unbreakable and forever lasting. Shipped straight from child slave cartels in the space african mines."
|
||||
|
||||
@@ -588,7 +588,7 @@
|
||||
/datum/supply_pack/organic/seeds
|
||||
name = "Seeds Crate"
|
||||
desc = "Big things have small beginnings. Contains fourteen different seeds."
|
||||
cost = 1250
|
||||
cost = 1300
|
||||
contains = list(/obj/item/seeds/chili,
|
||||
/obj/item/seeds/berry,
|
||||
/obj/item/seeds/corn,
|
||||
|
||||
@@ -46,6 +46,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/buttons_locked = FALSE
|
||||
var/hotkeys = FALSE
|
||||
var/chat_on_map = TRUE
|
||||
var/autocorrect = TRUE
|
||||
var/radiosounds = TRUE
|
||||
var/max_chat_length = CHAT_MESSAGE_MAX_LENGTH
|
||||
var/see_chat_non_mob = TRUE
|
||||
@@ -96,7 +97,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//H13
|
||||
var/body_size = 100 //Body Size in percent
|
||||
var/can_get_preg = 0 //Body Size in percent
|
||||
var/can_get_preg = 0 //if they can get preggers
|
||||
|
||||
|
||||
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
||||
var/list/features = list("mcolor" = "FFF",
|
||||
@@ -135,6 +137,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"has_sheath" = FALSE,
|
||||
"sheath_color" = "fff",
|
||||
"has_belly" = FALSE,
|
||||
"hide_belly" = FALSE,
|
||||
"belly_color" = "fff",
|
||||
"has_balls" = FALSE,
|
||||
"balls_internal" = FALSE,
|
||||
@@ -903,7 +906,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
else
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["belly_color"]];'> </span> <a href='?_src_=prefs;preference=belly_color;task=input'>Change</a><br>"
|
||||
|
||||
dat += "<b>Hide on Round-Start:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=hide_belly'>[features["hide_belly"] == 1 ? "Yes" : "No"]</a>"
|
||||
|
||||
dat += "</td>"
|
||||
dat += "</td>"
|
||||
@@ -919,6 +922,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Chat Bubbles message char limit:</b> <a href='?_src_=prefs;preference=max_chat_length;task=input'>[max_chat_length]</a><br>"
|
||||
dat += "<b>Chat Bubbles for non-mobs:</b> <a href='?_src_=prefs;preference=see_chat_non_mob'>[see_chat_non_mob ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Autocorrect:</b> <a href='?_src_=prefs;preference=autocorrect'>[(autocorrect) ? "On" : "Off"]</a><br>"
|
||||
dat += "<b>Radio Sounds:</b> <a href='?_src_=prefs;preference=radiosounds'>[radiosounds ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Action Buttons:</b> <a href='?_src_=prefs;preference=action_buttons'>[(buttons_locked) ? "Locked In Place" : "Unlocked"]</a><br>"
|
||||
@@ -2401,6 +2405,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["has_balls"] = FALSE
|
||||
if("has_belly")
|
||||
features["has_belly"] = !features["has_belly"]
|
||||
if(features["has_belly"] == FALSE)
|
||||
features["hide_belly"] = FALSE
|
||||
if("hide_belly")
|
||||
features["hide_belly"] = !features["hide_belly"]
|
||||
if("has_balls")
|
||||
features["has_balls"] = !features["has_balls"]
|
||||
if("has_ovi")
|
||||
@@ -2474,6 +2482,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
buttons_locked = !buttons_locked
|
||||
if("chat_on_map")
|
||||
chat_on_map = !chat_on_map
|
||||
if("autocorrect")
|
||||
autocorrect = !autocorrect
|
||||
if("radiosounds")
|
||||
radiosounds = !radiosounds
|
||||
if("see_chat_non_mob")
|
||||
|
||||
@@ -108,6 +108,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["uses_glasses_colour"]>> uses_glasses_colour
|
||||
S["clientfps"] >> clientfps
|
||||
S["chat_on_map"] >> chat_on_map
|
||||
S["autocorrect"] >> autocorrect
|
||||
S["radiosounds"] >> radiosounds
|
||||
S["max_chat_length"] >> max_chat_length
|
||||
S["see_chat_non_mob"] >> see_chat_non_mob
|
||||
@@ -146,6 +147,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
|
||||
UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1])
|
||||
hotkeys = sanitize_integer(hotkeys, 0, 1, initial(hotkeys))
|
||||
autocorrect = sanitize_integer(autocorrect, 0, 1, initial(autocorrect))
|
||||
chat_on_map = sanitize_integer(chat_on_map, 0, 1, initial(chat_on_map))
|
||||
radiosounds = sanitize_integer(radiosounds, 0, 1, initial(radiosounds))
|
||||
max_chat_length = sanitize_integer(max_chat_length, 1, CHAT_MESSAGE_MAX_LENGTH, initial(max_chat_length))
|
||||
@@ -159,7 +161,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
|
||||
if (clientfps == 0) clientfps = world.fps*2
|
||||
body_size = sanitize_integer(body_size, 90, 110, 0)
|
||||
can_get_preg = sanitize_integer(body_size, 0, 1, 0)
|
||||
can_get_preg = sanitize_integer(can_get_preg, 0, 1, 0)
|
||||
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
|
||||
ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion))
|
||||
auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport))
|
||||
@@ -414,6 +416,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//balls features
|
||||
S["feature_has_belly"] >> features["has_belly"]
|
||||
S["feature_belly_color"] >> features["belly_color"]
|
||||
S["feature_hide_belly"] >> features["hide_belly"]
|
||||
|
||||
//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.
|
||||
|
||||
@@ -72,6 +72,12 @@
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions. This one has prescription lens fitted in."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/eyepatch
|
||||
name = "meson scanner eyepatch"
|
||||
desc = "An eyepatch with a built-in meson scanner."
|
||||
icon_state = "mesonpatch"
|
||||
item_state = "mesonpatch"
|
||||
|
||||
/obj/item/clothing/glasses/meson/night
|
||||
name = "night vision meson scanner"
|
||||
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
|
||||
@@ -108,6 +114,12 @@
|
||||
if(slot == SLOT_GLASSES)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/glasses/science/eyepatch
|
||||
name = "science eyepatch"
|
||||
desc = "An eyepatch with an analyser for scanning items and reagents."
|
||||
icon_state = "scipatch"
|
||||
item_state = "scipatch"
|
||||
|
||||
/obj/item/clothing/glasses/night
|
||||
name = "night vision goggles"
|
||||
desc = "You can totally see in the dark now!"
|
||||
@@ -122,6 +134,12 @@
|
||||
desc = "NVGs but for those with nearsightedness."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/night/eyepatch
|
||||
name = "night vision eyepatch"
|
||||
desc = "An eyepatch with night vision technology!"
|
||||
icon_state = "nightpatch"
|
||||
item_state = "nightpatch"
|
||||
|
||||
/obj/item/clothing/glasses/science/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is tightening \the [src]'s straps around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return OXYLOSS
|
||||
|
||||
@@ -37,6 +37,12 @@
|
||||
hud_type = DATA_HUD_MEDICAL_ADVANCED
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightblue
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/eyepatch
|
||||
name = "health scanner HUD eyepatch"
|
||||
desc = "A heads-up display, in an eyepatch, that scans the humans in view and provides accurate data about their health status."
|
||||
icon_state = "medpatch"
|
||||
item_state = "medpatch"
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/prescription
|
||||
name = "prescription health scanner HUD"
|
||||
desc = "A heads-up display, made with a prescription lens, that scans the humans in view and provides accurate data about their health status."
|
||||
@@ -84,6 +90,12 @@
|
||||
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightorange
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/eyepatch
|
||||
name = "diagnostic HUD eyepatch"
|
||||
desc = "A heads-up display, in an eyepatch, capable of analyzing the integrity and status of robotics and exosuits."
|
||||
icon_state = "diapatch"
|
||||
item_state = "diapatch"
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
name = "prescription diagnostic HUD"
|
||||
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits. This one has a prescription lens."
|
||||
@@ -141,7 +153,7 @@
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
|
||||
name = "eyepatch HUD"
|
||||
name = "Security eyepatch HUD"
|
||||
desc = "A heads-up display that connects directly to the optical nerve of the user, replacing the need for that useless eyeball."
|
||||
icon_state = "hudpatch"
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly."
|
||||
@@ -19,6 +20,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/New()
|
||||
..()
|
||||
@@ -113,6 +115,7 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = NONE
|
||||
price = 12
|
||||
|
||||
/obj/item/clothing/gloves/color/rainbow
|
||||
name = "rainbow gloves"
|
||||
|
||||
@@ -260,6 +260,7 @@
|
||||
name = "security's bitch beret"
|
||||
desc = "A softer beret with the word 'BITCH' embroidered on it in pink thread."
|
||||
icon_state = "bitchberet"
|
||||
price = 5
|
||||
|
||||
//Curator
|
||||
/obj/item/clothing/head/fedora/curator
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
item_state = "sluthailer"
|
||||
aggressiveness = 0 //can't have your pets being mean!
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/slut/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
var/obj/item/organ/heart/heart = M.getorganslot(ORGAN_SLOT_HEART)
|
||||
var/obj/item/organ/lungs/lungs = M.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
|
||||
|
||||
|
||||
if (!do_mob(user,M,60)) // Stethoscope should take a moment to listen
|
||||
return // FAIL
|
||||
@@ -302,3 +302,4 @@
|
||||
icon = 'icons/obj/clothing/neck.dmi'
|
||||
icon_state = "bling"
|
||||
item_color = "bling"
|
||||
price = 30
|
||||
@@ -137,6 +137,7 @@
|
||||
desc = "A pair of knee-high jackboots, complete with heels. All style, all the time."
|
||||
icon_state = "jackboots-tall"
|
||||
item_state = "jackboots-tall"
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/fast
|
||||
slowdown = -1
|
||||
|
||||
@@ -169,6 +169,7 @@
|
||||
cold_protection = CHEST|LEGS|ARMS
|
||||
heat_protection = CHEST|LEGS|ARMS
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //you don't need it
|
||||
price = 5
|
||||
|
||||
//Surgeon
|
||||
/obj/item/clothing/suit/apron/surgical
|
||||
|
||||
@@ -635,6 +635,7 @@
|
||||
icon_state = "coatsecuritypink"
|
||||
item_state = "coatsecuritypink"
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/security/pink
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security/Initialize()
|
||||
. = ..()
|
||||
@@ -954,3 +955,12 @@
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/durathread
|
||||
icon_state = "winterhood_durathread"
|
||||
|
||||
//Enzo_Leon Patron stuff
|
||||
/obj/item/clothing/suit/toggle/enzojacket
|
||||
name = "Altevain Colony-Ship Command Jacket"
|
||||
desc = "A comfortable form fitting jacket that has a little cheese emblem on the chest."
|
||||
icon_state = "enzojacket"
|
||||
item_state = "enzojacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
//End
|
||||
@@ -226,3 +226,63 @@
|
||||
W.current_charges += 8
|
||||
to_chat(user, "<span class='notice'>You charge \the [W]. It can now absorb [W.current_charges] hits.</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/head/notwizard
|
||||
name = "wizard hat"
|
||||
desc = "Strange-looking hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "wizard"
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
/obj/item/clothing/head/notwizard/red
|
||||
name = "red wizard hat"
|
||||
desc = "Strange-looking red hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "redwizard"
|
||||
dog_fashion = /datum/dog_fashion/head/red_wizard
|
||||
|
||||
/obj/item/clothing/head/notwizard/yellow
|
||||
name = "yellow wizard hat"
|
||||
desc = "Strange-looking yellow hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "yellowwizard"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/notwizard/black
|
||||
name = "black wizard hat"
|
||||
desc = "Strange-looking black hat-wear that most certainly belongs to an aspiring skeleton. Way cooler than magic." //skeleton gang 4lyfe
|
||||
icon_state = "blackwizard"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe
|
||||
name = "wizard robe"
|
||||
desc = "A decent looking robe that seems to radiate imagination."
|
||||
icon_state = "wizard"
|
||||
item_state = "wizrobe"
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/red
|
||||
name = "red wizard robe"
|
||||
desc = "A decent looking red robe that seems to radiate imagination."
|
||||
icon_state = "redwizard"
|
||||
item_state = "redwizrobe"
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/yellow
|
||||
name = "yellow wizard robe"
|
||||
desc = "A decent looking yellow robe that seems to radiate imagination."
|
||||
icon_state = "yellowwizard"
|
||||
item_state = "yellowwizrobe"
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/black
|
||||
name = "black wizard robe"
|
||||
desc = "An unnerving black robe that radiates death and decay."
|
||||
icon_state = "blackwizard"
|
||||
item_state = "blackwizrobe"
|
||||
@@ -381,6 +381,7 @@
|
||||
item_state = "b_suit"
|
||||
item_color = "galaxy_blue"
|
||||
can_adjust = FALSE
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/under/lawyer/galaxy_red
|
||||
name = "\improper Pulsar Gonne"
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
icon_state = "rsecuritypink"
|
||||
item_state = "r_suit"
|
||||
item_color = "rsecuritypink"
|
||||
price = 3
|
||||
/obj/item/clothing/under/rank/security/skirt
|
||||
name = "security jumpskirt"
|
||||
desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt."
|
||||
@@ -46,6 +47,7 @@
|
||||
item_state = "secslutskirt"
|
||||
item_color = null //i dont understand what item_color even is, apparently setting it to null means it won't change color in a washing machine?
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //look at the first two comments in vg_under.dm
|
||||
price = 3
|
||||
/obj/item/clothing/under/rank/security/skirt/slut/pink
|
||||
desc = "A \"\"\"tactical\"\"\" security jumpsuit with the legs replaced by a skirt. No matter how you adjust it, it always feels a little too small. This one seems to have an experimental color scheme."
|
||||
icon_state = "secslutskirtpink"
|
||||
@@ -59,6 +61,7 @@
|
||||
can_adjust = FALSE
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
price = 5
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/warden
|
||||
|
||||
@@ -796,4 +796,32 @@
|
||||
item_color = "greenplaidshirt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
can_adjust = FALSE
|
||||
//yes
|
||||
//yes
|
||||
|
||||
//Enzo_Leon patron stuff
|
||||
/obj/item/clothing/under/enzoshirt
|
||||
name = "Altevain Standard-Issue Uniform"
|
||||
desc = "A soft, and light uniform with blue-space threading to help with Altevain proportions."
|
||||
icon_state = "enzoshirt"
|
||||
item_state = "enzoshirt"
|
||||
item_color = "enzoshirt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
//End
|
||||
|
||||
/obj/item/clothing/under/wedding_dress
|
||||
name = "wedding dress"
|
||||
desc = "A luxurious gown for once-in-a-lifetime occasions."
|
||||
icon_state = "wedding_dress"
|
||||
item_state = "wedding_dress"
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
flags_cover = HIDESHOES
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
can_adjust = FALSE
|
||||
|
||||
/obj/item/clothing/under/tuxedo
|
||||
name = "tuxedo"
|
||||
desc = "A formal black tuxedo. It exudes classiness."
|
||||
icon_state = "tuxedo"
|
||||
item_state = "tuxedo"
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //temporary
|
||||
can_adjust = FALSE
|
||||
|
||||
@@ -21,19 +21,19 @@
|
||||
|
||||
/obj/item/clothing/under/syndicate/tacticool
|
||||
name = "tacticool turtleneck"
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool"
|
||||
desc = "A robust looking turtleneck designed to fit tightly against the body while still being comfortable."
|
||||
icon_state = "syndicate"
|
||||
item_state = "bl_suit"
|
||||
item_color = "tactifool"
|
||||
item_color = "syndicate"
|
||||
has_sensor = HAS_SENSORS
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt
|
||||
name = "tacticool skirtleneck"
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool_skirt"
|
||||
desc = "A robust looking skirtleneck designed to fit tightly against the body while still being comfortable."
|
||||
icon_state = "syndicate_skirt"
|
||||
item_state = "bl_suit"
|
||||
item_color = "tactifool_skirt"
|
||||
item_color = "syndicate_skirt"
|
||||
has_sensor = HAS_SENSORS
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
|
||||
@@ -43,6 +43,24 @@
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesec
|
||||
name = "Security HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesecremoval
|
||||
name = "Security HUD removal (Eyepatch)"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunsecremoval
|
||||
name = "Security HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
@@ -61,6 +79,16 @@
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemed
|
||||
name = "Medical HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/health/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunmedremoval
|
||||
name = "Medical HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
@@ -69,6 +97,86 @@
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemedremoval
|
||||
name = "Medical HUD removal (Eyepatch)"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyedia
|
||||
name = "Diagnostic HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/diagnostic/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyediaremoval
|
||||
name = "Diagnostic HUD removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesci
|
||||
name = "Science eyepatch"
|
||||
result = /obj/item/clothing/glasses/science/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/science = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesciremoval
|
||||
name = "Science eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/science/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemeson
|
||||
name = "Meson eyepatch"
|
||||
result = /obj/item/clothing/glasses/meson/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/meson = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemesonremoval
|
||||
name = "Meson eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/meson/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyenv
|
||||
name = "Night Vision eyepatch"
|
||||
result = /obj/item/clothing/glasses/night/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/night = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyenvremoval
|
||||
name = "Night Vision eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/night/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/beergoggles
|
||||
name = "Beer Goggles"
|
||||
result = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
|
||||
@@ -373,3 +373,30 @@
|
||||
time = 100
|
||||
category = CAT_MISC
|
||||
always_availible = FALSE // Disabled til learned
|
||||
|
||||
//Bouquets <3
|
||||
/datum/crafting_recipe/mixedbouquet
|
||||
name = "Mixed bouquet"
|
||||
result = /obj/item/bouquet
|
||||
reqs = list(/obj/item/reagent_containers/food/snacks/grown/poppy/lily =2,
|
||||
/obj/item/grown/sunflower = 2,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium = 2)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/sunbouquet
|
||||
name = "Sunflower bouquet"
|
||||
result = /obj/item/bouquet/sunflower
|
||||
reqs = list(/obj/item/grown/sunflower = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/poppybouquet
|
||||
name = "Poppy bouquet"
|
||||
result = /obj/item/bouquet/poppy
|
||||
reqs = list (/obj/item/reagent_containers/food/snacks/grown/poppy = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/rosebouquet
|
||||
name = "Rose bouquet"
|
||||
result = /obj/item/bouquet/rose
|
||||
reqs = list(/obj/item/grown/rose = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
@@ -13,6 +13,19 @@
|
||||
|
||||
dream_fragments += "you see"
|
||||
|
||||
//NIGHTMARE
|
||||
var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
|
||||
if(prob(mood.sanity-100)&&(mood.sanity < 60)||prob(5))
|
||||
fragment += pick(GLOB.dream_strings)
|
||||
if(findtext(fragment, "%A% "))
|
||||
fragment = replacetext(fragment, "%ADJECTIVE% ", "")
|
||||
fragment = "\a [replacetext(fragment, "%A% ", "")]"
|
||||
to_chat(src, "<span class='warning'><b>... You have a terrifying nightmare about [fragment] ...</b></span>")
|
||||
src.visible_message("<span class='notice'>[src] shakes in their sleep.</span>")
|
||||
src.do_jitter_animation() //shake in their sleep.
|
||||
fragment = ""
|
||||
return
|
||||
|
||||
//Subject
|
||||
if(custom_dream_nouns.len && prob(90))
|
||||
fragment += pick(custom_dream_nouns)
|
||||
|
||||
@@ -217,6 +217,7 @@
|
||||
resistance_flags = FREEZE_PROOF
|
||||
isGlass = FALSE
|
||||
foodtype = BREAKFAST
|
||||
price = 2
|
||||
|
||||
//Used by MREs
|
||||
/obj/item/reagent_containers/food/drinks/coffee/type2
|
||||
@@ -240,6 +241,7 @@
|
||||
icon_state = "tea"
|
||||
item_state = "coffee"
|
||||
spillable = TRUE
|
||||
price = 2
|
||||
|
||||
/* Doesn't exist lol
|
||||
/datum/chemical_reaction/catnip_tea
|
||||
@@ -259,6 +261,7 @@
|
||||
name = "Duke Purple tea"
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
list_reagents = list(/datum/reagent/consumable/tea = 30)
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco
|
||||
name = "Dutch hot coco"
|
||||
@@ -276,6 +279,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/dry_ramen = 30)
|
||||
foodtype = GRAIN
|
||||
isGlass = FALSE
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/beer
|
||||
name = "space beer"
|
||||
@@ -414,6 +418,7 @@
|
||||
reagent_flags = NONE
|
||||
spillable = FALSE
|
||||
isGlass = FALSE
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is trying to eat \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -538,3 +543,4 @@
|
||||
icon_state = "monkey_energy"
|
||||
list_reagents = list(/datum/reagent/consumable/monkey_energy = 50)
|
||||
foodtype = SUGAR | JUNKFOOD
|
||||
price = 3
|
||||
|
||||
@@ -416,6 +416,7 @@
|
||||
isGlass = FALSE
|
||||
list_reagents = list(/datum/reagent/consumable/cream = 100)
|
||||
foodtype = DAIRY
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice
|
||||
name = "tomato juice"
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola
|
||||
name = "Nuka Cola"
|
||||
list_reagents = list(/datum/reagent/consumable/nuka_cola = 50)
|
||||
price = 7
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb
|
||||
name = "Syndicat Bomb"
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
|
||||
list_reagents = list(/datum/reagent/consumable/milk = 50)
|
||||
possible_states = list()
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/flour
|
||||
name = "flour sack"
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
dunkable = TRUE
|
||||
price = 2
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/hugemushroomslice
|
||||
name = "huge mushroom slice"
|
||||
@@ -559,9 +561,9 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tinychocolate
|
||||
name = "chocolate"
|
||||
desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!"
|
||||
desc = "A tiny and sweet chocolate. Has a strawberry filling!"
|
||||
icon_state = "tiny_chocolate"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/drug/aphrodisiac = 1)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/consumable/pinkmilk = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
|
||||
@@ -116,3 +116,12 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("rice" = 1, "egg" = 1)
|
||||
foodtype = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/hellcobb
|
||||
name = "hell cobb salad"
|
||||
desc = "If you're being honest with yourself it's just a bowl of mushrooms with chunks of meat and an egg."
|
||||
icon_state = "hellcobb"
|
||||
trash = /obj/item/reagent_containers/glass/bowl/mushroom_bowl
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("fruity cactus" = 5, "ash" = 1, "tough meat" = 3, "your eternal damnation" = 1)
|
||||
foodtype = FRUIT | MEAT | VEGETABLES //MUSHROOM = VEGETABLE -VladinXXV 2021
|
||||
|
||||
@@ -254,3 +254,20 @@
|
||||
tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1)
|
||||
filling_color = "#E6A625"
|
||||
foodtype = VEGETABLES | FRUIT | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/creamofwastes
|
||||
name = "cream of the wastes soup"
|
||||
desc = "Locals say the bowl gives it a unique flavor each time. That might just be whatever killed the goliath getting in your bowl, though."
|
||||
icon_state = "wastessoup"
|
||||
trash = /obj/item/reagent_containers/glass/bowl/mushroom_bowl
|
||||
var/snowflake_reagent = null
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 6)
|
||||
tastes = list("a fresh kill" = 3, "creamy mushroom" = 5, "a warm sunset over the scorched landscape of hell" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/creamofwastes/Initialize()
|
||||
. = ..()
|
||||
snowflake_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/blood, /datum/reagent/oil, /datum/reagent/consumable/honey,
|
||||
/datum/reagent/carbon, /datum/reagent/drug/mushroomhallucinogen)
|
||||
bonus_reagents = list(snowflake_reagent = 5, /datum/reagent/consumable/nutriment = 6)
|
||||
reagents.add_reagent(snowflake_reagent, 5)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("candy" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky
|
||||
name = "\improper Scaredy's Private Reserve Beef Jerky"
|
||||
@@ -23,6 +24,7 @@
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried meat" = 1)
|
||||
foodtype = JUNKFOOD | MEAT | SUGAR
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky/healthy
|
||||
name = "homemade beef jerky"
|
||||
@@ -41,6 +43,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("salt" = 1, "crisps" = 1)
|
||||
foodtype = JUNKFOOD | FRIED
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin
|
||||
name = "4no raisins"
|
||||
@@ -52,6 +55,7 @@
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried raisins" = 1)
|
||||
foodtype = JUNKFOOD | FRUIT | SUGAR
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin/healthy
|
||||
name = "homemade raisins"
|
||||
@@ -68,6 +72,7 @@
|
||||
junkiness = 25
|
||||
filling_color = "#FFD700"
|
||||
foodtype = JUNKFOOD | GRAIN | SUGAR
|
||||
price = 4
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers
|
||||
name = "cheesie honkers"
|
||||
@@ -79,6 +84,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cheese" = 5, "crisps" = 2)
|
||||
foodtype = JUNKFOOD | DAIRY | SUGAR
|
||||
price = 4
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soyfood
|
||||
name = "Soyfood"
|
||||
@@ -90,6 +96,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("nanomachines" = 2, "soybeans" = 5)
|
||||
foodtype = JUNKFOOD | DAIRY | GRAIN
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/syndicake
|
||||
name = "syndi-cakes"
|
||||
@@ -100,6 +107,7 @@
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/carbonnanotube_noodles
|
||||
name = "carbon nanotube noodles"
|
||||
@@ -111,3 +119,4 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("charcoal" = 1, "spiciness" = 3, "soysauce" = 3)
|
||||
foodtype = GRAIN | VEGETABLES
|
||||
price = 3
|
||||
@@ -892,3 +892,10 @@
|
||||
results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
|
||||
mix_message = "When your powers combine, I am Captain Pl-..."
|
||||
|
||||
/datum/chemical_reaction/wockyslush
|
||||
name = "Wocky Slush"
|
||||
id = /datum/reagent/consumable/wockyslush
|
||||
results = list(/datum/reagent/consumable/wockyslush = 5)
|
||||
required_reagents = list(/datum/reagent/toxin/fentanyl = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/lemon_lime = 1)
|
||||
mix_message = "That thang bleedin’ P!"
|
||||
|
||||
@@ -94,3 +94,16 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/citrusdelight
|
||||
subcategory = CAT_SALAD
|
||||
|
||||
/datum/crafting_recipe/food/hellcobb
|
||||
name = "Hell Cobb Salad"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/glass/bowl/mushroom_bowl = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf = 3,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit = 2,
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/goliath = 1,
|
||||
/obj/item/reagent_containers/food/snacks/boiledegg = 1
|
||||
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/hellcobb
|
||||
subcategory = CAT_SALAD
|
||||
|
||||
@@ -247,3 +247,15 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/soup/macaco
|
||||
subcategory = CAT_SOUP
|
||||
|
||||
/datum/crafting_recipe/food/creamofwastes
|
||||
name = "Cream of the Wastes soup"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 10,
|
||||
/obj/item/reagent_containers/glass/bowl/mushroom_bowl = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem =2,
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/goliath = 2 //wanted to make this three cutlets, but goliath meat doesn't get a unique cutlet
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/soup/creamofwastes
|
||||
subcategory = CAT_SOUP
|
||||
|
||||
@@ -93,7 +93,8 @@
|
||||
yield = 3
|
||||
rarity = 20
|
||||
mutatelist = list()
|
||||
reagents_add = list("aphro" = 0.2, "penis_enlarger" = 0.08, "vitamin" = 0.04, "nutriment" = 0.04)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/penischem, /datum/plant_gene/reagent/fragile/crocin)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/pink_chili
|
||||
seed = /obj/item/seeds/chili/pink
|
||||
|
||||
@@ -68,15 +68,10 @@
|
||||
icon_grow = "spacemanstrumpet-grow"
|
||||
icon_dead = "spacemanstrumpet-dead"
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/reagent/polypyr)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/polypyr)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/poppy/lily/trumpet/Initialize(mapload, nogenes = FALSE)
|
||||
. = ..()
|
||||
if(!nogenes)
|
||||
unset_mutability(/datum/plant_gene/reagent/polypyr, PLANT_GENE_EXTRACTABLE)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/trumpet
|
||||
seed = /obj/item/seeds/poppy/lily/trumpet
|
||||
name = "spaceman's trumpet"
|
||||
@@ -262,6 +257,69 @@
|
||||
to_chat(user, "<span class='danger'>The [name] burns your bare hand!</span>")
|
||||
user.adjustFireLoss(rand(1, 5))
|
||||
|
||||
// Rose
|
||||
/obj/item/seeds/rose
|
||||
name = "pack of rose seeds"
|
||||
desc = "These seeds grow into roses."
|
||||
icon_state = "seed-rose"
|
||||
species = "rose"
|
||||
plantname = "Rose Bush"
|
||||
product = /obj/item/grown/rose
|
||||
endurance = 12
|
||||
yield = 6
|
||||
potency = 15
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
icon_grow = "rose-grow"
|
||||
icon_dead = "rose-dead"
|
||||
mutatelist = list(/obj/item/seeds/carbon_rose)
|
||||
//Roses are commonly used as herbal medicines (diarrhodons) and for their 'rose oil'.
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/tricordrazine = 0.1, /datum/reagent/oil = 0.05)
|
||||
|
||||
/obj/item/grown/rose
|
||||
seed = /obj/item/seeds/rose
|
||||
name = "rose"
|
||||
desc = "The classic fleur d'amour - flower of love. Watch for its thorns!"
|
||||
icon_state = "rose"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_HEAD //|ITEM_SLOT_MASK // couldn't get this to work, revive another day
|
||||
|
||||
// Carbon Rose
|
||||
/obj/item/seeds/carbon_rose
|
||||
name = "pack of carbon rose seeds"
|
||||
desc = "These seeds grow into carbon roses."
|
||||
icon_state = "seed-carbonrose"
|
||||
species = "carbonrose"
|
||||
plantname = "Carbon Rose Flower"
|
||||
product = /obj/item/grown/carbon_rose
|
||||
endurance = 12
|
||||
yield = 6
|
||||
potency = 15
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
icon_grow = "carbonrose-grow"
|
||||
icon_dead = "carbonrose-dead"
|
||||
mutatelist = list(/obj/item/seeds/carbon_rose)
|
||||
reagents_add = list(/datum/reagent/plastic_polymers = 0.05)
|
||||
rarity = 10
|
||||
|
||||
|
||||
|
||||
/obj/item/grown/carbon_rose
|
||||
seed = /obj/item/seeds/carbon_rose
|
||||
name = "carbon rose"
|
||||
desc = "The all new fleur d'amour gris - the flower of love, modernized, with no harsh thorns."
|
||||
icon_state = "carbonrose"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
|
||||
force = 0
|
||||
throwforce = 0
|
||||
slot_flags = ITEM_SLOT_HEAD
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
|
||||
// Beebalm
|
||||
/obj/item/seeds/bee_balm
|
||||
name = "pack of Bee Balm seeds"
|
||||
|
||||
@@ -84,13 +84,14 @@
|
||||
plantname = "Milk Melon Vines"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/milkmelon
|
||||
mutatelist = list()
|
||||
reagents_add = list("milk" = 0.2, "breast_enlarger" = 0.08, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/breastchem)
|
||||
reagents_add = list(/datum/reagent/consumable/milk = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/milkmelon
|
||||
seed = /obj/item/seeds/watermelon/milk
|
||||
name = "milkmelon"
|
||||
desc = "A softer, rounder-looking watermelon that audibly sloshes with milk."
|
||||
desc = "A softer watermelon that audibly sloshes with milk."
|
||||
icon_state = "milkmelon"
|
||||
filling_color = "#FFAABB"
|
||||
dried_type = null
|
||||
|
||||
@@ -63,6 +63,42 @@
|
||||
T.assume_air(stank)
|
||||
T.air_update_turf()
|
||||
|
||||
|
||||
// Valentines flower
|
||||
/obj/item/seeds/starthistle/valentines
|
||||
name = "pack of valentines flower seeds"
|
||||
desc = "A species of plant that emits a arousing odor. The odor stops being produced in difficult atmospheric conditions."
|
||||
icon_state = "valentines"
|
||||
species = "valentines"
|
||||
plantname = "Valentines Flower"
|
||||
production = 2
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
genes = list()
|
||||
mutatelist = list()
|
||||
|
||||
/obj/item/seeds/starthistle/valentines/pre_attack(obj/machinery/hydroponics/I)
|
||||
if(istype(I, /obj/machinery/hydroponics))
|
||||
if(!I.myseed)
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/seeds/starthistle/valentines/process()
|
||||
var/obj/machinery/hydroponics/parent = loc
|
||||
if(parent.age < maturation || parent.dead) // Start a little before it blooms
|
||||
return
|
||||
|
||||
var/turf/open/T = get_turf(parent)
|
||||
if(abs(ONE_ATMOSPHERE - T.return_air().return_pressure()) > (potency/10 + 10))
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/scent = new
|
||||
var/list/cached_gases = scent.gases
|
||||
|
||||
cached_gases[/datum/gas/pheromone] += (yield + 5)*7*0.1
|
||||
scent.temperature = T20C
|
||||
T.assume_air(scent)
|
||||
T.air_update_turf()
|
||||
|
||||
//Galaxy Thistle
|
||||
/obj/item/seeds/galaxythistle
|
||||
name = "pack of galaxythistle seeds"
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
endurance = 8
|
||||
yield = 4
|
||||
growthstages = 2
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/teslium, /datum/plant_gene/trait/plant_type/carnivory)
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/fragile/teslium, /datum/plant_gene/trait/plant_type/carnivory)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list()
|
||||
@@ -251,7 +251,6 @@
|
||||
/obj/item/seeds/chanterelle/jupitercup/Initialize(mapload, nogenes = FALSE)
|
||||
. = ..()
|
||||
if(!nogenes)
|
||||
unset_mutability(/datum/plant_gene/reagent/teslium, PLANT_GENE_EXTRACTABLE)
|
||||
unset_mutability(/datum/plant_gene/trait/plant_type/carnivory, PLANT_GENE_REMOVABLE)
|
||||
|
||||
/obj/item/seeds/chanterelle/jupitercup/hollow
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
// Reagent genes store reagent ID and reagent ratio. Amount of reagent in the plant = 1 + (potency * rate)
|
||||
/datum/plant_gene/reagent
|
||||
name = "Nutriment"
|
||||
var/reagent_id = "nutriment"
|
||||
var/reagent_id = /datum/reagent/consumable/nutriment
|
||||
var/rate = 0.04
|
||||
|
||||
/datum/plant_gene/reagent/get_name()
|
||||
@@ -153,16 +153,35 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/plant_gene/reagent/polypyr
|
||||
/datum/plant_gene/reagent/fragile
|
||||
name = "Fragile Gene"
|
||||
mutability_flags = PLANT_GENE_REMOVABLE //Cannot be extracted
|
||||
|
||||
/datum/plant_gene/reagent/fragile/polypyr
|
||||
name = "Polypyrylium Oligomers"
|
||||
reagent_id = "polypyr"
|
||||
reagent_id = /datum/reagent/medicine/polypyr
|
||||
rate = 0.15
|
||||
|
||||
/datum/plant_gene/reagent/teslium
|
||||
/datum/plant_gene/reagent/fragile/teslium
|
||||
name = "Teslium"
|
||||
reagent_id = "teslium"
|
||||
reagent_id = /datum/reagent/teslium
|
||||
rate = 0.1
|
||||
|
||||
/datum/plant_gene/reagent/fragile/breastchem
|
||||
name = "Succubus Milk"
|
||||
reagent_id = /datum/reagent/fermi/breast_enlarger
|
||||
rate = 0.04 //5 units at 100 potency
|
||||
|
||||
/datum/plant_gene/reagent/fragile/penischem
|
||||
name = "Incubus Draft"
|
||||
reagent_id = /datum/reagent/fermi/penis_enlarger
|
||||
rate = 0.04
|
||||
|
||||
/datum/plant_gene/reagent/fragile/crocin
|
||||
name = "Crocin"
|
||||
reagent_id = /datum/reagent/drug/aphrodisiac
|
||||
rate = 0.2
|
||||
|
||||
// Various traits affecting the product.
|
||||
/datum/plant_gene/trait
|
||||
var/rate = 0.05
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
var/list/mind_traits // Traits added to the mind of the mob assigned this job
|
||||
|
||||
var/list/blacklisted_quirks //list of quirk typepaths blacklisted.
|
||||
|
||||
|
||||
var/list/alt_titles = list()
|
||||
|
||||
//Only override this proc
|
||||
@@ -90,6 +90,15 @@
|
||||
if(!H)
|
||||
return FALSE
|
||||
|
||||
if(!visualsOnly)
|
||||
var/datum/bank_account/bank_account = new(H.real_name, src)
|
||||
bank_account.account_holder = H.real_name
|
||||
bank_account.account_job = src
|
||||
bank_account.account_id = rand(111111,999999) //give account ID!
|
||||
//bank_account.account_pin = rand(1000,9999) //give random pin!
|
||||
bank_account.account_balance = 80
|
||||
H.account_id = bank_account.account_id
|
||||
|
||||
if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions))
|
||||
if(H.dna.species.id != "human")
|
||||
H.set_species(/datum/species/human)
|
||||
@@ -230,6 +239,13 @@
|
||||
C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title])
|
||||
else
|
||||
C.update_label()
|
||||
|
||||
for(var/A in SSeconomy.bank_accounts)
|
||||
var/datum/bank_account/B = A
|
||||
if(B.account_id == H.account_id)
|
||||
C.registered_account = B
|
||||
B.bank_cards += C
|
||||
break
|
||||
H.sec_hud_set_ID()
|
||||
|
||||
var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot)
|
||||
|
||||
@@ -13,7 +13,7 @@ AI
|
||||
req_admin_notify = TRUE
|
||||
minimal_player_age = 14
|
||||
exp_requirements = 1800
|
||||
//exp_type = EXP_TYPE_CREW
|
||||
exp_type = EXP_TYPE_SILICON
|
||||
exp_type_department = EXP_TYPE_SILICON
|
||||
var/do_special_check = TRUE
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
/datum/language/mushroom
|
||||
name = "Mushroom"
|
||||
desc = "A language that consists of the sound of periodic gusts of spore-filled air being released."
|
||||
speech_verb = "puffs"
|
||||
ask_verb = "puffs inquisitively"
|
||||
exclaim_verb = "poofs loudly"
|
||||
whisper_verb = "puffs quietly"
|
||||
sing_verb = "puffs musically"
|
||||
key = "y"
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("poof", "pff", "pFfF", "piff", "puff", "pooof", "pfffff", "piffpiff", "puffpuff", "poofpoof", "pifpafpofpuf")
|
||||
@@ -0,0 +1,23 @@
|
||||
/datum/language/spacerussian
|
||||
name = "Neo-Russkiya"
|
||||
desc = "Neo-Russkiya, a bastard mix of Galactic Common and old Russian. The official language of the USSP. It has started to see use outside of the fringe in hobby circles and protest groups."
|
||||
speech_verb = "articulates"
|
||||
ask_verb = "questions"
|
||||
exclaim_verb = "exaggerates"
|
||||
whisper_verb = "mutters"
|
||||
sing_verb = "articulates musically"
|
||||
key = "?"
|
||||
flags = TONGUELESS_SPEECH
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("dyen","bar","bota","vyek","tvo","slov","slav","syen","doup","vah","laz","gloz","yet",
|
||||
"nyet","da","sky","glav","glaz","netz","doomat","zat","moch","boz",
|
||||
"comy","vrad","vrade","tay","bli","ay","nov","livn","tolv","glaz","gliz",
|
||||
"ouy","zet","yevt","dat","botat","nev","novy","vzy","nov","sho","obsh","dasky",
|
||||
"key","skey","ovsky","skaya","bib","kiev","studen","var","bul","vyan",
|
||||
"tzion","vaya","myak","gino","volo","olam","miti","nino","menov","perov",
|
||||
"odasky","trov","niki","ivano","dostov","sokol","oupa","pervom","schel",
|
||||
"tizan","chka","tagan","dobry","okt","boda","veta","idi","cyk","blyt","hui","na",
|
||||
"udi","litchki","casa","linka","toly","anatov","vich","vech","vuch","toi","ka","vod")
|
||||
|
||||
icon_state = "spacerussia"
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/language/tajara
|
||||
name = "Siik'Tajr"
|
||||
desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran."
|
||||
speech_verb = "mrowls"
|
||||
ask_verb = "mrowls inquisitively"
|
||||
exclaim_verb = "yowls loudly"
|
||||
whisper_verb = "mrowls quietly"
|
||||
sing_verb = "mrowls musically"
|
||||
key = "j"
|
||||
flags = TONGUELESS_SPEECH
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("rr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr",
|
||||
"mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r",
|
||||
"ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
|
||||
"hal","ket","jurl","mah","tul","cresh","azu","ragh")
|
||||
|
||||
icon_state = "taja"
|
||||
@@ -509,7 +509,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
|
||||
name = "scanner control interface"
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "bigscanner"
|
||||
desc = "It servers the purpose of scanning stuff."
|
||||
desc = "It serves the purpose of scanning stuff."
|
||||
density = TRUE
|
||||
var/obj/item/book/cache // Last scanned book
|
||||
|
||||
|
||||
@@ -389,7 +389,10 @@
|
||||
if(!arrivals_docked)
|
||||
var/obj/screen/splash/Spl = new(character.client, TRUE)
|
||||
Spl.Fade(TRUE)
|
||||
character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25)
|
||||
if(!prob(1))
|
||||
character.playsound_local(get_turf(character), 'sound/voice/Approaching.ogg', 25)
|
||||
else
|
||||
character.playsound_local(get_turf(character), 'sound/voice/boat.ogg', 35) //boatbomber easter egg. (love your videos man, thanks for visiting!)
|
||||
|
||||
character.update_parallax_teleport()
|
||||
|
||||
@@ -589,12 +592,9 @@
|
||||
H.name = real_name
|
||||
//h13 assign your characters custom height.
|
||||
if (H.custom_body_size) //Do they have it set?
|
||||
//H.size_multiplier = (max(min( round((H.custom_body_size)), MAX_BODYSIZE),MIN_BODYSIZE)* 0.01) //Old method
|
||||
H.resize(H.custom_body_size * 0.01)
|
||||
//h13 give your starting impregchance (30%)
|
||||
if (H.breedable == TRUE)
|
||||
H.impregchance = 30
|
||||
|
||||
. = H
|
||||
new_character = .
|
||||
if(transfer_after)
|
||||
|
||||
@@ -470,7 +470,17 @@
|
||||
/datum/sprite_accessory/hair/quotey
|
||||
name = "Tail Hair"
|
||||
icon_state = "hair_tailhair"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/mommy
|
||||
name = "Hairfre"
|
||||
name = "(Hyper) Hairfre"
|
||||
icon_state = "hair_hairfre"
|
||||
|
||||
/datum/sprite_accessory/hair/sidehair
|
||||
name = "(Hyper) Side Hair"
|
||||
icon_state = "hair_tailhair2"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/curtains
|
||||
name = "(Hyper) Curtains"
|
||||
icon_state = "hair_curtains"
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
icon_state = "socks_short"
|
||||
has_color = TRUE
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_black
|
||||
name = "Stockings - Black"
|
||||
icon_state = "stockings_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_blue
|
||||
name = "Stockings - Blue"
|
||||
icon_state = "stockings_blue"
|
||||
|
||||
@@ -343,3 +343,10 @@
|
||||
/datum/sprite_accessory/underwear/top/cowboyshirt/red/s
|
||||
name = "Cowboy Shirt Shortsleeved Red"
|
||||
icon_state = "cowboyshirt_reds"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/top/arms
|
||||
name = "Arm Warmers"
|
||||
icon_state = "armwarmer"
|
||||
has_color = TRUE
|
||||
gender = FEMALE
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
if(bleed_rate < 0)
|
||||
bleed_rate = 0
|
||||
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here.
|
||||
return
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
//Blood regeneration if there is some space
|
||||
if(blood_volume < (BLOOD_VOLUME_NORMAL * blood_ratio) && !HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
var/nutrition_ratio = 0
|
||||
var/thirst_ratio = 1
|
||||
switch(nutrition)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
nutrition_ratio = 0.2
|
||||
@@ -60,6 +61,7 @@
|
||||
if(satiety > 80)
|
||||
nutrition_ratio *= 1.25
|
||||
nutrition = max(0, nutrition - nutrition_ratio * HUNGER_FACTOR)
|
||||
thirst = max(0, thirst - thirst_ratio * THIRST_FACTOR)
|
||||
blood_volume = min((BLOOD_VOLUME_NORMAL * blood_ratio), blood_volume + 0.5 * nutrition_ratio)
|
||||
|
||||
//Effects of bloodloss
|
||||
|
||||
@@ -286,7 +286,19 @@
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT)) //No mood buff since you're not really liking it.
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem annoyed...</span>", \
|
||||
"<span class='warning'>You give [H] a pat on the head to make [p_them()] feel better! They seem annoyed as they're now glaring towards you...</span>")
|
||||
H.adjustArousalLoss(-5) //Why are you touching me?
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[H] quickly twists [M]\'s arm!</span>", \
|
||||
"<span class='boldwarning'>Your arm gets twisted in [H]\'s grasp. Maybe you should have taken the hint...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
M.emote("scream")
|
||||
M.dropItemToGround(M.get_active_held_item())
|
||||
M.apply_damage(50, STAMINA, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
M.Knockdown(60)//STOP TOUCHING ME! For those spam head pat individuals
|
||||
else if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem incredibly pleased!</span>", \
|
||||
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better! They seem to like it way too much</span>")
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "lewd_headpat", /datum/mood_event/lewd_headpat)
|
||||
@@ -302,7 +314,10 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M)
|
||||
else if (mood.sanity >= SANITY_DISTURBED)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M)
|
||||
if(H.dna.species.can_wag_tail(H))
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT))
|
||||
return
|
||||
else if(H.dna.species.can_wag_tail(H))
|
||||
if("tail_human" in pref_species.default_features)
|
||||
if(H.dna.features["tail_human"] == "None")
|
||||
return
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
|
||||
else if(nutrition && stat != DEAD)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/12
|
||||
thirst -= THIRST_FACTOR/12
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/5
|
||||
thirst -= THIRST_FACTOR/5 //running around depleats thirst more so.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user