mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-17 01:54:25 +01:00
Fantasy redgate map
Added a new fantasy redgate map that consists of a fantasy town and a large dungeon beneath it. Added a selection of fantasy props. Added a variety of "magic" resprites of existing items. These are intended to be tech disguised as magic and have descriptions to hint at it, along with some papers on the map. Added an alchemy system that creates potions in an alembic out of an ingredient and a base. If the ingredient and base match, an interesting potion is created, if they don't, a poor quality potion is created. Added a new reagent that polymorphs the drinker into a random creature. Added a chest version of crates. Added wooden wall lockers. Added random spawners for fantasy items, potions, ingredients and bases for mapping. Added hedge and wooden fences. Added an old fashioned resprite of the oven. Added a cooking pot resprite of the microwave. Added wall torches. Added barrel version of water tanks, beer tanks, wine tanks, blood tanks and a kettle resprite of a coffee dispenser. Added a wooden tub bath. Added 19 new vore mobs: 2 Catslugs, 6 succubi, 1 cryptdrake, 4 vampires 5 peasants and a bat.
This commit is contained in:
@@ -1441,6 +1441,10 @@
|
||||
decals = null
|
||||
color = COLOR_OFF_WHITE
|
||||
|
||||
/decl/closet_appearance/wall_double/wooden
|
||||
decals = null
|
||||
color = WOOD_COLOR_RICH
|
||||
|
||||
/decl/closet_appearance/wall_double/medical
|
||||
decals = null
|
||||
color = COLOR_OFF_WHITE
|
||||
|
||||
@@ -80,6 +80,27 @@
|
||||
/obj/structure/closet/walllocker/medical/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
|
||||
/obj/structure/closet/walllocker/wooden
|
||||
name = "wooden cabinet"
|
||||
desc = "A wall mounted storage cabinet."
|
||||
closet_appearance = /decl/closet_appearance/wall_double/wooden
|
||||
|
||||
/obj/structure/closet/walllocker/wooden/north
|
||||
pixel_y = 32
|
||||
dir = SOUTH
|
||||
|
||||
/obj/structure/closet/walllocker/wooden/south
|
||||
pixel_y = -32
|
||||
dir = NORTH
|
||||
|
||||
/obj/structure/closet/walllocker/wooden/west
|
||||
pixel_x = -32
|
||||
dir = WEST
|
||||
|
||||
/obj/structure/closet/walllocker/wooden/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
//VOREStation Add End
|
||||
|
||||
//double-size "cabinet" lockers, from Killian
|
||||
|
||||
@@ -724,6 +724,15 @@
|
||||
open_sound = 'sound/effects/wooden_closet_open.ogg'
|
||||
close_sound = 'sound/effects/wooden_closet_close.ogg'
|
||||
|
||||
//Chest
|
||||
/obj/structure/closet/crate/chest
|
||||
name = "chest"
|
||||
desc = "A fancy chest made from wood and lined with red velvet."
|
||||
icon = 'icons/obj/closets/chest.dmi'
|
||||
closet_appearance = null
|
||||
open_sound = 'sound/effects/wooden_closet_open.ogg'
|
||||
close_sound = 'sound/effects/wooden_closet_close.ogg'
|
||||
|
||||
//Mining Cart
|
||||
/obj/structure/closet/crate/miningcar
|
||||
name = "mining cart"
|
||||
|
||||
@@ -170,6 +170,41 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/fence/wood
|
||||
cuttable = FALSE
|
||||
name = "fence"
|
||||
desc = "A wooden fence. Not as effective as a wall, but generally it keeps people out."
|
||||
description_info = "Projectiles can freely pass fences."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
icon = 'icons/obj/fence.dmi'
|
||||
icon_state = "wood_straight"
|
||||
|
||||
/obj/structure/fence/wood/end
|
||||
icon_state = "wood_end"
|
||||
|
||||
/obj/structure/fence/wood/corner
|
||||
icon_state = "wood_corner"
|
||||
|
||||
/obj/structure/fence/hedge
|
||||
cuttable = FALSE
|
||||
name = "hedge"
|
||||
desc = "A large hedge. Not as effective as a wall, but generally it keeps people out."
|
||||
description_info = "Projectiles can freely pass fences."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
opacity = 1
|
||||
|
||||
icon = 'icons/obj/fence.dmi'
|
||||
icon_state = "hedge_straight"
|
||||
|
||||
/obj/structure/fence/hedge/end
|
||||
icon_state = "hedge_end"
|
||||
|
||||
/obj/structure/fence/hedge/corner
|
||||
icon_state = "hedge_corner"
|
||||
|
||||
#undef CUT_TIME
|
||||
#undef CLIMB_TIME
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
//props for more fantasy type settings
|
||||
|
||||
/obj/structure/prop/fantasy
|
||||
name = "some fantasy thing"
|
||||
desc = "My description is broken, bug a developer."
|
||||
icon = 'icons/obj/props/fantasy.dmi'
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/prop/fantasy/throne
|
||||
name = "throne"
|
||||
desc = "An ornate golden throne for the truly pompous."
|
||||
icon_state = "throne"
|
||||
|
||||
/obj/structure/prop/fantasy/anvil
|
||||
name = "anvil"
|
||||
desc = "A big solid chunk of cast steel used for smithing."
|
||||
icon_state = "anvil"
|
||||
|
||||
/obj/structure/prop/fantasy/grindstone
|
||||
name = "grindstone"
|
||||
desc = "A pedal powered, rough wheel that is used to sharpen and refine metal."
|
||||
icon_state = "grindstone"
|
||||
|
||||
/obj/structure/prop/fantasy/kiln
|
||||
name = "kiln"
|
||||
desc = "A large stone furnace."
|
||||
icon_state = "kiln"
|
||||
|
||||
/obj/structure/prop/fantasy/redbanner
|
||||
name = "tapestry"
|
||||
desc = "A red tapestry hanging from the wall."
|
||||
icon_state = "redbanner"
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/fantasy/pinkbanner
|
||||
name = "tapestry"
|
||||
desc = "A red tapestry hanging from the wall."
|
||||
icon_state = "pinkbanner"
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/fantasy/redbanner_standing
|
||||
name = "banner"
|
||||
desc = "A red banner hanging from a stand."
|
||||
icon_state = "redbanner_stand"
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/fantasy/pinkbanner_standing
|
||||
name = "banner"
|
||||
desc = "A red banner hanging from a stand."
|
||||
icon_state = "pinkbanner_stand"
|
||||
density = FALSE
|
||||
@@ -384,4 +384,58 @@
|
||||
|
||||
if(!anchored)
|
||||
to_chat(user,"<span class='notice'> The bed isn't secured.</span>")
|
||||
return
|
||||
return
|
||||
|
||||
// Bath
|
||||
|
||||
/obj/structure/bed/bath
|
||||
name = "wash tub"
|
||||
desc = "A wooden tub that can be filled with water for washing yourself."
|
||||
icon_state = "bath"
|
||||
base_icon = "bath"
|
||||
flags = OPENCONTAINER
|
||||
var/amount_per_transfer_from_this = 5
|
||||
|
||||
/obj/structure/bed/bath/update_icon()
|
||||
if(reagents.total_volume < 1)
|
||||
icon_state = "bath"
|
||||
else if(reagents.total_volume < 50)
|
||||
icon_state = "bath1"
|
||||
else if(reagents.total_volume < 150)
|
||||
icon_state = "bath2"
|
||||
else if(reagents.total_volume < 301)
|
||||
icon_state = "bath3"
|
||||
return // Doesn't care about material or anything else.
|
||||
|
||||
/obj/structure/bed/bath/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets"
|
||||
if(reagents.total_volume < 1)
|
||||
to_chat(user, "<span class='warning'>\The [src] is out of water!</span>")
|
||||
else
|
||||
reagents.trans_to_obj(I, 5)
|
||||
to_chat(user, "<span class='notice'>You wet \the [I] in \the [src].</span>")
|
||||
playsound(src, 'sound/effects/slosh.ogg', 25, 1)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
update_icon()
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
var/mob/living/affecting = G.affecting
|
||||
if(has_buckled_mobs()) //Handles trying to buckle someone else to a chair when someone else is on it
|
||||
to_chat(user, "<span class='notice'>\The [src] already has someone buckled to it.</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] attempts to buckle [affecting] into \the [src]!</span>")
|
||||
if(do_after(user, 20, G.affecting))
|
||||
affecting.loc = loc
|
||||
spawn(0)
|
||||
if(buckle_mob(affecting))
|
||||
affecting.visible_message(\
|
||||
"<span class='danger'>[affecting.name] is buckled to [src] by [user.name]!</span>",\
|
||||
"<span class='danger'>You are buckled to [src] by [user.name]!</span>",\
|
||||
"<span class='notice'>You hear metal clanking.</span>")
|
||||
qdel(I)
|
||||
|
||||
|
||||
/obj/structure/bed/bath/New()
|
||||
create_reagents(300)
|
||||
..()
|
||||
|
||||
@@ -124,6 +124,61 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need a tighter grip.</span>")
|
||||
|
||||
/obj/structure/toilet/wooden
|
||||
name = "wooden toilet"
|
||||
desc = "It's basically a hole in a box with a bucket inside. This one seems remarkably clean."
|
||||
icon_state = "toilet3"
|
||||
open = 1
|
||||
|
||||
/obj/structure/toilet/wooden/attack_hand(mob/living/user as mob)
|
||||
return //No lid
|
||||
|
||||
/obj/structure/toilet/wooden/attackby(obj/item/I as obj, mob/living/user as mob) //simpler interactions
|
||||
if(istype(I, /obj/item/weapon/grab))
|
||||
user.setClickCooldown(user.get_attack_speed(I))
|
||||
var/obj/item/weapon/grab/G = I
|
||||
|
||||
if(isliving(G.affecting))
|
||||
var/mob/living/GM = G.affecting
|
||||
|
||||
if(G.state>1)
|
||||
if(!GM.loc == get_turf(src))
|
||||
to_chat(user, "<span class='notice'>[GM.name] needs to be on the toilet.</span>")
|
||||
return
|
||||
if(open && !swirlie)
|
||||
user.visible_message("<span class='danger'>[user] starts to give [GM.name] a swirlie!</span>", "<span class='notice'>You start to give [GM.name] a swirlie!</span>")
|
||||
swirlie = GM
|
||||
if(do_after(user, 30, GM))
|
||||
user.visible_message("<span class='danger'>[user] gives [GM.name] a swirlie!</span>", "<span class='notice'>You give [GM.name] a swirlie!</span>", "You hear a toilet flushing.")
|
||||
if(!GM.internal)
|
||||
GM.adjustOxyLoss(5)
|
||||
swirlie = null
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] slams [GM.name] into the [src]!</span>", "<span class='notice'>You slam [GM.name] into the [src]!</span>")
|
||||
GM.adjustBruteLoss(5)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need a tighter grip.</span>")
|
||||
|
||||
if(cistern && !istype(user,/mob/living/silicon/robot)) //STOP PUTTING YOUR MODULES IN THE TOILET.
|
||||
if(I.w_class > 3)
|
||||
to_chat(user, "<span class='notice'>\The [I] does not fit.</span>")
|
||||
return
|
||||
if(w_items + I.w_class > 5)
|
||||
to_chat(user, "<span class='notice'>The cistern is full.</span>")
|
||||
return
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
w_items += I.w_class
|
||||
to_chat(user, "You carefully place \the [I] into the cistern.")
|
||||
return
|
||||
|
||||
/obj/structure/toilet/wooden/New()
|
||||
open = 1 //just to make sure it works
|
||||
icon_state = "toilet3"
|
||||
return
|
||||
|
||||
/obj/structure/toilet/wooden/update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/urinal
|
||||
name = "urinal"
|
||||
|
||||
Reference in New Issue
Block a user