diff --git a/code/game/objects/items/toys/toys_yw.dm b/code/game/objects/items/toys/toys_yw.dm index b312d70341..7d9869ef84 100644 --- a/code/game/objects/items/toys/toys_yw.dm +++ b/code/game/objects/items/toys/toys_yw.dm @@ -107,3 +107,28 @@ slot_r_hand_str = 'icons/mob/items/righthand_toys_yw.dmi', slot_back_str = 'icons/mob/toy_worn_yw.dmi', slot_head_str = 'icons/mob/toy_worn_yw.dmi') + +/obj/item/toy/plushie/jeans + name = "Chocodoggo" + desc = "This plushie looks like a puppified version of Jeanne Petite. It seems as though it is watching you intently..." + icon_state = "Jeans_plushie" + item_state = "Jeans_plushie" + slot_flags = SLOT_HEAD + pokephrase = "pokerface" + icon = 'icons/vore/custom_items_yw.dmi' + item_icons = list( + slot_head_str = 'icons/vore/custom_onmob_yw.dmi') + + + rename_plushie() + set name = "Name Plushie" + set category = "Object" + set desc = "Give your plushie a cute name!" + var/mob/M = usr + if(!M.mind) + return 0 + + if(src && !M.stat && in_range(M,src)) + to_chat(M, "You cannot rename Jeans! You hug her anyway.") + return 1 + diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_yw.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_yw.dm index b9bd6b51ec..f9fd488da5 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_yw.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_yw.dm @@ -641,6 +641,21 @@ description = "You're such a goggle head!" ckeywhitelist = list("kbraid") character_name = list("Eili") //Character name. this variable is required, or the item doesn't show in loadout. Change to "character_name = null" if not character restricted. + +/datum/gear/fluff/jeanscrystelchime + path = /obj/item/clothing/accessory/fluff/jeanscrystelchime + display_name = "valhollide chimes" + description = "a precious gift from a precious friend" + ckeywhitelist = list("kbraid") + character_name = list("Eili") //Character name. this variable is required, or the item doesn't show in loadout. Change to "character_name = null" if not character restricted. + +/datum/gear/fluff/jeansplushie + path = /obj/item/toy/plushie/jeans + display_name = "Jeans Plushi" + description = "Pupper Pitite" + ckeywhitelist = list("dopiotl","kbraid") + character_name = list("Jeanne Petite","Eili","Braid") + //Braid /datum/gear/fluff/kbraidoutfit path = /obj/item/clothing/suit/storage/hooded/fluff/kbraid diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_yw.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_yw.dm index d20efa7e85..ab7e3c7004 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_yw.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_yw.dm @@ -77,6 +77,11 @@ path = /obj/item/clothing/suit/storage/seromi/beltcloak/jobs/jani allowed_roles = list("Janitor") +/datum/gear/suit/dept/beltcloak/rd + display_name = "research director belted cloak (Teshari)" + path = /obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd + allowed_roles = list("Research Director") + /datum/gear/suit/dept/cloak/command/New() ..() var/list/cloaks = list() @@ -213,6 +218,14 @@ cloaks[initial(cloak_type.name)] = cloak_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks)) +/datum/gear/suit/dept/beltcloak/rd/New() + ..() + var/list/cloaks = list() + for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd,/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd/black)) + var/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd/cloak_type = cloak + cloaks[initial(cloak_type.name)] = cloak_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks)) + /datum/gear/uniform/harness_white display_name = "white gear harness (Full Body Prosthetic, Diona)" path = /obj/item/clothing/under/harness_white diff --git a/code/modules/clothing/suits/aliens/seromi_yw.dm b/code/modules/clothing/suits/aliens/seromi_yw.dm index f8e50f04e5..3213daffc7 100644 --- a/code/modules/clothing/suits/aliens/seromi_yw.dm +++ b/code/modules/clothing/suits/aliens/seromi_yw.dm @@ -571,4 +571,15 @@ name = "janitor belted cloak" desc = "A soft Teshari cloak made for the Janitor" icon_state = "tesh_beltcloak_jani" - item_state = "tesh_beltcloak_jani" \ No newline at end of file + item_state = "tesh_beltcloak_jani" + +/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd + name = "research director belted cloak" + desc = "A soft Teshari cloak made for the Research Director" + icon_state = "tesh_beltcloak_rd" + item_state = "tesh_beltcloak_rd" +/obj/item/clothing/suit/storage/seromi/beltcloak/jobs/rd/black + name = "research director belted cloak (black)" + desc = "A soft Teshari cloak made for the Research Director" + icon_state = "tesh_beltcloak_rd2" + item_state = "tesh_beltcloak_rd2" \ No newline at end of file diff --git a/code/modules/clothing/suits/hooded_yw.dm b/code/modules/clothing/suits/hooded_yw.dm index a9f800a28f..daa6d0d9f5 100644 --- a/code/modules/clothing/suits/hooded_yw.dm +++ b/code/modules/clothing/suits/hooded_yw.dm @@ -47,4 +47,10 @@ icon_state = "snowsuit_science" hoodtype = /obj/item/clothing/head/hood/winter/snowsuit/science armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) - allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer,/obj/item/stack/medical, /obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray, /obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle) \ No newline at end of file + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer,/obj/item/stack/medical, /obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray, /obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle) + +/obj/item/clothing/suit/storage/hooded/wintercoat/snowsuit/get_worn_icon_file(var/body_type, var/slot_name, var/default_icon, var/inhands) + if(body_type == SPECIES_TESHARI) + if(!inhands) + return 'icons/mob/species/seromi/suit_yw.dmi' + ..() diff --git a/code/modules/economy/price_list_yw.dm b/code/modules/economy/price_list_yw.dm index 893af8f6d8..0cb7bac74f 100644 --- a/code/modules/economy/price_list_yw.dm +++ b/code/modules/economy/price_list_yw.dm @@ -1,2 +1,5 @@ /obj/item/weapon/storage/fancy/cigarettes/yw/mauser - price_tag = 18 \ No newline at end of file + price_tag = 18 + +/datum/reagent/drink/antidepressant_yw + price_tag = 3 diff --git a/code/modules/food/drinkingglass/metaglass_yw.dm b/code/modules/food/drinkingglass/metaglass_yw.dm new file mode 100644 index 0000000000..8fd61335d3 --- /dev/null +++ b/code/modules/food/drinkingglass/metaglass_yw.dm @@ -0,0 +1,5 @@ + +/datum/reagent/drink/antidepressant_yw + glass_icon_state = "antidepressant_yw" + glass_center_of_mass = list("x"=16, "y"=5) + glass_icon_file = 'icons/obj/drinks_yw.dmi' diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/animals_yw.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/animals_yw.dm index 98a2682aa1..72c58fcbb7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/animals_yw.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/animals_yw.dm @@ -190,3 +190,227 @@ layer = MOB_LAYER if(client) client.time_died_as_mouse = world.time + +/mob/living/simple_mob/animal/passive/snowbull + name = "Snowbull" + desc = "Some white furred bull with a single curved horn." + tt_desc = "legionis gayus" + icon = 'icons/mob/cryogaia64x64.dmi' + icon_state = "snowbull" + icon_living = "snowbull" + icon_dead = "snowbull-dead" + maxHealth = 300 + health = 300 + faction = "snowbull" + pixel_x = -16 + special_attack_min_range = 3 + special_attack_max_range = 8 + special_attack_cooldown = 10 SECONDS + var/charging = 0 + var/charging_warning = 1 SECONDS + minbodytemp = 0 + maxbodytemp = 1000 + min_oxy = 0 // Oxygen in moles, minimum, 0 is 'no minimum' + max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum' + min_tox = 0 // Phoron min + max_tox = 0 // Phoron max + min_co2 = 0 // CO2 min + max_co2 = 0 // CO2 max + min_n2 = 0 // N2 min + max_n2 = 0 // N2 max + attack_sharp = 1 + melee_damage_lower = 15 + melee_damage_upper = 20 + + ai_holder_type = /datum/ai_holder/simple_mob/snowbull + +/mob/living/simple_mob/animal/passive/snowbull/update_icon() + if(charging) + icon_state = "[icon_living]-charge" + ..() + + +/mob/living/simple_mob/animal/passive/snowbull/do_special_attack(atom/A) + set waitfor = FALSE + set_AI_busy(TRUE) + charging = 1 + movement_shake_radius = 3 + movement_sound = 'sound/effects/mob_effects/snowbull_charge.ogg' + visible_message(span("danger","\The [src] prepares to charge at \the [A]!")) + update_icon() + sleep(charging_warning) + var/chargeturf = get_turf(A) + if(!chargeturf) + return + var/chargedir = get_dir(src, chargeturf) + set_dir(chargedir) + var/turf/T = get_ranged_target_turf(chargeturf, chargedir, isDiagonal(chargedir) ? 1 : 2) + if(!T) + charging = 0 + movement_shake_radius = null + movement_sound = null + update_icon() + visible_message(span("danger", "\The [src] desists from charging at \the [A]")) + return + for(var/distance = get_dist(src.loc, T), src.loc!=T && distance>0, distance--) + var/movedir = get_dir(src.loc, T) + var/moveturf = get_step(src.loc, movedir) + SelfMove(moveturf, movedir, 2) + sleep(2 * world.tick_lag) //Speed it will move, default is two server ticks + sleep((get_dist(src, T) * 2.2)) + charging = 0 + update_icon() + movement_shake_radius = 0 + movement_sound = null + set_AI_busy(FALSE) + +/mob/living/simple_mob/animal/passive/snowbull/Bump(atom/movable/AM) + if(charging) + if(istype(AM, /mob/living)) + var/mob/living/M = AM + visible_message("[src] rams [AM]!") + M.Stun(5) + M.Weaken(3) + var/throwdir = pick(turn(dir, 45), turn(dir, -45)) + M.throw_at(get_step(src.loc, throwdir), 1, 1, src) + runOver(M) // Actually should not use this, placeholder + if(istype(AM, /obj/structure)) + if(istype(AM, /obj/structure/window)) + var/obj/structure/window/window = AM + window.hit(80) //Shatters reinforced windows + else if(istype(AM, /obj/structure/table)) + var/obj/structure/table/table = AM + var/tableflipdir = pick(turn(dir, 90), turn(dir, -90)) + if(!table.flip(tableflipdir)) //If table don't gets flipped just generic attack it + AM.attack_generic(src, 20, "rams") + else if(istype(AM, /obj/structure/closet)) + var/obj/structure/closet/closet = AM + closet.throw_at_random(0, 2, 2) + closet.break_open() //Lets not destroy closets that easily, instead just open it + else + AM.attack_generic(src, 20, "rams") // Otherwise just attack_generic that structure + if(istype(AM, /turf/simulated/wall)) + var/turf/simulated/wall/wall = AM + wall.take_damage(20) + if(istype(AM, /obj/machinery)) + var/obj/machinery/machinery = AM + machinery.attack_generic(src, 20) + ..() + +/mob/living/simple_mob/animal/passive/snowbull/proc/runOver(var/mob/living/M) + if(istype(M)) + visible_message("[src] rams [M] over!") + playsound(src, 'sound/effects/splat.ogg', 50, 1) + var/damage = rand(3,4) + M.apply_damage(2 * damage, BRUTE, BP_HEAD) + M.apply_damage(2 * damage, BRUTE, BP_TORSO) + M.apply_damage(0.5 * damage, BRUTE, BP_L_LEG) + M.apply_damage(0.5 * damage, BRUTE, BP_R_LEG) + M.apply_damage(0.5 * damage, BRUTE, BP_L_ARM) + M.apply_damage(0.5 * damage, BRUTE, BP_R_ARM) + blood_splatter(src, M, 1) + +/mob/living/simple_mob/animal/passive/snowbull/handle_special() + if(ai_holder) + if(istype(ai_holder, /datum/ai_holder/simple_mob/snowbull)) + var/datum/ai_holder/simple_mob/snowbull/changedAI = ai_holder + var/mobtension = 0 + mobtension = get_tension() //Check for their tension, based on dangerous mobs and allies nearby + if(mobtension > 170) + changedAI.untrusting = TRUE + if(mobtension > 270) + changedAI.untrusting = 2 + if(mobtension < 170) + changedAI.untrusting = FALSE + var/beforehealth = icon_living + var/healthpercent = health/maxHealth + switch(healthpercent) + if(0.25 to 0) + icon_living = "snowbull-25" + if(0.50 to 0.26) + icon_living = "snowbull-50" + if(0.75 to 0.51) + icon_living = "snowbull-75" + if(0.76 to INFINITY) + icon_living = "snowbull-100" + if(beforehealth != icon_living) + update_icon() + +/datum/ai_holder/simple_mob/snowbull + hostile = TRUE //Not actually hostile but neede for a check otherwise it won't work + retaliate = TRUE + cooperative = TRUE + wander_delay = 12 + can_breakthrough = TRUE + violent_breakthrough = TRUE + lose_target_timeout = 40 SECONDS //How much time till they forget who attacked them. + var/untrusting = FALSE //This will make the mob check other mobs if they're very dangerous or has intent to harm them. + threaten = TRUE //Threaten to attack the enemy. + threaten_delay = 7 SECONDS + threaten_timeout = 0 SECONDS //we don't want to attack immediately when they get back, only if they don't behave after we warn + can_flee = FALSE //No, we don't flee, we attack back. + +/datum/ai_holder/simple_mob/snowbull/find_target(list/possible_targets, has_targets_list) + ai_log("find_target() : Entered.", AI_LOG_TRACE) + . = list() + if(!has_targets_list) + possible_targets = list_targets() + for(var/possible_target in possible_targets) + var/target_threatlevel + if(istype(possible_target, /atom/movable)) //Test + var/atom/movable/threatener = possible_target + target_threatlevel = threatener.get_threat(holder) + if(checkthreatened(possible_target, target_threatlevel)) //won't attack anything that ain't a big threat + if(can_attack(possible_target)) // Can we attack it? + . += possible_target + var/new_target = pick_target(.) + give_target(new_target) + return new_target + +/datum/ai_holder/simple_mob/snowbull/proc/checkthreatened(var/possible_target, var/target_threatlevel = 0) + if(check_attacker(possible_target)) + return TRUE + if(untrusting == 1 && target_threatlevel > 130 && possible_target in range(5)) + return TRUE + if(untrusting > 1 && target_threatlevel > 100) + return TRUE + else + return FALSE + +/datum/ai_holder/simple_mob/snowbull/threaten_target() + holder.face_atom(target) // Constantly face the target. + + if(!threatening) // First tick. + threatening = TRUE + last_threaten_time = world.time + holder.visible_emote("'warning'>Huffs, reacting to the threat of [target]!") + //playsound(holder, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. + //playsound(target, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. + else // Otherwise we are waiting for them to go away or to wait long enough for escalate. + var/threatlevel = target.get_threat(holder) + if(target in list_targets() && checkthreatened(target, threatlevel)) // Are they still visible and threatening ? + var/should_escalate = FALSE + + if(threaten_delay && last_threaten_time + threaten_delay < world.time) // Waited too long. + should_escalate = TRUE + + if(should_escalate) + threatening = FALSE + set_stance(STANCE_APPROACH) + if(holder.say_list) + holder.visible_emote("'notice'>Gets irritated, going after [target]!") + else + return // Wait a bit. + + else // They left, or so we think. + if(last_threaten_time + threaten_timeout < world.time) // They've been gone long enough, probably safe to stand down + threatening = FALSE + set_stance(STANCE_IDLE) + holder.visible_emote("'notice'>calms down, lowering down their horns") + if(holder.say_list) + holder.ISay(safepick(holder.say_list.say_stand_down)) + playsound(holder, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. + playsound(target, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. + + + diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm index 13c987a149..2d6870f4d2 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_yw.dm @@ -27,3 +27,25 @@ +/datum/reagent/drink/antidepressant_yw + name = "Antidepressant" + id = "antidepressant_yw" + description = "A soul lightenner, you can't stay sad at the taste of this." + taste_description = "a mixture of sweet, creamy, fruityness. The pain of life dulls a bit..." + color = "#ee757c" // rgb(238, 117, 124) + + glass_name = "Antidepresant" + glass_desc = "A Bright red coktail, warm as a roaring chimney, and bright as a smile." + +#define ANTIDEPRESSANT_MESSAGE_DELAY 5*60*10 + +/datum/reagent/drink/antidepresant_yw/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + if(alien == IS_DIONA) + return + if(volume <= 0.1 && data != -1) + data = -1 + to_chat(M, "You feel nothing...") + else + if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY) + data = world.time + to_chat(M, "You feel soothed...") diff --git a/code/modules/reagents/Chemistry-Recipes_yw.dm b/code/modules/reagents/Chemistry-Recipes_yw.dm index 8cf9a31339..01206561aa 100644 --- a/code/modules/reagents/Chemistry-Recipes_yw.dm +++ b/code/modules/reagents/Chemistry-Recipes_yw.dm @@ -12,3 +12,10 @@ required_reagents = list("booger" = 1, "psilocybin" = 1) result_amount = 2 + +/datum/chemical_reaction/drinks/antidepressant_yw + name = "Antidepressant" + id = "antidepressant_yw" + result = "antidepressant_yw" + required_reagents = list ("cream" = 1, "sugar" = 1, "watermelonjuice" = 1, "orangejuice" = 1, "limejuice" = 1) + result_amount = 5 diff --git a/code/modules/vore/fluffstuff/custom_clothes_yw.dm b/code/modules/vore/fluffstuff/custom_clothes_yw.dm index 20828c133b..3d442918a5 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_yw.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_yw.dm @@ -1716,6 +1716,20 @@ item_state = "kbraid_head_s" ear_protection = 1 +/obj/item/clothing/accessory/fluff/jeanscrystelchime + name = "valhollide chime" + desc = "a set of white crystal chimes attached to a silver ring. the sound they make when they clink together is otherworldly..." + icon = 'icons/vore/custom_clothes_yw.dmi' + icon_state = "jeanscrystelchime" + icon_override = 'icons/vore/custom_clothes_yw.dmi' + item_state = "jeanscrystelchime_s" + overlay_state = "jeanscrystelchime_s" + slot_flags = ACCESSORY_SLOT_DECOR + w_class = ITEMSIZE_TINY + species_restricted = list(SPECIES_TESHARI) + drop_sound = 'sound/items/pickup/ring.ogg' + pickup_sound = 'sound/items/pickup/ring.ogg' + // ******** // Whiteout // ******** @@ -1726,4 +1740,4 @@ icon_state = "gear_harness_white" icon_override = 'icons/vore/custom_clothes_yw.dmi' item_state = "gear_harness_white" - body_parts_covered = 0 + body_parts_covered = 0 \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_furniture_yw.dm b/code/modules/vore/fluffstuff/custom_furniture_yw.dm new file mode 100644 index 0000000000..f6d56e8f05 --- /dev/null +++ b/code/modules/vore/fluffstuff/custom_furniture_yw.dm @@ -0,0 +1,16 @@ +// ****** +// KBraid +// ****** +/obj/structure/bed/chair/hammock_kbraid_n + name = "hammock" + desc = "A blue hammock with two white stripes along one side and a black hexagonal pattern on the other." + icon = 'icons/vore/custom_furniture_yw.dmi' + icon_state = "kbraid_hammock_upper" + base_icon = "kbraid_hammock_upper" + color = null + applies_material_colour = 0 +/obj/structure/hammock_kbraid_s + name = "hammock" + desc = "A blue hammock with two white stripes along one side and a black hexagonal pattern on the other." + icon = 'icons/vore/custom_furniture_yw.dmi' + icon_state = "kbraid_hammock_lower" \ No newline at end of file diff --git a/icons/mob/cryogaia64x64.dmi b/icons/mob/cryogaia64x64.dmi new file mode 100644 index 0000000000..94f8a0bed1 Binary files /dev/null and b/icons/mob/cryogaia64x64.dmi differ diff --git a/icons/mob/species/seromi/suit_yw.dmi b/icons/mob/species/seromi/suit_yw.dmi new file mode 100644 index 0000000000..be7c859f5e Binary files /dev/null and b/icons/mob/species/seromi/suit_yw.dmi differ diff --git a/icons/mob/species/seromi/teshari_cloak_yw.dmi b/icons/mob/species/seromi/teshari_cloak_yw.dmi index 70cfc6071b..42671e5548 100644 Binary files a/icons/mob/species/seromi/teshari_cloak_yw.dmi and b/icons/mob/species/seromi/teshari_cloak_yw.dmi differ diff --git a/icons/obj/drinks_yw.dmi b/icons/obj/drinks_yw.dmi index 9163728bf0..8c62d72652 100644 Binary files a/icons/obj/drinks_yw.dmi and b/icons/obj/drinks_yw.dmi differ diff --git a/icons/vore/custom_clothes_yw.dmi b/icons/vore/custom_clothes_yw.dmi index 315b086a96..4d450f0085 100644 Binary files a/icons/vore/custom_clothes_yw.dmi and b/icons/vore/custom_clothes_yw.dmi differ diff --git a/icons/vore/custom_furniture_yw.dmi b/icons/vore/custom_furniture_yw.dmi new file mode 100644 index 0000000000..f6298ab0fb Binary files /dev/null and b/icons/vore/custom_furniture_yw.dmi differ diff --git a/icons/vore/custom_items_yw.dmi b/icons/vore/custom_items_yw.dmi index 2cb0aae253..ce76795b39 100644 Binary files a/icons/vore/custom_items_yw.dmi and b/icons/vore/custom_items_yw.dmi differ diff --git a/icons/vore/custom_onmob_yw.dmi b/icons/vore/custom_onmob_yw.dmi index 4a44db9bd4..eb2e2e103e 100644 Binary files a/icons/vore/custom_onmob_yw.dmi and b/icons/vore/custom_onmob_yw.dmi differ diff --git a/maps/yw/residential/residential.dmm b/maps/yw/residential/residential.dmm index c9be99c789..837be114df 100644 --- a/maps/yw/residential/residential.dmm +++ b/maps/yw/residential/residential.dmm @@ -26,6 +26,23 @@ /obj/item/weapon/storage/box/beakers, /turf/simulated/floor/tiled/white, /area/residential/room8) +"aj" = ( +/obj/machinery/shower{ + dir = 8; + pixel_x = -5 + }, +/obj/structure/window/basic{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/mirror{ + pixel_y = 25 + }, +/obj/structure/curtain/open/privacy, +/turf/simulated/floor/tiled/freezer, +/area/residential/room12) "al" = ( /obj/structure/table/marble, /obj/item/weapon/reagent_containers/food/condiment/enzyme, @@ -136,6 +153,10 @@ }, /turf/simulated/floor/tiled, /area/residential/corridors) +"aD" = ( +/obj/structure/table/marble, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "aE" = ( /obj/machinery/door/airlock{ name = "RM1"; @@ -291,6 +312,15 @@ /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/carpet, /area/residential/mansion) +"br" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "bu" = ( /obj/structure/closet, /turf/simulated/floor/wood, @@ -534,6 +564,9 @@ /obj/item/clothing/under/bathrobe, /turf/simulated/floor/tiled/white, /area/residential/mansion) +"cL" = ( +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "cP" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -971,6 +1004,12 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/residential/docking_lobby) +"fi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "fj" = ( /obj/machinery/alarm{ dir = 8; @@ -1177,6 +1216,13 @@ }, /turf/simulated/floor/tiled, /area/residential/docking_lobby) +"gk" = ( +/obj/effect/floor_decal/corner/lightorange/border{ + pixel_y = 6 + }, +/obj/structure/hammock_kbraid_s, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "gl" = ( /obj/machinery/door/airlock, /obj/machinery/door/firedoor/glass, @@ -1278,6 +1324,15 @@ /obj/item/weapon/reagent_containers/food/condiment/enzyme, /turf/simulated/floor/tiled/white, /area/residential/mroom1) +"gD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "gG" = ( /obj/structure/table/woodentable, /obj/structure/window/basic{ @@ -2030,7 +2085,13 @@ /turf/simulated/floor/tiled/steel_ridged, /area/residential/ship_bay) "ko" = ( -/turf/simulated/floor/plating, +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, /area/residential/room12) "kq" = ( /obj/structure/closet/cabinet, @@ -2063,6 +2124,10 @@ }, /turf/simulated/floor/tiled, /area/residential/docking_lobby) +"kz" = ( +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "kA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2074,6 +2139,15 @@ /obj/machinery/door/firedoor/glass/hidden, /turf/simulated/floor/tiled, /area/residential/corridors) +"kB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "kC" = ( /obj/structure/cable{ d1 = 4; @@ -2137,13 +2211,11 @@ /turf/simulated/floor/tiled, /area/residential/mroom1) "kS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, +/turf/simulated/floor/tiled/old_cargo, /area/residential/room12) "kU" = ( /obj/machinery/door/airlock/silver, @@ -2503,6 +2575,11 @@ }, /turf/simulated/floor/tiled/kafel_full, /area/residential/room9) +"mZ" = ( +/obj/structure/table/glass, +/obj/item/modular_computer/tablet/preset/custom_loadout/advanced, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "na" = ( /obj/structure/table/marble, /turf/simulated/floor/tiled/white, @@ -3240,6 +3317,10 @@ }, /turf/simulated/floor/wood, /area/residential/room7) +"qW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "qY" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -3265,6 +3346,16 @@ }, /turf/simulated/floor/tiled, /area/residential/corridors) +"rd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "re" = ( /obj/structure/closet/cabinet, /turf/simulated/floor/carpet, @@ -3322,6 +3413,20 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/wood, /area/residential/mroom2) +"rt" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/weapon/reagent_containers/food/condiment/enzyme, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill, +/obj/item/weapon/storage/box/beakers, +/obj/item/weapon/material/knife, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room11) "rw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3507,6 +3612,16 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/residential/corridors) +"sP" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/window/basic, +/obj/structure/curtain/open/privacy, +/turf/simulated/floor/tiled/freezer, +/area/residential/room12) "sQ" = ( /obj/structure/cable{ d1 = 4; @@ -3632,6 +3747,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/residential/corridors) +"tC" = ( +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "tD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -3691,6 +3809,11 @@ "tS" = ( /turf/simulated/floor/wood, /area/residential/room10) +"tT" = ( +/obj/structure/table/glass, +/obj/item/toy/plushie/teshari/w_yw, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "tU" = ( /obj/machinery/door/airlock, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -3827,6 +3950,12 @@ /obj/machinery/vending/hydronutrients, /turf/simulated/floor/tiled/white, /area/residential/mroom1) +"uC" = ( +/obj/structure/bed/chair{ + material = null + }, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "uD" = ( /obj/machinery/door/airlock, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3848,7 +3977,10 @@ dir = 4; pixel_x = -28 }, -/turf/simulated/floor/plating, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/old_cargo, /area/residential/room12) "uH" = ( /obj/structure/table/steel_reinforced, @@ -3878,6 +4010,12 @@ /obj/machinery/light, /turf/simulated/floor/wood, /area/residential/mroom2) +"uO" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + material = "plastic" + }, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "uR" = ( /obj/structure/table/woodentable, /obj/item/weapon/flame/candle, @@ -4377,6 +4515,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor, /area/residential/lobby) +"xQ" = ( +/obj/item/clothing/under/seromi/undercoat/standard/white_grey, +/obj/item/clothing/suit/storage/seromi/beltcloak/standard/blue_grey, +/obj/item/clothing/glasses/fluff/avigoggles_yw, +/obj/item/device/communicator/watch, +/obj/item/weapon/card/id/residential/rs12, +/obj/structure/closet/crate/plastic{ + name = "footlocker" + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "xR" = ( /obj/structure/toilet{ dir = 8 @@ -4422,6 +4571,16 @@ }, /turf/simulated/floor/carpet/oracarpet, /area/residential/ship_bay) +"yd" = ( +/obj/machinery/door/window, +/obj/structure/window/basic, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/curtain/open/privacy, +/turf/simulated/floor/tiled/freezer, +/area/residential/room12) "yf" = ( /obj/structure/disposalpipe/segment, /turf/space, @@ -4716,6 +4875,14 @@ /obj/item/weapon/soap/deluxe, /turf/simulated/floor/tiled/neutral, /area/residential/room3) +"zS" = ( +/obj/machinery/light_switch{ + pixel_x = 0; + pixel_y = 28; + step_y = 0 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "zT" = ( /obj/structure/closet/cabinet, /obj/structure/window/basic{ @@ -5183,6 +5350,10 @@ }, /turf/simulated/floor/tiled, /area/residential/room6) +"Cs" = ( +/obj/effect/floor_decal/corner/lightorange/border/shifted, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "Ct" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -5565,6 +5736,12 @@ }, /turf/simulated/floor/carpet, /area/residential/room5) +"DO" = ( +/obj/effect/floor_decal/corner/lightorange/border{ + pixel_y = 6 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "DP" = ( /obj/structure/table/glass, /obj/machinery/light{ @@ -6994,6 +7171,15 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/space) +"Kz" = ( +/obj/machinery/recharger{ + pixel_x = -1; + pixel_y = 7; + step_y = 0 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet/oracarpet, +/area/residential/room12) "KA" = ( /obj/structure/reagent_dispensers/winevat, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -7187,6 +7373,10 @@ }, /turf/simulated/floor/wood, /area/residential/room4) +"LA" = ( +/obj/structure/table/marble, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "LD" = ( /obj/structure/table/steel_reinforced, /obj/machinery/microwave, @@ -8186,6 +8376,11 @@ }, /turf/simulated/floor/tiled, /area/residential/corridors) +"Qq" = ( +/obj/structure/table/marble, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "Qt" = ( /turf/simulated/floor/carpet, /area/residential/ship_bay) @@ -8531,11 +8726,9 @@ /turf/simulated/floor/carpet/blue, /area/residential/room11) "Si" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/turf/simulated/floor/plating, +/obj/machinery/alarm, +/obj/structure/bed/chair/hammock_kbraid_n, +/turf/simulated/floor/tiled/old_cargo, /area/residential/room12) "Sk" = ( /obj/structure/closet/crate/trashcart, @@ -9217,6 +9410,17 @@ }, /turf/simulated/floor/wood, /area/residential/room11) +"Vp" = ( +/obj/structure/curtain/black, +/obj/structure/shuttle/window, +/turf/simulated/floor/plating/eris/under, +/area/residential/room12) +"Vs" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "Vv" = ( /obj/machinery/light_switch{ dir = 1; @@ -9725,6 +9929,15 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/residential/docking_lobby) +"YE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "YF" = ( /obj/item/weapon/bedsheet/yellow, /obj/structure/bed/padded, @@ -10006,6 +10219,12 @@ }, /turf/simulated/floor/tiled/kafel_full, /area/residential/room9) +"ZL" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/old_cargo, +/area/residential/room12) "ZM" = ( /turf/simulated/floor/holofloor/tiled, /area/residential/docking_lobby) @@ -21858,15 +22077,15 @@ aZ aZ Hh ko -ko -ko -ko +sP +ZL +qW uG kS -ko -ko -ko -ko +fi +kB +Cs +LA Hh aZ aZ @@ -22019,16 +22238,16 @@ aZ aZ aZ Hh -ko -ko -ko -ko -ko -ko -ko -ko -ko -ko +aj +yd +YE +rd +gD +br +cL +aD +Cs +Qq Hh aZ aZ @@ -22181,16 +22400,16 @@ aZ aZ aZ Hh -ko -ko -ko -ko -ko -ko -ko -ko -ko -ko +tC +DO +tC +tT +cL +cL +uC +aD +Cs +LA Hh aZ aZ @@ -22343,16 +22562,16 @@ aZ aZ aZ Hh -ko -ko -ko -ko -ko -ko -ko -ko -ko -ko +zS +DO +tC +mZ +uO +cL +uC +aD +Cs +rt Hh aZ aZ @@ -22506,15 +22725,15 @@ aZ aZ Hh Si -ko -ko -ko -ko -ko -ko -ko -ko -ko +gk +tC +Kz +kz +cL +cL +aD +Cs +LA Hh aZ aZ @@ -22667,16 +22886,16 @@ aZ aZ aZ Hh -ko -ko -ko -ko -ko -ko -ko -ko -ko -ko +xQ +DO +Vs +tC +tC +tC +tC +Vs +Cs +LA Hh aZ aZ @@ -22832,10 +23051,10 @@ Hh Hh Hh Hh -Hh -Hh -Hh -Hh +Vp +Vp +Vp +Vp Hh Hh Hh diff --git a/maps/yw/residential/residential_keys.dm b/maps/yw/residential/residential_keys.dm index 736ec010a9..290cb2f24d 100644 --- a/maps/yw/residential/residential_keys.dm +++ b/maps/yw/residential/residential_keys.dm @@ -48,6 +48,10 @@ name = "RS11 residential key" access = list(8011) +/obj/item/weapon/card/id/residential/rs12 + name = "RS12 residential key" + access = list(8012) + /obj/item/weapon/card/id/residential/rm1 name = "RM1 residential key" access = list(8101) @@ -217,4 +221,11 @@ display_name = "RS11 keys" description = "residential" ckeywhitelist = list("rouwren") - character_name = list("Rin Deimos") \ No newline at end of file + character_name = list("Rin Deimos") + +/datum/gear/fluff/res_key_rs12 + path = /obj/item/weapon/card/id/residential/rs12 + display_name = "RS12 keys" + description = "residential" + ckeywhitelist = list("kbraid") + character_name = list("Eili") diff --git a/sound/effects/mob_effects/snowbull_charge.ogg b/sound/effects/mob_effects/snowbull_charge.ogg new file mode 100644 index 0000000000..e402b8bad4 Binary files /dev/null and b/sound/effects/mob_effects/snowbull_charge.ogg differ diff --git a/vorestation.dme b/vorestation.dme index 6917655a3e..de0dd7fa35 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2175,6 +2175,7 @@ #include "code\modules\food\drinkingglass\glass_types.dm" #include "code\modules\food\drinkingglass\metaglass.dm" #include "code\modules\food\drinkingglass\metaglass_vr.dm" +#include "code\modules\food\drinkingglass\metaglass_yw.dm" #include "code\modules\food\drinkingglass\serving_glasses.dm" #include "code\modules\food\drinkingglass\shaker.dm" #include "code\modules\food\drinkingglass\shaker_vr.dm" @@ -3770,6 +3771,7 @@ #include "code\modules\vore\fluffstuff\custom_boxes_yw.dm" #include "code\modules\vore\fluffstuff\custom_clothes_vr.dm" #include "code\modules\vore\fluffstuff\custom_clothes_yw.dm" +#include "code\modules\vore\fluffstuff\custom_furniture_yw.dm" #include "code\modules\vore\fluffstuff\custom_items_vr.dm" #include "code\modules\vore\fluffstuff\custom_items_yw.dm" #include "code\modules\vore\fluffstuff\custom_mecha_vr.dm"