Merge branch 'release' of https://github.com/VOREStation/VOREStation into vore-update

This commit is contained in:
izac112
2024-04-02 17:26:31 +02:00
195 changed files with 5125 additions and 792 deletions
@@ -40,6 +40,7 @@
var/is_animating_door = FALSE
/// Our visual object for the closet door, if we're animating
var/obj/effect/overlay/closet_door/door_obj
var/vore_sound = 'sound/effects/metalscrape2.ogg'
/obj/structure/closet/Initialize()
..()
@@ -543,3 +544,49 @@
M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * closet_appearance.door_anim_squish, 1, 0))
M.Translate(closet_appearance.door_hinge, 0)
return M
//verb to eat people in the same closet as yourself
/obj/structure/closet/verb/hidden_vore()
set src in oview(1)
set category = "Object"
set name = "Vore Occupants"
if(!istype(usr, /mob/living)) //no ghosts
return
if(!(usr in src.contents))
to_chat(usr, "<span class='warning'>You need to be inside \the [src] to do this.</span>")
return
var/list/targets = list() //IF IT IS NOT BROKEN. DO NOT FIX IT.
for(var/mob/living/L in src.contents)
if(!istype(L, /mob/living)) //Don't eat anything that isn't mob/living. Failsafe.
continue
if(L == usr) //no eating yourself. 1984.
continue
if(L.devourable)
targets += L
if(targets == 0)
to_chat(src, "<span class='notice'>No eligible targets found.</span>")
return
var/mob/living/target = tgui_input_list(usr, "Please select a target.", "Victim", targets)
if(!target)
return
if(!istype(target, /mob/living)) //Safety.
to_chat(src, "<span class='warning'>You need to select a living target!</span>")
return
if (get_dist(src,target) >= 1 || get_dist(src,usr) >= 1) //in case they leave the locker
to_chat(src, "<span class='warning'>You are no longer both in \the [src].</span>")
return
playsound(src, vore_sound, 25)
var/mob/living/M = usr
M.perform_the_nom(usr,target,usr,usr.vore_selected,1)
@@ -6,6 +6,7 @@
open_sound = 'sound/effects/wooden_closet_open.ogg'
close_sound = 'sound/effects/wooden_closet_close.ogg'
vore_sound = 'sound/effects/woodhit.ogg'
/obj/structure/closet/acloset
name = "strange closet"
@@ -82,3 +83,34 @@
icon = 'icons/obj/closets/abductor.dmi'
anchored = TRUE
closet_appearance = null // special icons
/obj/structure/closet/tent
name = "tent"
desc = "An old fashioned tent that can easily fit a couple of people."
icon = 'icons/obj/closets/tent.dmi'
closet_appearance = null
anchored = 1
open_sound = 'sound/effects/rustle3.ogg'
close_sound = 'sound/effects/rustle4.ogg'
vore_sound = 'sound/effects/rustle1.ogg'
/obj/structure/closet/tent/B
icon = 'icons/obj/closets/tentB.dmi'
/datum/crafting_recipe/tent
name = "tent (green)"
result = /obj/structure/closet/tent
reqs = list(
list(/obj/item/stack/material/cloth = 10)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/tentb
name = "tent (tan)"
result = /obj/structure/closet/tent/B
reqs = list(
list(/obj/item/stack/material/cloth = 10)
)
time = 60
category = CAT_MISC
+260
View File
@@ -0,0 +1,260 @@
//Pillows with sprites ported from skyrat
/obj/item/weapon/bedsheet/pillow
name = "pillow"
desc = "A surprisingly soft stuffed pillow."
icon = 'icons/obj/pillows.dmi'
icon_state = "pillow_pink_square"
slot_flags = 0
var/pile_type = "/obj/structure/bed/pillowpile"
throw_range = 7
/obj/item/weapon/bedsheet/pillow/attack_self(mob/user as mob)
user.drop_item()
if(icon_state == initial(icon_state))
icon_state = "[icon_state]_placed"
add_fingerprint(user)
/obj/item/weapon/bedsheet/pillow/pickup(mob/user)
..()
icon_state = initial(icon_state)
/obj/item/weapon/bedsheet/pillow/attackby(var/obj/item/component, mob/user as mob)
if (istype(component,src))
to_chat(user, "<span class='notice'>You assemble a pillow pile!</span>")
user.drop_item()
qdel(component)
var/turf/T = get_turf(src)
new pile_type(T)
user.drop_from_inventory(src)
qdel(src)
else
to_chat(user, "<span class='notice'>You can't assemble a pillow pile out of mismatched stuff, it'd look hideous!</span>")
//Pillow Piles, they're piles of pillows! layer = BELOW_MOB_LAYER
/obj/structure/bed/pillowpile
name = "pillow pile"
desc = "A massive pile of pillows!"
icon = 'icons/obj/pillows.dmi'
icon_state = "pillowpile_large_pink"
var/pillowpilefront = "/obj/structure/bed/pillowpilefront"
var/sourcepillow = "/obj/item/weapon/bedsheet/pillow"
/obj/structure/bed/pillowpilefront
name = "pillow pile"
desc = "A massive pile of pillows!"
icon = 'icons/obj/pillows.dmi'
icon_state = "pillowpile_large_pink_overlay"
layer = ABOVE_MOB_LAYER
plane = MOB_PLANE
var/sourcepillow = "/obj/item/weapon/bedsheet/pillow"
/obj/structure/bed/pillowpile/New()
..()
var/turf/T = get_turf(src)
new pillowpilefront(T)
/obj/structure/bed/pillowpilefront/update_icon()
return
/obj/structure/bed/pillowpile/update_icon()
return
/obj/structure/bed/pillowpile/attack_hand(mob/user)
to_chat(user, "<span class='notice'>Now disassembling the large pillow pile...</span>")
if(do_after(user, 30))
if(!src) return
to_chat(user, "<span class='notice'>You dissasembled the large pillow pile!</span>")
new sourcepillow(src.loc)
qdel(src)
/obj/structure/bed/pillowpilefront/attack_hand(mob/user)
to_chat(user, "<span class='notice'>Now disassembling the front of the pillow pile...</span>")
if(do_after(user, 30))
if(!src) return
to_chat(user, "<span class='notice'>You dissasembled the the front of the pillow pile!</span>")
new sourcepillow(src.loc)
qdel(src)
//Colours
//teal
/obj/item/weapon/bedsheet/pillow/teal
icon_state = "pillow_teal_square"
pile_type = "/obj/structure/bed/pillowpile/teal"
/obj/structure/bed/pillowpile/teal
icon_state = "pillowpile_large_teal"
pillowpilefront = "/obj/structure/bed/pillowpilefront/teal"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal"
/obj/structure/bed/pillowpilefront/teal
icon_state = "pillowpile_large_teal_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal"
//yellow
/obj/item/weapon/bedsheet/pillow/yellow
icon_state = "pillow_yellow_square"
pile_type = "/obj/structure/bed/pillowpile/yellow"
/obj/structure/bed/pillowpile/yellow
icon_state = "pillowpile_large_yellow"
pillowpilefront = "/obj/structure/bed/pillowpilefront/yellow"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow"
/obj/structure/bed/pillowpilefront/yellow
icon_state = "pillowpile_large_yellow_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow"
//white
/obj/item/weapon/bedsheet/pillow/white
icon_state = "pillow_white_square"
pile_type = "/obj/structure/bed/pillowpile/white"
/obj/structure/bed/pillowpile/white
icon_state = "pillowpile_large_white"
pillowpilefront = "/obj/structure/bed/pillowpilefront/white"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/white"
/obj/structure/bed/pillowpilefront/white
icon_state = "pillowpile_large_white_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/white"
//black
/obj/item/weapon/bedsheet/pillow/black
icon_state = "pillow_black_square"
pile_type = "/obj/structure/bed/pillowpile/black"
/obj/structure/bed/pillowpile/black
icon_state = "pillowpile_large_black"
pillowpilefront = "/obj/structure/bed/pillowpilefront/black"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/black"
/obj/structure/bed/pillowpilefront/black
icon_state = "pillowpile_large_black_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/black"
//green
/obj/item/weapon/bedsheet/pillow/green
icon_state = "pillow_green_square"
pile_type = "/obj/structure/bed/pillowpile/green"
/obj/structure/bed/pillowpile/green
icon_state = "pillowpile_large_green"
pillowpilefront = "/obj/structure/bed/pillowpilefront/green"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/green"
/obj/structure/bed/pillowpilefront/green
icon_state = "pillowpile_large_green_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/green"
//red
/obj/item/weapon/bedsheet/pillow/red
icon_state = "pillow_red_square"
pile_type = "/obj/structure/bed/pillowpile/red"
/obj/structure/bed/pillowpile/red
icon_state = "pillowpile_large_red"
pillowpilefront = "/obj/structure/bed/pillowpilefront/red"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/red"
/obj/structure/bed/pillowpilefront/red
icon_state = "pillowpile_large_red_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/red"
//orange
/obj/item/weapon/bedsheet/pillow/orange
icon_state = "pillow_orange_square"
pile_type = "/obj/structure/bed/pillowpile/orange"
/obj/structure/bed/pillowpile/orange
icon_state = "pillowpile_large_orange"
pillowpilefront = "/obj/structure/bed/pillowpilefront/orange"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange"
/obj/structure/bed/pillowpilefront/orange
icon_state = "pillowpile_large_orange_overlay"
sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange"
//crafting
/datum/crafting_recipe/pillowpink
name = "pillow (pink)"
result = /obj/item/weapon/bedsheet/pillow
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowteal
name = "pillow (teal)"
result = /obj/item/weapon/bedsheet/pillow/teal
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowwhite
name = "pillow (white)"
result = /obj/item/weapon/bedsheet/pillow/white
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowblack
name = "pillow (black)"
result = /obj/item/weapon/bedsheet/pillow/black
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowgreen
name = "pillow (green)"
result = /obj/item/weapon/bedsheet/pillow/green
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowyellow
name = "pillow (yellow)"
result = /obj/item/weapon/bedsheet/pillow/yellow
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pillowred
name = "pillow (red)"
result = /obj/item/weapon/bedsheet/pillow/red
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC
/datum/crafting_recipe/pilloworange
name = "pillow (orange)"
result = /obj/item/weapon/bedsheet/pillow/orange
reqs = list(
list(/obj/item/stack/material/cloth = 6)
)
time = 60
category = CAT_MISC